inngest 2.7.2 → 3.0.0
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 +46 -0
- package/api/api.js +4 -4
- package/api/schema.d.ts +54 -6
- package/api/schema.d.ts.map +1 -1
- package/api/schema.js +17 -7
- package/api/schema.js.map +1 -1
- package/cloudflare.d.ts +6 -3
- package/cloudflare.d.ts.map +1 -1
- package/cloudflare.js +19 -41
- package/cloudflare.js.map +1 -1
- package/components/EventSchemas.d.ts +1 -12
- package/components/EventSchemas.d.ts.map +1 -1
- package/components/EventSchemas.js.map +1 -1
- package/components/Inngest.d.ts +44 -57
- package/components/Inngest.d.ts.map +1 -1
- package/components/Inngest.js +47 -26
- package/components/Inngest.js.map +1 -1
- package/components/InngestCommHandler.d.ts +156 -198
- package/components/InngestCommHandler.d.ts.map +1 -1
- package/components/InngestCommHandler.js +311 -305
- package/components/InngestCommHandler.js.map +1 -1
- package/components/InngestFunction.d.ts +9 -82
- package/components/InngestFunction.d.ts.map +1 -1
- package/components/InngestFunction.js +21 -413
- package/components/InngestFunction.js.map +1 -1
- package/components/InngestMiddleware.d.ts +37 -26
- package/components/InngestMiddleware.d.ts.map +1 -1
- package/components/InngestMiddleware.js +1 -3
- package/components/InngestMiddleware.js.map +1 -1
- package/components/InngestStepTools.d.ts +69 -37
- package/components/InngestStepTools.d.ts.map +1 -1
- package/components/InngestStepTools.js +34 -95
- package/components/InngestStepTools.js.map +1 -1
- package/components/NonRetriableError.d.ts.map +1 -1
- package/components/NonRetriableError.js +1 -0
- package/components/NonRetriableError.js.map +1 -1
- package/components/RetryAfterError.d.ts +38 -0
- package/components/RetryAfterError.d.ts.map +1 -0
- package/components/RetryAfterError.js +42 -0
- package/components/RetryAfterError.js.map +1 -0
- package/components/execution/InngestExecution.d.ts +72 -0
- package/components/execution/InngestExecution.d.ts.map +1 -0
- package/components/execution/InngestExecution.js +23 -0
- package/components/execution/InngestExecution.js.map +1 -0
- package/components/execution/v0.d.ts +114 -0
- package/components/execution/v0.d.ts.map +1 -0
- package/components/execution/v0.js +394 -0
- package/components/execution/v0.js.map +1 -0
- package/components/execution/v1.d.ts +88 -0
- package/components/execution/v1.d.ts.map +1 -0
- package/components/execution/v1.js +673 -0
- package/components/execution/v1.js.map +1 -0
- package/deno/fresh.d.ts +3 -3
- package/deno/fresh.d.ts.map +1 -1
- package/deno/fresh.js +17 -38
- package/deno/fresh.js.map +1 -1
- package/digitalocean.d.ts +5 -5
- package/digitalocean.d.ts.map +1 -1
- package/digitalocean.js +14 -46
- package/digitalocean.js.map +1 -1
- package/edge.d.ts +5 -5
- package/edge.d.ts.map +1 -1
- package/edge.js +16 -38
- package/edge.js.map +1 -1
- package/express.d.ts +7 -3
- package/express.d.ts.map +1 -1
- package/express.js +38 -45
- package/express.js.map +1 -1
- package/fastify.d.ts +8 -3
- package/fastify.d.ts.map +1 -1
- package/fastify.js +37 -47
- package/fastify.js.map +1 -1
- package/h3.d.ts +4 -3
- package/h3.d.ts.map +1 -1
- package/h3.js +18 -45
- package/h3.js.map +1 -1
- package/helpers/ServerTiming.d.ts.map +1 -1
- package/helpers/ServerTiming.js +2 -1
- package/helpers/ServerTiming.js.map +1 -1
- package/helpers/consts.d.ts +23 -9
- package/helpers/consts.d.ts.map +1 -1
- package/helpers/consts.js +31 -13
- package/helpers/consts.js.map +1 -1
- package/helpers/devserver.d.ts +0 -34
- package/helpers/devserver.d.ts.map +1 -1
- package/helpers/devserver.js.map +1 -1
- package/helpers/env.d.ts +14 -6
- package/helpers/env.d.ts.map +1 -1
- package/helpers/env.js +4 -4
- package/helpers/env.js.map +1 -1
- package/helpers/errors.d.ts +37 -2
- package/helpers/errors.d.ts.map +1 -1
- package/helpers/errors.js +66 -15
- package/helpers/errors.js.map +1 -1
- package/helpers/functions.d.ts +52 -5
- package/helpers/functions.d.ts.map +1 -1
- package/helpers/functions.js +121 -22
- package/helpers/functions.js.map +1 -1
- package/helpers/promises.d.ts +45 -0
- package/helpers/promises.d.ts.map +1 -1
- package/helpers/promises.js +69 -1
- package/helpers/promises.js.map +1 -1
- package/helpers/strings.d.ts +6 -1
- package/helpers/strings.d.ts.map +1 -1
- package/helpers/strings.js +7 -2
- package/helpers/strings.js.map +1 -1
- package/helpers/types.d.ts +5 -17
- package/helpers/types.d.ts.map +1 -1
- package/index.d.ts +4 -2
- package/index.d.ts.map +1 -1
- package/index.js +5 -1
- package/index.js.map +1 -1
- package/lambda.d.ts +10 -8
- package/lambda.d.ts.map +1 -1
- package/lambda.js +48 -72
- package/lambda.js.map +1 -1
- package/next.d.ts +11 -5
- package/next.d.ts.map +1 -1
- package/next.js +84 -103
- package/next.js.map +1 -1
- package/nuxt.d.ts +3 -3
- package/nuxt.d.ts.map +1 -1
- package/nuxt.js +5 -6
- package/nuxt.js.map +1 -1
- package/package.json +5 -4
- package/redwood.d.ts +4 -3
- package/redwood.d.ts.map +1 -1
- package/redwood.js +22 -48
- package/redwood.js.map +1 -1
- package/remix.d.ts +7 -5
- package/remix.d.ts.map +1 -1
- package/remix.js +15 -36
- package/remix.js.map +1 -1
- package/types.d.ts +126 -220
- package/types.d.ts.map +1 -1
- package/types.js +24 -45
- package/types.js.map +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/helpers/scalar.d.ts +0 -8
- package/helpers/scalar.d.ts.map +0 -1
- package/helpers/scalar.js +0 -19
- package/helpers/scalar.js.map +0 -1
package/components/Inngest.js
CHANGED
|
@@ -6,7 +6,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
6
6
|
};
|
|
7
7
|
var _Inngest_instances, _Inngest_getResponseError;
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.Inngest = void 0;
|
|
9
|
+
exports.builtInMiddleware = exports.Inngest = void 0;
|
|
10
10
|
const api_1 = require("../api/api");
|
|
11
11
|
const consts_1 = require("../helpers/consts");
|
|
12
12
|
const devserver_1 = require("../helpers/devserver");
|
|
@@ -60,7 +60,7 @@ class Inngest {
|
|
|
60
60
|
* });
|
|
61
61
|
* ```
|
|
62
62
|
*/
|
|
63
|
-
constructor({
|
|
63
|
+
constructor({ id, eventKey, baseUrl, fetch, env, logger = new logger_1.DefaultLogger(), middleware, }) {
|
|
64
64
|
_Inngest_instances.add(this);
|
|
65
65
|
/**
|
|
66
66
|
* Inngest event key, used to send events to Inngest Cloud.
|
|
@@ -69,14 +69,14 @@ class Inngest {
|
|
|
69
69
|
/**
|
|
70
70
|
* The absolute URL of the Inngest Cloud API.
|
|
71
71
|
*/
|
|
72
|
-
this.
|
|
73
|
-
if (!
|
|
72
|
+
this.sendEventUrl = new URL(`e/${this.eventKey}`, consts_1.defaultInngestEventBaseUrl);
|
|
73
|
+
if (!id) {
|
|
74
74
|
// TODO PrettyError
|
|
75
|
-
throw new Error("
|
|
75
|
+
throw new Error("An `id` must be passed to create an Inngest instance.");
|
|
76
76
|
}
|
|
77
|
-
this.
|
|
78
|
-
this.
|
|
79
|
-
this.setEventKey(eventKey || (0, env_1.processEnv)(consts_1.envKeys.
|
|
77
|
+
this.id = id;
|
|
78
|
+
this.baseUrl = baseUrl || (0, env_1.processEnv)(consts_1.envKeys.InngestBaseUrl);
|
|
79
|
+
this.setEventKey(eventKey || (0, env_1.processEnv)(consts_1.envKeys.InngestEventKey) || "");
|
|
80
80
|
if (!this.eventKey) {
|
|
81
81
|
console.warn((0, errors_1.prettyError)({
|
|
82
82
|
type: "warn",
|
|
@@ -91,15 +91,14 @@ class Inngest {
|
|
|
91
91
|
inngestEnv: env,
|
|
92
92
|
});
|
|
93
93
|
this.fetch = (0, env_1.getFetch)(fetch);
|
|
94
|
-
const signingKey = (0, env_1.processEnv)(consts_1.envKeys.SigningKey) || "";
|
|
95
94
|
this.inngestApi = new api_1.InngestApi({
|
|
96
|
-
baseUrl:
|
|
97
|
-
signingKey:
|
|
95
|
+
baseUrl: this.baseUrl || consts_1.defaultInngestBaseUrl,
|
|
96
|
+
signingKey: (0, env_1.processEnv)(consts_1.envKeys.InngestSigningKey) || "",
|
|
98
97
|
fetch: this.fetch,
|
|
99
98
|
});
|
|
100
99
|
this.logger = logger;
|
|
101
100
|
this.middleware = this.initializeMiddleware([
|
|
102
|
-
...builtInMiddleware,
|
|
101
|
+
...exports.builtInMiddleware,
|
|
103
102
|
...(middleware || []),
|
|
104
103
|
]);
|
|
105
104
|
}
|
|
@@ -135,7 +134,7 @@ class Inngest {
|
|
|
135
134
|
*/
|
|
136
135
|
eventKey) {
|
|
137
136
|
this.eventKey = eventKey;
|
|
138
|
-
this.
|
|
137
|
+
this.sendEventUrl = new URL(`e/${this.eventKey}`, this.baseUrl || consts_1.defaultInngestEventBaseUrl);
|
|
139
138
|
}
|
|
140
139
|
/**
|
|
141
140
|
* Send one or many events to Inngest. Takes an entire payload (including
|
|
@@ -165,13 +164,15 @@ class Inngest {
|
|
|
165
164
|
* ```
|
|
166
165
|
*/
|
|
167
166
|
async send(payload) {
|
|
168
|
-
var _a
|
|
167
|
+
var _a;
|
|
169
168
|
const hooks = await (0, InngestMiddleware_1.getHookStack)(this.middleware, "onSendEvent", undefined, {
|
|
170
169
|
transformInput: (prev, output) => {
|
|
171
170
|
return Object.assign(Object.assign({}, prev), output);
|
|
172
171
|
},
|
|
173
|
-
transformOutput
|
|
174
|
-
return
|
|
172
|
+
transformOutput(prev, output) {
|
|
173
|
+
return {
|
|
174
|
+
result: Object.assign(Object.assign({}, prev.result), output === null || output === void 0 ? void 0 : output.result),
|
|
175
|
+
};
|
|
175
176
|
},
|
|
176
177
|
});
|
|
177
178
|
if (!this.eventKey) {
|
|
@@ -201,22 +202,28 @@ class Inngest {
|
|
|
201
202
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
202
203
|
data: p.data || {} });
|
|
203
204
|
});
|
|
205
|
+
const applyHookToOutput = async (arg) => {
|
|
206
|
+
var _a;
|
|
207
|
+
const hookOutput = await ((_a = hooks.transformOutput) === null || _a === void 0 ? void 0 : _a.call(hooks, arg));
|
|
208
|
+
return Object.assign(Object.assign({}, arg.result), hookOutput === null || hookOutput === void 0 ? void 0 : hookOutput.result);
|
|
209
|
+
};
|
|
204
210
|
/**
|
|
205
211
|
* It can be valid for a user to send an empty list of events; if this
|
|
206
212
|
* happens, show a warning that this may not be intended, but don't throw.
|
|
207
213
|
*/
|
|
208
214
|
if (!payloads.length) {
|
|
209
|
-
|
|
215
|
+
console.warn((0, errors_1.prettyError)({
|
|
210
216
|
type: "warn",
|
|
211
217
|
whatHappened: "`inngest.send()` called with no events",
|
|
212
218
|
reassurance: "This is not an error, but you may not have intended to do this.",
|
|
213
219
|
consequences: "The returned promise will resolve, but no events have been sent to Inngest.",
|
|
214
220
|
stack: true,
|
|
215
221
|
}));
|
|
222
|
+
return await applyHookToOutput({ result: { ids: [] } });
|
|
216
223
|
}
|
|
217
224
|
// When sending events, check if the dev server is available. If so, use the
|
|
218
225
|
// dev server.
|
|
219
|
-
let url = this.
|
|
226
|
+
let url = this.sendEventUrl.href;
|
|
220
227
|
if (!(0, env_1.skipDevServer)()) {
|
|
221
228
|
const host = (0, env_1.devServerHost)();
|
|
222
229
|
// If the dev server host env var has been set we always want to use
|
|
@@ -242,13 +249,25 @@ class Inngest {
|
|
|
242
249
|
if (body.status / 100 !== 2 || body.error) {
|
|
243
250
|
throw await __classPrivateFieldGet(this, _Inngest_instances, "m", _Inngest_getResponseError).call(this, response, body.error);
|
|
244
251
|
}
|
|
245
|
-
return
|
|
252
|
+
return await applyHookToOutput({ result: { ids: body.ids } });
|
|
246
253
|
}
|
|
247
|
-
createFunction(
|
|
248
|
-
|
|
254
|
+
createFunction(options, trigger, handler) {
|
|
255
|
+
let sanitizedOpts;
|
|
256
|
+
if (typeof options === "string") {
|
|
257
|
+
// v2 -> v3 runtime migraton warning
|
|
258
|
+
console.warn(`${consts_1.logPrefix} InngestFunction: Creating a function with a string as the first argument has been deprecated in v3; pass an object instead. See https://www.inngest.com/docs/sdk/migration`);
|
|
259
|
+
sanitizedOpts = { id: options };
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
sanitizedOpts = options;
|
|
263
|
+
}
|
|
249
264
|
let sanitizedTrigger;
|
|
250
265
|
if (typeof trigger === "string") {
|
|
251
|
-
|
|
266
|
+
// v2 -> v3 migration warning
|
|
267
|
+
console.warn(`${consts_1.logPrefix} InngestFunction: Creating a function with a string as the second argument has been deprecated in v3; pass an object instead. See https://www.inngest.com/docs/sdk/migration`);
|
|
268
|
+
sanitizedTrigger = {
|
|
269
|
+
event: trigger,
|
|
270
|
+
};
|
|
252
271
|
}
|
|
253
272
|
else if (trigger.event) {
|
|
254
273
|
sanitizedTrigger = {
|
|
@@ -259,9 +278,11 @@ class Inngest {
|
|
|
259
278
|
else {
|
|
260
279
|
sanitizedTrigger = trigger;
|
|
261
280
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
281
|
+
if (Object.prototype.hasOwnProperty.call(sanitizedOpts, "fns")) {
|
|
282
|
+
// v2 -> v3 migration warning
|
|
283
|
+
console.warn(`${consts_1.logPrefix} InngestFunction: \`fns\` option has been deprecated in v3; use \`middleware\` instead. See https://www.inngest.com/docs/sdk/migration`);
|
|
284
|
+
}
|
|
285
|
+
return new InngestFunction_1.InngestFunction(this, sanitizedOpts, sanitizedTrigger, handler);
|
|
265
286
|
}
|
|
266
287
|
}
|
|
267
288
|
exports.Inngest = Inngest;
|
|
@@ -316,7 +337,7 @@ async function _Inngest_getResponseError(response, foundErr = "Unknown error") {
|
|
|
316
337
|
* If this is moved, please ensure that using this package in another project
|
|
317
338
|
* can correctly access comments on mutated input and output.
|
|
318
339
|
*/
|
|
319
|
-
|
|
340
|
+
exports.builtInMiddleware = ((m) => m)([
|
|
320
341
|
new InngestMiddleware_1.InngestMiddleware({
|
|
321
342
|
name: "Inngest: Logger",
|
|
322
343
|
init({ client }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Inngest.js","sourceRoot":"","sources":["../../src/components/Inngest.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oCAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"Inngest.js","sourceRoot":"","sources":["../../src/components/Inngest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,61 +1,90 @@
|
|
|
1
1
|
import { ServerTiming } from "../helpers/ServerTiming";
|
|
2
|
+
import { type Env } from "../helpers/env";
|
|
2
3
|
import { type MaybePromise } from "../helpers/types";
|
|
3
|
-
import { type FunctionConfig, type LogLevel, type RegisterOptions, type RegisterRequest
|
|
4
|
-
import { type
|
|
5
|
-
import { type
|
|
4
|
+
import { type FunctionConfig, type LogLevel, type RegisterOptions, type RegisterRequest } from "../types";
|
|
5
|
+
import { type AnyInngest } from "./Inngest";
|
|
6
|
+
import { type AnyInngestFunction } from "./InngestFunction";
|
|
7
|
+
import { ExecutionVersion, type ExecutionResult } from "./execution/InngestExecution";
|
|
6
8
|
/**
|
|
7
|
-
* A
|
|
8
|
-
*
|
|
9
|
-
* registration process is always the same for the user.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```
|
|
13
|
-
* // my-custom-handler.ts
|
|
14
|
-
* import { InngestCommHandler, ServeHandler } from "inngest";
|
|
15
|
-
*
|
|
16
|
-
* export const serve: ServeHandler = (nameOrInngest, fns, opts) => {
|
|
17
|
-
* const handler = new InngestCommHandler(
|
|
18
|
-
* "my-custom-handler",
|
|
19
|
-
* nameOrInngest,
|
|
20
|
-
* fns,
|
|
21
|
-
* opts,
|
|
22
|
-
* () => { ... },
|
|
23
|
-
* () => { ... }
|
|
24
|
-
* );
|
|
25
|
-
*
|
|
26
|
-
* return handler.createHandler();
|
|
27
|
-
* };
|
|
28
|
-
* ```
|
|
9
|
+
* A set of options that can be passed to a serve handler, intended to be used
|
|
10
|
+
* by internal and custom serve handlers to provide a consistent interface.
|
|
29
11
|
*
|
|
30
12
|
* @public
|
|
31
13
|
*/
|
|
32
|
-
export
|
|
33
|
-
/**
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
14
|
+
export interface ServeHandlerOptions extends RegisterOptions {
|
|
15
|
+
/**
|
|
16
|
+
* The `Inngest` instance used to declare all functions.
|
|
17
|
+
*/
|
|
18
|
+
client: AnyInngest;
|
|
19
|
+
/**
|
|
20
|
+
* An array of the functions to serve and register with Inngest.
|
|
21
|
+
*/
|
|
22
|
+
functions: readonly AnyInngestFunction[];
|
|
23
|
+
}
|
|
24
|
+
export interface InternalServeHandlerOptions extends ServeHandlerOptions {
|
|
25
|
+
/**
|
|
26
|
+
* Can be used to override the framework name given to a particular serve
|
|
27
|
+
* handler.
|
|
28
|
+
*/
|
|
29
|
+
frameworkName?: string;
|
|
30
|
+
}
|
|
31
|
+
interface InngestCommHandlerOptions<Input extends any[] = any[], Output = any, StreamOutput = any> extends RegisterOptions {
|
|
32
|
+
/**
|
|
33
|
+
* The name of the framework this handler is designed for. Should be
|
|
34
|
+
* lowercase, alphanumeric characters inclusive of `-` and `/`.
|
|
35
|
+
*
|
|
36
|
+
* This should never be defined by the user; a {@link ServeHandler} should
|
|
37
|
+
* abstract this.
|
|
38
|
+
*/
|
|
39
|
+
frameworkName: string;
|
|
40
|
+
/**
|
|
41
|
+
* The name of this serve handler, e.g. `"My App"`. It's recommended that this
|
|
42
|
+
* value represents the overarching app/service that this set of functions is
|
|
43
|
+
* being served from.
|
|
44
|
+
*
|
|
45
|
+
* This can also be an `Inngest` client, in which case the name given when
|
|
46
|
+
* instantiating the client is used. This is useful if you're sending and
|
|
47
|
+
* receiving events from the same service, as you can reuse a single
|
|
48
|
+
* definition of Inngest.
|
|
49
|
+
*/
|
|
50
|
+
client: AnyInngest;
|
|
51
|
+
/**
|
|
52
|
+
* An array of the functions to serve and register with Inngest.
|
|
53
|
+
*/
|
|
54
|
+
functions: readonly AnyInngestFunction[];
|
|
55
|
+
/**
|
|
56
|
+
* The `handler` is the function your framework requires to handle a
|
|
57
|
+
* request. For example, this is most commonly a function that is given a
|
|
58
|
+
* `Request` and must return a `Response`.
|
|
59
|
+
*
|
|
60
|
+
* The handler must map out any incoming parameters, then return a
|
|
61
|
+
* strictly-typed object to assess what kind of request is being made,
|
|
62
|
+
* collecting any relevant data as we go.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```
|
|
66
|
+
* return {
|
|
67
|
+
* register: () => { ... },
|
|
68
|
+
* run: () => { ... },
|
|
69
|
+
* view: () => { ... }
|
|
70
|
+
* };
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* Every key must be specified and must be a function that either returns
|
|
74
|
+
* a strictly-typed payload or `undefined` if the request is not for that
|
|
75
|
+
* purpose.
|
|
76
|
+
*
|
|
77
|
+
* This gives handlers freedom to choose how their platform of choice will
|
|
78
|
+
* trigger differing actions, whilst also ensuring all required information
|
|
79
|
+
* is given for each request type.
|
|
80
|
+
*
|
|
81
|
+
* See any existing handler for a full example.
|
|
82
|
+
*
|
|
83
|
+
* This should never be defined by the user; a {@link ServeHandler} should
|
|
84
|
+
* abstract this.
|
|
85
|
+
*/
|
|
86
|
+
handler: Handler<Input, Output, StreamOutput>;
|
|
87
|
+
}
|
|
59
88
|
/**
|
|
60
89
|
* `InngestCommHandler` is a class for handling incoming requests from Inngest (or
|
|
61
90
|
* Inngest's tooling such as the dev server or CLI) and taking appropriate
|
|
@@ -91,30 +120,24 @@ opts?: RegisterOptions
|
|
|
91
120
|
*
|
|
92
121
|
* @public
|
|
93
122
|
*/
|
|
94
|
-
export declare class InngestCommHandler<
|
|
123
|
+
export declare class InngestCommHandler<Input extends any[] = any[], Output = any, StreamOutput = any> {
|
|
95
124
|
/**
|
|
96
|
-
* The
|
|
125
|
+
* The ID of this serve handler, e.g. `"my-app"`. It's recommended that this
|
|
97
126
|
* value represents the overarching app/service that this set of functions is
|
|
98
127
|
* being served from.
|
|
99
128
|
*/
|
|
100
|
-
readonly
|
|
129
|
+
readonly id: string;
|
|
101
130
|
/**
|
|
102
131
|
* The handler specified during instantiation of the class.
|
|
103
132
|
*/
|
|
104
|
-
readonly handler:
|
|
105
|
-
/**
|
|
106
|
-
* The response transformer specified during instantiation of the class.
|
|
107
|
-
*/
|
|
108
|
-
readonly transformRes: TResTransform;
|
|
109
|
-
readonly streamTransformRes: TStreamTransform | undefined;
|
|
133
|
+
readonly handler: Handler;
|
|
110
134
|
/**
|
|
111
135
|
* The URL of the Inngest function registration endpoint.
|
|
112
136
|
*/
|
|
113
137
|
private readonly inngestRegisterUrl;
|
|
114
138
|
/**
|
|
115
139
|
* The name of the framework this handler is designed for. Should be
|
|
116
|
-
* lowercase, alphanumeric characters inclusive of `-` and `/`.
|
|
117
|
-
* never be defined by the user; a {@link ServeHandler} should abstract this.
|
|
140
|
+
* lowercase, alphanumeric characters inclusive of `-` and `/`.
|
|
118
141
|
*/
|
|
119
142
|
protected readonly frameworkName: string;
|
|
120
143
|
/**
|
|
@@ -188,106 +211,9 @@ export declare class InngestCommHandler<H extends Handler, TResTransform extends
|
|
|
188
211
|
* to find and register functions when interacting with Inngest Cloud.
|
|
189
212
|
*/
|
|
190
213
|
private readonly fns;
|
|
214
|
+
private env;
|
|
191
215
|
private allowExpiredSignatures;
|
|
192
|
-
constructor(
|
|
193
|
-
/**
|
|
194
|
-
* The name of the framework this handler is designed for. Should be
|
|
195
|
-
* lowercase, alphanumeric characters inclusive of `-` and `/`.
|
|
196
|
-
*
|
|
197
|
-
* This should never be defined by the user; a {@link ServeHandler} should
|
|
198
|
-
* abstract this.
|
|
199
|
-
*/
|
|
200
|
-
frameworkName: string,
|
|
201
|
-
/**
|
|
202
|
-
* The name of this serve handler, e.g. `"My App"`. It's recommended that this
|
|
203
|
-
* value represents the overarching app/service that this set of functions is
|
|
204
|
-
* being served from.
|
|
205
|
-
*
|
|
206
|
-
* This can also be an `Inngest` client, in which case the name given when
|
|
207
|
-
* instantiating the client is used. This is useful if you're sending and
|
|
208
|
-
* receiving events from the same service, as you can reuse a single
|
|
209
|
-
* definition of Inngest.
|
|
210
|
-
*/
|
|
211
|
-
client: Inngest<any>,
|
|
212
|
-
/**
|
|
213
|
-
* An array of the functions to serve and register with Inngest.
|
|
214
|
-
*/
|
|
215
|
-
functions: InngestFunction<any, any, any, any>[], options: RegisterOptions | undefined,
|
|
216
|
-
/**
|
|
217
|
-
* The `handler` is the function your framework requires to handle a
|
|
218
|
-
* request. For example, this is most commonly a function that is given a
|
|
219
|
-
* `Request` and must return a `Response`.
|
|
220
|
-
*
|
|
221
|
-
* The handler must map out any incoming parameters, then return a
|
|
222
|
-
* strictly-typed object to assess what kind of request is being made,
|
|
223
|
-
* collecting any relevant data as we go.
|
|
224
|
-
*
|
|
225
|
-
* @example
|
|
226
|
-
* ```
|
|
227
|
-
* return {
|
|
228
|
-
* register: () => { ... },
|
|
229
|
-
* run: () => { ... },
|
|
230
|
-
* view: () => { ... }
|
|
231
|
-
* };
|
|
232
|
-
* ```
|
|
233
|
-
*
|
|
234
|
-
* Every key must be specified and must be a function that either returns
|
|
235
|
-
* a strictly-typed payload or `undefined` if the request is not for that
|
|
236
|
-
* purpose.
|
|
237
|
-
*
|
|
238
|
-
* This gives handlers freedom to choose how their platform of choice will
|
|
239
|
-
* trigger differing actions, whilst also ensuring all required information
|
|
240
|
-
* is given for each request type.
|
|
241
|
-
*
|
|
242
|
-
* See any existing handler for a full example.
|
|
243
|
-
*
|
|
244
|
-
* This should never be defined by the user; a {@link ServeHandler} should
|
|
245
|
-
* abstract this.
|
|
246
|
-
*/
|
|
247
|
-
handler: H,
|
|
248
|
-
/**
|
|
249
|
-
* The `transformRes` function receives the output of the Inngest SDK and
|
|
250
|
-
* can decide how to package up that information to appropriately return the
|
|
251
|
-
* information to Inngest.
|
|
252
|
-
*
|
|
253
|
-
* Mostly, this is taking the given parameters and returning a new
|
|
254
|
-
* `Response`.
|
|
255
|
-
*
|
|
256
|
-
* The function is passed an {@link ActionResponse} (an object containing a
|
|
257
|
-
* `status` code, a `headers` object, and a stringified `body`), as well as
|
|
258
|
-
* every parameter passed to the given `handler` function. This ensures you
|
|
259
|
-
* can appropriately handle the response, including use of any required
|
|
260
|
-
* parameters such as `res` in Express-/Connect-like frameworks.
|
|
261
|
-
*
|
|
262
|
-
* This should never be defined by the user; a {@link ServeHandler} should
|
|
263
|
-
* abstract this.
|
|
264
|
-
*/
|
|
265
|
-
transformRes: TResTransform,
|
|
266
|
-
/**
|
|
267
|
-
* The `streamTransformRes` function, if defined, declares that this handler
|
|
268
|
-
* supports streaming responses back to Inngest. This is useful for
|
|
269
|
-
* functions that are expected to take a long time, as edge streaming can
|
|
270
|
-
* often circumvent restrictive request timeouts and other limitations.
|
|
271
|
-
*
|
|
272
|
-
* If your handler does not support streaming, do not define this function.
|
|
273
|
-
*
|
|
274
|
-
* It receives the output of the Inngest SDK and can decide how to package
|
|
275
|
-
* up that information to appropriately return the information in a stream
|
|
276
|
-
* to Inngest.
|
|
277
|
-
*
|
|
278
|
-
* Mostly, this is taking the given parameters and returning a new
|
|
279
|
-
* `Response`.
|
|
280
|
-
*
|
|
281
|
-
* The function is passed an {@link ActionResponse} (an object containing a
|
|
282
|
-
* `status` code, a `headers` object, and `body`, a `ReadableStream`), as
|
|
283
|
-
* well as every parameter passed to the given `handler` function. This
|
|
284
|
-
* ensures you can appropriately handle the response, including use of any
|
|
285
|
-
* required parameters such as `res` in Express-/Connect-like frameworks.
|
|
286
|
-
*
|
|
287
|
-
* This should never be defined by the user; a {@link ServeHandler} should
|
|
288
|
-
* abstract this.
|
|
289
|
-
*/
|
|
290
|
-
streamTransformRes?: TStreamTransform);
|
|
216
|
+
constructor(options: InngestCommHandlerOptions<Input, Output, StreamOutput>);
|
|
291
217
|
private get hashedSigningKey();
|
|
292
218
|
/**
|
|
293
219
|
* `createHandler` should be used to return a type-equivalent version of the
|
|
@@ -312,7 +238,7 @@ export declare class InngestCommHandler<H extends Handler, TResTransform extends
|
|
|
312
238
|
* };
|
|
313
239
|
* ```
|
|
314
240
|
*/
|
|
315
|
-
createHandler(): (...args:
|
|
241
|
+
createHandler(): (...args: Input) => Promise<Awaited<Output>>;
|
|
316
242
|
/**
|
|
317
243
|
* Given a set of functions to check if an action is available from the
|
|
318
244
|
* instance's handler, enact any action that is found.
|
|
@@ -325,7 +251,10 @@ export declare class InngestCommHandler<H extends Handler, TResTransform extends
|
|
|
325
251
|
* found (e.g. env vars, options, etc).
|
|
326
252
|
*/
|
|
327
253
|
private handleAction;
|
|
328
|
-
protected runStep(functionId: string, stepId: string | null, data: unknown, timer: ServerTiming):
|
|
254
|
+
protected runStep(functionId: string, stepId: string | null, data: unknown, timer: ServerTiming): {
|
|
255
|
+
version: ExecutionVersion;
|
|
256
|
+
result: Promise<ExecutionResult>;
|
|
257
|
+
};
|
|
329
258
|
protected configs(url: URL): FunctionConfig[];
|
|
330
259
|
/**
|
|
331
260
|
* Return an Inngest serve endpoint URL given a potential `path` and `host`.
|
|
@@ -335,7 +264,7 @@ export declare class InngestCommHandler<H extends Handler, TResTransform extends
|
|
|
335
264
|
*/
|
|
336
265
|
protected reqUrl(url: URL): URL;
|
|
337
266
|
protected registerBody(url: URL): RegisterRequest;
|
|
338
|
-
protected register(url: URL,
|
|
267
|
+
protected register(url: URL, deployId: string | undefined | null, getHeaders: () => Record<string, string>): Promise<{
|
|
339
268
|
status: number;
|
|
340
269
|
message: string;
|
|
341
270
|
modified: boolean;
|
|
@@ -347,7 +276,7 @@ export declare class InngestCommHandler<H extends Handler, TResTransform extends
|
|
|
347
276
|
* are otherwise difficult to access during initialization.
|
|
348
277
|
*/
|
|
349
278
|
private upsertKeysFromEnv;
|
|
350
|
-
protected validateSignature(sig: string | undefined, body:
|
|
279
|
+
protected validateSignature(sig: string | undefined, body: unknown): void;
|
|
351
280
|
protected signResponse(): string;
|
|
352
281
|
/**
|
|
353
282
|
* Log to stdout/stderr if the log level is set to include the given level.
|
|
@@ -363,16 +292,57 @@ export declare class InngestCommHandler<H extends Handler, TResTransform extends
|
|
|
363
292
|
* The broad definition of a handler passed when instantiating an
|
|
364
293
|
* {@link InngestCommHandler} instance.
|
|
365
294
|
*/
|
|
366
|
-
type Handler = (...args:
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
295
|
+
export type Handler<Input extends any[] = any[], Output = any, StreamOutput = any> = (...args: Input) => HandlerResponse<Output, StreamOutput>;
|
|
296
|
+
export type HandlerResponse<Output = any, StreamOutput = any> = {
|
|
297
|
+
body: () => MaybePromise<any>;
|
|
298
|
+
env?: () => MaybePromise<Env>;
|
|
299
|
+
headers: (key: string) => MaybePromise<string | null | undefined>;
|
|
300
|
+
/**
|
|
301
|
+
* Whether the current environment is production. This is used to determine
|
|
302
|
+
* some functionality like whether to connect to the dev server or whether to
|
|
303
|
+
* show debug logging.
|
|
304
|
+
*
|
|
305
|
+
* If this is not provided--or is provided and returns `undefined`--we'll try
|
|
306
|
+
* to automatically detect whether we're in production by checking various
|
|
307
|
+
* environment variables.
|
|
308
|
+
*/
|
|
309
|
+
isProduction?: () => MaybePromise<boolean | undefined>;
|
|
310
|
+
method: () => MaybePromise<string>;
|
|
311
|
+
queryString?: (key: string, url: URL) => MaybePromise<string | null | undefined>;
|
|
312
|
+
url: () => MaybePromise<URL>;
|
|
313
|
+
/**
|
|
314
|
+
* The `transformResponse` function receives the output of the Inngest SDK and
|
|
315
|
+
* can decide how to package up that information to appropriately return the
|
|
316
|
+
* information to Inngest.
|
|
317
|
+
*
|
|
318
|
+
* Mostly, this is taking the given parameters and returning a new `Response`.
|
|
319
|
+
*
|
|
320
|
+
* The function is passed an {@link ActionResponse}, an object containing a
|
|
321
|
+
* `status` code, a `headers` object, and a stringified `body`. This ensures
|
|
322
|
+
* you can appropriately handle the response, including use of any required
|
|
323
|
+
* parameters such as `res` in Express-/Connect-like frameworks.
|
|
324
|
+
*/
|
|
325
|
+
transformResponse: (res: ActionResponse<string>) => Output;
|
|
326
|
+
/**
|
|
327
|
+
* The `transformStreamingResponse` function, if defined, declares that this
|
|
328
|
+
* handler supports streaming responses back to Inngest. This is useful for
|
|
329
|
+
* functions that are expected to take a long time, as edge streaming can
|
|
330
|
+
* often circumvent restrictive request timeouts and other limitations.
|
|
331
|
+
*
|
|
332
|
+
* If your handler does not support streaming, do not define this function.
|
|
333
|
+
*
|
|
334
|
+
* It receives the output of the Inngest SDK and can decide how to package
|
|
335
|
+
* up that information to appropriately return the information in a stream
|
|
336
|
+
* to Inngest.
|
|
337
|
+
*
|
|
338
|
+
* Mostly, this is taking the given parameters and returning a new `Response`.
|
|
339
|
+
*
|
|
340
|
+
* The function is passed an {@link ActionResponse}, an object containing a
|
|
341
|
+
* `status` code, a `headers` object, and `body`, a `ReadableStream`. This
|
|
342
|
+
* ensures you can appropriately handle the response, including use of any
|
|
343
|
+
* required parameters such as `res` in Express-/Connect-like frameworks.
|
|
344
|
+
*/
|
|
345
|
+
transformStreamingResponse?: (res: ActionResponse<ReadableStream>) => StreamOutput;
|
|
376
346
|
};
|
|
377
347
|
/**
|
|
378
348
|
* The response from the Inngest SDK before it is transformed in to a
|
|
@@ -391,28 +361,16 @@ export interface ActionResponse<TBody extends string | ReadableStream = string>
|
|
|
391
361
|
* A stringified body to return.
|
|
392
362
|
*/
|
|
393
363
|
body: TBody;
|
|
364
|
+
/**
|
|
365
|
+
* The version of the execution engine that was used to run this action.
|
|
366
|
+
*
|
|
367
|
+
* If the action didn't use the execution engine (for example, a GET request
|
|
368
|
+
* as a health check), this will be `undefined`.
|
|
369
|
+
*
|
|
370
|
+
* If the version should be entirely omitted from the response (for example,
|
|
371
|
+
* when sending preliminary headers when streaming), this will be `null`.
|
|
372
|
+
*/
|
|
373
|
+
version: ExecutionVersion | null | undefined;
|
|
394
374
|
}
|
|
395
|
-
/**
|
|
396
|
-
* A set of actions the SDK is aware of, including any payloads they require
|
|
397
|
-
* when requesting them.
|
|
398
|
-
*/
|
|
399
|
-
type HandlerAction = {
|
|
400
|
-
action: "error";
|
|
401
|
-
data: Record<string, string>;
|
|
402
|
-
} | {
|
|
403
|
-
action: "view";
|
|
404
|
-
isIntrospection: boolean;
|
|
405
|
-
} | {
|
|
406
|
-
action: "register";
|
|
407
|
-
deployId?: null | string;
|
|
408
|
-
} | {
|
|
409
|
-
action: "run";
|
|
410
|
-
fnId: string;
|
|
411
|
-
stepId: string | null;
|
|
412
|
-
data: Record<string, unknown>;
|
|
413
|
-
signature: string | undefined;
|
|
414
|
-
} | {
|
|
415
|
-
action: "bad-method";
|
|
416
|
-
};
|
|
417
375
|
export {};
|
|
418
376
|
//# sourceMappingURL=InngestCommHandler.d.ts.map
|