UNPKG

inngest

Version:

Official SDK for Inngest.com. Inngest is the reliability layer for modern applications. Inngest combines durable execution, events, and queues into a zero-infra platform with built-in observability.

51 lines (49 loc) 1.88 kB
import { TokenSubscription } from "./TokenSubscription.js"; //#region src/components/realtime/subscribe/index.ts async function subscribe(token, callback) { const app = token.app; const getSubscriptionToken$1 = app ? (channel, topics) => app["inngestApi"].getSubscriptionToken(channel, topics) : void 0; const subscription = new TokenSubscription({ token, apiBaseUrl: token.apiBaseUrl ?? app?.apiBaseUrl, getSubscriptionToken: getSubscriptionToken$1, validate: token.validate }); await subscription.connect(); const extras = { getJsonStream: () => subscription.getJsonStream(), getEncodedStream: () => subscription.getEncodedStream(), close: (reason) => subscription.close(reason), unsubscribe: (reason) => subscription.close(reason) }; const onMessage = token.onMessage || callback; if (onMessage) { const callbackStream = subscription.getJsonStream(); subscription.useCallback(onMessage, callbackStream, token.onError); } if (token.onMessage) return extras; const retStream = subscription.getJsonStream(); return Object.assign(retStream, extras); } const getSubscriptionToken = async (app, args) => { const channelId = typeof args.channel === "string" ? args.channel : args.channel.name; if (!channelId) throw new Error("Channel ID is required to create a subscription token"); const key = await app["inngestApi"].getSubscriptionToken(channelId, args.topics); return { channel: args.channel, topics: args.topics, key, apiBaseUrl: app?.apiBaseUrl }; }; const getClientSubscriptionToken = async (app, args) => { const token = await getSubscriptionToken(app, args); if (!token.key) throw new Error("No realtime subscription token key returned"); return { key: token.key, apiBaseUrl: token.apiBaseUrl }; }; //#endregion export { getClientSubscriptionToken, getSubscriptionToken, subscribe }; //# sourceMappingURL=index.js.map