{"version":3,"file":"sveltekit.cjs","names":["frameworkName: SupportedFrameworkName","InngestCommHandler","processEnv","envKeys","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 { envKeys } from \"./helpers/consts.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(envKeys.NodeEnv) === \"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":";;;;;;;;;AAoCA,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,uBAAWC,uBAAQ,QAAQ,KAAK,gBAAgB,SAAS;AAE3D,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"}