inngest 2.0.0-schemas.1 → 2.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.
Files changed (65) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/components/EventSchemas.d.ts +8 -1
  3. package/components/EventSchemas.d.ts.map +1 -1
  4. package/components/EventSchemas.js.map +1 -1
  5. package/components/Inngest.d.ts +96 -60
  6. package/components/Inngest.d.ts.map +1 -1
  7. package/components/Inngest.js +160 -49
  8. package/components/Inngest.js.map +1 -1
  9. package/components/InngestCommHandler.d.ts +9 -3
  10. package/components/InngestCommHandler.d.ts.map +1 -1
  11. package/components/InngestCommHandler.js +43 -24
  12. package/components/InngestCommHandler.js.map +1 -1
  13. package/components/InngestFunction.d.ts +68 -0
  14. package/components/InngestFunction.d.ts.map +1 -1
  15. package/components/InngestFunction.js +303 -230
  16. package/components/InngestFunction.js.map +1 -1
  17. package/components/InngestMiddleware.d.ts +306 -0
  18. package/components/InngestMiddleware.d.ts.map +1 -0
  19. package/components/InngestMiddleware.js +96 -0
  20. package/components/InngestMiddleware.js.map +1 -0
  21. package/components/InngestStepTools.d.ts +5 -69
  22. package/components/InngestStepTools.d.ts.map +1 -1
  23. package/components/InngestStepTools.js +6 -41
  24. package/components/InngestStepTools.js.map +1 -1
  25. package/helpers/env.d.ts +5 -0
  26. package/helpers/env.d.ts.map +1 -1
  27. package/helpers/env.js +31 -3
  28. package/helpers/env.js.map +1 -1
  29. package/helpers/errors.d.ts +14 -0
  30. package/helpers/errors.d.ts.map +1 -1
  31. package/helpers/errors.js +17 -1
  32. package/helpers/errors.js.map +1 -1
  33. package/helpers/functions.d.ts +15 -0
  34. package/helpers/functions.d.ts.map +1 -1
  35. package/helpers/functions.js +36 -1
  36. package/helpers/functions.js.map +1 -1
  37. package/helpers/stream.d.ts.map +1 -1
  38. package/helpers/stream.js +2 -1
  39. package/helpers/stream.js.map +1 -1
  40. package/helpers/strings.d.ts +1 -0
  41. package/helpers/strings.d.ts.map +1 -1
  42. package/helpers/strings.js +3 -1
  43. package/helpers/strings.js.map +1 -1
  44. package/helpers/types.d.ts +14 -0
  45. package/helpers/types.d.ts.map +1 -1
  46. package/index.d.ts +2 -0
  47. package/index.d.ts.map +1 -1
  48. package/index.js +3 -1
  49. package/index.js.map +1 -1
  50. package/landing.d.ts +1 -1
  51. package/landing.d.ts.map +1 -1
  52. package/landing.js +1 -1
  53. package/landing.js.map +1 -1
  54. package/middleware/logger.d.ts +48 -0
  55. package/middleware/logger.d.ts.map +1 -0
  56. package/middleware/logger.js +90 -0
  57. package/middleware/logger.js.map +1 -0
  58. package/package.json +7 -3
  59. package/types.d.ts +47 -16
  60. package/types.d.ts.map +1 -1
  61. package/types.js.map +1 -1
  62. package/version.d.ts +1 -1
  63. package/version.d.ts.map +1 -1
  64. package/version.js +1 -1
  65. package/version.js.map +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,70 @@
1
1
  # inngest
2
2
 
