@trigger.dev/core 4.3.2 → 4.4.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 (145) hide show
  1. package/dist/commonjs/v3/apiClient/index.d.ts +8 -1
  2. package/dist/commonjs/v3/apiClient/index.js +47 -8
  3. package/dist/commonjs/v3/apiClient/index.js.map +1 -1
  4. package/dist/commonjs/v3/apiClient/streamBatchItems.test.js +39 -0
  5. package/dist/commonjs/v3/apiClient/streamBatchItems.test.js.map +1 -1
  6. package/dist/commonjs/v3/idempotency-key-catalog/catalog.d.ts +9 -0
  7. package/dist/commonjs/v3/idempotency-key-catalog/catalog.js +3 -0
  8. package/dist/commonjs/v3/idempotency-key-catalog/catalog.js.map +1 -0
  9. package/dist/commonjs/v3/idempotency-key-catalog/index.d.ts +9 -0
  10. package/dist/commonjs/v3/idempotency-key-catalog/index.js +33 -0
  11. package/dist/commonjs/v3/idempotency-key-catalog/index.js.map +1 -0
  12. package/dist/commonjs/v3/idempotency-key-catalog/lruIdempotencyKeyCatalog.d.ts +8 -0
  13. package/dist/commonjs/v3/idempotency-key-catalog/lruIdempotencyKeyCatalog.js +35 -0
  14. package/dist/commonjs/v3/idempotency-key-catalog/lruIdempotencyKeyCatalog.js.map +1 -0
  15. package/dist/commonjs/v3/idempotency-key-catalog/lruIdempotencyKeyCatalog.test.d.ts +1 -0
  16. package/dist/commonjs/v3/idempotency-key-catalog/lruIdempotencyKeyCatalog.test.js +161 -0
  17. package/dist/commonjs/v3/idempotency-key-catalog/lruIdempotencyKeyCatalog.test.js.map +1 -0
  18. package/dist/commonjs/v3/idempotency-key-catalog-api.d.ts +3 -0
  19. package/dist/commonjs/v3/idempotency-key-catalog-api.js +9 -0
  20. package/dist/commonjs/v3/idempotency-key-catalog-api.js.map +1 -0
  21. package/dist/commonjs/v3/idempotencyKeys.d.ts +51 -4
  22. package/dist/commonjs/v3/idempotencyKeys.js +97 -5
  23. package/dist/commonjs/v3/idempotencyKeys.js.map +1 -1
  24. package/dist/commonjs/v3/imports/superjson-cjs.cjs.map +1 -0
  25. package/dist/commonjs/v3/imports/superjson.d.ts +1 -0
  26. package/dist/commonjs/v3/imports/superjson.js +15 -0
  27. package/dist/commonjs/v3/isomorphic/duration.d.ts +11 -0
  28. package/dist/commonjs/v3/isomorphic/duration.js +18 -6
  29. package/dist/commonjs/v3/isomorphic/duration.js.map +1 -1
  30. package/dist/commonjs/v3/runEngineWorker/supervisor/http.d.ts +61 -60
  31. package/dist/commonjs/v3/runEngineWorker/supervisor/schemas.d.ts +191 -184
  32. package/dist/commonjs/v3/runEngineWorker/workload/http.d.ts +46 -45
  33. package/dist/commonjs/v3/runEngineWorker/workload/schemas.d.ts +163 -156
  34. package/dist/commonjs/v3/schemas/api-type.test.d.ts +1 -0
  35. package/dist/commonjs/v3/schemas/api-type.test.js +127 -0
  36. package/dist/commonjs/v3/schemas/api-type.test.js.map +1 -0
  37. package/dist/commonjs/v3/schemas/api.d.ts +621 -102
  38. package/dist/commonjs/v3/schemas/api.js +57 -29
  39. package/dist/commonjs/v3/schemas/api.js.map +1 -1
  40. package/dist/commonjs/v3/schemas/checkpoints.d.ts +66 -66
  41. package/dist/commonjs/v3/schemas/common.d.ts +215 -177
  42. package/dist/commonjs/v3/schemas/common.js +6 -0
  43. package/dist/commonjs/v3/schemas/common.js.map +1 -1
  44. package/dist/commonjs/v3/schemas/index.d.ts +1 -0
  45. package/dist/commonjs/v3/schemas/index.js +1 -0
  46. package/dist/commonjs/v3/schemas/index.js.map +1 -1
  47. package/dist/commonjs/v3/schemas/messages.d.ts +2149 -2032
  48. package/dist/commonjs/v3/schemas/query.d.ts +215 -0
  49. package/dist/commonjs/v3/schemas/query.js +58 -0
  50. package/dist/commonjs/v3/schemas/query.js.map +1 -0
  51. package/dist/commonjs/v3/schemas/runEngine.d.ts +157 -150
  52. package/dist/commonjs/v3/schemas/schemas.d.ts +281 -262
  53. package/dist/commonjs/v3/schemas/webhooks.d.ts +68 -68
  54. package/dist/commonjs/v3/serverOnly/idempotencyKeys.d.ts +36 -0
  55. package/dist/commonjs/v3/serverOnly/idempotencyKeys.js +58 -0
  56. package/dist/commonjs/v3/serverOnly/idempotencyKeys.js.map +1 -0
  57. package/dist/commonjs/v3/serverOnly/index.d.ts +1 -0
  58. package/dist/commonjs/v3/serverOnly/index.js +1 -0
  59. package/dist/commonjs/v3/serverOnly/index.js.map +1 -1
  60. package/dist/commonjs/v3/types/tasks.d.ts +16 -0
  61. package/dist/commonjs/v3/types/tools.js +2 -2
  62. package/dist/commonjs/v3/types/tools.js.map +1 -1
  63. package/dist/commonjs/v3/utils/flattenAttributes.d.ts +2 -2
  64. package/dist/commonjs/v3/utils/flattenAttributes.js +24 -13
  65. package/dist/commonjs/v3/utils/flattenAttributes.js.map +1 -1
  66. package/dist/commonjs/v3/utils/globals.d.ts +2 -0
  67. package/dist/commonjs/v3/utils/globals.js.map +1 -1
  68. package/dist/commonjs/v3/utils/ioSerialization.d.ts +1 -1
  69. package/dist/commonjs/v3/utils/ioSerialization.js +15 -27
  70. package/dist/commonjs/v3/utils/ioSerialization.js.map +1 -1
  71. package/dist/commonjs/v3/vendor/superjson.cjs +833 -0
  72. package/dist/commonjs/version.js +1 -1
  73. package/dist/esm/v3/apiClient/index.d.ts +8 -1
  74. package/dist/esm/v3/apiClient/index.js +48 -9
  75. package/dist/esm/v3/apiClient/index.js.map +1 -1
  76. package/dist/esm/v3/apiClient/streamBatchItems.test.js +39 -0
  77. package/dist/esm/v3/apiClient/streamBatchItems.test.js.map +1 -1
  78. package/dist/esm/v3/idempotency-key-catalog/catalog.d.ts +9 -0
  79. package/dist/esm/v3/idempotency-key-catalog/catalog.js +2 -0
  80. package/dist/esm/v3/idempotency-key-catalog/catalog.js.map +1 -0
  81. package/dist/esm/v3/idempotency-key-catalog/index.d.ts +9 -0
  82. package/dist/esm/v3/idempotency-key-catalog/index.js +29 -0
  83. package/dist/esm/v3/idempotency-key-catalog/index.js.map +1 -0
  84. package/dist/esm/v3/idempotency-key-catalog/lruIdempotencyKeyCatalog.d.ts +8 -0
  85. package/dist/esm/v3/idempotency-key-catalog/lruIdempotencyKeyCatalog.js +31 -0
  86. package/dist/esm/v3/idempotency-key-catalog/lruIdempotencyKeyCatalog.js.map +1 -0
  87. package/dist/esm/v3/idempotency-key-catalog/lruIdempotencyKeyCatalog.test.d.ts +1 -0
  88. package/dist/esm/v3/idempotency-key-catalog/lruIdempotencyKeyCatalog.test.js +159 -0
  89. package/dist/esm/v3/idempotency-key-catalog/lruIdempotencyKeyCatalog.test.js.map +1 -0
  90. package/dist/esm/v3/idempotency-key-catalog-api.d.ts +3 -0
  91. package/dist/esm/v3/idempotency-key-catalog-api.js +6 -0
  92. package/dist/esm/v3/idempotency-key-catalog-api.js.map +1 -0
  93. package/dist/esm/v3/idempotencyKeys.d.ts +51 -4
  94. package/dist/esm/v3/idempotencyKeys.js +96 -5
  95. package/dist/esm/v3/idempotencyKeys.js.map +1 -1
  96. package/dist/esm/v3/imports/superjson.d.ts +2 -0
  97. package/dist/esm/v3/imports/superjson.js +12 -0
  98. package/dist/esm/v3/imports/superjson.js.map +1 -0
  99. package/dist/esm/v3/isomorphic/duration.d.ts +11 -0
  100. package/dist/esm/v3/isomorphic/duration.js +17 -6
  101. package/dist/esm/v3/isomorphic/duration.js.map +1 -1
  102. package/dist/esm/v3/runEngineWorker/supervisor/http.d.ts +61 -60
  103. package/dist/esm/v3/runEngineWorker/supervisor/schemas.d.ts +191 -184
  104. package/dist/esm/v3/runEngineWorker/workload/http.d.ts +46 -45
  105. package/dist/esm/v3/runEngineWorker/workload/schemas.d.ts +163 -156
  106. package/dist/esm/v3/schemas/api-type.test.d.ts +1 -0
  107. package/dist/esm/v3/schemas/api-type.test.js +125 -0
  108. package/dist/esm/v3/schemas/api-type.test.js.map +1 -0
  109. package/dist/esm/v3/schemas/api.d.ts +621 -102
  110. package/dist/esm/v3/schemas/api.js +54 -26
  111. package/dist/esm/v3/schemas/api.js.map +1 -1
  112. package/dist/esm/v3/schemas/checkpoints.d.ts +66 -66
  113. package/dist/esm/v3/schemas/common.d.ts +215 -177
  114. package/dist/esm/v3/schemas/common.js +6 -0
  115. package/dist/esm/v3/schemas/common.js.map +1 -1
  116. package/dist/esm/v3/schemas/index.d.ts +1 -0
  117. package/dist/esm/v3/schemas/index.js +1 -0
  118. package/dist/esm/v3/schemas/index.js.map +1 -1
  119. package/dist/esm/v3/schemas/messages.d.ts +2149 -2032
  120. package/dist/esm/v3/schemas/query.d.ts +215 -0
  121. package/dist/esm/v3/schemas/query.js +55 -0
  122. package/dist/esm/v3/schemas/query.js.map +1 -0
  123. package/dist/esm/v3/schemas/runEngine.d.ts +157 -150
  124. package/dist/esm/v3/schemas/schemas.d.ts +281 -262
  125. package/dist/esm/v3/schemas/webhooks.d.ts +68 -68
  126. package/dist/esm/v3/serverOnly/idempotencyKeys.d.ts +36 -0
  127. package/dist/esm/v3/serverOnly/idempotencyKeys.js +51 -0
  128. package/dist/esm/v3/serverOnly/idempotencyKeys.js.map +1 -0
  129. package/dist/esm/v3/serverOnly/index.d.ts +1 -0
  130. package/dist/esm/v3/serverOnly/index.js +1 -0
  131. package/dist/esm/v3/serverOnly/index.js.map +1 -1
  132. package/dist/esm/v3/types/tasks.d.ts +16 -0
  133. package/dist/esm/v3/types/tools.js +2 -2
  134. package/dist/esm/v3/types/tools.js.map +1 -1
  135. package/dist/esm/v3/utils/flattenAttributes.d.ts +2 -2
  136. package/dist/esm/v3/utils/flattenAttributes.js +24 -13
  137. package/dist/esm/v3/utils/flattenAttributes.js.map +1 -1
  138. package/dist/esm/v3/utils/globals.d.ts +2 -0
  139. package/dist/esm/v3/utils/globals.js.map +1 -1
  140. package/dist/esm/v3/utils/ioSerialization.d.ts +1 -1
  141. package/dist/esm/v3/utils/ioSerialization.js +9 -24
  142. package/dist/esm/v3/utils/ioSerialization.js.map +1 -1
  143. package/dist/esm/v3/vendor/superjson.mjs +800 -0
  144. package/dist/esm/version.js +1 -1
  145. package/package.json +9 -7
