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 3.7 kB
{"version":3,"file":"redwood.cjs","names":["frameworkName: SupportedFrameworkName","InngestCommHandler","processEnv"],"sources":["../src/redwood.ts"],"sourcesContent":["/**\n * An adapter for AWS Lambda to serve and register any declared functions with\n * Inngest, making them available to be triggered by events.\n *\n * @example\n * ```ts\n * import { serve } from \"inngest/redwood\";\n * import { inngest } from \"src/inngest/client\";\n * import fnA from \"src/inngest/fnA\"; // Your own function\n *\n * export const handler = serve({\n * client: inngest,\n * functions: [fnA],\n * servePath: \"/api/inngest\",\n * });\n * ```\n *\n * @module\n */\n\nimport type {\n APIGatewayProxyEvent,\n Context as LambdaContext,\n} from \"aws-lambda\";\nimport {\n InngestCommHandler,\n type ServeHandlerOptions,\n} from \"./components/InngestCommHandler.ts\";\nimport { processEnv } from \"./helpers/env.ts\";\nimport type { SupportedFrameworkName } from \"./types.ts\";\n\nexport interface RedwoodResponse {\n statusCode: number;\n body?: string | null;\n headers?: Record<string, string>;\n}\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 = \"redwoodjs\";\n\n/**\n * In Redwood.js, serve and register any declared functions with Inngest, making\n * them available to be triggered by events.\n *\n * @example\n * ```ts\n * import { serve } from \"inngest/redwood\";\n * import { inngest } from \"src/inngest/client\";\n * import fnA from \"src/inngest/fnA\"; // Your own function\n *\n * export const handler = serve({\n * client: inngest,\n * functions: [fnA],\n * servePath: \"/api/inngest\",\n * });\n * ```\n *\n * @public\n */\n// Has explicit return type to avoid JSR-defined \"slow types\"\nexport const serve = (\n options: ServeHandlerOptions,\n): ((\n event: APIGatewayProxyEvent,\n _context: LambdaContext,\n) => Promise<RedwoodResponse>) => {\n const handler = new InngestCommHandler({\n frameworkName,\n ...options,\n handler: (event: APIGatewayProxyEvent, _context: LambdaContext) => {\n return {\n body: () => {\n return JSON.parse(\n event.body\n ? event.isBase64Encoded\n ? Buffer.from(event.body, \"base64\").toString()\n : event.body\n : \"{}\",\n );\n },\n headers: (key) => event.headers[key],\n method: () => event.httpMethod,\n url: () => {\n const scheme =\n processEnv(\"NODE_ENV\") === \"development\" ? \"http\" : \"https\";\n const url = new URL(\n event.path,\n `${scheme}://${event.headers.host || \"\"}`,\n );\n\n return url;\n },\n queryString: (key) => event.queryStringParameters?.[key],\n transformResponse: ({\n body,\n status: statusCode,\n headers,\n }): RedwoodResponse => {\n return { body, statusCode, headers };\n },\n };\n },\n });\n\n return handler.createHandler();\n};\n"],"mappings":";;;;;;;;AAyCA,MAAaA,gBAAwC;;;;;;;;;;;;;;;;;;;;AAsBrD,MAAa,SACX,YAIgC;AAuChC,QAtCgB,IAAIC,8CAAmB;EACrC;EACA,GAAG;EACH,UAAU,OAA6B,aAA4B;AACjE,UAAO;IACL,YAAY;AACV,YAAO,KAAK,MACV,MAAM,OACF,MAAM,kBACJ,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC,UAAU,GAC5C,MAAM,OACR,KACL;;IAEH,UAAU,QAAQ,MAAM,QAAQ;IAChC,cAAc,MAAM;IACpB,WAAW;KACT,MAAM,SACJC,uBAAW,WAAW,KAAK,gBAAgB,SAAS;AAMtD,YALY,IAAI,IACd,MAAM,MACN,GAAG,OAAO,KAAK,MAAM,QAAQ,QAAQ,KACtC;;IAIH,cAAc,QAAQ,MAAM,wBAAwB;IACpD,oBAAoB,EAClB,MACA,QAAQ,YACR,cACqB;AACrB,YAAO;MAAE;MAAM;MAAY;MAAS;;IAEvC;;EAEJ,CAAC,CAEa,eAAe"}