3
+ ## 2.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 4f29f5c: Removed `tools` parameter (breaking). This was marked as `@deprecated` in v1, but is being fully removed in v2. Use `step` instead.
8
+ See the [v2 migration guide](https://www.inngest.com/docs/sdk/migration#clearer-event-sending).
9
+ - 4f29f5c: Renamed `throttle` to `rateLimit`.
10
+ See the [v2 migration guide](https://www.inngest.com/docs/sdk/migration#clearer-event-sending).
11
+ - 4f29f5c: Added the ability to provide middleware when defining Inngest clients and functions, hooking into a client's lifecycle to add custom functionality like error monitoring, data transformations, and more.
12
+ See [Advanced: Middleware - Inngest Documentation](https://www.inngest.com/docs/reference/middleware/overview).
13
+ - 4f29f5c: Removed ability to `serve()` without a client (breaking).
14
+ See the [v2 migration guide](https://www.inngest.com/docs/sdk/migration#clearer-event-sending).
15
+ - 4f29f5c: Better event schema definitions (breaking), providing an extensible metho of creating and maintaining event payloads with a variety of native tools and third-party libraries.
16
+ See [Defining Event Payload Types - Inngest Documentation](https://www.inngest.com/docs/reference/client/create#defining-event-payload-types).
17
+ - 4f29f5c: Removed some overloads of `inngest.send()` to provide a better TS experience when sending events (breaking).
18
+ See the [v2 migration guide](https://www.inngest.com/docs/sdk/migration#clearer-event-sending).
19
+
20
+ ### Minor Changes
21
+
22
+ - 4f29f5c: Added a `logger` to Inngest functions in addition to allowing users to provide a custom logger to reliably push logs to external services and handle flushing on serverless environments.
23
+ See [Logging in Inngest - Inngest Documentation](https://www.inngest.com/docs/guides/logging).
24
+ - 4f29f5c: Add `GetEvents<>` export which can be used to pull final event types from an Inngest client.
25
+ See [Defining Event Payload Types](https://www.inngest.com/docs/reference/client/create#defining-event-payload-types).
26
+ - 4f29f5c: Add ability to provide `concurrency: { limit: number }` in function config, ready for more config options.
27
+
28
+ ### Patch Changes
29
+
30
+ - b62cd6d: Update landing page vite dependency to v3.2.7
31
+
32
+ ## 1.9.4
33
+
34
+ ### Patch Changes
35
+
36
+ - 7d025d6: Fix `NonRetriableError` not working when thrown from within a step
37
+
38
+ ## 1.9.3
39
+
40
+ ### Patch Changes
41
+
42
+ - 64c397e: Handle circular JSON errors while stringifying across the SDK
43
+
44
+ ## 1.9.2
45
+
46
+ ### Patch Changes
47
+
48
+ - 71b1a17: Fix Vercel platform check to support local dev while using `vercel env pull`
49
+
50
+ ## 1.9.1
51
+
52
+ ### Patch Changes
53
+
54
+ - 49ddbb5: Add platform deploy checks
55
+
56
+ ## 1.9.0
57
+
58
+ ### Minor Changes
59
+
60
+ - 48d94a2: Allow user provided logger to be used within functions (experimental)
61
+
62
+ ## 1.8.5
63
+
64
+ ### Patch Changes
65
+
66
+ - 34f9ee8: INN-1253 Show actionable error when steps are nested
67
+
3
68
  ## 1.8.4
4
69
 
5
70
  ### Patch Changes
@@ -2,6 +2,13 @@ import { type Simplify } from "type-fest";
2
2
  import { type z } from "zod";
3
3
  import { type IsStringLiteral } from "../helpers/types";
4
4
  import { type EventPayload } from "../types";
5
+ /**
6
+ * Declares the shape of an event schema we expect from the user. This may be
7
+ * different to what a user is sending us depending on the supported library,
8
+ * but this standard format is what we require as the end result.
9
+ *
10
+ * @internal
11
+ */
5
12
  export type StandardEventSchema = {
6
13
  data: Record<string, any>;
7
14
  user?: Record<string, any>;
@@ -28,7 +35,7 @@ export type ZodEventSchemas = Record<string, {
28
35
  * of information required.
29
36
  *
30
37
  * It purposefully uses slightly more complex (read: verbose) mapped types to
31
- * flatten the output.
38
+ * flatten the output and preserve comments.
32
39
  *
33
40
  * @public
34
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"EventSchemas.d.ts","sourceRoot":"","sources":["../../src/components/EventSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IAEhC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE1B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAClC,MAAM,EACN;IACE,IAAI,EAAE,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;CAClC,CACF,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,4BAA4B,CAAC,CAAC,IAAI,QAAQ,CAAC;KACpD,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG;SACtB,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;YAAE,IAAI,EAAE,CAAC,CAAA;SAAE,CAAC,GAAG,CAAC,IAAI,CACxE,YAAY,EACZ,MAAM,CAAC,CAAC,CAAC,CAAC,CACX,GACC,CAAC,CAAC,CAAC,CAAC,GAAG;YAAE,IAAI,EAAE,CAAC,CAAA;SAAE,CAAC,CAAC,EAAE,CAAC;KAC1B;CACF,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,CACjB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAC1C,IAAI,SAAS,oBAAoB,IAC/B,eAAe,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,IAAI,GAClD,QAAQ,CACN,IAAI,CAAC,KAAK,EAAE,MAAM,4BAA4B,CAAC,IAAI,CAAC,CAAC,GACnD,4BAA4B,CAAC,IAAI,CAAC,CACrC,GACD,4BAA4B,CAAC,IAAI,CAAC,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9D;;OAEG;IACI,aAAa,CAAC,CAAC,SAAS,oBAAoB;IAInD;;;;;;;;;;;;;;;;;;OAkBG;IACI,UAAU,CAAC,CAAC,SAAS,oBAAoB;IAIhD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACI,SAAS,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB;;;IAWjE;;;;;;;;;;;;;;;;;;OAkBG;IAEI,OAAO,CAAC,CAAC,SAAS,eAAe,EAAE,OAAO,EAAE,CAAC;CAerD"}
1
+ {"version":3,"file":"EventSchemas.d.ts","sourceRoot":"","sources":["../../src/components/EventSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAEhC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE1B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAClC,MAAM,EACN;IACE,IAAI,EAAE,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;CAClC,CACF,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,4BAA4B,CAAC,CAAC,IAAI,QAAQ,CAAC;KACpD,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG;SACtB,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;YAAE,IAAI,EAAE,CAAC,CAAA;SAAE,CAAC,GAAG,CAAC,IAAI,CACxE,YAAY,EACZ,MAAM,CAAC,CAAC,CAAC,CAAC,CACX,GACC,CAAC,CAAC,CAAC,CAAC,GAAG;YAAE,IAAI,EAAE,CAAC,CAAA;SAAE,CAAC,CAAC,EAAE,CAAC;KAC1B;CACF,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,CACjB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAC1C,IAAI,SAAS,oBAAoB,IAC/B,eAAe,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,IAAI,GAClD,QAAQ,CACN,IAAI,CAAC,KAAK,EAAE,MAAM,4BAA4B,CAAC,IAAI,CAAC,CAAC,GACnD,4BAA4B,CAAC,IAAI,CAAC,CACrC,GACD,4BAA4B,CAAC,IAAI,CAAC,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9D;;OAEG;IACI,aAAa,CAAC,CAAC,SAAS,oBAAoB;IAInD;;;;;;;;;;;;;;;;;;OAkBG;IACI,UAAU,CAAC,CAAC,SAAS,oBAAoB;IAIhD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACI,SAAS,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB;;;IAWjE;;;;;;;;;;;;;;;;;;OAkBG;IAEI,OAAO,CAAC,CAAC,SAAS,eAAe,EAAE,OAAO,EAAE,CAAC;CAerD"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventSchemas.js","sourceRoot":"","sources":["../../src/components/EventSchemas.ts"],"names":[],"mappings":";;;AAsEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAa,YAAY;IACvB;;OAEG;IACI,aAAa;QAClB,OAAO,IAAI,YAAY,EAAiB,CAAC;IAC3C,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,UAAU;QACf,OAAO,IAAI,YAAY,EAAiB,CAAC;IAC3C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACI,SAAS;QACd,OAAO,IAAI,YAAY,EAOpB,CAAC;IACN,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,6DAA6D;IACtD,OAAO,CAA4B,OAAU;QAClD,OAAO,IAAI,YAAY,EAYpB,CAAC;IACN,CAAC;CACF;AAvGD,oCAuGC"}
1
+ {"version":3,"file":"EventSchemas.js","sourceRoot":"","sources":["../../src/components/EventSchemas.ts"],"names":[],"mappings":";;;AA6EA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAa,YAAY;IACvB;;OAEG;IACI,aAAa;QAClB,OAAO,IAAI,YAAY,EAAiB,CAAC;IAC3C,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,UAAU;QACf,OAAO,IAAI,YAAY,EAAiB,CAAC;IAC3C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACI,SAAS;QACd,OAAO,IAAI,YAAY,EAOpB,CAAC;IACN,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,6DAA6D;IACtD,OAAO,CAA4B,OAAU;QAClD,OAAO,IAAI,YAAY,EAYpB,CAAC;IACN,CAAC;CACF;AAvGD,oCAuGC"}
@@ -1,7 +1,9 @@
1
- import { type PartialK, type SendEventPayload, type SingleOrArray } from "../helpers/types";
2
- import { type ClientOptions, type EventNameFromTrigger, type EventPayload, type FailureEventArgs, type FunctionOptions, type FunctionTrigger, type Handler, type ShimmedFns, type TriggerOptions } from "../types";
1
+ import { type SendEventPayload } from "../helpers/types";
2
+ import { type Logger } from "../middleware/logger";
3
+ import { type ClientOptions, type EventNameFromTrigger, type EventPayload, type FailureEventArgs, type FunctionOptions, type FunctionTrigger, type Handler, type MiddlewareStack, type ShimmedFns, type TriggerOptions } from "../types";
3
4
  import { type EventSchemas } from "./EventSchemas";
4
5
  import { InngestFunction } from "./InngestFunction";
6
+ import { InngestMiddleware, type MiddlewareStackRunInputMutation } from "./InngestMiddleware";
5
7
  /**
6
8
  * Given a set of client options for Inngest, return the event types that can
7
9
  * be sent or received.
@@ -13,23 +15,20 @@ export type EventsFromOpts<TOpts extends ClientOptions> = TOpts["schemas"] exten
13
15
  * A client used to interact with the Inngest API by sending or reacting to
14
16
  * events.
15
17
  *
16
- * To provide event typing, make sure to pass in your generated event types as
17
- * the first generic.
18
+ * To provide event typing, see {@link EventSchemas}.
18
19
  *
19
20
  * ```ts
20
- * const inngest = new Inngest<Events>({ name: "My App" });
21
+ * const inngest = new Inngest({ name: "My App" });
21
22
  *
22
- * // or to provide custom events too
23
- * const inngest = new Inngest<
24
- * Events & {
23
+ * // or to provide event typing too
24
+ * const inngest = new Inngest({
25
+ * name: "My App",
26
+ * schemas: new EventSchemas().fromRecord<{
25
27
  * "app/user.created": {
26
- * name: "app/user.created";
27
- * data: {
28
- * foo: boolean;
29
- * };
28
+ * data: { userId: string };
30
29
  * };
31
- * }
32
- * >({ name: "My App" });
30
+ * }>(),
31
+ * });
33
32
  * ```
34
33
  *
35
34
  * @public
@@ -55,30 +54,38 @@ export declare class Inngest<TOpts extends ClientOptions = ClientOptions> {
55
54
  private inngestApiUrl;
56
55
  private readonly headers;
57
56
  private readonly fetch;
57
+ private readonly logger;
58
+ /**
59
+ * A promise that resolves when the middleware stack has been initialized and
60
+ * the client is ready to be used.
61
+ */
62
+ private readonly middleware;
58
63
  /**
59
64
  * A client used to interact with the Inngest API by sending or reacting to
60
65
  * events.
61
66
  *
62
- * To provide event typing, make sure to pass in your generated event types as
63
- * the first generic.
67
+ * To provide event typing, see {@link EventSchemas}.
64
68
  *
65
69
  * ```ts
66
- * const inngest = new Inngest<Events>({ name: "My App" });
70
+ * const inngest = new Inngest({ name: "My App" });
67
71
  *
68
- * // or to provide custom events too
69
- * const inngest = new Inngest<
70
- * Events & {
72
+ * // or to provide event typing too
73
+ * const inngest = new Inngest({
74
+ * name: "My App",
75
+ * schemas: new EventSchemas().fromRecord<{
71
76
  * "app/user.created": {
72
- * name: "app/user.created";
73
- * data: {
74
- * foo: boolean;
75
- * };
77
+ * data: { userId: string };
76
78
  * };
77
- * }
78
- * >({ name: "My App" });
79
+ * }>(),
80
+ * });
79
81
  * ```
80
82
  */
81
- constructor({ name, eventKey, inngestBaseUrl, fetch, env, }: TOpts);
83
+ constructor({ name, eventKey, inngestBaseUrl, fetch, env, logger, middleware, }: TOpts);
84
+ /**
85
+ * Initialize all passed middleware, running the `register` function on each
86
+ * in sequence and returning the requested hook registrations.
87
+ */
88
+ private initializeMiddleware;
82
89
  /**
83
90
  * Set the event key for this instance of Inngest. This is useful if for some
84
91
  * reason the key is not available at time of instantiation or present in the
@@ -91,31 +98,6 @@ export declare class Inngest<TOpts extends ClientOptions = ClientOptions> {
91
98
  * in the `INNGEST_EVENT_KEY` environment variable.
92
99
  */
93
100
  eventKey: string): void;
94
- /**
95
- * Send one or many events to Inngest. Takes a known event from this Inngest
96
- * instance based on the given `name`.
97
- *
98
- * ```ts
99
- * await inngest.send("app/user.created", { data: { id: 123 } });
100
- * ```
101
- *
102
- * Returns a promise that will resolve if the event(s) were sent successfully,
103
- * else throws with an error explaining what went wrong.
104
- *
105
- * If you wish to send an event with custom types (i.e. one that hasn't been
106
- * generated), make sure to add it when creating your Inngest instance, like
107
- * so:
108
- *
109
- * ```ts
110
- * const inngest = new Inngest<Events & {
111
- * "my/event": {
112
- * name: "my/event";
113
- * data: { bar: string; };
114
- * }
115
- * }>("My App", "API_KEY");
116
- * ```
117
- */
118
- send<Event extends keyof EventsFromOpts<TOpts>>(name: Event, payload: SingleOrArray<PartialK<Omit<EventsFromOpts<TOpts>[Event], "name" | "v">, "ts">>): Promise<void>;
119
101
  /**
120
102
  * Send one or many events to Inngest. Takes an entire payload (including
121
103
  * name) as each input.
@@ -132,16 +114,19 @@ export declare class Inngest<TOpts extends ClientOptions = ClientOptions> {
132
114
  * so:
133
115
  *
134
116
  * ```ts
135
- * const inngest = new Inngest<Events & {
136
- * "my/event": {
137
- * name: "my/event";
138
- * data: { bar: string; };
139
- * }
140
- * }>("My App", "API_KEY");
117
+ * const inngest = new Inngest({
118
+ * name: "My App",
119
+ * schemas: new EventSchemas().fromRecord<{
120
+ * "my/event": {
121
+ * name: "my/event";
122
+ * data: { bar: string };
123
+ * };
124
+ * }>(),
125
+ * });
141
126
  * ```
142
127
  */
143
128
  send<Payload extends SendEventPayload<EventsFromOpts<TOpts>>>(payload: Payload): Promise<void>;
144
- createFunction<TFns extends Record<string, unknown>, TTrigger extends TriggerOptions<keyof EventsFromOpts<TOpts> & string>, TShimmedFns extends Record<string, (...args: any[]) => any> = ShimmedFns<TFns>, TTriggerName extends keyof EventsFromOpts<TOpts> & string = EventNameFromTrigger<EventsFromOpts<TOpts>, TTrigger>>(nameOrOpts: string | (Omit<FunctionOptions<EventsFromOpts<TOpts>, TTriggerName>, "fns" | "onFailure"> & {
129
+ createFunction<TFns extends Record<string, unknown>, TMiddleware extends MiddlewareStack, TTrigger extends TriggerOptions<keyof EventsFromOpts<TOpts> & string>, TShimmedFns extends Record<string, (...args: any[]) => any> = ShimmedFns<TFns>, TTriggerName extends keyof EventsFromOpts<TOpts> & string = EventNameFromTrigger<EventsFromOpts<TOpts>, TTrigger>>(nameOrOpts: string | (Omit<FunctionOptions<EventsFromOpts<TOpts>, TTriggerName>, "fns" | "onFailure" | "middleware"> & {
145
130
  /**
146
131
  * Pass in an object of functions that will be wrapped in Inngest
147
132
  * tooling and passes to your handler. This wrapping ensures that each
@@ -184,6 +169,57 @@ export declare class Inngest<TOpts extends ClientOptions = ClientOptions> {
184
169
  * regular handler.
185
170
  */
186
171
  onFailure?: Handler<TOpts, EventsFromOpts<TOpts>, TTriggerName, TShimmedFns, FailureEventArgs<EventsFromOpts<TOpts>[TTriggerName]>>;
187
- }), trigger: TTrigger, handler: Handler<TOpts, EventsFromOpts<TOpts>, TTriggerName, TShimmedFns>): InngestFunction<TOpts, EventsFromOpts<TOpts>, FunctionTrigger<keyof EventsFromOpts<TOpts> & string>, FunctionOptions<EventsFromOpts<TOpts>, keyof EventsFromOpts<TOpts> & string>>;
172
+ /**
173
+ * TODO
174
+ */
175
+ middleware?: TMiddleware;
176
+ }), trigger: TTrigger, handler: Handler<TOpts, EventsFromOpts<TOpts>, TTriggerName, TShimmedFns, MiddlewareStackRunInputMutation<{}, typeof builtInMiddleware> & MiddlewareStackRunInputMutation<{}, NonNullable<TOpts["middleware"]>> & MiddlewareStackRunInputMutation<{}, TMiddleware>>): InngestFunction<TOpts, EventsFromOpts<TOpts>, FunctionTrigger<keyof EventsFromOpts<TOpts> & string>, FunctionOptions<EventsFromOpts<TOpts>, keyof EventsFromOpts<TOpts> & string>>;
188
177
  }
178
+ /**
179
+ * Default middleware that is included in every client, placed after the user's
180
+ * middleware on the client but before function-level middleware.
181
+ *
182
+ * It is defined here to ensure that comments are included in the generated TS
183
+ * definitions. Without this, we infer the stack of built-in middleware without
184
+ * comments, losing a lot of value.
185
+ *
186
+ * If this is moved, please ensure that using this package in another project
187
+ * can correctly access comments on mutated input and output.
188
+ */
189
+ declare const builtInMiddleware: [InngestMiddleware<{
190
+ name: string;
191
+ init({ client }: {
192
+ client: Inngest<any>;
193
+ fn?: InngestFunction<any, any, any, any> | undefined;
194
+ }): {
195
+ onFunctionRun(arg: Readonly<import("type-fest").Simplify<Omit<Readonly<{
196
+ ctx: Record<string, unknown> & Readonly<import("../types").BaseContext<ClientOptions, string, Record<string, (...args: unknown[]) => unknown>>>;
197
+ steps: Readonly<Omit<{
198
+ data?: any;
199
+ error?: any;
200
+ id: string;
201
+ }, "id">>[];
202
+ fn: InngestFunction<any, any, any, any>;
203
+ }>, "ctx"> & {
204
+ ctx: Pick<Record<string, unknown> & Readonly<import("../types").BaseContext<ClientOptions, string, Record<string, (...args: unknown[]) => unknown>>>, "event" | "runId">;
205
+ }>>): {
206
+ transformInput(): {
207
+ ctx: {
208
+ /**
209
+ * The passed in logger from the user.
210
+ * Defaults to a console logger if not provided.
211
+ */
212
+ logger: Logger;
213
+ };
214
+ };
215
+ beforeExecution(): void;
216
+ transformOutput({ result: { error } }: {
217
+ result: Readonly<Pick<import("../types").OutgoingOp, "data" | "error">>;
218
+ step?: Readonly<Omit<import("../types").OutgoingOp, "id">> | undefined;
219
+ }): void;
220
+ beforeResponse(): Promise<void>;
221
+ };
222
+ };
223
+ }>];
224
+ export {};
189
225
  //# sourceMappingURL=Inngest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Inngest.d.ts","sourceRoot":"","sources":["../../src/components/Inngest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Inngest.d.ts","sourceRoot":"","sources":["../../src/components/Inngest.ts"],"names":[],"mappings":"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"}
@@ -11,28 +11,28 @@ const consts_1 = require("../helpers/consts");
11
11
  const devserver_1 = require("../helpers/devserver");
12
12
  const env_1 = require("../helpers/env");
13
13
  const errors_1 = require("../helpers/errors");
14
+ const strings_1 = require("../helpers/strings");
15
+ const logger_1 = require("../middleware/logger");
14
16
  const InngestFunction_1 = require("./InngestFunction");
17
+ const InngestMiddleware_1 = require("./InngestMiddleware");
15
18
  /**
16
19
  * A client used to interact with the Inngest API by sending or reacting to
17
20
  * events.
18
21
  *
19
- * To provide event typing, make sure to pass in your generated event types as
20
- * the first generic.
22
+ * To provide event typing, see {@link EventSchemas}.
21
23
  *
22
24
  * ```ts
23
- * const inngest = new Inngest<Events>({ name: "My App" });
25
+ * const inngest = new Inngest({ name: "My App" });
24
26
  *
25
- * // or to provide custom events too
26
- * const inngest = new Inngest<
27
- * Events & {
27
+ * // or to provide event typing too
28
+ * const inngest = new Inngest({
29
+ * name: "My App",
30
+ * schemas: new EventSchemas().fromRecord<{
28
31
  * "app/user.created": {
29
- * name: "app/user.created";
30
- * data: {
31
- * foo: boolean;
32
- * };
32
+ * data: { userId: string };
33
33
  * };
34
- * }
35
- * >({ name: "My App" });
34
+ * }>(),
35
+ * });
36
36
  * ```
37
37
  *
38
38
  * @public
@@ -42,26 +42,23 @@ class Inngest {
42
42
  * A client used to interact with the Inngest API by sending or reacting to
43
43
  * events.
44
44
  *
45
- * To provide event typing, make sure to pass in your generated event types as
46
- * the first generic.
45
+ * To provide event typing, see {@link EventSchemas}.
47
46
  *
48
47
  * ```ts
49
- * const inngest = new Inngest<Events>({ name: "My App" });
48
+ * const inngest = new Inngest({ name: "My App" });
50
49
  *
51
- * // or to provide custom events too
52
- * const inngest = new Inngest<
53
- * Events & {
50
+ * // or to provide event typing too
51
+ * const inngest = new Inngest({
52
+ * name: "My App",
53
+ * schemas: new EventSchemas().fromRecord<{
54
54
  * "app/user.created": {
55
- * name: "app/user.created";
56
- * data: {
57
- * foo: boolean;
58
- * };
55
+ * data: { userId: string };
59
56
  * };
60
- * }
61
- * >({ name: "My App" });
57
+ * }>(),
58
+ * });
62
59
  * ```
63
60
  */
64
- constructor({ name, eventKey, inngestBaseUrl = "https://inn.gs/", fetch, env, }) {
61
+ constructor({ name, eventKey, inngestBaseUrl = "https://inn.gs/", fetch, env, logger = new logger_1.DefaultLogger(), middleware, }) {
65
62
  _Inngest_instances.add(this);
66
63
  /**
67
64
  * Inngest event key, used to send events to Inngest Cloud.
@@ -92,6 +89,30 @@ class Inngest {
92
89
  inngestEnv: env,
93
90
  });
94
91
  this.fetch = (0, env_1.getFetch)(fetch);
92
+ this.logger = logger;
93
+ this.middleware = this.initializeMiddleware([
94
+ ...builtInMiddleware,
95
+ ...(middleware || []),
96
+ ]);
97
+ }
98
+ /**
99
+ * Initialize all passed middleware, running the `register` function on each
100
+ * in sequence and returning the requested hook registrations.
101
+ */
102
+ async initializeMiddleware(middleware = [], opts) {
103
+ var _a;
104
+ /**
105
+ * Wait for the prefix stack to run first; do not trigger ours before this
106
+ * is complete.
107
+ */
108
+ const prefix = await ((_a = opts === null || opts === void 0 ? void 0 : opts.prefixStack) !== null && _a !== void 0 ? _a : []);
109
+ const stack = middleware.reduce(async (acc, m) => {
110
+ // Be explicit about waiting for the previous middleware to finish
111
+ const prev = await acc;
112
+ const next = await m.init(Object.assign({ client: this }, opts === null || opts === void 0 ? void 0 : opts.registerInput));
113
+ return [...prev, next];
114
+ }, Promise.resolve([]));
115
+ return [...prefix, ...(await stack)];
95
116
  }
96
117
  /**
97
118
  * Set the event key for this instance of Inngest. This is useful if for some
@@ -108,7 +129,43 @@ class Inngest {
108
129
  this.eventKey = eventKey;
109
130
  this.inngestApiUrl = new URL(`e/${this.eventKey}`, this.inngestBaseUrl);
110
131
  }
111
- async send(nameOrPayload, maybePayload) {
132
+ /**
133
+ * Send one or many events to Inngest. Takes an entire payload (including
134
+ * name) as each input.
135
+ *
136
+ * ```ts
137
+ * await inngest.send({ name: "app/user.created", data: { id: 123 } });
138
+ * ```
139
+ *
140
+ * Returns a promise that will resolve if the event(s) were sent successfully,
141
+ * else throws with an error explaining what went wrong.
142
+ *
143
+ * If you wish to send an event with custom types (i.e. one that hasn't been
144
+ * generated), make sure to add it when creating your Inngest instance, like
145
+ * so:
146
+ *
147
+ * ```ts
148
+ * const inngest = new Inngest({
149
+ * name: "My App",
150
+ * schemas: new EventSchemas().fromRecord<{
151
+ * "my/event": {
152
+ * name: "my/event";
153
+ * data: { bar: string };
154
+ * };
155
+ * }>(),
156
+ * });
157
+ * ```
158
+ */
159
+ async send(payload) {
160
+ var _a, _b;
161
+ const hooks = await (0, InngestMiddleware_1.getHookStack)(this.middleware, "onSendEvent", undefined, {
162
+ transformInput: (prev, output) => {
163
+ return Object.assign(Object.assign({}, prev), output);
164
+ },
165
+ transformOutput: (prev, _output) => {
166
+ return prev;
167
+ },
168
+ });
112
169
  if (!this.eventKey) {
113
170
  throw new Error((0, errors_1.prettyError)({
114
171
  whatHappened: "Failed to send event",
@@ -117,26 +174,16 @@ class Inngest {
117
174
  toFixNow: errors_1.fixEventKeyMissingSteps,
118
175
  }));
119
176
  }
120
- let payloads;
121
- if (typeof nameOrPayload === "string") {
122
- /**
123
- * Add our payloads and ensure they all have a name.
124
- */
125
- payloads = (Array.isArray(maybePayload)
126
- ? maybePayload
127
- : maybePayload
128
- ? [maybePayload]
129
- : []).map((payload) => (Object.assign(Object.assign({}, payload), { name: nameOrPayload })));
130
- }
131
- else {
132
- /**
133
- * Grab our payloads straight from the args.
134
- */
135
- payloads = (Array.isArray(nameOrPayload)
136
- ? nameOrPayload
137
- : nameOrPayload
138
- ? [nameOrPayload]
139
- : []);
177
+ let payloads = Array.isArray(payload)
178
+ ? payload
179
+ : payload
180
+ ? [payload]
181
+ : [];
182
+ const inputChanges = await ((_a = hooks.transformInput) === null || _a === void 0 ? void 0 : _a.call(hooks, {
183
+ payloads: [...payloads],
184
+ }));
185
+ if (inputChanges === null || inputChanges === void 0 ? void 0 : inputChanges.payloads) {
186
+ payloads = [...inputChanges.payloads];
140
187
  }
141
188
  /**
142
189
  * It can be valid for a user to send an empty list of events; if this
@@ -154,7 +201,7 @@ class Inngest {
154
201
  // When sending events, check if the dev server is available. If so, use the
155
202
  // dev server.
156
203
  let url = this.inngestApiUrl.href;
157
- if (!(0, env_1.isProd)()) {
204
+ if (!(0, env_1.skipDevServer)()) {
158
205
  const host = (0, env_1.devServerHost)();
159
206
  // If the dev server host env var has been set we always want to use
160
207
  // the dev server - even if it's down. Otherwise, optimistically use
@@ -165,11 +212,11 @@ class Inngest {
165
212
  }
166
213
  const response = await this.fetch(url, {
167
214
  method: "POST",
168
- body: JSON.stringify(payloads),
215
+ body: (0, strings_1.stringify)(payloads),
169
216
  headers: Object.assign({}, this.headers),
170
217
  });
171
218
  if (response.status >= 200 && response.status < 300) {
172
- return;
219
+ return void (await ((_b = hooks.transformOutput) === null || _b === void 0 ? void 0 : _b.call(hooks, { payloads: [...payloads] })));
173
220
  }
174
221
  throw await __classPrivateFieldGet(this, _Inngest_instances, "m", _Inngest_getResponseError).call(this, response);
175
222
  }
@@ -216,4 +263,68 @@ async function _Inngest_getResponseError(response) {
216
263
  }
217
264
  return new Error(`Inngest API Error: ${response.status} ${errorMessage}`);
218
265
  };
266
+ /**
267
+ * Default middleware that is included in every client, placed after the user's
268
+ * middleware on the client but before function-level middleware.
269
+ *
270
+ * It is defined here to ensure that comments are included in the generated TS
271
+ * definitions. Without this, we infer the stack of built-in middleware without
272
+ * comments, losing a lot of value.
273
+ *
274
+ * If this is moved, please ensure that using this package in another project
275
+ * can correctly access comments on mutated input and output.
276
+ */
277
+ const builtInMiddleware = ((m) => m)([
278
+ new InngestMiddleware_1.InngestMiddleware({
279
+ name: "Inngest: Logger",
280
+ init({ client }) {
281
+ return {
282
+ onFunctionRun(arg) {
283
+ const { ctx } = arg;
284
+ const metadata = {
285
+ runID: ctx.runId,
286
+ eventName: ctx.event.name,
287
+ functionName: arg.fn.name,
288
+ };
289
+ let providedLogger = client["logger"];
290
+ // create a child logger if the provided logger has child logger implementation
291
+ try {
292
+ if ("child" in providedLogger) {
293
+ providedLogger = providedLogger.child(metadata);
294
+ }
295
+ }
296
+ catch (err) {
297
+ console.error('failed to create "childLogger" with error: ', err);
298
+ // no-op
299
+ }
300
+ const logger = new logger_1.ProxyLogger(providedLogger);
301
+ return {
302
+ transformInput() {
303
+ return {
304
+ ctx: {
305
+ /**
306
+ * The passed in logger from the user.
307
+ * Defaults to a console logger if not provided.
308
+ */
309
+ logger: logger,
310
+ },
311
+ };
312
+ },
313
+ beforeExecution() {
314
+ logger.enable();
315
+ },
316
+ transformOutput({ result: { error } }) {
317
+ if (error) {
318
+ logger.error(error);
319
+ }
320
+ },
321
+ async beforeResponse() {
322
+ await logger.flush();
323
+ },
324
+ };
325
+ },
326
+ };
327
+ },
328
+ }),
329
+ ]);
219
330
  //# sourceMappingURL=Inngest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Inngest.js","sourceRoot":"","sources":["../../src/components/Inngest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Inngest.js","sourceRoot":"","sources":["../../src/components/Inngest.ts"],"names":[],"mappings":"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"}