@@ -0,0 +1,159 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { LRUIdempotencyKeyCatalog } from "./lruIdempotencyKeyCatalog.js";
3
+ describe("LRUIdempotencyKeyCatalog", () => {
4
+ describe("registerKeyOptions and getKeyOptions", () => {
5
+ it("should store and retrieve options", () => {
6
+ const catalog = new LRUIdempotencyKeyCatalog();
7
+ const options = { key: "my-key", scope: "global" };
8
+ catalog.registerKeyOptions("hash1", options);
9
+ expect(catalog.getKeyOptions("hash1")).toEqual(options);
10
+ });
11
+ it("should return undefined for non-existent keys", () => {
12
+ const catalog = new LRUIdempotencyKeyCatalog();
13
+ expect(catalog.getKeyOptions("non-existent")).toBeUndefined();
14
+ });
15
+ it("should store multiple keys", () => {
16
+ const catalog = new LRUIdempotencyKeyCatalog();
17
+ const options1 = { key: "key1", scope: "global" };
18
+ const options2 = { key: "key2", scope: "run" };
19
+ const options3 = { key: "key3", scope: "attempt" };
20
+ catalog.registerKeyOptions("hash1", options1);
21
+ catalog.registerKeyOptions("hash2", options2);
22
+ catalog.registerKeyOptions("hash3", options3);
23
+ expect(catalog.getKeyOptions("hash1")).toEqual(options1);
24
+ expect(catalog.getKeyOptions("hash2")).toEqual(options2);
25
+ expect(catalog.getKeyOptions("hash3")).toEqual(options3);
26
+ });
27
+ it("should update options when registering same key twice", () => {
28
+ const catalog = new LRUIdempotencyKeyCatalog();
29
+ const options1 = { key: "key1", scope: "global" };
30
+ const options2 = { key: "key1-updated", scope: "run" };
31
+ catalog.registerKeyOptions("hash1", options1);
32
+ catalog.registerKeyOptions("hash1", options2);
33
+ expect(catalog.getKeyOptions("hash1")).toEqual(options2);
34
+ });
35
+ });
36
+ describe("LRU eviction", () => {
37
+ it("should evict oldest entry when over capacity", () => {
38
+ const catalog = new LRUIdempotencyKeyCatalog(3);
39
+ catalog.registerKeyOptions("hash1", { key: "key1", scope: "global" });
40
+ catalog.registerKeyOptions("hash2", { key: "key2", scope: "global" });
41
+ catalog.registerKeyOptions("hash3", { key: "key3", scope: "global" });
42
+ // All three should exist
43
+ expect(catalog.getKeyOptions("hash1")).toBeDefined();
44
+ expect(catalog.getKeyOptions("hash2")).toBeDefined();
45
+ expect(catalog.getKeyOptions("hash3")).toBeDefined();
46
+ // After the gets above, the LRU order from oldest to newest is: hash1, hash2, hash3
47
+ // (each get moves the key to the most recent position)
48
+ // Add a fourth - hash1 should be evicted (it was accessed first, so it's the oldest)
49
+ catalog.registerKeyOptions("hash4", { key: "key4", scope: "global" });
50
+ expect(catalog.getKeyOptions("hash1")).toBeUndefined();
51
+ expect(catalog.getKeyOptions("hash2")).toBeDefined();
52
+ expect(catalog.getKeyOptions("hash3")).toBeDefined();
53
+ expect(catalog.getKeyOptions("hash4")).toBeDefined();
54
+ });
55
+ it("should evict least recently registered entry when capacity exceeded", () => {
56
+ const catalog = new LRUIdempotencyKeyCatalog(3);
57
+ catalog.registerKeyOptions("hash1", { key: "key1", scope: "global" });
58
+ catalog.registerKeyOptions("hash2", { key: "key2", scope: "global" });
59
+ catalog.registerKeyOptions("hash3", { key: "key3", scope: "global" });
60
+ // Adding fourth should evict hash1 (oldest)
61
+ catalog.registerKeyOptions("hash4", { key: "key4", scope: "global" });
62
+ expect(catalog.getKeyOptions("hash1")).toBeUndefined();
63
+ expect(catalog.getKeyOptions("hash2")).toBeDefined();
64
+ expect(catalog.getKeyOptions("hash3")).toBeDefined();
65
+ expect(catalog.getKeyOptions("hash4")).toBeDefined();
66
+ });
67
+ it("should evict multiple entries when adding many at once would exceed capacity", () => {
68
+ const catalog = new LRUIdempotencyKeyCatalog(2);
69
+ catalog.registerKeyOptions("hash1", { key: "key1", scope: "global" });
70
+ catalog.registerKeyOptions("hash2", { key: "key2", scope: "global" });
71
+ catalog.registerKeyOptions("hash3", { key: "key3", scope: "global" });
72
+ catalog.registerKeyOptions("hash4", { key: "key4", scope: "global" });
73
+ // Only hash3 and hash4 should remain
74
+ expect(catalog.getKeyOptions("hash1")).toBeUndefined();
75
+ expect(catalog.getKeyOptions("hash2")).toBeUndefined();
76
+ expect(catalog.getKeyOptions("hash3")).toBeDefined();
77
+ expect(catalog.getKeyOptions("hash4")).toBeDefined();
78
+ });
79
+ it("should work with maxSize of 1", () => {
80
+ const catalog = new LRUIdempotencyKeyCatalog(1);
81
+ catalog.registerKeyOptions("hash1", { key: "key1", scope: "global" });
82
+ expect(catalog.getKeyOptions("hash1")).toBeDefined();
83
+ catalog.registerKeyOptions("hash2", { key: "key2", scope: "global" });
84
+ expect(catalog.getKeyOptions("hash1")).toBeUndefined();
85
+ expect(catalog.getKeyOptions("hash2")).toBeDefined();
86
+ });
87
+ });
88
+ describe("LRU ordering", () => {
89
+ it("should move accessed key to most recent position", () => {
90
+ const catalog = new LRUIdempotencyKeyCatalog(3);
91
+ catalog.registerKeyOptions("hash1", { key: "key1", scope: "global" });
92
+ catalog.registerKeyOptions("hash2", { key: "key2", scope: "global" });
93
+ catalog.registerKeyOptions("hash3", { key: "key3", scope: "global" });
94
+ // Access hash1, moving it to most recent
95
+ catalog.getKeyOptions("hash1");
96
+ // Add hash4 - should evict hash2 (now the oldest)
97
+ catalog.registerKeyOptions("hash4", { key: "key4", scope: "global" });
98
+ expect(catalog.getKeyOptions("hash1")).toBeDefined();
99
+ expect(catalog.getKeyOptions("hash2")).toBeUndefined();
100
+ expect(catalog.getKeyOptions("hash3")).toBeDefined();
101
+ expect(catalog.getKeyOptions("hash4")).toBeDefined();
102
+ });
103
+ it("should move re-registered key to most recent position", () => {
104
+ const catalog = new LRUIdempotencyKeyCatalog(3);
105
+ catalog.registerKeyOptions("hash1", { key: "key1", scope: "global" });
106
+ catalog.registerKeyOptions("hash2", { key: "key2", scope: "global" });
107
+ catalog.registerKeyOptions("hash3", { key: "key3", scope: "global" });
108
+ // Re-register hash1, moving it to most recent
109
+ catalog.registerKeyOptions("hash1", { key: "key1-updated", scope: "run" });
110
+ // Add hash4 - should evict hash2 (now the oldest)
111
+ catalog.registerKeyOptions("hash4", { key: "key4", scope: "global" });
112
+ expect(catalog.getKeyOptions("hash1")).toEqual({ key: "key1-updated", scope: "run" });
113
+ expect(catalog.getKeyOptions("hash2")).toBeUndefined();
114
+ expect(catalog.getKeyOptions("hash3")).toBeDefined();
115
+ expect(catalog.getKeyOptions("hash4")).toBeDefined();
116
+ });
117
+ it("should not affect order when getting non-existent key", () => {
118
+ const catalog = new LRUIdempotencyKeyCatalog(2);
119
+ catalog.registerKeyOptions("hash1", { key: "key1", scope: "global" });
120
+ catalog.registerKeyOptions("hash2", { key: "key2", scope: "global" });
121
+ // Try to get non-existent key
122
+ catalog.getKeyOptions("non-existent");
123
+ // Add hash3 - should still evict hash1 (oldest)
124
+ catalog.registerKeyOptions("hash3", { key: "key3", scope: "global" });
125
+ expect(catalog.getKeyOptions("hash1")).toBeUndefined();
126
+ expect(catalog.getKeyOptions("hash2")).toBeDefined();
127
+ expect(catalog.getKeyOptions("hash3")).toBeDefined();
128
+ });
129
+ });
130
+ describe("default maxSize", () => {
131
+ it("should use default maxSize of 1000", () => {
132
+ const catalog = new LRUIdempotencyKeyCatalog();
133
+ // Register 1001 entries
134
+ for (let i = 0; i < 1001; i++) {
135
+ catalog.registerKeyOptions(`hash${i}`, { key: `key${i}`, scope: "global" });
136
+ }
137
+ // First entry should be evicted
138
+ expect(catalog.getKeyOptions("hash0")).toBeUndefined();
139
+ // Last entry should exist
140
+ expect(catalog.getKeyOptions("hash1000")).toBeDefined();
141
+ });
142
+ });
143
+ describe("edge cases", () => {
144
+ it("should handle negative maxSize by clamping to 0", () => {
145
+ const catalog = new LRUIdempotencyKeyCatalog(-5);
146
+ // With maxSize clamped to 0, nothing should be stored
147
+ catalog.registerKeyOptions("hash1", { key: "key1", scope: "global" });
148
+ // Should be immediately evicted since maxSize is 0
149
+ expect(catalog.getKeyOptions("hash1")).toBeUndefined();
150
+ });
151
+ it("should handle maxSize of 0", () => {
152
+ const catalog = new LRUIdempotencyKeyCatalog(0);
153
+ catalog.registerKeyOptions("hash1", { key: "key1", scope: "global" });
154
+ // Should be immediately evicted since maxSize is 0
155
+ expect(catalog.getKeyOptions("hash1")).toBeUndefined();
156
+ });
157
+ });
158
+ });
159
+ //# sourceMappingURL=lruIdempotencyKeyCatalog.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lruIdempotencyKeyCatalog.test.js","sourceRoot":"","sources":["../../../../src/v3/idempotency-key-catalog/lruIdempotencyKeyCatalog.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { IdempotencyKeyCatalogAPI } from "./idempotency-key-catalog/index.js";
2
+ /** Entrypoint for idempotency key catalog API */
3
+ export declare const idempotencyKeyCatalog: IdempotencyKeyCatalogAPI;
@@ -0,0 +1,6 @@
1
+ // Split module-level variable definition into separate files to allow
2
+ // tree-shaking on each api instance.
3
+ import { IdempotencyKeyCatalogAPI } from "./idempotency-key-catalog/index.js";
4
+ /** Entrypoint for idempotency key catalog API */
5
+ export const idempotencyKeyCatalog = IdempotencyKeyCatalogAPI.getInstance();
6
+ //# sourceMappingURL=idempotency-key-catalog-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idempotency-key-catalog-api.js","sourceRoot":"","sources":["../../../src/v3/idempotency-key-catalog-api.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,qCAAqC;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,iDAAiD;AACjD,MAAM,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,WAAW,EAAE,CAAC"}
@@ -1,5 +1,21 @@
1
+ import type { IdempotencyKeyOptions, IdempotencyKeyScope } from "./idempotency-key-catalog/catalog.js";
1
2
  import { IdempotencyKey } from "./types/idempotencyKeys.js";
