inngest 3.48.2-pr-1209.2 → 3.49.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/h3.cjs +26 -81
- package/h3.cjs.map +1 -1
- package/h3.d.cts +2 -30
- package/h3.d.cts.map +1 -1
- package/h3.d.ts +2 -30
- package/h3.d.ts.map +1 -1
- package/h3.js +28 -82
- package/h3.js.map +1 -1
- package/next.cjs +15 -1
- package/next.cjs.map +1 -1
- package/next.js +15 -1
- package/next.js.map +1 -1
- package/nitro.cjs +0 -34
- package/nitro.cjs.map +1 -1
- package/nitro.d.cts +2 -31
- package/nitro.d.cts.map +1 -1
- package/nitro.d.ts +2 -31
- package/nitro.d.ts.map +1 -1
- package/nitro.js +2 -35
- package/nitro.js.map +1 -1
- package/package.json +1 -1
- package/types.d.cts +4 -4
- package/types.d.ts +4 -4
- package/version.cjs +1 -1
- package/version.cjs.map +1 -1
- package/version.d.cts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# inngest
|
|
2
2
|
|
|
3
|
+
## 3.49.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1234](https://github.com/inngest/inngest-js/pull/1234) [`c85e2f29`](https://github.com/inngest/inngest-js/commit/c85e2f297a782e78fe4b681793464e5b60045c23) Thanks [@amh4r](https://github.com/amh4r)! - Fix not treating Next Request.body as a ReadableStream
|
|
8
|
+
|
|
3
9
|
## 3.49.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
package/h3.cjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
|
|
2
|
-
const require_strings = require('./helpers/strings.cjs');
|
|
3
2
|
const require_env = require('./helpers/env.cjs');
|
|
4
3
|
const require_InngestCommHandler = require('./components/InngestCommHandler.cjs');
|
|
5
4
|
let h3 = require("h3");
|
|
@@ -38,50 +37,6 @@ let h3 = require("h3");
|
|
|
38
37
|
* dashboards and during testing.
|
|
39
38
|
*/
|
|
40
39
|
const frameworkName = "h3";
|
|
41
|
-
const commHandler = (options, syncOptions) => {
|
|
42
|
-
return new require_InngestCommHandler.InngestCommHandler({
|
|
43
|
-
frameworkName,
|
|
44
|
-
...options,
|
|
45
|
-
syncOptions,
|
|
46
|
-
handler: (event) => {
|
|
47
|
-
return {
|
|
48
|
-
body: () => (0, h3.readBody)(event),
|
|
49
|
-
textBody: async () => {
|
|
50
|
-
const method = event.method;
|
|
51
|
-
return method === "POST" || method === "PUT" || method === "PATCH" || method === "DELETE" ? await (0, h3.readRawBody)(event, "utf-8") ?? "" : "";
|
|
52
|
-
},
|
|
53
|
-
headers: (key) => (0, h3.getHeader)(event, key),
|
|
54
|
-
method: () => event.method,
|
|
55
|
-
url: () => {
|
|
56
|
-
let scheme = "https";
|
|
57
|
-
if ((require_env.processEnv("NODE_ENV") ?? "dev").startsWith("dev")) scheme = "http";
|
|
58
|
-
return new URL(String(event.path), `${scheme}://${String((0, h3.getHeader)(event, "host"))}`);
|
|
59
|
-
},
|
|
60
|
-
queryString: (key) => {
|
|
61
|
-
const param = (0, h3.getQuery)(event)[key];
|
|
62
|
-
if (param) return String(param);
|
|
63
|
-
},
|
|
64
|
-
transformResponse: (actionRes) => {
|
|
65
|
-
const { res } = event.node;
|
|
66
|
-
res.statusCode = actionRes.status;
|
|
67
|
-
(0, h3.setHeaders)(event, actionRes.headers);
|
|
68
|
-
return (0, h3.send)(event, actionRes.body);
|
|
69
|
-
},
|
|
70
|
-
experimentalTransformSyncResponse: async (data) => {
|
|
71
|
-
const headers = Object.entries((0, h3.getResponseHeaders)(event) ?? {}).reduce((acc, [key, value]) => {
|
|
72
|
-
acc[key] = Array.isArray(value) ? value.join(",") : `${value}`;
|
|
73
|
-
return acc;
|
|
74
|
-
}, {});
|
|
75
|
-
return {
|
|
76
|
-
body: typeof data === "string" ? data : require_strings.stringify(data),
|
|
77
|
-
headers,
|
|
78
|
-
status: (0, h3.getResponseStatus)(event) ?? 200
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
};
|
|
85
40
|
/**
|
|
86
41
|
* In h3, serve and register any declared functions with Inngest, making
|
|
87
42
|
* them available to be triggered by events.
|
|
@@ -111,45 +66,35 @@ const commHandler = (options, syncOptions) => {
|
|
|
111
66
|
* @public
|
|
112
67
|
*/
|
|
113
68
|
const serve = (options) => {
|
|
114
|
-
return
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
* });
|
|
141
|
-
* ```
|
|
142
|
-
*/
|
|
143
|
-
const createExperimentalEndpointWrapper = (options) => {
|
|
144
|
-
const inngestWrapper = commHandler(options, options).createSyncHandler();
|
|
145
|
-
const h3Handler = (userlandHandler) => {
|
|
146
|
-
return (0, h3.defineEventHandler)(inngestWrapper(userlandHandler));
|
|
147
|
-
};
|
|
148
|
-
return h3Handler;
|
|
69
|
+
return new require_InngestCommHandler.InngestCommHandler({
|
|
70
|
+
frameworkName,
|
|
71
|
+
...options,
|
|
72
|
+
handler: (event) => {
|
|
73
|
+
return {
|
|
74
|
+
body: () => (0, h3.readBody)(event),
|
|
75
|
+
headers: (key) => (0, h3.getHeader)(event, key),
|
|
76
|
+
method: () => event.method,
|
|
77
|
+
url: () => {
|
|
78
|
+
let scheme = "https";
|
|
79
|
+
if ((require_env.processEnv("NODE_ENV") ?? "dev").startsWith("dev")) scheme = "http";
|
|
80
|
+
return new URL(String(event.path), `${scheme}://${String((0, h3.getHeader)(event, "host"))}`);
|
|
81
|
+
},
|
|
82
|
+
queryString: (key) => {
|
|
83
|
+
const param = (0, h3.getQuery)(event)[key];
|
|
84
|
+
if (param) return String(param);
|
|
85
|
+
},
|
|
86
|
+
transformResponse: (actionRes) => {
|
|
87
|
+
const { res } = event.node;
|
|
88
|
+
res.statusCode = actionRes.status;
|
|
89
|
+
(0, h3.setHeaders)(event, actionRes.headers);
|
|
90
|
+
return (0, h3.send)(event, actionRes.body);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}).createHandler();
|
|
149
95
|
};
|
|
150
96
|
|
|
151
97
|
//#endregion
|
|
152
|
-
exports.createExperimentalEndpointWrapper = createExperimentalEndpointWrapper;
|
|
153
98
|
exports.frameworkName = frameworkName;
|
|
154
99
|
exports.serve = serve;
|
|
155
100
|
//# sourceMappingURL=h3.cjs.map
|
package/h3.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h3.cjs","names":["frameworkName: SupportedFrameworkName","InngestCommHandler","processEnv"
|
|
1
|
+
{"version":3,"file":"h3.cjs","names":["frameworkName: SupportedFrameworkName","InngestCommHandler","processEnv"],"sources":["../src/h3.ts"],"sourcesContent":["/**\n * An adapter for H3 to serve and register any declared functions with Inngest,\n * making them available to be triggered by events.\n *\n * @example\n * ```ts\n * import { createApp, eventHandler, toNodeListener } from \"h3\";\n * import { serve } from \"inngest/h3\";\n * import { createServer } from \"node:http\";\n * import { inngest } from \"./inngest/client\";\n * import fnA from \"./inngest/fnA\";\n *\n * const app = createApp();\n * app.use(\n * \"/api/inngest\",\n * eventHandler(\n * serve({\n * client: inngest,\n * functions: [fnA],\n * })\n * )\n * );\n *\n * createServer(toNodeListener(app)).listen(process.env.PORT || 3000);\n * ```\n *\n * @module\n */\n\nimport {\n type EventHandlerRequest,\n getHeader,\n getQuery,\n type H3Event,\n readBody,\n send,\n setHeaders,\n} from \"h3\";\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 = \"h3\";\n\n/**\n * In h3, serve and register any declared functions with Inngest, making\n * them available to be triggered by events.\n *\n * @example\n * ```ts\n * import { createApp, eventHandler, toNodeListener } from \"h3\";\n * import { serve } from \"inngest/h3\";\n * import { createServer } from \"node:http\";\n * import { inngest } from \"./inngest/client\";\n * import fnA from \"./inngest/fnA\";\n *\n * const app = createApp();\n * app.use(\n * \"/api/inngest\",\n * eventHandler(\n * serve({\n * client: inngest,\n * functions: [fnA],\n * })\n * )\n * );\n *\n * createServer(toNodeListener(app)).listen(process.env.PORT || 3000);\n * ```\n *\n * @public\n */\n// Has explicit return type to avoid JSR-defined \"slow types\"\nexport const serve = (\n options: ServeHandlerOptions,\n): ((event: H3Event<EventHandlerRequest>) => Promise<void>) => {\n const handler = new InngestCommHandler({\n frameworkName,\n ...options,\n handler: (event: H3Event<EventHandlerRequest>) => {\n return {\n body: () => readBody(event),\n headers: (key) => getHeader(event, key),\n method: () => event.method,\n url: () => {\n let scheme = \"https\";\n if ((processEnv(\"NODE_ENV\") ?? \"dev\").startsWith(\"dev\")) {\n scheme = \"http\";\n }\n\n return new URL(\n String(event.path),\n `${scheme}://${String(getHeader(event, \"host\"))}`,\n );\n },\n queryString: (key) => {\n const param = getQuery(event)[key];\n if (param) {\n return String(param);\n }\n\n return;\n },\n transformResponse: (actionRes) => {\n const { res } = event.node;\n res.statusCode = actionRes.status;\n setHeaders(event, actionRes.headers);\n return send(event, actionRes.body);\n },\n };\n },\n });\n\n return handler.createHandler();\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,MAAaA,gBAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BrD,MAAa,SACX,YAC6D;AAsC7D,QArCgB,IAAIC,8CAAmB;EACrC;EACA,GAAG;EACH,UAAU,UAAwC;AAChD,UAAO;IACL,6BAAqB,MAAM;IAC3B,UAAU,0BAAkB,OAAO,IAAI;IACvC,cAAc,MAAM;IACpB,WAAW;KACT,IAAI,SAAS;AACb,UAAKC,uBAAW,WAAW,IAAI,OAAO,WAAW,MAAM,CACrD,UAAS;AAGX,YAAO,IAAI,IACT,OAAO,MAAM,KAAK,EAClB,GAAG,OAAO,KAAK,yBAAiB,OAAO,OAAO,CAAC,GAChD;;IAEH,cAAc,QAAQ;KACpB,MAAM,yBAAiB,MAAM,CAAC;AAC9B,SAAI,MACF,QAAO,OAAO,MAAM;;IAKxB,oBAAoB,cAAc;KAChC,MAAM,EAAE,QAAQ,MAAM;AACtB,SAAI,aAAa,UAAU;AAC3B,wBAAW,OAAO,UAAU,QAAQ;AACpC,yBAAY,OAAO,UAAU,KAAK;;IAErC;;EAEJ,CAAC,CAEa,eAAe"}
|
package/h3.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SupportedFrameworkName } from "./types.cjs";
|
|
2
|
-
import { ServeHandlerOptions
|
|
2
|
+
import { ServeHandlerOptions } from "./components/InngestCommHandler.cjs";
|
|
3
3
|
import { EventHandlerRequest, H3Event } from "h3";
|
|
4
4
|
|
|
5
5
|
//#region src/h3.d.ts
|
|
@@ -38,34 +38,6 @@ declare const frameworkName: SupportedFrameworkName;
|
|
|
38
38
|
* @public
|
|
39
39
|
*/
|
|
40
40
|
declare const serve: (options: ServeHandlerOptions) => ((event: H3Event<EventHandlerRequest>) => Promise<void>);
|
|
41
|
-
/**
|
|
42
|
-
* In h3, create a function that can define an event handler with Inngest steps
|
|
43
|
-
* enabled, allowing you to use steps seamlessly within that API.
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
* ```ts
|
|
47
|
-
* import { Inngest, step } from "inngest";
|
|
48
|
-
* import { createExperimentalEndpointWrapper } from "inngest/h3";
|
|
49
|
-
*
|
|
50
|
-
* const inngestEventHandler = createExperimentalEndpointWrapper({
|
|
51
|
-
* client: new Inngest({ id: "h3-sync-example" }),
|
|
52
|
-
* });
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* export default inngestEventHandler(async (event) => {
|
|
56
|
-
* const foo = await step.run("example/step", async () => {
|
|
57
|
-
* return "Hello from step!";
|
|
58
|
-
* });
|
|
59
|
-
*
|
|
60
|
-
* return `
|
|
61
|
-
* <meta charset="utf-8">
|
|
62
|
-
* <h1>This endpoint worked!</h1>
|
|
63
|
-
* <p>The step's result was: ${foo}</p>
|
|
64
|
-
* `;
|
|
65
|
-
* });
|
|
66
|
-
* ```
|
|
67
|
-
*/
|
|
68
|
-
declare const createExperimentalEndpointWrapper: (options: SyncHandlerOptions) => (handler: (event: H3Event<EventHandlerRequest>) => Promise<any>) => (event: H3Event<EventHandlerRequest>) => Promise<any>;
|
|
69
41
|
//#endregion
|
|
70
|
-
export {
|
|
42
|
+
export { frameworkName, serve };
|
|
71
43
|
//# sourceMappingURL=h3.d.cts.map
|
package/h3.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h3.d.cts","names":[],"sources":["../src/h3.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"h3.d.cts","names":[],"sources":["../src/h3.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;cAiDa,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+Bf,iBACF,iCACC,QAAQ,yBAAyB"}
|
package/h3.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SupportedFrameworkName } from "./types.js";
|
|
2
|
-
import { ServeHandlerOptions
|
|
2
|
+
import { ServeHandlerOptions } from "./components/InngestCommHandler.js";
|
|
3
3
|
import { EventHandlerRequest, H3Event } from "h3";
|
|
4
4
|
|
|
5
5
|
//#region src/h3.d.ts
|
|
@@ -38,34 +38,6 @@ declare const frameworkName: SupportedFrameworkName;
|
|
|
38
38
|
* @public
|
|
39
39
|
*/
|
|
40
40
|
declare const serve: (options: ServeHandlerOptions) => ((event: H3Event<EventHandlerRequest>) => Promise<void>);
|
|
41
|
-
/**
|
|
42
|
-
* In h3, create a function that can define an event handler with Inngest steps
|
|
43
|
-
* enabled, allowing you to use steps seamlessly within that API.
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
* ```ts
|
|
47
|
-
* import { Inngest, step } from "inngest";
|
|
48
|
-
* import { createExperimentalEndpointWrapper } from "inngest/h3";
|
|
49
|
-
*
|
|
50
|
-
* const inngestEventHandler = createExperimentalEndpointWrapper({
|
|
51
|
-
* client: new Inngest({ id: "h3-sync-example" }),
|
|
52
|
-
* });
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* export default inngestEventHandler(async (event) => {
|
|
56
|
-
* const foo = await step.run("example/step", async () => {
|
|
57
|
-
* return "Hello from step!";
|
|
58
|
-
* });
|
|
59
|
-
*
|
|
60
|
-
* return `
|
|
61
|
-
* <meta charset="utf-8">
|
|
62
|
-
* <h1>This endpoint worked!</h1>
|
|
63
|
-
* <p>The step's result was: ${foo}</p>
|
|
64
|
-
* `;
|
|
65
|
-
* });
|
|
66
|
-
* ```
|
|
67
|
-
*/
|
|
68
|
-
declare const createExperimentalEndpointWrapper: (options: SyncHandlerOptions) => (handler: (event: H3Event<EventHandlerRequest>) => Promise<any>) => (event: H3Event<EventHandlerRequest>) => Promise<any>;
|
|
69
41
|
//#endregion
|
|
70
|
-
export {
|
|
42
|
+
export { frameworkName, serve };
|
|
71
43
|
//# sourceMappingURL=h3.d.ts.map
|
package/h3.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h3.d.ts","names":[],"sources":["../src/h3.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"h3.d.ts","names":[],"sources":["../src/h3.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;cAiDa,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+Bf,iBACF,iCACC,QAAQ,yBAAyB"}
|
package/h3.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { stringify } from "./helpers/strings.js";
|
|
2
1
|
import { processEnv } from "./helpers/env.js";
|
|
3
2
|
import { InngestCommHandler } from "./components/InngestCommHandler.js";
|
|
4
|
-
import {
|
|
3
|
+
import { getHeader, getQuery, readBody, send, setHeaders } from "h3";
|
|
5
4
|
|
|
6
5
|
//#region src/h3.ts
|
|
7
6
|
/**
|
|
@@ -37,50 +36,6 @@ import { defineEventHandler, getHeader, getQuery, getResponseHeaders, getRespons
|
|
|
37
36
|
* dashboards and during testing.
|
|
38
37
|
*/
|
|
39
38
|
const frameworkName = "h3";
|
|
40
|
-
const commHandler = (options, syncOptions) => {
|
|
41
|
-
return new InngestCommHandler({
|
|
42
|
-
frameworkName,
|
|
43
|
-
...options,
|
|
44
|
-
syncOptions,
|
|
45
|
-
handler: (event) => {
|
|
46
|
-
return {
|
|
47
|
-
body: () => readBody(event),
|
|
48
|
-
textBody: async () => {
|
|
49
|
-
const method = event.method;
|
|
50
|
-
return method === "POST" || method === "PUT" || method === "PATCH" || method === "DELETE" ? await readRawBody(event, "utf-8") ?? "" : "";
|
|
51
|
-
},
|
|
52
|
-
headers: (key) => getHeader(event, key),
|
|
53
|
-
method: () => event.method,
|
|
54
|
-
url: () => {
|
|
55
|
-
let scheme = "https";
|
|
56
|
-
if ((processEnv("NODE_ENV") ?? "dev").startsWith("dev")) scheme = "http";
|
|
57
|
-
return new URL(String(event.path), `${scheme}://${String(getHeader(event, "host"))}`);
|
|
58
|
-
},
|
|
59
|
-
queryString: (key) => {
|
|
60
|
-
const param = getQuery(event)[key];
|
|
61
|
-
if (param) return String(param);
|
|
62
|
-
},
|
|
63
|
-
transformResponse: (actionRes) => {
|
|
64
|
-
const { res } = event.node;
|
|
65
|
-
res.statusCode = actionRes.status;
|
|
66
|
-
setHeaders(event, actionRes.headers);
|
|
67
|
-
return send(event, actionRes.body);
|
|
68
|
-
},
|
|
69
|
-
experimentalTransformSyncResponse: async (data) => {
|
|
70
|
-
const headers = Object.entries(getResponseHeaders(event) ?? {}).reduce((acc, [key, value]) => {
|
|
71
|
-
acc[key] = Array.isArray(value) ? value.join(",") : `${value}`;
|
|
72
|
-
return acc;
|
|
73
|
-
}, {});
|
|
74
|
-
return {
|
|
75
|
-
body: typeof data === "string" ? data : stringify(data),
|
|
76
|
-
headers,
|
|
77
|
-
status: getResponseStatus(event) ?? 200
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
};
|
|
84
39
|
/**
|
|
85
40
|
* In h3, serve and register any declared functions with Inngest, making
|
|
86
41
|
* them available to be triggered by events.
|
|
@@ -110,43 +65,34 @@ const commHandler = (options, syncOptions) => {
|
|
|
110
65
|
* @public
|
|
111
66
|
*/
|
|
112
67
|
const serve = (options) => {
|
|
113
|
-
return
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
* });
|
|
140
|
-
* ```
|
|
141
|
-
*/
|
|
142
|
-
const createExperimentalEndpointWrapper = (options) => {
|
|
143
|
-
const inngestWrapper = commHandler(options, options).createSyncHandler();
|
|
144
|
-
const h3Handler = (userlandHandler) => {
|
|
145
|
-
return defineEventHandler(inngestWrapper(userlandHandler));
|
|
146
|
-
};
|
|
147
|
-
return h3Handler;
|
|
68
|
+
return new InngestCommHandler({
|
|
69
|
+
frameworkName,
|
|
70
|
+
...options,
|
|
71
|
+
handler: (event) => {
|
|
72
|
+
return {
|
|
73
|
+
body: () => readBody(event),
|
|
74
|
+
headers: (key) => getHeader(event, key),
|
|
75
|
+
method: () => event.method,
|
|
76
|
+
url: () => {
|
|
77
|
+
let scheme = "https";
|
|
78
|
+
if ((processEnv("NODE_ENV") ?? "dev").startsWith("dev")) scheme = "http";
|
|
79
|
+
return new URL(String(event.path), `${scheme}://${String(getHeader(event, "host"))}`);
|
|
80
|
+
},
|
|
81
|
+
queryString: (key) => {
|
|
82
|
+
const param = getQuery(event)[key];
|
|
83
|
+
if (param) return String(param);
|
|
84
|
+
},
|
|
85
|
+
transformResponse: (actionRes) => {
|
|
86
|
+
const { res } = event.node;
|
|
87
|
+
res.statusCode = actionRes.status;
|
|
88
|
+
setHeaders(event, actionRes.headers);
|
|
89
|
+
return send(event, actionRes.body);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}).createHandler();
|
|
148
94
|
};
|
|
149
95
|
|
|
150
96
|
//#endregion
|
|
151
|
-
export {
|
|
97
|
+
export { frameworkName, serve };
|
|
152
98
|
//# sourceMappingURL=h3.js.map
|
package/h3.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h3.js","names":["frameworkName: SupportedFrameworkName"
|
|
1
|
+
{"version":3,"file":"h3.js","names":["frameworkName: SupportedFrameworkName"],"sources":["../src/h3.ts"],"sourcesContent":["/**\n * An adapter for H3 to serve and register any declared functions with Inngest,\n * making them available to be triggered by events.\n *\n * @example\n * ```ts\n * import { createApp, eventHandler, toNodeListener } from \"h3\";\n * import { serve } from \"inngest/h3\";\n * import { createServer } from \"node:http\";\n * import { inngest } from \"./inngest/client\";\n * import fnA from \"./inngest/fnA\";\n *\n * const app = createApp();\n * app.use(\n * \"/api/inngest\",\n * eventHandler(\n * serve({\n * client: inngest,\n * functions: [fnA],\n * })\n * )\n * );\n *\n * createServer(toNodeListener(app)).listen(process.env.PORT || 3000);\n * ```\n *\n * @module\n */\n\nimport {\n type EventHandlerRequest,\n getHeader,\n getQuery,\n type H3Event,\n readBody,\n send,\n setHeaders,\n} from \"h3\";\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 = \"h3\";\n\n/**\n * In h3, serve and register any declared functions with Inngest, making\n * them available to be triggered by events.\n *\n * @example\n * ```ts\n * import { createApp, eventHandler, toNodeListener } from \"h3\";\n * import { serve } from \"inngest/h3\";\n * import { createServer } from \"node:http\";\n * import { inngest } from \"./inngest/client\";\n * import fnA from \"./inngest/fnA\";\n *\n * const app = createApp();\n * app.use(\n * \"/api/inngest\",\n * eventHandler(\n * serve({\n * client: inngest,\n * functions: [fnA],\n * })\n * )\n * );\n *\n * createServer(toNodeListener(app)).listen(process.env.PORT || 3000);\n * ```\n *\n * @public\n */\n// Has explicit return type to avoid JSR-defined \"slow types\"\nexport const serve = (\n options: ServeHandlerOptions,\n): ((event: H3Event<EventHandlerRequest>) => Promise<void>) => {\n const handler = new InngestCommHandler({\n frameworkName,\n ...options,\n handler: (event: H3Event<EventHandlerRequest>) => {\n return {\n body: () => readBody(event),\n headers: (key) => getHeader(event, key),\n method: () => event.method,\n url: () => {\n let scheme = \"https\";\n if ((processEnv(\"NODE_ENV\") ?? \"dev\").startsWith(\"dev\")) {\n scheme = \"http\";\n }\n\n return new URL(\n String(event.path),\n `${scheme}://${String(getHeader(event, \"host\"))}`,\n );\n },\n queryString: (key) => {\n const param = getQuery(event)[key];\n if (param) {\n return String(param);\n }\n\n return;\n },\n transformResponse: (actionRes) => {\n const { res } = event.node;\n res.statusCode = actionRes.status;\n setHeaders(event, actionRes.headers);\n return send(event, actionRes.body);\n },\n };\n },\n });\n\n return handler.createHandler();\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,MAAaA,gBAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BrD,MAAa,SACX,YAC6D;AAsC7D,QArCgB,IAAI,mBAAmB;EACrC;EACA,GAAG;EACH,UAAU,UAAwC;AAChD,UAAO;IACL,YAAY,SAAS,MAAM;IAC3B,UAAU,QAAQ,UAAU,OAAO,IAAI;IACvC,cAAc,MAAM;IACpB,WAAW;KACT,IAAI,SAAS;AACb,UAAK,WAAW,WAAW,IAAI,OAAO,WAAW,MAAM,CACrD,UAAS;AAGX,YAAO,IAAI,IACT,OAAO,MAAM,KAAK,EAClB,GAAG,OAAO,KAAK,OAAO,UAAU,OAAO,OAAO,CAAC,GAChD;;IAEH,cAAc,QAAQ;KACpB,MAAM,QAAQ,SAAS,MAAM,CAAC;AAC9B,SAAI,MACF,QAAO,OAAO,MAAM;;IAKxB,oBAAoB,cAAc;KAChC,MAAM,EAAE,QAAQ,MAAM;AACtB,SAAI,aAAa,UAAU;AAC3B,gBAAW,OAAO,UAAU,QAAQ;AACpC,YAAO,KAAK,OAAO,UAAU,KAAK;;IAErC;;EAEJ,CAAC,CAEa,eAAe"}
|
package/next.cjs
CHANGED
|
@@ -70,7 +70,11 @@ const serve = (options) => {
|
|
|
70
70
|
return Array.isArray(header) ? header[0] : header;
|
|
71
71
|
};
|
|
72
72
|
return {
|
|
73
|
-
body: () =>
|
|
73
|
+
body: async () => {
|
|
74
|
+
if (typeof req.json === "function") return await req.json();
|
|
75
|
+
if (req.body instanceof ReadableStream) return await streamToJSON(req.body);
|
|
76
|
+
return req.body;
|
|
77
|
+
},
|
|
74
78
|
headers: getHeader,
|
|
75
79
|
method: () => {
|
|
76
80
|
return reqMethod || req.method || "";
|
|
@@ -177,6 +181,16 @@ const serve = (options) => {
|
|
|
177
181
|
PUT: { value: baseFn.bind(null, "PUT") }
|
|
178
182
|
});
|
|
179
183
|
};
|
|
184
|
+
async function streamToJSON(stream) {
|
|
185
|
+
const chunks = [];
|
|
186
|
+
const reader = stream.getReader();
|
|
187
|
+
while (true) {
|
|
188
|
+
const { done, value } = await reader.read();
|
|
189
|
+
if (done) break;
|
|
190
|
+
chunks.push(value);
|
|
191
|
+
}
|
|
192
|
+
return JSON.parse(Buffer.concat(chunks).toString("utf8"));
|
|
193
|
+
}
|
|
180
194
|
|
|
181
195
|
//#endregion
|
|
182
196
|
exports.frameworkName = frameworkName;
|
package/next.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next.cjs","names":["frameworkName: SupportedFrameworkName","InngestCommHandler","absoluteUrl: URL | undefined","host","scheme: \"http\" | \"https\"","getResponse"],"sources":["../src/next.ts"],"sourcesContent":["/**\n * An adapter for Next.js to serve and register any declared functions with\n * Inngest, making them available to be triggered by events.\n *\n * Supports Next.js 12+, both serverless and edge.\n *\n * @example Next.js <=12 or the pages router can export the handler directly\n * ```ts\n * export default serve({ client: inngest, functions: [fn1, fn2] });\n * ```\n *\n * @example Next.js >=13 with the `app` dir must export individual methods\n * ```ts\n * export const { GET, POST, PUT } = serve({\n * client: inngest,\n * functions: [fn1, fn2],\n * });\n * ```\n *\n * @module\n */\n\nimport type { NextApiRequest, NextApiResponse } from \"next\";\nimport type { NextRequest } from \"next/server\";\nimport {\n InngestCommHandler,\n type ServeHandlerOptions,\n} from \"./components/InngestCommHandler.ts\";\nimport { getResponse } from \"./helpers/env.ts\";\nimport type { Either } from \"./helpers/types.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 = \"nextjs\";\n\n/**\n * The shape of a request handler, supporting Next.js 12+.\n *\n * We are intentionally abstract with the arguments here, as Next.js's type\n * checking when building varies wildly between major versions; specifying\n * different types (even optional types) here can cause issues with the build.\n *\n * This change was initially made for Next.js 15, which specifies the second\n * argument as `RouteContext`, whereas Next.js 13 and 14 omit it and Next.js 12\n * provides a `NextApiResponse`, which is varies based on the execution\n * environment used (edge vs serverless).\n */\nexport type RequestHandler = (\n expectedReq: NextRequest,\n res: unknown,\n) => Promise<Response>;\n\nconst isRecord = (val: unknown): val is Record<string, unknown> => {\n return typeof val === \"object\" && val !== null;\n};\n\nconst isFunction = (val: unknown): val is (...args: unknown[]) => unknown => {\n return typeof val === \"function\";\n};\n\nconst isNext12ApiResponse = (val: unknown): val is NextApiResponse => {\n return (\n isRecord(val) &&\n isFunction(val.setHeader) &&\n isFunction(val.status) &&\n isFunction(val.send)\n );\n};\n\n/**\n * In Next.js, serve and register any declared functions with Inngest, making\n * them available to be triggered by events.\n *\n * Supports Next.js 12+, both serverless and edge.\n *\n * @example Next.js <=12 or the pages router can export the handler directly\n * ```ts\n * export default serve({ client: inngest, functions: [fn1, fn2] });\n * ```\n *\n * @example Next.js >=13 with the `app` dir must export individual methods\n * ```ts\n * export const { GET, POST, PUT } = serve({\n * client: inngest,\n * functions: [fn1, fn2],\n * });\n * ```\n *\n * @public\n */\n// Has explicit return type to avoid JSR-defined \"slow types\"\nexport const serve = (\n options: ServeHandlerOptions,\n): RequestHandler & {\n GET: RequestHandler;\n POST: RequestHandler;\n PUT: RequestHandler;\n} => {\n const handler = new InngestCommHandler({\n frameworkName,\n ...options,\n handler: (\n reqMethod: \"GET\" | \"POST\" | \"PUT\" | undefined,\n ...args: Parameters<RequestHandler>\n ) => {\n const [expectedReq, res] = args;\n const req = expectedReq as Either<NextApiRequest, NextRequest>;\n\n const getHeader = (key: string): string | null | undefined => {\n const header =\n typeof req.headers.get === \"function\"\n ? req.headers.get(key)\n : req.headers[key];\n\n return Array.isArray(header) ? header[0] : header;\n };\n\n return {\n body: () => (typeof req.json === \"function\" ? req.json() : req.body),\n headers: getHeader,\n method: () => {\n /**\n * `req.method`, though types say otherwise, is not available in Next.js\n * 13 {@link https://beta.nextjs.org/docs/routing/route-handlers Route Handlers}.\n *\n * Therefore, we must try to set the method ourselves where we know it.\n */\n const method = reqMethod || req.method || \"\";\n return method;\n },\n isProduction: () => {\n /**\n * Vercel Edge Functions do not allow dynamic access to environment\n * variables, so we'll manage production checks directly here.\n *\n * We try/catch to avoid situations where Next.js is being used in\n * environments where `process.env` is not accessible or polyfilled.\n */\n try {\n const isProd = process.env.NODE_ENV === \"production\";\n return isProd;\n } catch (_err) {\n // no-op\n }\n\n return;\n },\n queryString: (key, url) => {\n const qs = req.query?.[key] || url.searchParams.get(key);\n return Array.isArray(qs) ? qs[0] : qs;\n },\n\n url: () => {\n let absoluteUrl: URL | undefined;\n try {\n absoluteUrl = new URL(req.url as string);\n } catch {\n // no-op\n }\n\n if (absoluteUrl) {\n /**\n * `req.url` here should may be the full URL, including query string.\n * There are some caveats, however, where Next.js will obfuscate\n * the host. For example, in the case of `host.docker.internal`,\n * Next.js will instead set the host here to `localhost`.\n *\n * To avoid this, we'll try to parse the URL from `req.url`, but\n * also use the `host` header if it's available.\n */\n const host = options.serveHost || getHeader(\"host\");\n if (host) {\n const hostWithProtocol = new URL(\n host.includes(\"://\")\n ? host\n : `${absoluteUrl.protocol}//${host}`,\n );\n\n absoluteUrl.protocol = hostWithProtocol.protocol;\n absoluteUrl.host = hostWithProtocol.host;\n absoluteUrl.port = hostWithProtocol.port;\n absoluteUrl.username = hostWithProtocol.username;\n absoluteUrl.password = hostWithProtocol.password;\n }\n\n return absoluteUrl;\n }\n\n let scheme: \"http\" | \"https\" = \"https\";\n const host = options.serveHost || getHeader(\"host\") || \"\";\n\n try {\n if (process.env.NODE_ENV === \"development\") {\n scheme = \"http\";\n }\n } catch (_err) {\n // no-op\n }\n\n const url = new URL(req.url as string, `${scheme}://${host}`);\n\n return url;\n },\n transformResponse: ({ body, headers, status }): Response => {\n /**\n * Carefully attempt to set headers and data on the response object\n * for Next.js 12 support.\n *\n * This also assumes that we're not using Next.js 15, where the `res`\n * object is repopulated as a `RouteContext` object. We expect these\n * methods to NOT be defined in Next.js 15.\n *\n * We could likely use `instanceof ServerResponse` to better check the\n * type of this, though Next.js 12 had issues with this due to not\n * instantiating the response correctly.\n */\n if (isNext12ApiResponse(res)) {\n for (const [key, value] of Object.entries(headers)) {\n res.setHeader(key, value);\n }\n\n res.status(status);\n res.send(body);\n\n /**\n * If we're here, we're in a serverless endpoint (not edge), so\n * we've correctly sent the response and can return `undefined`.\n *\n * Next.js 13 edge requires that the return value is typed as\n * `Response`, so we still enforce that as we cannot dynamically\n * adjust typing based on the environment.\n */\n return undefined as unknown as Response;\n }\n\n /**\n * If we're here, we're in an edge environment and need to return a\n * `Response` object.\n *\n * We also don't know if the current environment has a native\n * `Response` object, so we'll grab that first.\n */\n const Res = getResponse();\n return new Res(body, { status, headers });\n },\n transformStreamingResponse: ({ body, headers, status }) => {\n return new Response(body, { status, headers });\n },\n };\n },\n });\n\n /**\n * Next.js 13 uses\n * {@link https://beta.nextjs.org/docs/routing/route-handlers Route Handlers}\n * to declare API routes instead of a generic catch-all method that was\n * available using the `pages/api` directory.\n *\n * This means that users must now export a function for each method supported\n * by the endpoint. For us, this means requiring a user explicitly exports\n * `GET`, `POST`, and `PUT` functions.\n *\n * Because of this, we'll add circular references to those property names of\n * the returned handler, meaning we can write some succinct code to export\n * them. Thanks, @goodoldneon.\n *\n * @example\n * ```ts\n * export const { GET, POST, PUT } = serve(...);\n * ```\n *\n * See {@link https://beta.nextjs.org/docs/routing/route-handlers}\n */\n const baseFn = handler.createHandler();\n\n const fn = baseFn.bind(null, undefined);\n\n /**\n * Ensure we have a non-variadic length to avoid issues with forced type\n * checking.\n */\n Object.defineProperty(fn, \"length\", { value: 1 });\n\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;AAmBrD,MAAM,YAAY,QAAiD;AACjE,QAAO,OAAO,QAAQ,YAAY,QAAQ;;AAG5C,MAAM,cAAc,QAAyD;AAC3E,QAAO,OAAO,QAAQ;;AAGxB,MAAM,uBAAuB,QAAyC;AACpE,QACE,SAAS,IAAI,IACb,WAAW,IAAI,UAAU,IACzB,WAAW,IAAI,OAAO,IACtB,WAAW,IAAI,KAAK;;;;;;;;;;;;;;;;;;;;;;;AA0BxB,MAAa,SACX,YAKG;;;;;;;;;;;;;;;;;;;;;;CAgLH,MAAM,SA/KU,IAAIC,8CAAmB;EACrC;EACA,GAAG;EACH,UACE,WACA,GAAG,SACA;GACH,MAAM,CAAC,aAAa,OAAO;GAC3B,MAAM,MAAM;GAEZ,MAAM,aAAa,QAA2C;IAC5D,MAAM,SACJ,OAAO,IAAI,QAAQ,QAAQ,aACvB,IAAI,QAAQ,IAAI,IAAI,GACpB,IAAI,QAAQ;AAElB,WAAO,MAAM,QAAQ,OAAO,GAAG,OAAO,KAAK;;AAG7C,UAAO;IACL,YAAa,OAAO,IAAI,SAAS,aAAa,IAAI,MAAM,GAAG,IAAI;IAC/D,SAAS;IACT,cAAc;AAQZ,YADe,aAAa,IAAI,UAAU;;IAG5C,oBAAoB;;;;;;;;AAQlB,SAAI;AAEF,aADe,QAAQ,IAAI,aAAa;cAEjC,MAAM;;IAMjB,cAAc,KAAK,QAAQ;KACzB,MAAM,KAAK,IAAI,QAAQ,QAAQ,IAAI,aAAa,IAAI,IAAI;AACxD,YAAO,MAAM,QAAQ,GAAG,GAAG,GAAG,KAAK;;IAGrC,WAAW;KACT,IAAIC;AACJ,SAAI;AACF,oBAAc,IAAI,IAAI,IAAI,IAAc;aAClC;AAIR,SAAI,aAAa;;;;;;;;;;MAUf,MAAMC,SAAO,QAAQ,aAAa,UAAU,OAAO;AACnD,UAAIA,QAAM;OACR,MAAM,mBAAmB,IAAI,IAC3BA,OAAK,SAAS,MAAM,GAChBA,SACA,GAAG,YAAY,SAAS,IAAIA,SACjC;AAED,mBAAY,WAAW,iBAAiB;AACxC,mBAAY,OAAO,iBAAiB;AACpC,mBAAY,OAAO,iBAAiB;AACpC,mBAAY,WAAW,iBAAiB;AACxC,mBAAY,WAAW,iBAAiB;;AAG1C,aAAO;;KAGT,IAAIC,SAA2B;KAC/B,MAAM,OAAO,QAAQ,aAAa,UAAU,OAAO,IAAI;AAEvD,SAAI;AACF,UAAI,QAAQ,IAAI,aAAa,cAC3B,UAAS;cAEJ,MAAM;AAMf,YAFY,IAAI,IAAI,IAAI,KAAe,GAAG,OAAO,KAAK,OAAO;;IAI/D,oBAAoB,EAAE,MAAM,SAAS,aAAuB;;;;;;;;;;;;;AAa1D,SAAI,oBAAoB,IAAI,EAAE;AAC5B,WAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,QAAQ,CAChD,KAAI,UAAU,KAAK,MAAM;AAG3B,UAAI,OAAO,OAAO;AAClB,UAAI,KAAK,KAAK;;;;;;;;;AAUd;;AAWF,YAAO,KADKC,yBAAa,EACV,MAAM;MAAE;MAAQ;MAAS,CAAC;;IAE3C,6BAA6B,EAAE,MAAM,SAAS,aAAa;AACzD,YAAO,IAAI,SAAS,MAAM;MAAE;MAAQ;MAAS,CAAC;;IAEjD;;EAEJ,CAAC,CAuBqB,eAAe;CAEtC,MAAM,KAAK,OAAO,KAAK,MAAM,OAAU;;;;;AAMvC,QAAO,eAAe,IAAI,UAAU,EAAE,OAAO,GAAG,CAAC;AAcjD,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"}
|
|
1
|
+
{"version":3,"file":"next.cjs","names":["frameworkName: SupportedFrameworkName","InngestCommHandler","absoluteUrl: URL | undefined","host","scheme: \"http\" | \"https\"","getResponse"],"sources":["../src/next.ts"],"sourcesContent":["/**\n * An adapter for Next.js to serve and register any declared functions with\n * Inngest, making them available to be triggered by events.\n *\n * Supports Next.js 12+, both serverless and edge.\n *\n * @example Next.js <=12 or the pages router can export the handler directly\n * ```ts\n * export default serve({ client: inngest, functions: [fn1, fn2] });\n * ```\n *\n * @example Next.js >=13 with the `app` dir must export individual methods\n * ```ts\n * export const { GET, POST, PUT } = serve({\n * client: inngest,\n * functions: [fn1, fn2],\n * });\n * ```\n *\n * @module\n */\n\nimport type { NextApiRequest, NextApiResponse } from \"next\";\nimport type { NextRequest } from \"next/server\";\nimport {\n InngestCommHandler,\n type ServeHandlerOptions,\n} from \"./components/InngestCommHandler.ts\";\nimport { getResponse } from \"./helpers/env.ts\";\nimport type { Either } from \"./helpers/types.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 = \"nextjs\";\n\n/**\n * The shape of a request handler, supporting Next.js 12+.\n *\n * We are intentionally abstract with the arguments here, as Next.js's type\n * checking when building varies wildly between major versions; specifying\n * different types (even optional types) here can cause issues with the build.\n *\n * This change was initially made for Next.js 15, which specifies the second\n * argument as `RouteContext`, whereas Next.js 13 and 14 omit it and Next.js 12\n * provides a `NextApiResponse`, which is varies based on the execution\n * environment used (edge vs serverless).\n */\nexport type RequestHandler = (\n expectedReq: NextRequest,\n res: unknown,\n) => Promise<Response>;\n\nconst isRecord = (val: unknown): val is Record<string, unknown> => {\n return typeof val === \"object\" && val !== null;\n};\n\nconst isFunction = (val: unknown): val is (...args: unknown[]) => unknown => {\n return typeof val === \"function\";\n};\n\nconst isNext12ApiResponse = (val: unknown): val is NextApiResponse => {\n return (\n isRecord(val) &&\n isFunction(val.setHeader) &&\n isFunction(val.status) &&\n isFunction(val.send)\n );\n};\n\n/**\n * In Next.js, serve and register any declared functions with Inngest, making\n * them available to be triggered by events.\n *\n * Supports Next.js 12+, both serverless and edge.\n *\n * @example Next.js <=12 or the pages router can export the handler directly\n * ```ts\n * export default serve({ client: inngest, functions: [fn1, fn2] });\n * ```\n *\n * @example Next.js >=13 with the `app` dir must export individual methods\n * ```ts\n * export const { GET, POST, PUT } = serve({\n * client: inngest,\n * functions: [fn1, fn2],\n * });\n * ```\n *\n * @public\n */\n// Has explicit return type to avoid JSR-defined \"slow types\"\nexport const serve = (\n options: ServeHandlerOptions,\n): RequestHandler & {\n GET: RequestHandler;\n POST: RequestHandler;\n PUT: RequestHandler;\n} => {\n const handler = new InngestCommHandler({\n frameworkName,\n ...options,\n handler: (\n reqMethod: \"GET\" | \"POST\" | \"PUT\" | undefined,\n ...args: Parameters<RequestHandler>\n ) => {\n const [expectedReq, res] = args;\n const req = expectedReq as Either<NextApiRequest, NextRequest>;\n\n const getHeader = (key: string): string | null | undefined => {\n const header =\n typeof req.headers.get === \"function\"\n ? req.headers.get(key)\n : req.headers[key];\n\n return Array.isArray(header) ? header[0] : header;\n };\n\n return {\n body: async () => {\n if (typeof req.json === \"function\") {\n return await req.json();\n }\n\n if (req.body instanceof ReadableStream) {\n return await streamToJSON(req.body);\n }\n\n return req.body;\n },\n headers: getHeader,\n method: () => {\n /**\n * `req.method`, though types say otherwise, is not available in Next.js\n * 13 {@link https://beta.nextjs.org/docs/routing/route-handlers Route Handlers}.\n *\n * Therefore, we must try to set the method ourselves where we know it.\n */\n const method = reqMethod || req.method || \"\";\n return method;\n },\n isProduction: () => {\n /**\n * Vercel Edge Functions do not allow dynamic access to environment\n * variables, so we'll manage production checks directly here.\n *\n * We try/catch to avoid situations where Next.js is being used in\n * environments where `process.env` is not accessible or polyfilled.\n */\n try {\n const isProd = process.env.NODE_ENV === \"production\";\n return isProd;\n } catch (_err) {\n // no-op\n }\n\n return;\n },\n queryString: (key, url) => {\n const qs = req.query?.[key] || url.searchParams.get(key);\n return Array.isArray(qs) ? qs[0] : qs;\n },\n\n url: () => {\n let absoluteUrl: URL | undefined;\n try {\n absoluteUrl = new URL(req.url as string);\n } catch {\n // no-op\n }\n\n if (absoluteUrl) {\n /**\n * `req.url` here should may be the full URL, including query string.\n * There are some caveats, however, where Next.js will obfuscate\n * the host. For example, in the case of `host.docker.internal`,\n * Next.js will instead set the host here to `localhost`.\n *\n * To avoid this, we'll try to parse the URL from `req.url`, but\n * also use the `host` header if it's available.\n */\n const host = options.serveHost || getHeader(\"host\");\n if (host) {\n const hostWithProtocol = new URL(\n host.includes(\"://\")\n ? host\n : `${absoluteUrl.protocol}//${host}`,\n );\n\n absoluteUrl.protocol = hostWithProtocol.protocol;\n absoluteUrl.host = hostWithProtocol.host;\n absoluteUrl.port = hostWithProtocol.port;\n absoluteUrl.username = hostWithProtocol.username;\n absoluteUrl.password = hostWithProtocol.password;\n }\n\n return absoluteUrl;\n }\n\n let scheme: \"http\" | \"https\" = \"https\";\n const host = options.serveHost || getHeader(\"host\") || \"\";\n\n try {\n if (process.env.NODE_ENV === \"development\") {\n scheme = \"http\";\n }\n } catch (_err) {\n // no-op\n }\n\n const url = new URL(req.url as string, `${scheme}://${host}`);\n\n return url;\n },\n transformResponse: ({ body, headers, status }): Response => {\n /**\n * Carefully attempt to set headers and data on the response object\n * for Next.js 12 support.\n *\n * This also assumes that we're not using Next.js 15, where the `res`\n * object is repopulated as a `RouteContext` object. We expect these\n * methods to NOT be defined in Next.js 15.\n *\n * We could likely use `instanceof ServerResponse` to better check the\n * type of this, though Next.js 12 had issues with this due to not\n * instantiating the response correctly.\n */\n if (isNext12ApiResponse(res)) {\n for (const [key, value] of Object.entries(headers)) {\n res.setHeader(key, value);\n }\n\n res.status(status);\n res.send(body);\n\n /**\n * If we're here, we're in a serverless endpoint (not edge), so\n * we've correctly sent the response and can return `undefined`.\n *\n * Next.js 13 edge requires that the return value is typed as\n * `Response`, so we still enforce that as we cannot dynamically\n * adjust typing based on the environment.\n */\n return undefined as unknown as Response;\n }\n\n /**\n * If we're here, we're in an edge environment and need to return a\n * `Response` object.\n *\n * We also don't know if the current environment has a native\n * `Response` object, so we'll grab that first.\n */\n const Res = getResponse();\n return new Res(body, { status, headers });\n },\n transformStreamingResponse: ({ body, headers, status }) => {\n return new Response(body, { status, headers });\n },\n };\n },\n });\n\n /**\n * Next.js 13 uses\n * {@link https://beta.nextjs.org/docs/routing/route-handlers Route Handlers}\n * to declare API routes instead of a generic catch-all method that was\n * available using the `pages/api` directory.\n *\n * This means that users must now export a function for each method supported\n * by the endpoint. For us, this means requiring a user explicitly exports\n * `GET`, `POST`, and `PUT` functions.\n *\n * Because of this, we'll add circular references to those property names of\n * the returned handler, meaning we can write some succinct code to export\n * them. Thanks, @goodoldneon.\n *\n * @example\n * ```ts\n * export const { GET, POST, PUT } = serve(...);\n * ```\n *\n * See {@link https://beta.nextjs.org/docs/routing/route-handlers}\n */\n const baseFn = handler.createHandler();\n\n const fn = baseFn.bind(null, undefined);\n\n /**\n * Ensure we have a non-variadic length to avoid issues with forced type\n * checking.\n */\n Object.defineProperty(fn, \"length\", { value: 1 });\n\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\nasync function streamToJSON(stream: ReadableStream): Promise<unknown> {\n const chunks = [];\n const reader = stream.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n }\n return JSON.parse(Buffer.concat(chunks).toString(\"utf8\"));\n}\n"],"mappings":"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"}
|
package/next.js
CHANGED
|
@@ -70,7 +70,11 @@ const serve = (options) => {
|
|
|
70
70
|
return Array.isArray(header) ? header[0] : header;
|
|
71
71
|
};
|
|
72
72
|
return {
|
|
73
|
-
body: () =>
|
|
73
|
+
body: async () => {
|
|
74
|
+
if (typeof req.json === "function") return await req.json();
|
|
75
|
+
if (req.body instanceof ReadableStream) return await streamToJSON(req.body);
|
|
76
|
+
return req.body;
|
|
77
|
+
},
|
|
74
78
|
headers: getHeader,
|
|
75
79
|
method: () => {
|
|
76
80
|
return reqMethod || req.method || "";
|
|
@@ -177,6 +181,16 @@ const serve = (options) => {
|
|
|
177
181
|
PUT: { value: baseFn.bind(null, "PUT") }
|
|
178
182
|
});
|
|
179
183
|
};
|
|
184
|
+
async function streamToJSON(stream) {
|
|
185
|
+
const chunks = [];
|
|
186
|
+
const reader = stream.getReader();
|
|
187
|
+
while (true) {
|
|
188
|
+
const { done, value } = await reader.read();
|
|
189
|
+
if (done) break;
|
|
190
|
+
chunks.push(value);
|
|
191
|
+
}
|
|
192
|
+
return JSON.parse(Buffer.concat(chunks).toString("utf8"));
|
|
193
|
+
}
|
|
180
194
|
|
|
181
195
|
//#endregion
|
|
182
196
|
export { frameworkName, serve };
|
package/next.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next.js","names":["frameworkName: SupportedFrameworkName","absoluteUrl: URL | undefined","host","scheme: \"http\" | \"https\""],"sources":["../src/next.ts"],"sourcesContent":["/**\n * An adapter for Next.js to serve and register any declared functions with\n * Inngest, making them available to be triggered by events.\n *\n * Supports Next.js 12+, both serverless and edge.\n *\n * @example Next.js <=12 or the pages router can export the handler directly\n * ```ts\n * export default serve({ client: inngest, functions: [fn1, fn2] });\n * ```\n *\n * @example Next.js >=13 with the `app` dir must export individual methods\n * ```ts\n * export const { GET, POST, PUT } = serve({\n * client: inngest,\n * functions: [fn1, fn2],\n * });\n * ```\n *\n * @module\n */\n\nimport type { NextApiRequest, NextApiResponse } from \"next\";\nimport type { NextRequest } from \"next/server\";\nimport {\n InngestCommHandler,\n type ServeHandlerOptions,\n} from \"./components/InngestCommHandler.ts\";\nimport { getResponse } from \"./helpers/env.ts\";\nimport type { Either } from \"./helpers/types.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 = \"nextjs\";\n\n/**\n * The shape of a request handler, supporting Next.js 12+.\n *\n * We are intentionally abstract with the arguments here, as Next.js's type\n * checking when building varies wildly between major versions; specifying\n * different types (even optional types) here can cause issues with the build.\n *\n * This change was initially made for Next.js 15, which specifies the second\n * argument as `RouteContext`, whereas Next.js 13 and 14 omit it and Next.js 12\n * provides a `NextApiResponse`, which is varies based on the execution\n * environment used (edge vs serverless).\n */\nexport type RequestHandler = (\n expectedReq: NextRequest,\n res: unknown,\n) => Promise<Response>;\n\nconst isRecord = (val: unknown): val is Record<string, unknown> => {\n return typeof val === \"object\" && val !== null;\n};\n\nconst isFunction = (val: unknown): val is (...args: unknown[]) => unknown => {\n return typeof val === \"function\";\n};\n\nconst isNext12ApiResponse = (val: unknown): val is NextApiResponse => {\n return (\n isRecord(val) &&\n isFunction(val.setHeader) &&\n isFunction(val.status) &&\n isFunction(val.send)\n );\n};\n\n/**\n * In Next.js, serve and register any declared functions with Inngest, making\n * them available to be triggered by events.\n *\n * Supports Next.js 12+, both serverless and edge.\n *\n * @example Next.js <=12 or the pages router can export the handler directly\n * ```ts\n * export default serve({ client: inngest, functions: [fn1, fn2] });\n * ```\n *\n * @example Next.js >=13 with the `app` dir must export individual methods\n * ```ts\n * export const { GET, POST, PUT } = serve({\n * client: inngest,\n * functions: [fn1, fn2],\n * });\n * ```\n *\n * @public\n */\n// Has explicit return type to avoid JSR-defined \"slow types\"\nexport const serve = (\n options: ServeHandlerOptions,\n): RequestHandler & {\n GET: RequestHandler;\n POST: RequestHandler;\n PUT: RequestHandler;\n} => {\n const handler = new InngestCommHandler({\n frameworkName,\n ...options,\n handler: (\n reqMethod: \"GET\" | \"POST\" | \"PUT\" | undefined,\n ...args: Parameters<RequestHandler>\n ) => {\n const [expectedReq, res] = args;\n const req = expectedReq as Either<NextApiRequest, NextRequest>;\n\n const getHeader = (key: string): string | null | undefined => {\n const header =\n typeof req.headers.get === \"function\"\n ? req.headers.get(key)\n : req.headers[key];\n\n return Array.isArray(header) ? header[0] : header;\n };\n\n return {\n body: () => (typeof req.json === \"function\" ? req.json() : req.body),\n headers: getHeader,\n method: () => {\n /**\n * `req.method`, though types say otherwise, is not available in Next.js\n * 13 {@link https://beta.nextjs.org/docs/routing/route-handlers Route Handlers}.\n *\n * Therefore, we must try to set the method ourselves where we know it.\n */\n const method = reqMethod || req.method || \"\";\n return method;\n },\n isProduction: () => {\n /**\n * Vercel Edge Functions do not allow dynamic access to environment\n * variables, so we'll manage production checks directly here.\n *\n * We try/catch to avoid situations where Next.js is being used in\n * environments where `process.env` is not accessible or polyfilled.\n */\n try {\n const isProd = process.env.NODE_ENV === \"production\";\n return isProd;\n } catch (_err) {\n // no-op\n }\n\n return;\n },\n queryString: (key, url) => {\n const qs = req.query?.[key] || url.searchParams.get(key);\n return Array.isArray(qs) ? qs[0] : qs;\n },\n\n url: () => {\n let absoluteUrl: URL | undefined;\n try {\n absoluteUrl = new URL(req.url as string);\n } catch {\n // no-op\n }\n\n if (absoluteUrl) {\n /**\n * `req.url` here should may be the full URL, including query string.\n * There are some caveats, however, where Next.js will obfuscate\n * the host. For example, in the case of `host.docker.internal`,\n * Next.js will instead set the host here to `localhost`.\n *\n * To avoid this, we'll try to parse the URL from `req.url`, but\n * also use the `host` header if it's available.\n */\n const host = options.serveHost || getHeader(\"host\");\n if (host) {\n const hostWithProtocol = new URL(\n host.includes(\"://\")\n ? host\n : `${absoluteUrl.protocol}//${host}`,\n );\n\n absoluteUrl.protocol = hostWithProtocol.protocol;\n absoluteUrl.host = hostWithProtocol.host;\n absoluteUrl.port = hostWithProtocol.port;\n absoluteUrl.username = hostWithProtocol.username;\n absoluteUrl.password = hostWithProtocol.password;\n }\n\n return absoluteUrl;\n }\n\n let scheme: \"http\" | \"https\" = \"https\";\n const host = options.serveHost || getHeader(\"host\") || \"\";\n\n try {\n if (process.env.NODE_ENV === \"development\") {\n scheme = \"http\";\n }\n } catch (_err) {\n // no-op\n }\n\n const url = new URL(req.url as string, `${scheme}://${host}`);\n\n return url;\n },\n transformResponse: ({ body, headers, status }): Response => {\n /**\n * Carefully attempt to set headers and data on the response object\n * for Next.js 12 support.\n *\n * This also assumes that we're not using Next.js 15, where the `res`\n * object is repopulated as a `RouteContext` object. We expect these\n * methods to NOT be defined in Next.js 15.\n *\n * We could likely use `instanceof ServerResponse` to better check the\n * type of this, though Next.js 12 had issues with this due to not\n * instantiating the response correctly.\n */\n if (isNext12ApiResponse(res)) {\n for (const [key, value] of Object.entries(headers)) {\n res.setHeader(key, value);\n }\n\n res.status(status);\n res.send(body);\n\n /**\n * If we're here, we're in a serverless endpoint (not edge), so\n * we've correctly sent the response and can return `undefined`.\n *\n * Next.js 13 edge requires that the return value is typed as\n * `Response`, so we still enforce that as we cannot dynamically\n * adjust typing based on the environment.\n */\n return undefined as unknown as Response;\n }\n\n /**\n * If we're here, we're in an edge environment and need to return a\n * `Response` object.\n *\n * We also don't know if the current environment has a native\n * `Response` object, so we'll grab that first.\n */\n const Res = getResponse();\n return new Res(body, { status, headers });\n },\n transformStreamingResponse: ({ body, headers, status }) => {\n return new Response(body, { status, headers });\n },\n };\n },\n });\n\n /**\n * Next.js 13 uses\n * {@link https://beta.nextjs.org/docs/routing/route-handlers Route Handlers}\n * to declare API routes instead of a generic catch-all method that was\n * available using the `pages/api` directory.\n *\n * This means that users must now export a function for each method supported\n * by the endpoint. For us, this means requiring a user explicitly exports\n * `GET`, `POST`, and `PUT` functions.\n *\n * Because of this, we'll add circular references to those property names of\n * the returned handler, meaning we can write some succinct code to export\n * them. Thanks, @goodoldneon.\n *\n * @example\n * ```ts\n * export const { GET, POST, PUT } = serve(...);\n * ```\n *\n * See {@link https://beta.nextjs.org/docs/routing/route-handlers}\n */\n const baseFn = handler.createHandler();\n\n const fn = baseFn.bind(null, undefined);\n\n /**\n * Ensure we have a non-variadic length to avoid issues with forced type\n * checking.\n */\n Object.defineProperty(fn, \"length\", { value: 1 });\n\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;AAmBrD,MAAM,YAAY,QAAiD;AACjE,QAAO,OAAO,QAAQ,YAAY,QAAQ;;AAG5C,MAAM,cAAc,QAAyD;AAC3E,QAAO,OAAO,QAAQ;;AAGxB,MAAM,uBAAuB,QAAyC;AACpE,QACE,SAAS,IAAI,IACb,WAAW,IAAI,UAAU,IACzB,WAAW,IAAI,OAAO,IACtB,WAAW,IAAI,KAAK;;;;;;;;;;;;;;;;;;;;;;;AA0BxB,MAAa,SACX,YAKG;;;;;;;;;;;;;;;;;;;;;;CAgLH,MAAM,SA/KU,IAAI,mBAAmB;EACrC;EACA,GAAG;EACH,UACE,WACA,GAAG,SACA;GACH,MAAM,CAAC,aAAa,OAAO;GAC3B,MAAM,MAAM;GAEZ,MAAM,aAAa,QAA2C;IAC5D,MAAM,SACJ,OAAO,IAAI,QAAQ,QAAQ,aACvB,IAAI,QAAQ,IAAI,IAAI,GACpB,IAAI,QAAQ;AAElB,WAAO,MAAM,QAAQ,OAAO,GAAG,OAAO,KAAK;;AAG7C,UAAO;IACL,YAAa,OAAO,IAAI,SAAS,aAAa,IAAI,MAAM,GAAG,IAAI;IAC/D,SAAS;IACT,cAAc;AAQZ,YADe,aAAa,IAAI,UAAU;;IAG5C,oBAAoB;;;;;;;;AAQlB,SAAI;AAEF,aADe,QAAQ,IAAI,aAAa;cAEjC,MAAM;;IAMjB,cAAc,KAAK,QAAQ;KACzB,MAAM,KAAK,IAAI,QAAQ,QAAQ,IAAI,aAAa,IAAI,IAAI;AACxD,YAAO,MAAM,QAAQ,GAAG,GAAG,GAAG,KAAK;;IAGrC,WAAW;KACT,IAAIC;AACJ,SAAI;AACF,oBAAc,IAAI,IAAI,IAAI,IAAc;aAClC;AAIR,SAAI,aAAa;;;;;;;;;;MAUf,MAAMC,SAAO,QAAQ,aAAa,UAAU,OAAO;AACnD,UAAIA,QAAM;OACR,MAAM,mBAAmB,IAAI,IAC3BA,OAAK,SAAS,MAAM,GAChBA,SACA,GAAG,YAAY,SAAS,IAAIA,SACjC;AAED,mBAAY,WAAW,iBAAiB;AACxC,mBAAY,OAAO,iBAAiB;AACpC,mBAAY,OAAO,iBAAiB;AACpC,mBAAY,WAAW,iBAAiB;AACxC,mBAAY,WAAW,iBAAiB;;AAG1C,aAAO;;KAGT,IAAIC,SAA2B;KAC/B,MAAM,OAAO,QAAQ,aAAa,UAAU,OAAO,IAAI;AAEvD,SAAI;AACF,UAAI,QAAQ,IAAI,aAAa,cAC3B,UAAS;cAEJ,MAAM;AAMf,YAFY,IAAI,IAAI,IAAI,KAAe,GAAG,OAAO,KAAK,OAAO;;IAI/D,oBAAoB,EAAE,MAAM,SAAS,aAAuB;;;;;;;;;;;;;AAa1D,SAAI,oBAAoB,IAAI,EAAE;AAC5B,WAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,QAAQ,CAChD,KAAI,UAAU,KAAK,MAAM;AAG3B,UAAI,OAAO,OAAO;AAClB,UAAI,KAAK,KAAK;;;;;;;;;AAUd;;AAWF,YAAO,KADK,aAAa,EACV,MAAM;MAAE;MAAQ;MAAS,CAAC;;IAE3C,6BAA6B,EAAE,MAAM,SAAS,aAAa;AACzD,YAAO,IAAI,SAAS,MAAM;MAAE;MAAQ;MAAS,CAAC;;IAEjD;;EAEJ,CAAC,CAuBqB,eAAe;CAEtC,MAAM,KAAK,OAAO,KAAK,MAAM,OAAU;;;;;AAMvC,QAAO,eAAe,IAAI,UAAU,EAAE,OAAO,GAAG,CAAC;AAcjD,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"}
|
|
1
|
+
{"version":3,"file":"next.js","names":["frameworkName: SupportedFrameworkName","absoluteUrl: URL | undefined","host","scheme: \"http\" | \"https\""],"sources":["../src/next.ts"],"sourcesContent":["/**\n * An adapter for Next.js to serve and register any declared functions with\n * Inngest, making them available to be triggered by events.\n *\n * Supports Next.js 12+, both serverless and edge.\n *\n * @example Next.js <=12 or the pages router can export the handler directly\n * ```ts\n * export default serve({ client: inngest, functions: [fn1, fn2] });\n * ```\n *\n * @example Next.js >=13 with the `app` dir must export individual methods\n * ```ts\n * export const { GET, POST, PUT } = serve({\n * client: inngest,\n * functions: [fn1, fn2],\n * });\n * ```\n *\n * @module\n */\n\nimport type { NextApiRequest, NextApiResponse } from \"next\";\nimport type { NextRequest } from \"next/server\";\nimport {\n InngestCommHandler,\n type ServeHandlerOptions,\n} from \"./components/InngestCommHandler.ts\";\nimport { getResponse } from \"./helpers/env.ts\";\nimport type { Either } from \"./helpers/types.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 = \"nextjs\";\n\n/**\n * The shape of a request handler, supporting Next.js 12+.\n *\n * We are intentionally abstract with the arguments here, as Next.js's type\n * checking when building varies wildly between major versions; specifying\n * different types (even optional types) here can cause issues with the build.\n *\n * This change was initially made for Next.js 15, which specifies the second\n * argument as `RouteContext`, whereas Next.js 13 and 14 omit it and Next.js 12\n * provides a `NextApiResponse`, which is varies based on the execution\n * environment used (edge vs serverless).\n */\nexport type RequestHandler = (\n expectedReq: NextRequest,\n res: unknown,\n) => Promise<Response>;\n\nconst isRecord = (val: unknown): val is Record<string, unknown> => {\n return typeof val === \"object\" && val !== null;\n};\n\nconst isFunction = (val: unknown): val is (...args: unknown[]) => unknown => {\n return typeof val === \"function\";\n};\n\nconst isNext12ApiResponse = (val: unknown): val is NextApiResponse => {\n return (\n isRecord(val) &&\n isFunction(val.setHeader) &&\n isFunction(val.status) &&\n isFunction(val.send)\n );\n};\n\n/**\n * In Next.js, serve and register any declared functions with Inngest, making\n * them available to be triggered by events.\n *\n * Supports Next.js 12+, both serverless and edge.\n *\n * @example Next.js <=12 or the pages router can export the handler directly\n * ```ts\n * export default serve({ client: inngest, functions: [fn1, fn2] });\n * ```\n *\n * @example Next.js >=13 with the `app` dir must export individual methods\n * ```ts\n * export const { GET, POST, PUT } = serve({\n * client: inngest,\n * functions: [fn1, fn2],\n * });\n * ```\n *\n * @public\n */\n// Has explicit return type to avoid JSR-defined \"slow types\"\nexport const serve = (\n options: ServeHandlerOptions,\n): RequestHandler & {\n GET: RequestHandler;\n POST: RequestHandler;\n PUT: RequestHandler;\n} => {\n const handler = new InngestCommHandler({\n frameworkName,\n ...options,\n handler: (\n reqMethod: \"GET\" | \"POST\" | \"PUT\" | undefined,\n ...args: Parameters<RequestHandler>\n ) => {\n const [expectedReq, res] = args;\n const req = expectedReq as Either<NextApiRequest, NextRequest>;\n\n const getHeader = (key: string): string | null | undefined => {\n const header =\n typeof req.headers.get === \"function\"\n ? req.headers.get(key)\n : req.headers[key];\n\n return Array.isArray(header) ? header[0] : header;\n };\n\n return {\n body: async () => {\n if (typeof req.json === \"function\") {\n return await req.json();\n }\n\n if (req.body instanceof ReadableStream) {\n return await streamToJSON(req.body);\n }\n\n return req.body;\n },\n headers: getHeader,\n method: () => {\n /**\n * `req.method`, though types say otherwise, is not available in Next.js\n * 13 {@link https://beta.nextjs.org/docs/routing/route-handlers Route Handlers}.\n *\n * Therefore, we must try to set the method ourselves where we know it.\n */\n const method = reqMethod || req.method || \"\";\n return method;\n },\n isProduction: () => {\n /**\n * Vercel Edge Functions do not allow dynamic access to environment\n * variables, so we'll manage production checks directly here.\n *\n * We try/catch to avoid situations where Next.js is being used in\n * environments where `process.env` is not accessible or polyfilled.\n */\n try {\n const isProd = process.env.NODE_ENV === \"production\";\n return isProd;\n } catch (_err) {\n // no-op\n }\n\n return;\n },\n queryString: (key, url) => {\n const qs = req.query?.[key] || url.searchParams.get(key);\n return Array.isArray(qs) ? qs[0] : qs;\n },\n\n url: () => {\n let absoluteUrl: URL | undefined;\n try {\n absoluteUrl = new URL(req.url as string);\n } catch {\n // no-op\n }\n\n if (absoluteUrl) {\n /**\n * `req.url` here should may be the full URL, including query string.\n * There are some caveats, however, where Next.js will obfuscate\n * the host. For example, in the case of `host.docker.internal`,\n * Next.js will instead set the host here to `localhost`.\n *\n * To avoid this, we'll try to parse the URL from `req.url`, but\n * also use the `host` header if it's available.\n */\n const host = options.serveHost || getHeader(\"host\");\n if (host) {\n const hostWithProtocol = new URL(\n host.includes(\"://\")\n ? host\n : `${absoluteUrl.protocol}//${host}`,\n );\n\n absoluteUrl.protocol = hostWithProtocol.protocol;\n absoluteUrl.host = hostWithProtocol.host;\n absoluteUrl.port = hostWithProtocol.port;\n absoluteUrl.username = hostWithProtocol.username;\n absoluteUrl.password = hostWithProtocol.password;\n }\n\n return absoluteUrl;\n }\n\n let scheme: \"http\" | \"https\" = \"https\";\n const host = options.serveHost || getHeader(\"host\") || \"\";\n\n try {\n if (process.env.NODE_ENV === \"development\") {\n scheme = \"http\";\n }\n } catch (_err) {\n // no-op\n }\n\n const url = new URL(req.url as string, `${scheme}://${host}`);\n\n return url;\n },\n transformResponse: ({ body, headers, status }): Response => {\n /**\n * Carefully attempt to set headers and data on the response object\n * for Next.js 12 support.\n *\n * This also assumes that we're not using Next.js 15, where the `res`\n * object is repopulated as a `RouteContext` object. We expect these\n * methods to NOT be defined in Next.js 15.\n *\n * We could likely use `instanceof ServerResponse` to better check the\n * type of this, though Next.js 12 had issues with this due to not\n * instantiating the response correctly.\n */\n if (isNext12ApiResponse(res)) {\n for (const [key, value] of Object.entries(headers)) {\n res.setHeader(key, value);\n }\n\n res.status(status);\n res.send(body);\n\n /**\n * If we're here, we're in a serverless endpoint (not edge), so\n * we've correctly sent the response and can return `undefined`.\n *\n * Next.js 13 edge requires that the return value is typed as\n * `Response`, so we still enforce that as we cannot dynamically\n * adjust typing based on the environment.\n */\n return undefined as unknown as Response;\n }\n\n /**\n * If we're here, we're in an edge environment and need to return a\n * `Response` object.\n *\n * We also don't know if the current environment has a native\n * `Response` object, so we'll grab that first.\n */\n const Res = getResponse();\n return new Res(body, { status, headers });\n },\n transformStreamingResponse: ({ body, headers, status }) => {\n return new Response(body, { status, headers });\n },\n };\n },\n });\n\n /**\n * Next.js 13 uses\n * {@link https://beta.nextjs.org/docs/routing/route-handlers Route Handlers}\n * to declare API routes instead of a generic catch-all method that was\n * available using the `pages/api` directory.\n *\n * This means that users must now export a function for each method supported\n * by the endpoint. For us, this means requiring a user explicitly exports\n * `GET`, `POST`, and `PUT` functions.\n *\n * Because of this, we'll add circular references to those property names of\n * the returned handler, meaning we can write some succinct code to export\n * them. Thanks, @goodoldneon.\n *\n * @example\n * ```ts\n * export const { GET, POST, PUT } = serve(...);\n * ```\n *\n * See {@link https://beta.nextjs.org/docs/routing/route-handlers}\n */\n const baseFn = handler.createHandler();\n\n const fn = baseFn.bind(null, undefined);\n\n /**\n * Ensure we have a non-variadic length to avoid issues with forced type\n * checking.\n */\n Object.defineProperty(fn, \"length\", { value: 1 });\n\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\nasync function streamToJSON(stream: ReadableStream): Promise<unknown> {\n const chunks = [];\n const reader = stream.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n }\n return JSON.parse(Buffer.concat(chunks).toString(\"utf8\"));\n}\n"],"mappings":"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"}
|
package/nitro.cjs
CHANGED
|
@@ -18,42 +18,8 @@ const serve = (options) => {
|
|
|
18
18
|
frameworkName
|
|
19
19
|
});
|
|
20
20
|
};
|
|
21
|
-
/**
|
|
22
|
-
* In Nitro, create a function that can define an event handler with Inngest
|
|
23
|
-
* steps enabled, allowing you to use steps seamlessly within that API.
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* ```ts
|
|
27
|
-
* import { Inngest, step } from "inngest";
|
|
28
|
-
* import { createExperimentalEndpointWrapper } from "inngest/nitro";
|
|
29
|
-
*
|
|
30
|
-
* const inngestEventHandler = createExperimentalEndpointWrapper({
|
|
31
|
-
* client: new Inngest({ id: "nitro-sync-example" }),
|
|
32
|
-
* });
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* export default inngestEventHandler(async (event) => {
|
|
36
|
-
* const foo = await step.run("example/step", async () => {
|
|
37
|
-
* return "Hello from step!";
|
|
38
|
-
* });
|
|
39
|
-
*
|
|
40
|
-
* return `
|
|
41
|
-
* <meta charset="utf-8">
|
|
42
|
-
* <h1>This endpoint worked!</h1>
|
|
43
|
-
* <p>The step's result was: ${foo}</p>
|
|
44
|
-
* `;
|
|
45
|
-
* });
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
const createExperimentalEndpointWrapper = (options) => {
|
|
49
|
-
return require_h3.createExperimentalEndpointWrapper({
|
|
50
|
-
...options,
|
|
51
|
-
frameworkName
|
|
52
|
-
});
|
|
53
|
-
};
|
|
54
21
|
|
|
55
22
|
//#endregion
|
|
56
|
-
exports.createExperimentalEndpointWrapper = createExperimentalEndpointWrapper;
|
|
57
23
|
exports.frameworkName = frameworkName;
|
|
58
24
|
exports.serve = serve;
|
|
59
25
|
//# sourceMappingURL=nitro.cjs.map
|
package/nitro.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nitro.cjs","names":["frameworkName: SupportedFrameworkName","serveH3"
|
|
1
|
+
{"version":3,"file":"nitro.cjs","names":["frameworkName: SupportedFrameworkName","serveH3"],"sources":["../src/nitro.ts"],"sourcesContent":["/**\n * An adapter for Nitro to serve and register any declared functions with\n * Inngest, making them available to be triggered by events.\n *\n * @module\n */\n\nimport type {\n InternalServeHandlerOptions,\n ServeHandlerOptions,\n} from \"./components/InngestCommHandler.ts\";\nimport { serve as serveH3 } from \"./h3.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 = \"nitro\";\n\n/**\n * In Nitro, serve and register any declared functions with Inngest, making them\n * available to be triggered by events.\n *\n * @public\n */\n// Has explicit return type to avoid JSR-defined \"slow types\"\nexport const serve = (\n options: ServeHandlerOptions,\n): ReturnType<typeof serveH3> => {\n const optsOverrides: InternalServeHandlerOptions = {\n ...options,\n frameworkName,\n };\n\n return serveH3(optsOverrides);\n};\n"],"mappings":";;;;;;;AAkBA,MAAaA,gBAAwC;;;;;;;AASrD,MAAa,SACX,YAC+B;AAM/B,QAAOC,iBAL4C;EACjD,GAAG;EACH;EACD,CAE4B"}
|
package/nitro.d.cts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { SupportedFrameworkName } from "./types.cjs";
|
|
2
|
-
import { ServeHandlerOptions
|
|
2
|
+
import { ServeHandlerOptions } from "./components/InngestCommHandler.cjs";
|
|
3
3
|
import { serve as serve$1 } from "./h3.cjs";
|
|
4
|
-
import * as h30 from "h3";
|
|
5
4
|
|
|
6
5
|
//#region src/nitro.d.ts
|
|
7
6
|
|
|
@@ -17,34 +16,6 @@ declare const frameworkName: SupportedFrameworkName;
|
|
|
17
16
|
* @public
|
|
18
17
|
*/
|
|
19
18
|
declare const serve: (options: ServeHandlerOptions) => ReturnType<typeof serve$1>;
|
|
20
|
-
/**
|
|
21
|
-
* In Nitro, create a function that can define an event handler with Inngest
|
|
22
|
-
* steps enabled, allowing you to use steps seamlessly within that API.
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```ts
|
|
26
|
-
* import { Inngest, step } from "inngest";
|
|
27
|
-
* import { createExperimentalEndpointWrapper } from "inngest/nitro";
|
|
28
|
-
*
|
|
29
|
-
* const inngestEventHandler = createExperimentalEndpointWrapper({
|
|
30
|
-
* client: new Inngest({ id: "nitro-sync-example" }),
|
|
31
|
-
* });
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* export default inngestEventHandler(async (event) => {
|
|
35
|
-
* const foo = await step.run("example/step", async () => {
|
|
36
|
-
* return "Hello from step!";
|
|
37
|
-
* });
|
|
38
|
-
*
|
|
39
|
-
* return `
|
|
40
|
-
* <meta charset="utf-8">
|
|
41
|
-
* <h1>This endpoint worked!</h1>
|
|
42
|
-
* <p>The step's result was: ${foo}</p>
|
|
43
|
-
* `;
|
|
44
|
-
* });
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
declare const createExperimentalEndpointWrapper: (options: SyncHandlerOptions) => (handler: (event: h30.H3Event<h30.EventHandlerRequest>) => Promise<any>) => (event: h30.H3Event<h30.EventHandlerRequest>) => Promise<any>;
|
|
48
19
|
//#endregion
|
|
49
|
-
export {
|
|
20
|
+
export { frameworkName, serve };
|
|
50
21
|
//# sourceMappingURL=nitro.d.cts.map
|
package/nitro.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nitro.d.cts","names":[],"sources":["../src/nitro.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nitro.d.cts","names":[],"sources":["../src/nitro.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;cAkBa,eAAe;;;;;;;cASf,iBACF,wBACR,kBAAkB"}
|
package/nitro.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { SupportedFrameworkName } from "./types.js";
|
|
2
|
-
import { ServeHandlerOptions
|
|
2
|
+
import { ServeHandlerOptions } from "./components/InngestCommHandler.js";
|
|
3
3
|
import { serve as serve$1 } from "./h3.js";
|
|
4
|
-
import * as h30 from "h3";
|
|
5
4
|
|
|
6
5
|
//#region src/nitro.d.ts
|
|
7
6
|
|
|
@@ -17,34 +16,6 @@ declare const frameworkName: SupportedFrameworkName;
|
|
|
17
16
|
* @public
|
|
18
17
|
*/
|
|
19
18
|
declare const serve: (options: ServeHandlerOptions) => ReturnType<typeof serve$1>;
|
|
20
|
-
/**
|
|
21
|
-
* In Nitro, create a function that can define an event handler with Inngest
|
|
22
|
-
* steps enabled, allowing you to use steps seamlessly within that API.
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```ts
|
|
26
|
-
* import { Inngest, step } from "inngest";
|
|
27
|
-
* import { createExperimentalEndpointWrapper } from "inngest/nitro";
|
|
28
|
-
*
|
|
29
|
-
* const inngestEventHandler = createExperimentalEndpointWrapper({
|
|
30
|
-
* client: new Inngest({ id: "nitro-sync-example" }),
|
|
31
|
-
* });
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* export default inngestEventHandler(async (event) => {
|
|
35
|
-
* const foo = await step.run("example/step", async () => {
|
|
36
|
-
* return "Hello from step!";
|
|
37
|
-
* });
|
|
38
|
-
*
|
|
39
|
-
* return `
|
|
40
|
-
* <meta charset="utf-8">
|
|
41
|
-
* <h1>This endpoint worked!</h1>
|
|
42
|
-
* <p>The step's result was: ${foo}</p>
|
|
43
|
-
* `;
|
|
44
|
-
* });
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
declare const createExperimentalEndpointWrapper: (options: SyncHandlerOptions) => (handler: (event: h30.H3Event<h30.EventHandlerRequest>) => Promise<any>) => (event: h30.H3Event<h30.EventHandlerRequest>) => Promise<any>;
|
|
48
19
|
//#endregion
|
|
49
|
-
export {
|
|
20
|
+
export { frameworkName, serve };
|
|
50
21
|
//# sourceMappingURL=nitro.d.ts.map
|
package/nitro.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nitro.d.ts","names":[],"sources":["../src/nitro.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nitro.d.ts","names":[],"sources":["../src/nitro.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;cAkBa,eAAe;;;;;;;cASf,iBACF,wBACR,kBAAkB"}
|
package/nitro.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { serve as serve$1 } from "./h3.js";
|
|
2
2
|
|
|
3
3
|
//#region src/nitro.ts
|
|
4
4
|
/**
|
|
@@ -18,40 +18,7 @@ const serve = (options) => {
|
|
|
18
18
|
frameworkName
|
|
19
19
|
});
|
|
20
20
|
};
|
|
21
|
-
/**
|
|
22
|
-
* In Nitro, create a function that can define an event handler with Inngest
|
|
23
|
-
* steps enabled, allowing you to use steps seamlessly within that API.
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* ```ts
|
|
27
|
-
* import { Inngest, step } from "inngest";
|
|
28
|
-
* import { createExperimentalEndpointWrapper } from "inngest/nitro";
|
|
29
|
-
*
|
|
30
|
-
* const inngestEventHandler = createExperimentalEndpointWrapper({
|
|
31
|
-
* client: new Inngest({ id: "nitro-sync-example" }),
|
|
32
|
-
* });
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* export default inngestEventHandler(async (event) => {
|
|
36
|
-
* const foo = await step.run("example/step", async () => {
|
|
37
|
-
* return "Hello from step!";
|
|
38
|
-
* });
|
|
39
|
-
*
|
|
40
|
-
* return `
|
|
41
|
-
* <meta charset="utf-8">
|
|
42
|
-
* <h1>This endpoint worked!</h1>
|
|
43
|
-
* <p>The step's result was: ${foo}</p>
|
|
44
|
-
* `;
|
|
45
|
-
* });
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
const createExperimentalEndpointWrapper = (options) => {
|
|
49
|
-
return createExperimentalEndpointWrapper$1({
|
|
50
|
-
...options,
|
|
51
|
-
frameworkName
|
|
52
|
-
});
|
|
53
|
-
};
|
|
54
21
|
|
|
55
22
|
//#endregion
|
|
56
|
-
export {
|
|
23
|
+
export { frameworkName, serve };
|
|
57
24
|
//# sourceMappingURL=nitro.js.map
|
package/nitro.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nitro.js","names":["frameworkName: SupportedFrameworkName","serveH3"
|
|
1
|
+
{"version":3,"file":"nitro.js","names":["frameworkName: SupportedFrameworkName","serveH3"],"sources":["../src/nitro.ts"],"sourcesContent":["/**\n * An adapter for Nitro to serve and register any declared functions with\n * Inngest, making them available to be triggered by events.\n *\n * @module\n */\n\nimport type {\n InternalServeHandlerOptions,\n ServeHandlerOptions,\n} from \"./components/InngestCommHandler.ts\";\nimport { serve as serveH3 } from \"./h3.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 = \"nitro\";\n\n/**\n * In Nitro, serve and register any declared functions with Inngest, making them\n * available to be triggered by events.\n *\n * @public\n */\n// Has explicit return type to avoid JSR-defined \"slow types\"\nexport const serve = (\n options: ServeHandlerOptions,\n): ReturnType<typeof serveH3> => {\n const optsOverrides: InternalServeHandlerOptions = {\n ...options,\n frameworkName,\n };\n\n return serveH3(optsOverrides);\n};\n"],"mappings":";;;;;;;AAkBA,MAAaA,gBAAwC;;;;;;;AASrD,MAAa,SACX,YAC+B;AAM/B,QAAOC,QAL4C;EACjD,GAAG;EACH;EACD,CAE4B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "inngest",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.49.1",
|
|
4
4
|
"description": "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.",
|
|
5
5
|
"main": "./index.cjs",
|
|
6
6
|
"module": "./index.js",
|
package/types.d.cts
CHANGED
|
@@ -1234,12 +1234,12 @@ declare const functionConfigSchema: z.ZodObject<{
|
|
|
1234
1234
|
timeout: z.ZodOptional<z.ZodEffects<z.ZodString, "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s`, string>>;
|
|
1235
1235
|
}, "strict", z.ZodTypeAny, {
|
|
1236
1236
|
period: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s`;
|
|
1237
|
-
key?: string | undefined;
|
|
1238
1237
|
timeout?: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s` | undefined;
|
|
1238
|
+
key?: string | undefined;
|
|
1239
1239
|
}, {
|
|
1240
1240
|
period: string;
|
|
1241
|
-
key?: string | undefined;
|
|
1242
1241
|
timeout?: string | undefined;
|
|
1242
|
+
key?: string | undefined;
|
|
1243
1243
|
}>>;
|
|
1244
1244
|
timeouts: z.ZodOptional<z.ZodObject<{
|
|
1245
1245
|
start: z.ZodOptional<z.ZodEffects<z.ZodString, "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s`, string>>;
|
|
@@ -1340,8 +1340,8 @@ declare const functionConfigSchema: z.ZodObject<{
|
|
|
1340
1340
|
} | undefined;
|
|
1341
1341
|
debounce?: {
|
|
1342
1342
|
period: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s`;
|
|
1343
|
-
key?: string | undefined;
|
|
1344
1343
|
timeout?: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s` | undefined;
|
|
1344
|
+
key?: string | undefined;
|
|
1345
1345
|
} | undefined;
|
|
1346
1346
|
timeouts?: {
|
|
1347
1347
|
finish?: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s` | undefined;
|
|
@@ -1400,8 +1400,8 @@ declare const functionConfigSchema: z.ZodObject<{
|
|
|
1400
1400
|
} | undefined;
|
|
1401
1401
|
debounce?: {
|
|
1402
1402
|
period: string;
|
|
1403
|
-
key?: string | undefined;
|
|
1404
1403
|
timeout?: string | undefined;
|
|
1404
|
+
key?: string | undefined;
|
|
1405
1405
|
} | undefined;
|
|
1406
1406
|
timeouts?: {
|
|
1407
1407
|
finish?: string | undefined;
|
package/types.d.ts
CHANGED
|
@@ -1234,12 +1234,12 @@ declare const functionConfigSchema: z.ZodObject<{
|
|
|
1234
1234
|
timeout: z.ZodOptional<z.ZodEffects<z.ZodString, "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s`, string>>;
|
|
1235
1235
|
}, "strict", z.ZodTypeAny, {
|
|
1236
1236
|
period: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s`;
|
|
1237
|
-
key?: string | undefined;
|
|
1238
1237
|
timeout?: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s` | undefined;
|
|
1238
|
+
key?: string | undefined;
|
|
1239
1239
|
}, {
|
|
1240
1240
|
period: string;
|
|
1241
|
-
key?: string | undefined;
|
|
1242
1241
|
timeout?: string | undefined;
|
|
1242
|
+
key?: string | undefined;
|
|
1243
1243
|
}>>;
|
|
1244
1244
|
timeouts: z.ZodOptional<z.ZodObject<{
|
|
1245
1245
|
start: z.ZodOptional<z.ZodEffects<z.ZodString, "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s`, string>>;
|
|
@@ -1340,8 +1340,8 @@ declare const functionConfigSchema: z.ZodObject<{
|
|
|
1340
1340
|
} | undefined;
|
|
1341
1341
|
debounce?: {
|
|
1342
1342
|
period: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s`;
|
|
1343
|
-
key?: string | undefined;
|
|
1344
1343
|
timeout?: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s` | undefined;
|
|
1344
|
+
key?: string | undefined;
|
|
1345
1345
|
} | undefined;
|
|
1346
1346
|
timeouts?: {
|
|
1347
1347
|
finish?: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s` | undefined;
|
|
@@ -1400,8 +1400,8 @@ declare const functionConfigSchema: z.ZodObject<{
|
|
|
1400
1400
|
} | undefined;
|
|
1401
1401
|
debounce?: {
|
|
1402
1402
|
period: string;
|
|
1403
|
-
key?: string | undefined;
|
|
1404
1403
|
timeout?: string | undefined;
|
|
1404
|
+
key?: string | undefined;
|
|
1405
1405
|
} | undefined;
|
|
1406
1406
|
timeouts?: {
|
|
1407
1407
|
finish?: string | undefined;
|
package/version.cjs
CHANGED
package/version.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.cjs","names":[],"sources":["../src/version.ts"],"sourcesContent":["// Generated by genversion.\nexport const version = \"3.
|
|
1
|
+
{"version":3,"file":"version.cjs","names":[],"sources":["../src/version.ts"],"sourcesContent":["// Generated by genversion.\nexport const version = \"3.49.1\";\n"],"mappings":";;AACA,MAAa,UAAU"}
|
package/version.d.cts
CHANGED
package/version.d.ts
CHANGED
package/version.js
CHANGED
package/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","names":[],"sources":["../src/version.ts"],"sourcesContent":["// Generated by genversion.\nexport const version = \"3.
|
|
1
|
+
{"version":3,"file":"version.js","names":[],"sources":["../src/version.ts"],"sourcesContent":["// Generated by genversion.\nexport const version = \"3.49.1\";\n"],"mappings":";AACA,MAAa,UAAU"}
|