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.
53 lines (51 loc) • 1.99 kB
JavaScript
const require_TokenSubscription = require('./TokenSubscription.cjs');
//#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 require_TokenSubscription.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
exports.getClientSubscriptionToken = getClientSubscriptionToken;
exports.getSubscriptionToken = getSubscriptionToken;
exports.subscribe = subscribe;
//# sourceMappingURL=index.cjs.map