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.

1 lines 4.66 kB
{"version":3,"file":"sveltekit.cjs","names":["frameworkName: SupportedFrameworkName","InngestCommHandler","processEnv","Res: typeof Response"],"sources":["../src/sveltekit.ts"],"sourcesContent":["/**\n * An adapter for SvelteKit to serve and register any declared functions with\n * Inngest, making them available to be triggered by events.\n *\n * @example\n * ```ts\n * // app/routes/api.inngest.ts\n * // (for Remix 1, use app/routes/api/inngest.ts)\n * import { serve } from \"inngest/remix\";\n * import { inngest } from \"~/inngest/client\";\n * import fnA from \"~/inngest/fnA\";\n *\n * const handler = serve({\n * client: inngest,\n * functions: [fnA],\n * });\n *\n * export { handler as action, handler as loader };\n * ```\n *\n * @module\n */\n\nimport type { RequestEvent } from \"@sveltejs/kit\";\nimport {\n InngestCommHandler,\n type ServeHandlerOptions,\n} from \"./components/InngestCommHandler.ts\";\nimport { processEnv } from \"./helpers/env.ts\";\nimport type { SupportedFrameworkName } from \"./types.ts\";\n\n/**\n * The name of the framework, used to identify the framework in Inngest\n * dashboards and during testing.\n */\nexport const frameworkName: SupportedFrameworkName = \"sveltekit\";\n\n/**\n * Using SvelteKit, serve and register any declared functions with Inngest,\n * making them available to be triggered by events.\n *\n * @example\n * ```ts\n * // app/routes/api.inngest.ts\n * // (for Remix 1, use app/routes/api/inngest.ts)\n * import { serve } from \"inngest/remix\";\n * import { inngest } from \"~/inngest/client\";\n * import fnA from \"~/inngest/fnA\";\n *\n * const handler = serve({\n * client: inngest,\n * functions: [fnA],\n * });\n *\n * export { handler as action, handler as loader };\n * ```\n *\n * @public\n */\n// Has explicit return type to avoid JSR-defined \"slow types\"\nexport const serve = (\n options: ServeHandlerOptions,\n): ((event: RequestEvent) => Promise<Response>) & {\n GET: (event: RequestEvent) => Promise<Response>;\n POST: (event: RequestEvent) => Promise<Response>;\n PUT: (event: RequestEvent) => Promise<Response>;\n} => {\n const handler = new InngestCommHandler({\n frameworkName,\n ...options,\n handler: (\n reqMethod: \"GET\" | \"POST\" | \"PUT\" | undefined,\n event: RequestEvent,\n ) => {\n return {\n method: () => reqMethod || event.request.method || \"\",\n body: () => event.request.text(),\n headers: (key) => event.request.headers.get(key),\n url: () => {\n const protocol =\n processEnv(\"NODE_ENV\") === \"development\" ? \"http\" : \"https\";\n\n return new URL(\n event.request.url,\n `${protocol}://${\n event.request.headers.get(\"host\") || options.serveOrigin || \"\"\n }`,\n );\n },\n transformResponse: ({ body, headers, status }) => {\n /**\n * If `Response` isn't included in this environment, it's probably a\n * Node env that isn't already polyfilling. In this case, we can\n * polyfill it here to be safe.\n */\n let Res: typeof Response;\n\n if (typeof Response === \"undefined\") {\n Res = require(\"cross-fetch\").Response;\n } else {\n Res = Response;\n }\n\n return new Res(body, { status, headers });\n },\n };\n },\n });\n\n const baseFn = handler.createHandler();\n\n const fn = baseFn.bind(null, undefined);\n type Fn = typeof fn;\n\n const handlerFn = Object.defineProperties(fn, {\n GET: { value: baseFn.bind(null, \"GET\") },\n POST: { value: baseFn.bind(null, \"POST\") },\n PUT: { value: baseFn.bind(null, \"PUT\") },\n }) as Fn & {\n GET: Fn;\n POST: Fn;\n PUT: Fn;\n };\n\n return handlerFn;\n};\n"],"mappings":";;;;;;;;AAmCA,MAAaA,gBAAwC;;;;;;;;;;;;;;;;;;;;;;;AAyBrD,MAAa,SACX,YAKG;CA2CH,MAAM,SA1CU,IAAIC,8CAAmB;EACrC;EACA,GAAG;EACH,UACE,WACA,UACG;AACH,UAAO;IACL,cAAc,aAAa,MAAM,QAAQ,UAAU;IACnD,YAAY,MAAM,QAAQ,MAAM;IAChC,UAAU,QAAQ,MAAM,QAAQ,QAAQ,IAAI,IAAI;IAChD,WAAW;KACT,MAAM,WACJC,uBAAW,WAAW,KAAK,gBAAgB,SAAS;AAEtD,YAAO,IAAI,IACT,MAAM,QAAQ,KACd,GAAG,SAAS,KACV,MAAM,QAAQ,QAAQ,IAAI,OAAO,IAAI,QAAQ,eAAe,KAE/D;;IAEH,oBAAoB,EAAE,MAAM,SAAS,aAAa;;;;;;KAMhD,IAAIC;AAEJ,SAAI,OAAO,aAAa,YACtB,OAAM,QAAQ,cAAc,CAAC;SAE7B,OAAM;AAGR,YAAO,IAAI,IAAI,MAAM;MAAE;MAAQ;MAAS,CAAC;;IAE5C;;EAEJ,CAAC,CAEqB,eAAe;CAEtC,MAAM,KAAK,OAAO,KAAK,MAAM,OAAU;AAavC,QAVkB,OAAO,iBAAiB,IAAI;EAC5C,KAAK,EAAE,OAAO,OAAO,KAAK,MAAM,MAAM,EAAE;EACxC,MAAM,EAAE,OAAO,OAAO,KAAK,MAAM,OAAO,EAAE;EAC1C,KAAK,EAAE,OAAO,OAAO,KAAK,MAAM,MAAM,EAAE;EACzC,CAAC"}