{"version":3,"file":"edge.cjs","names":["frameworkName: SupportedFrameworkName","createWebApiCommHandler","handleDurableEndpointProxyRequest","InngestEndpointAdapter"],"sources":["../src/edge.ts"],"sourcesContent":["/**\n * An adapter for any request that handles standard Web APIs such as `fetch`,\n * `Request,` and `Response` to serve and register any declared functions with\n * Inngest, making them available to be triggered by events.\n *\n * This is reused by many other adapters, but can be used directly.\n *\n * @example\n * ```ts\n * import { serve } from \"inngest/edge\";\n * import functions from \"~/inngest\";\n *\n * export const handler = serve({ id: \"my-edge-app\", functions });\n * ```\n *\n * @module\n */\n\nimport { createWebApiCommHandler } from \"./components/createWebApiCommHandler.ts\";\nimport type { Inngest } from \"./components/Inngest.ts\";\nimport type {\n  ServeHandlerOptions,\n  SyncHandlerOptions,\n} from \"./components/InngestCommHandler.ts\";\nimport { handleDurableEndpointProxyRequest } from \"./components/InngestDurableEndpointProxy.ts\";\nimport { InngestEndpointAdapter } from \"./components/InngestEndpointAdapter.ts\";\nimport type { RegisterOptions, 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 = \"edge\";\n\nexport type EdgeHandler = (req: Request) => Promise<Response>;\n\nconst commHandler = (\n  options: RegisterOptions & { client: Inngest.Like },\n  syncOptions?: SyncHandlerOptions,\n) => {\n  return createWebApiCommHandler(frameworkName, options, syncOptions);\n};\n\n/**\n * In an edge runtime, serve and register any declared functions with Inngest,\n * making them available to be triggered by events.\n *\n * The edge runtime is a generic term for any serverless runtime that supports\n * only standard Web APIs such as `fetch`, `Request`, and `Response`, such as\n * Cloudflare Workers, Vercel Edge Functions, and AWS Lambda@Edge.\n *\n * @example\n * ```ts\n * import { serve } from \"inngest/edge\";\n * import functions from \"~/inngest\";\n *\n * export const handler = serve({ id: \"my-edge-app\", functions });\n * ```\n *\n * @public\n */\n// Has explicit return type to avoid JSR-defined \"slow types\"\nexport const serve = (options: ServeHandlerOptions): EdgeHandler => {\n  return commHandler(options).createHandler();\n};\n\n/**\n * Creates a durable endpoint proxy handler for edge environments.\n *\n * This handler extracts `runId` and `token` from query parameters,\n * fetches the run output from Inngest, decrypts it via middleware\n * (if configured), and returns it with CORS headers.\n */\nconst createDurableEndpointProxyHandler = (\n  options: InngestEndpointAdapter.ProxyHandlerOptions,\n): EdgeHandler => {\n  return async (req: Request): Promise<Response> => {\n    const url = new URL(req.url);\n\n    const result = await handleDurableEndpointProxyRequest(\n      options.client as Inngest.Any,\n      {\n        runId: url.searchParams.get(\"runId\"),\n        token: url.searchParams.get(\"token\"),\n        method: req.method,\n      },\n    );\n\n    return new Response(result.body, {\n      status: result.status,\n      headers: result.headers,\n    });\n  };\n};\n\n/**\n * In an edge runtime, create a function that can wrap any endpoint to be able\n * to use steps seamlessly within that API.\n *\n * The edge runtime is a generic term for any serverless runtime that supports\n * only standard Web APIs such as `fetch`, `Request`, and `Response`, such as\n * Cloudflare Workers, Vercel Edge Functions, and AWS Lambda@Edge.\n *\n * @example\n * ```ts\n * import { Inngest, step } from \"inngest\";\n * import { endpointAdapter } from \"inngest/edge\";\n *\n * const inngest = new Inngest({\n *   id: \"my-app\",\n *   endpointAdapter,\n * });\n *\n * Bun.serve({\n *   routes: {\n *     \"/\": inngest.endpoint(async (req) => {\n *       const foo = await step.run(\"my-step\", () => ({ foo: \"bar\" }));\n *\n *       return new Response(`Result: ${JSON.stringify(foo)}`);\n *     }),\n *   },\n * });\n * ```\n *\n * You can also configure a custom redirect URL and create a proxy endpoint:\n *\n * @example\n * ```ts\n * import { Inngest } from \"inngest\";\n * import { endpointAdapter } from \"inngest/edge\";\n *\n * const inngest = new Inngest({\n *   id: \"my-app\",\n *   endpointAdapter: endpointAdapter.withOptions({\n *     asyncRedirectUrl: \"/api/inngest/poll\",\n *   }),\n * });\n *\n * // Your durable endpoint\n * export const GET = inngest.endpoint(async (req) => {\n *   const result = await step.run(\"work\", () => \"done\");\n *   return new Response(result);\n * });\n *\n * // Proxy endpoint at /api/inngest/poll - handles CORS and decryption\n * export const GET = inngest.endpointProxy();\n * ```\n */\nexport const endpointAdapter = InngestEndpointAdapter.create((options) => {\n  return commHandler(options, options).createSyncHandler();\n}, createDurableEndpointProxyHandler);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,MAAaA,gBAAwC;AAIrD,MAAM,eACJ,SACA,gBACG;AACH,QAAOC,wDAAwB,eAAe,SAAS,YAAY;;;;;;;;;;;;;;;;;;;;AAsBrE,MAAa,SAAS,YAA8C;AAClE,QAAO,YAAY,QAAQ,CAAC,eAAe;;;;;;;;;AAU7C,MAAM,qCACJ,YACgB;AAChB,QAAO,OAAO,QAAoC;EAChD,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI;EAE5B,MAAM,SAAS,MAAMC,sEACnB,QAAQ,QACR;GACE,OAAO,IAAI,aAAa,IAAI,QAAQ;GACpC,OAAO,IAAI,aAAa,IAAI,QAAQ;GACpC,QAAQ,IAAI;GACb,CACF;AAED,SAAO,IAAI,SAAS,OAAO,MAAM;GAC/B,QAAQ,OAAO;GACf,SAAS,OAAO;GACjB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDN,MAAa,kBAAkBC,sDAAuB,QAAQ,YAAY;AACxE,QAAO,YAAY,SAAS,QAAQ,CAAC,mBAAmB;GACvD,kCAAkC"}