JSPM

@upstash/qstash

v0.0.12
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 104690
  • Score
    100M100P100Q172773F
  • License MIT

Official Deno/Typescript client for qStash

Package Exports

  • @upstash/qstash/cloudflare
  • @upstash/qstash/nextjs

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@upstash/qstash) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Upstash qStash SDK

Tests npm (scoped) npm bundle size

qStash is a serverless queueing / messaging system, designed to be used with serverless functions to consume from the queue.

It is the only connectionless (HTTP based) Redis client and designed for:

  • Serverless functions (AWS Lambda ...)
  • Cloudflare Workers (see the example)
  • Fastly Compute@Edge (see the example)
  • Next.js, Jamstack ...
  • Client side web/mobile applications
  • WebAssembly
  • and other environments where HTTP is preferred over TCP.

See the list of APIs supported.

How does qStash work?

qStash is the message broker between your serverless apps. You send a HTTP request to qStash, that includes a destination, a payload and optional settings. We store your message durable and will deliver it to the destination server via HTTP. In case the destination is not ready to receive the message, we will retry the message later, to guarentee at-least-once delivery.

Quick Start

Install

npm

npm install @upstash/qstash

Deno

import { Redis } from "https://deno.land/x/upstash_qstash/mod.ts";

Activate qStash

Go to upstash and activate qStash.

Basic Usage:

Publishing a message

import { Client } from "@upstash/qstash"

const q = new Client({
  token: <QSTASH_TOKEN>,
})

const res = await q.publishJSON({
    body: { hello: "world" },
})

console.log(res.messageId)

Consuming a message

How to consume a message depends on your http server. QStash does not receive the http request directly, but should be called by you as the first step in your handler function.

import { Consumer } from "@upstash/qstash";

const c = new Consumer({
  currentSigningKey: "..",
  nextSigningKey: "..",
});

const isValid = await c.verify({
  /**
   * The signature from the `Upstash-Signature` header.
   */
  signature: "string";

  /**
   * The raw request body.
   */
  body: "string";

  /**
   * URL of the endpoint where the request was sent to.
   */
  url: "string";
})

Docs

See the documentation for details.

Contributing

Install Deno

Running tests

QSTASH_TOKEN=".." deno test -A