2
3
  import type { ZodFetchOptions } from "./apiClient/core.js";
4
+ export type { IdempotencyKeyScope, IdempotencyKeyOptions } from "./idempotency-key-catalog/catalog.js";
5
+ /**
6
+ * Extracts the user-provided key and scope from an idempotency key created with `idempotencyKeys.create()`.
7
+ *
8
+ * @param idempotencyKey The idempotency key to extract options from
9
+ * @returns The original key and scope, or undefined if the key doesn't have attached options
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const key = await idempotencyKeys.create("my-key", { scope: "global" });
14
+ * const options = getIdempotencyKeyOptions(key);
15
+ * // options = { key: "my-key", scope: "global" }
16
+ * ```
17
+ */
18
+ export declare function getIdempotencyKeyOptions(idempotencyKey: IdempotencyKey | string): IdempotencyKeyOptions | undefined;
3
19
  export declare function isIdempotencyKey(value: string | string[] | IdempotencyKey): value is IdempotencyKey;
4
20
  export declare function flattenIdempotencyKey(idempotencyKey?: IdempotencyKey | string | string[] | (undefined | IdempotencyKey | string | string[])[]): IdempotencyKey | string | string[] | undefined;
5
21
  export declare function makeIdempotencyKey(idempotencyKey?: IdempotencyKey | string | string[]): Promise<IdempotencyKey | undefined>;
@@ -39,7 +55,7 @@ export declare function makeIdempotencyKey(idempotencyKey?: IdempotencyKey | str
39
55
  * ```
40
56
  */
41
57
  export declare function createIdempotencyKey(key: string | string[], options?: {
42
- scope?: "run" | "attempt" | "global";
58
+ scope?: IdempotencyKeyScope;
43
59
  }): Promise<IdempotencyKey>;
44
60
  type AttemptKeyMaterial = {
45
61
  run: {
@@ -51,8 +67,39 @@ type AttemptKeyMaterial = {
51
67
  };
52
68
  /** Creates a unique key for each attempt. */
53
69
  export declare function attemptKey(ctx: AttemptKeyMaterial): string;
54
- /** Resets an idempotency key, effectively deleting it from the associated task.*/
55
- export declare function resetIdempotencyKey(taskIdentifier: string, idempotencyKey: string, requestOptions?: ZodFetchOptions): Promise<{
70
+ export type ResetIdempotencyKeyOptions = {
71
+ scope?: IdempotencyKeyScope;
72
+ /** Required if scope is "run" or "attempt" to reconstruct the hash */
73
+ parentRunId?: string;
74
+ /** Required if scope is "attempt" to reconstruct the hash */
75
+ attemptNumber?: number;
76
+ };
77
+ /**
78
+ * Resets an idempotency key, effectively deleting it from the associated task.
79
+ *
80
+ * @param taskIdentifier The task identifier (e.g., "my-task")
81
+ * @param idempotencyKey The idempotency key to reset. Can be:
82
+ * - An `IdempotencyKey` created with `idempotencyKeys.create()` (options are extracted automatically)
83
+ * - A string or string array (requires `options.scope` and potentially `options.parentRunId`)
84
+ * @param options Options for reconstructing the hash if needed
85
+ * @param requestOptions Optional fetch options
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * // Using a key created with idempotencyKeys.create() - options are extracted automatically
90
+ * const key = await idempotencyKeys.create("my-key", { scope: "global" });
91
+ * await idempotencyKeys.reset("my-task", key);
92
+ *
93
+ * // Using a raw string with global scope
94
+ * await idempotencyKeys.reset("my-task", "my-key", { scope: "global" });
95
+ *
96
+ * // Using a raw string with run scope (requires parentRunId)
97
+ * await idempotencyKeys.reset("my-task", "my-key", {
98
+ * scope: "run",
99
+ * parentRunId: "run_abc123"
100
+ * });
101
+ * ```
102
+ */
103
+ export declare function resetIdempotencyKey(taskIdentifier: string, idempotencyKey: IdempotencyKey | string | string[], options?: ResetIdempotencyKeyOptions, requestOptions?: ZodFetchOptions): Promise<{
56
104
  id: string;
57
105
  }>;
58
- export {};
@@ -1,9 +1,34 @@
1
1
  import { apiClientManager } from "./apiClientManager-api.js";
2
+ import { idempotencyKeyCatalog } from "./idempotency-key-catalog-api.js";
2
3
  import { taskContext } from "./task-context-api.js";
3
4
  import { digestSHA256 } from "./utils/crypto.js";
5
+ /**
6
+ * Extracts the user-provided key and scope from an idempotency key created with `idempotencyKeys.create()`.
7
+ *
8
+ * @param idempotencyKey The idempotency key to extract options from
9
+ * @returns The original key and scope, or undefined if the key doesn't have attached options
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const key = await idempotencyKeys.create("my-key", { scope: "global" });
14
+ * const options = getIdempotencyKeyOptions(key);
15
+ * // options = { key: "my-key", scope: "global" }
16
+ * ```
17
+ */
18
+ export function getIdempotencyKeyOptions(idempotencyKey) {
19
+ // Look up options from the catalog using the hash string
20
+ if (typeof idempotencyKey === "string") {
21
+ return idempotencyKeyCatalog.getKeyOptions(idempotencyKey);
22
+ }
23
+ return undefined;
24
+ }
4
25
  export function isIdempotencyKey(value) {
5
26
  // Cannot check the brand at runtime because it doesn't exist (it's a TypeScript-only construct)
6
- return typeof value === "string" && value.length === 64;
27
+ // Check for primitive strings only (we no longer use String objects)
28
+ if (typeof value === "string") {
29
+ return value.length === 64;
30
+ }
31
+ return false;
7
32
  }
8
33
  export function flattenIdempotencyKey(idempotencyKey) {
9
34
  if (!idempotencyKey) {
@@ -70,7 +95,13 @@ export async function makeIdempotencyKey(idempotencyKey) {
70
95
  * ```
71
96
  */
72
97
  export async function createIdempotencyKey(key, options) {
73
- const idempotencyKey = await generateIdempotencyKey([...(Array.isArray(key) ? key : [key])].concat(injectScope(options?.scope ?? "run")));
98
+ const scope = options?.scope ?? "run";
99
+ const keyArray = Array.isArray(key) ? key : [key];
100
+ const userKey = keyArray.join("-");
101
+ const idempotencyKey = await generateIdempotencyKey(keyArray.concat(injectScope(scope)));
102
+ // Register the original key and scope in the catalog for later extraction
103
+ idempotencyKeyCatalog.registerKeyOptions(idempotencyKey, { key: userKey, scope });
104
+ // Return primitive string cast as IdempotencyKey
74
105
  return idempotencyKey;
75
106
  }
76
107
  function injectScope(scope) {
@@ -97,9 +128,69 @@ async function generateIdempotencyKey(keyMaterial) {
97
128
  export function attemptKey(ctx) {
98
129
  return `${ctx.run.id}-${ctx.attempt.number}`;
99
130
  }
100
- /** Resets an idempotency key, effectively deleting it from the associated task.*/
101
- export async function resetIdempotencyKey(taskIdentifier, idempotencyKey, requestOptions) {
131
+ /**
132
+ * Resets an idempotency key, effectively deleting it from the associated task.
133
+ *
134
+ * @param taskIdentifier The task identifier (e.g., "my-task")
135
+ * @param idempotencyKey The idempotency key to reset. Can be:
136
+ * - An `IdempotencyKey` created with `idempotencyKeys.create()` (options are extracted automatically)
137
+ * - A string or string array (requires `options.scope` and potentially `options.parentRunId`)
138
+ * @param options Options for reconstructing the hash if needed
139
+ * @param requestOptions Optional fetch options
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * // Using a key created with idempotencyKeys.create() - options are extracted automatically
144
+ * const key = await idempotencyKeys.create("my-key", { scope: "global" });
145
+ * await idempotencyKeys.reset("my-task", key);
146
+ *
147
+ * // Using a raw string with global scope
148
+ * await idempotencyKeys.reset("my-task", "my-key", { scope: "global" });
149
+ *
150
+ * // Using a raw string with run scope (requires parentRunId)
151
+ * await idempotencyKeys.reset("my-task", "my-key", {
152
+ * scope: "run",
153
+ * parentRunId: "run_abc123"
154
+ * });
155
+ * ```
156
+ */
157
+ export async function resetIdempotencyKey(taskIdentifier, idempotencyKey, options, requestOptions) {
102
158
  const client = apiClientManager.clientOrThrow();
103
- return client.resetIdempotencyKey(taskIdentifier, idempotencyKey, requestOptions);
159
+ // If the key is already a 64-char hash, use it directly
160
+ if (typeof idempotencyKey === "string" && idempotencyKey.length === 64) {
161
+ return client.resetIdempotencyKey(taskIdentifier, idempotencyKey, requestOptions);
162
+ }
163
+ // Try to extract options from an IdempotencyKey created with idempotencyKeys.create()
164
+ const attachedOptions = typeof idempotencyKey === "string"
165
+ ? getIdempotencyKeyOptions(idempotencyKey)
166
+ : undefined;
167
+ const scope = attachedOptions?.scope ?? options?.scope ?? "run";
168
+ const keyArray = Array.isArray(idempotencyKey)
169
+ ? idempotencyKey
170
+ : [attachedOptions?.key ?? String(idempotencyKey)];
171
+ // Build scope suffix based on scope type
172
+ let scopeSuffix = [];
173
+ switch (scope) {
174
+ case "run": {
175
+ const parentRunId = options?.parentRunId ?? taskContext?.ctx?.run.id;
176
+ if (!parentRunId) {
177
+ throw new Error("resetIdempotencyKey: parentRunId is required for 'run' scope when called outside a task context");
178
+ }
179
+ scopeSuffix = [parentRunId];
180
+ break;
181
+ }
182
+ case "attempt": {
183
+ const parentRunId = options?.parentRunId ?? taskContext?.ctx?.run.id;
184
+ const attemptNumber = options?.attemptNumber ?? taskContext?.ctx?.attempt.number;
185
+ if (!parentRunId || attemptNumber === undefined) {
186
+ throw new Error("resetIdempotencyKey: parentRunId and attemptNumber are required for 'attempt' scope when called outside a task context");
187
+ }
188
+ scopeSuffix = [parentRunId, attemptNumber.toString()];
189
+ break;
190
+ }
191
+ }
192
+ // Generate the hash using the same algorithm as createIdempotencyKey
193
+ const hash = await generateIdempotencyKey(keyArray.concat(scopeSuffix));
194
+ return client.resetIdempotencyKey(taskIdentifier, hash, requestOptions);
104
195
  }
105
196
  //# sourceMappingURL=idempotencyKeys.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"idempotencyKeys.js","sourceRoot":"","sources":["../../../src/v3/idempotencyKeys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"idempotencyKeys.js","sourceRoot":"","sources":["../../../src/v3/idempotencyKeys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import superjson from "../vendor/superjson.mjs";
2
+ export default superjson;
@@ -0,0 +1,12 @@
1
+ // Use vendored superjson bundle to avoid ESM/CJS compatibility issues
2
+ // See: https://github.com/triggerdotdev/trigger.dev/issues/2937
3
+ // @ts-ignore
4
+ import superjson from "../vendor/superjson.mjs";
5
+ superjson.registerCustom({
6
+ isApplicable: (v) => typeof Buffer === "function" && Buffer.isBuffer(v),
7
+ serialize: (v) => [...v],
8
+ deserialize: (v) => Buffer.from(v),
9
+ }, "buffer");
10
+ // @ts-ignore
11
+ export default superjson;
12
+ //# sourceMappingURL=superjson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"superjson.js","sourceRoot":"","sources":["../../../../src/v3/imports/superjson.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,gEAAgE;AAChE,aAAa;AACb,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAEhD,SAAS,CAAC,cAAc,CACtB;IACE,YAAY,EAAE,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7F,SAAS,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,WAAW,EAAE,CAAC,CAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CAC7C,EACD,QAAQ,CACT,CAAC;AAEF,aAAa;AACb,eAAe,SAAS,CAAC"}
@@ -1,3 +1,14 @@
1
+ /**
2
+ * Parses a natural language duration string into milliseconds.
3
+ *
4
+ * @param duration - Duration string like "1s", "5m", "2h", "1d", "1w"
5
+ * @returns The duration in milliseconds, or undefined if invalid
6
+ *
7
+ * @example
8
+ * parseNaturalLanguageDurationInMs("30m") // 1800000
9
+ * parseNaturalLanguageDurationInMs("2h") // 7200000
10
+ */
11
+ export declare function parseNaturalLanguageDurationInMs(duration: string): number | undefined;
1
12
  export declare function parseNaturalLanguageDuration(duration: string): Date | undefined;
2
13
  export declare function safeParseNaturalLanguageDuration(duration: string): Date | undefined;
3
14
  export declare function parseNaturalLanguageDurationAgo(duration: string): Date | undefined;
@@ -1,5 +1,15 @@
1
- export function parseNaturalLanguageDuration(duration) {
2
- // Handle Code scanning alert #44 (https://github.com/triggerdotdev/trigger.dev/security/code-scanning/44) by limiting the length of the input string
1
+ /**
2
+ * Parses a natural language duration string into milliseconds.
3
+ *
4
+ * @param duration - Duration string like "1s", "5m", "2h", "1d", "1w"
5
+ * @returns The duration in milliseconds, or undefined if invalid
6
+ *
7
+ * @example
8
+ * parseNaturalLanguageDurationInMs("30m") // 1800000
9
+ * parseNaturalLanguageDurationInMs("2h") // 7200000
10
+ */
11
+ export function parseNaturalLanguageDurationInMs(duration) {
12
+ // Handle Code scanning alert #44 by limiting the length of the input string
3
13
  if (duration.length > 100) {
4
14
  return undefined;
5
15
  }
@@ -51,10 +61,11 @@ export function parseNaturalLanguageDuration(duration) {
51
61
  hasMatch = true;
52
62
  }
53
63
  }
54
- if (hasMatch) {
55
- return new Date(Date.now() + totalMilliseconds);
56
- }
57
- return undefined;
64
+ return hasMatch ? totalMilliseconds : undefined;
65
+ }
66
+ export function parseNaturalLanguageDuration(duration) {
67
+ const ms = parseNaturalLanguageDurationInMs(duration);
68
+ return ms !== undefined ? new Date(Date.now() + ms) : undefined;
58
69
  }
59
70
  export function safeParseNaturalLanguageDuration(duration) {
60
71
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"duration.js","sourceRoot":"","sources":["../../../../src/v3/isomorphic/duration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"duration.js","sourceRoot":"","sources":["../../../../src/v3/isomorphic/duration.ts"],"names":[],"mappings":"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"}