@workflow/core 5.0.0-beta.4 → 5.0.0-beta.40

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 (325) hide show
  1. package/dist/attribute-changes.d.ts +7 -0
  2. package/dist/attribute-changes.d.ts.map +1 -0
  3. package/dist/attribute-changes.js +25 -0
  4. package/dist/capabilities.d.ts +33 -1
  5. package/dist/capabilities.d.ts.map +1 -1
  6. package/dist/capabilities.js +71 -4
  7. package/dist/capture-stack.d.ts +16 -0
  8. package/dist/capture-stack.d.ts.map +1 -0
  9. package/dist/capture-stack.js +21 -0
  10. package/dist/class-serialization.d.ts +32 -0
  11. package/dist/class-serialization.d.ts.map +1 -1
  12. package/dist/class-serialization.js +37 -1
  13. package/dist/classify-error.d.ts +26 -3
  14. package/dist/classify-error.d.ts.map +1 -1
  15. package/dist/classify-error.js +109 -6
  16. package/dist/context-errors.d.ts +27 -0
  17. package/dist/context-errors.d.ts.map +1 -0
  18. package/dist/context-errors.js +101 -0
  19. package/dist/context-violation-error.d.ts +97 -0
  20. package/dist/context-violation-error.d.ts.map +1 -0
  21. package/dist/context-violation-error.js +149 -0
  22. package/dist/correlation-id.d.ts +109 -0
  23. package/dist/correlation-id.d.ts.map +1 -0
  24. package/dist/correlation-id.js +139 -0
  25. package/dist/create-hook.d.ts +62 -4
  26. package/dist/create-hook.d.ts.map +1 -1
  27. package/dist/create-hook.js +4 -3
  28. package/dist/define-hook.d.ts.map +1 -1
  29. package/dist/define-hook.js +20 -5
  30. package/dist/describe-error.d.ts +70 -0
  31. package/dist/describe-error.d.ts.map +1 -0
  32. package/dist/describe-error.js +189 -0
  33. package/dist/encryption.d.ts +37 -3
  34. package/dist/encryption.d.ts.map +1 -1
  35. package/dist/encryption.js +97 -31
  36. package/dist/events-consumer.d.ts +26 -1
  37. package/dist/events-consumer.d.ts.map +1 -1
  38. package/dist/events-consumer.js +105 -18
  39. package/dist/flushable-stream.d.ts +65 -10
  40. package/dist/flushable-stream.d.ts.map +1 -1
  41. package/dist/flushable-stream.js +131 -18
  42. package/dist/global.d.ts +37 -1
  43. package/dist/global.d.ts.map +1 -1
  44. package/dist/global.js +21 -3
  45. package/dist/index.d.ts +1 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +2 -1
  48. package/dist/log-format.d.ts +25 -0
  49. package/dist/log-format.d.ts.map +1 -0
  50. package/dist/log-format.js +250 -0
  51. package/dist/logger.d.ts +29 -30
  52. package/dist/logger.d.ts.map +1 -1
  53. package/dist/logger.js +82 -32
  54. package/dist/private.d.ts +178 -9
  55. package/dist/private.d.ts.map +1 -1
  56. package/dist/private.js +273 -9
  57. package/dist/replay-payload-cache.d.ts +68 -0
  58. package/dist/replay-payload-cache.d.ts.map +1 -0
  59. package/dist/replay-payload-cache.js +160 -0
  60. package/dist/runtime/compute-instance.d.ts +12 -0
  61. package/dist/runtime/compute-instance.d.ts.map +1 -0
  62. package/dist/runtime/compute-instance.js +13 -0
  63. package/dist/runtime/constants.d.ts +237 -0
  64. package/dist/runtime/constants.d.ts.map +1 -1
  65. package/dist/runtime/constants.js +405 -15
  66. package/dist/runtime/count-step-started-events.d.ts +52 -0
  67. package/dist/runtime/count-step-started-events.d.ts.map +1 -0
  68. package/dist/runtime/count-step-started-events.js +72 -0
  69. package/dist/runtime/deployment-guard.d.ts +99 -0
  70. package/dist/runtime/deployment-guard.d.ts.map +1 -0
  71. package/dist/runtime/deployment-guard.js +154 -0
  72. package/dist/runtime/get-port-lazy.d.ts +25 -0
  73. package/dist/runtime/get-port-lazy.d.ts.map +1 -0
  74. package/dist/runtime/get-port-lazy.js +92 -0
  75. package/dist/runtime/get-world-lazy.d.ts +23 -0
  76. package/dist/runtime/get-world-lazy.d.ts.map +1 -0
  77. package/dist/runtime/get-world-lazy.js +46 -0
  78. package/dist/runtime/helpers.d.ts +219 -10
  79. package/dist/runtime/helpers.d.ts.map +1 -1
  80. package/dist/runtime/helpers.js +414 -40
  81. package/dist/runtime/quickjs-assets.generated.d.ts +14 -0
  82. package/dist/runtime/quickjs-assets.generated.d.ts.map +1 -0
  83. package/dist/runtime/quickjs-assets.generated.js +30 -0
  84. package/dist/runtime/quickjs-entrypoint.d.ts +124 -0
  85. package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -0
  86. package/dist/runtime/quickjs-entrypoint.js +1429 -0
  87. package/dist/runtime/quickjs-runtime.d.ts +193 -0
  88. package/dist/runtime/quickjs-runtime.d.ts.map +1 -0
  89. package/dist/runtime/quickjs-runtime.js +1944 -0
  90. package/dist/runtime/replay-budget.d.ts +98 -0
  91. package/dist/runtime/replay-budget.d.ts.map +1 -0
  92. package/dist/runtime/replay-budget.js +192 -0
  93. package/dist/runtime/replay-recovery-reporter.d.ts +36 -0
  94. package/dist/runtime/replay-recovery-reporter.d.ts.map +1 -0
  95. package/dist/runtime/replay-recovery-reporter.js +64 -0
  96. package/dist/runtime/resume-hook.d.ts +27 -4
  97. package/dist/runtime/resume-hook.d.ts.map +1 -1
  98. package/dist/runtime/resume-hook.js +448 -76
  99. package/dist/runtime/run-id-time.d.ts +19 -0
  100. package/dist/runtime/run-id-time.d.ts.map +1 -0
  101. package/dist/runtime/run-id-time.js +42 -0
  102. package/dist/runtime/run.d.ts +8 -2
  103. package/dist/runtime/run.d.ts.map +1 -1
  104. package/dist/runtime/run.js +62 -15
  105. package/dist/runtime/runs.d.ts +54 -3
  106. package/dist/runtime/runs.d.ts.map +1 -1
  107. package/dist/runtime/runs.js +117 -10
  108. package/dist/runtime/start.d.ts +70 -1
  109. package/dist/runtime/start.d.ts.map +1 -1
  110. package/dist/runtime/start.js +312 -54
  111. package/dist/runtime/step-executor.d.ts +177 -0
  112. package/dist/runtime/step-executor.d.ts.map +1 -0
  113. package/dist/runtime/step-executor.js +949 -0
  114. package/dist/runtime/step-latency.d.ts +197 -0
  115. package/dist/runtime/step-latency.d.ts.map +1 -0
  116. package/dist/runtime/step-latency.js +207 -0
  117. package/dist/runtime/step-ownership.d.ts +72 -0
  118. package/dist/runtime/step-ownership.d.ts.map +1 -0
  119. package/dist/runtime/step-ownership.js +114 -0
  120. package/dist/runtime/step-single-flight.d.ts +12 -0
  121. package/dist/runtime/step-single-flight.d.ts.map +1 -0
  122. package/dist/runtime/step-single-flight.js +69 -0
  123. package/dist/runtime/suspension-handler.d.ts +102 -7
  124. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  125. package/dist/runtime/suspension-handler.js +439 -140
  126. package/dist/runtime/vm-mode.d.ts +44 -0
  127. package/dist/runtime/vm-mode.d.ts.map +1 -0
  128. package/dist/runtime/vm-mode.js +62 -0
  129. package/dist/runtime/vm-serde-bundle.generated.d.ts +14 -0
  130. package/dist/runtime/vm-serde-bundle.generated.d.ts.map +1 -0
  131. package/dist/runtime/vm-serde-bundle.generated.js +16 -0
  132. package/dist/runtime/wait-continuation.d.ts +84 -0
  133. package/dist/runtime/wait-continuation.d.ts.map +1 -0
  134. package/dist/runtime/wait-continuation.js +105 -0
  135. package/dist/runtime/wait-until.d.ts +18 -0
  136. package/dist/runtime/wait-until.d.ts.map +1 -0
  137. package/dist/runtime/wait-until.js +42 -0
  138. package/dist/runtime/world-compatibility.d.ts +5 -0
  139. package/dist/runtime/world-compatibility.d.ts.map +1 -0
  140. package/dist/runtime/world-compatibility.js +12 -0
  141. package/dist/runtime/world-init.d.ts +50 -0
  142. package/dist/runtime/world-init.d.ts.map +1 -0
  143. package/dist/runtime/world-init.js +50 -0
  144. package/dist/runtime/world.d.ts +14 -2
  145. package/dist/runtime/world.d.ts.map +1 -1
  146. package/dist/runtime/world.js +101 -26
  147. package/dist/runtime.d.ts +17 -12
  148. package/dist/runtime.d.ts.map +1 -1
  149. package/dist/runtime.js +3078 -327
  150. package/dist/schemas.d.ts +1 -1
  151. package/dist/schemas.d.ts.map +1 -1
  152. package/dist/schemas.js +1 -1
  153. package/dist/sealed-box.d.ts +167 -0
  154. package/dist/sealed-box.d.ts.map +1 -0
  155. package/dist/sealed-box.js +571 -0
  156. package/dist/serialization/client.d.ts +17 -0
  157. package/dist/serialization/client.d.ts.map +1 -0
  158. package/dist/serialization/client.js +48 -0
  159. package/dist/serialization/codec-devalue-vm.d.ts +9 -0
  160. package/dist/serialization/codec-devalue-vm.d.ts.map +1 -0
  161. package/dist/serialization/codec-devalue-vm.js +137 -0
  162. package/dist/serialization/codec-devalue.d.ts +14 -0
  163. package/dist/serialization/codec-devalue.d.ts.map +1 -0
  164. package/dist/serialization/codec-devalue.js +105 -0
  165. package/dist/serialization/codec.d.ts +125 -0
  166. package/dist/serialization/codec.d.ts.map +1 -0
  167. package/dist/serialization/codec.js +17 -0
  168. package/dist/serialization/compression.d.ts +104 -0
  169. package/dist/serialization/compression.d.ts.map +1 -0
  170. package/dist/serialization/compression.js +260 -0
  171. package/dist/serialization/encryption.d.ts +134 -0
  172. package/dist/serialization/encryption.d.ts.map +1 -0
  173. package/dist/serialization/encryption.js +186 -0
  174. package/dist/serialization/errors.d.ts +34 -0
  175. package/dist/serialization/errors.d.ts.map +1 -0
  176. package/dist/serialization/errors.js +59 -0
  177. package/dist/serialization/format.d.ts +60 -0
  178. package/dist/serialization/format.d.ts.map +1 -0
  179. package/dist/serialization/format.js +97 -0
  180. package/dist/serialization/hardened.d.ts +155 -0
  181. package/dist/serialization/hardened.d.ts.map +1 -0
  182. package/dist/serialization/hardened.js +523 -0
  183. package/dist/serialization/index.d.ts +20 -0
  184. package/dist/serialization/index.d.ts.map +1 -0
  185. package/dist/serialization/index.js +22 -0
  186. package/dist/serialization/reducers/class-vm.d.ts +20 -0
  187. package/dist/serialization/reducers/class-vm.d.ts.map +1 -0
  188. package/dist/serialization/reducers/class-vm.js +77 -0
  189. package/dist/serialization/reducers/class.d.ts +11 -0
  190. package/dist/serialization/reducers/class.d.ts.map +1 -0
  191. package/dist/serialization/reducers/class.js +73 -0
  192. package/dist/serialization/reducers/common-vm.d.ts +15 -0
  193. package/dist/serialization/reducers/common-vm.d.ts.map +1 -0
  194. package/dist/serialization/reducers/common-vm.js +579 -0
  195. package/dist/serialization/reducers/common.d.ts +16 -0
  196. package/dist/serialization/reducers/common.d.ts.map +1 -0
  197. package/dist/serialization/reducers/common.js +478 -0
  198. package/dist/serialization/reducers/step-function-vm.d.ts +44 -0
  199. package/dist/serialization/reducers/step-function-vm.d.ts.map +1 -0
  200. package/dist/serialization/reducers/step-function-vm.js +97 -0
  201. package/dist/serialization/reducers/step-function.d.ts +35 -0
  202. package/dist/serialization/reducers/step-function.d.ts.map +1 -0
  203. package/dist/serialization/reducers/step-function.js +104 -0
  204. package/dist/serialization/step.d.ts +17 -0
  205. package/dist/serialization/step.d.ts.map +1 -0
  206. package/dist/serialization/step.js +48 -0
  207. package/dist/serialization/types.d.ts +273 -0
  208. package/dist/serialization/types.d.ts.map +1 -0
  209. package/dist/serialization/types.js +35 -0
  210. package/dist/serialization/vm-bundle-entry.d.ts +12 -0
  211. package/dist/serialization/vm-bundle-entry.d.ts.map +1 -0
  212. package/dist/serialization/vm-bundle-entry.js +58 -0
  213. package/dist/serialization/workflow-vm.d.ts +24 -0
  214. package/dist/serialization/workflow-vm.d.ts.map +1 -0
  215. package/dist/serialization/workflow-vm.js +66 -0
  216. package/dist/serialization/workflow.d.ts +29 -0
  217. package/dist/serialization/workflow.d.ts.map +1 -0
  218. package/dist/serialization/workflow.js +54 -0
  219. package/dist/serialization-format.d.ts +60 -4
  220. package/dist/serialization-format.d.ts.map +1 -1
  221. package/dist/serialization-format.js +276 -56
  222. package/dist/serialization.d.ts +374 -221
  223. package/dist/serialization.d.ts.map +1 -1
  224. package/dist/serialization.js +2300 -783
  225. package/dist/set-attributes.d.ts +13 -0
  226. package/dist/set-attributes.d.ts.map +1 -0
  227. package/dist/set-attributes.js +60 -0
  228. package/dist/sleep.d.ts.map +1 -1
  229. package/dist/sleep.js +3 -2
  230. package/dist/source-map.d.ts +25 -0
  231. package/dist/source-map.d.ts.map +1 -1
  232. package/dist/source-map.js +148 -10
  233. package/dist/step/context-storage.d.ts +61 -2
  234. package/dist/step/context-storage.d.ts.map +1 -1
  235. package/dist/step/context-storage.js +7 -5
  236. package/dist/step/get-closure-vars.d.ts.map +1 -1
  237. package/dist/step/get-closure-vars.js +3 -2
  238. package/dist/step/get-step-metadata.d.ts.map +1 -1
  239. package/dist/step/get-step-metadata.js +3 -2
  240. package/dist/step/get-workflow-metadata.d.ts.map +1 -1
  241. package/dist/step/get-workflow-metadata.js +3 -2
  242. package/dist/step/writable-stream.d.ts.map +1 -1
  243. package/dist/step/writable-stream.js +71 -7
  244. package/dist/step.d.ts.map +1 -1
  245. package/dist/step.js +226 -30
  246. package/dist/symbols.d.ts +54 -0
  247. package/dist/symbols.d.ts.map +1 -1
  248. package/dist/symbols.js +55 -1
  249. package/dist/telemetry/semantic-conventions.d.ts +242 -2
  250. package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
  251. package/dist/telemetry/semantic-conventions.js +173 -1
  252. package/dist/telemetry.d.ts +73 -0
  253. package/dist/telemetry.d.ts.map +1 -1
  254. package/dist/telemetry.js +153 -16
  255. package/dist/types.d.ts +6 -0
  256. package/dist/types.d.ts.map +1 -1
  257. package/dist/types.js +23 -1
  258. package/dist/util.d.ts +16 -6
  259. package/dist/util.d.ts.map +1 -1
  260. package/dist/util.js +25 -16
  261. package/dist/version.d.ts +1 -1
  262. package/dist/version.d.ts.map +1 -1
  263. package/dist/version.js +2 -2
  264. package/dist/vm/index.d.ts.map +1 -1
  265. package/dist/vm/index.js +77 -9
  266. package/dist/vm/script-cache.d.ts +28 -0
  267. package/dist/vm/script-cache.d.ts.map +1 -0
  268. package/dist/vm/script-cache.js +140 -0
  269. package/dist/workflow/abort-controller.d.ts +65 -0
  270. package/dist/workflow/abort-controller.d.ts.map +1 -0
  271. package/dist/workflow/abort-controller.js +314 -0
  272. package/dist/workflow/attribute-dispatcher.d.ts +6 -0
  273. package/dist/workflow/attribute-dispatcher.d.ts.map +1 -0
  274. package/dist/workflow/attribute-dispatcher.js +48 -0
  275. package/dist/workflow/create-hook.d.ts.map +1 -1
  276. package/dist/workflow/create-hook.js +25 -3
  277. package/dist/workflow/define-hook.d.ts +1 -1
  278. package/dist/workflow/define-hook.d.ts.map +1 -1
  279. package/dist/workflow/define-hook.js +8 -4
  280. package/dist/workflow/get-workflow-metadata.d.ts.map +1 -1
  281. package/dist/workflow/get-workflow-metadata.js +14 -3
  282. package/dist/workflow/hook.d.ts.map +1 -1
  283. package/dist/workflow/hook.js +303 -37
  284. package/dist/workflow/index.d.ts +1 -0
  285. package/dist/workflow/index.d.ts.map +1 -1
  286. package/dist/workflow/index.js +5 -3
  287. package/dist/workflow/set-attributes.d.ts +68 -0
  288. package/dist/workflow/set-attributes.d.ts.map +1 -0
  289. package/dist/workflow/set-attributes.js +60 -0
  290. package/dist/workflow/sleep.d.ts.map +1 -1
  291. package/dist/workflow/sleep.js +58 -9
  292. package/dist/workflow/world-init-stub.d.ts +15 -0
  293. package/dist/workflow/world-init-stub.d.ts.map +1 -0
  294. package/dist/workflow/world-init-stub.js +15 -0
  295. package/dist/workflow.d.ts +69 -3
  296. package/dist/workflow.d.ts.map +1 -1
  297. package/dist/workflow.js +791 -554
  298. package/docs/api-reference/create-hook.mdx +79 -0
  299. package/docs/api-reference/create-webhook.mdx +1 -0
  300. package/docs/api-reference/define-hook.mdx +26 -24
  301. package/docs/api-reference/fatal-error.mdx +29 -7
  302. package/docs/api-reference/fetch.mdx +8 -4
  303. package/docs/api-reference/index.mdx +3 -0
  304. package/docs/api-reference/set-attributes.mdx +61 -0
  305. package/docs/api-reference/sleep.mdx +1 -1
  306. package/docs/foundations/cancellation.mdx +459 -0
  307. package/docs/foundations/errors-and-retries.mdx +7 -3
  308. package/docs/foundations/hooks.mdx +29 -0
  309. package/docs/foundations/idempotency.mdx +243 -11
  310. package/docs/foundations/index.mdx +1 -23
  311. package/docs/foundations/meta.json +3 -1
  312. package/docs/foundations/serialization.mdx +77 -41
  313. package/docs/foundations/starting-workflows.mdx +79 -2
  314. package/docs/foundations/streaming.mdx +14 -23
  315. package/docs/foundations/versioning.mdx +263 -0
  316. package/docs/how-it-works/cancellation.mdx +287 -0
  317. package/docs/how-it-works/code-transform.mdx +21 -17
  318. package/docs/how-it-works/encryption.mdx +5 -5
  319. package/docs/how-it-works/event-sourcing.mdx +6 -6
  320. package/docs/how-it-works/framework-integrations.mdx +96 -337
  321. package/docs/how-it-works/meta.json +2 -1
  322. package/package.json +31 -13
  323. package/dist/runtime/step-handler.d.ts +0 -2
  324. package/dist/runtime/step-handler.d.ts.map +0 -1
  325. package/dist/runtime/step-handler.js +0 -678
@@ -0,0 +1,139 @@
1
+ import { encodeTime, incrementBase32 } from 'ulid';
2
+ const CROCKFORD = '0123456789ABCDEFGHJKMNPQRSTVWXYZ';
3
+ /** Number of Crockford characters in a ULID's random component. */
4
+ const BODY_CHARS = 16;
5
+ /** Number of Crockford characters in a ULID's timestamp component. */
6
+ const TIME_CHARS = 10;
7
+ function mul32(a, b) {
8
+ return Math.imul(a, b) >>> 0;
9
+ }
10
+ function rotl32(value, shift) {
11
+ return ((value << shift) | (value >>> (32 - shift))) >>> 0;
12
+ }
13
+ /** MurmurHash3's 32-bit finalizer. */
14
+ function fmix32(input) {
15
+ let h = input >>> 0;
16
+ h = (h ^ (h >>> 16)) >>> 0;
17
+ h = mul32(h, 0x85ebca6b);
18
+ h = (h ^ (h >>> 13)) >>> 0;
19
+ h = mul32(h, 0xc2b2ae35);
20
+ return (h ^ (h >>> 16)) >>> 0;
21
+ }
22
+ /**
23
+ * Deterministic 128-bit hash of a string, as four 32-bit lanes.
24
+ *
25
+ * A MurmurHash3-style mixer over UTF-16 code units, rotating which lane absorbs
26
+ * each unit and diffusing across lanes at the end. Only determinism and
27
+ * diffusion matter here: this is not a cryptographic hash, claims no
28
+ * bit-compatibility with any reference implementation, and must not be used for
29
+ * anything that outlives a deployment's replays.
30
+ */
31
+ function hash128(input) {
32
+ const lanes = [
33
+ 0x9e3779b1, 0x85ebca77, 0xc2b2ae3d, 0x27d4eb2f,
34
+ ];
35
+ for (let i = 0; i < input.length; i++) {
36
+ let k = input.charCodeAt(i) >>> 0;
37
+ k = mul32(k, 0xcc9e2d51);
38
+ k = rotl32(k, 15);
39
+ k = mul32(k, 0x1b873593);
40
+ const lane = i & 3;
41
+ let h = (lanes[lane] ^ k) >>> 0;
42
+ h = rotl32(h, 13);
43
+ lanes[lane] = (mul32(h, 5) + 0xe6546b64) >>> 0;
44
+ }
45
+ lanes[0] = (lanes[0] ^ input.length) >>> 0;
46
+ // Two passes so every lane depends on every other lane.
47
+ for (let pass = 0; pass < 2; pass++) {
48
+ for (let lane = 0; lane < 4; lane++) {
49
+ const previous = lanes[(lane + 3) & 3];
50
+ lanes[lane] = fmix32((lanes[lane] ^ previous) >>> 0);
51
+ }
52
+ }
53
+ return lanes;
54
+ }
55
+ /**
56
+ * Derives a kind's starting body: 80 bits of a 128-bit hash as 16 Crockford
57
+ * characters, most significant first.
58
+ *
59
+ * The leading character is confined to the alphabet's lower half so the body
60
+ * starts below half of the 80-bit space. `incrementBase32` throws on overflow,
61
+ * and without this a base that happened to land near `Z…Z` would make overflow
62
+ * reachable after few draws rather than after 2^79 of them.
63
+ */
64
+ function deriveBody(seed, kind) {
65
+ const lanes = hash128(`${seed} correlation-kind ${kind}`);
66
+ const bytes = [
67
+ (lanes[0] >>> 24) & 0xff,
68
+ (lanes[0] >>> 16) & 0xff,
69
+ (lanes[0] >>> 8) & 0xff,
70
+ lanes[0] & 0xff,
71
+ (lanes[1] >>> 24) & 0xff,
72
+ (lanes[1] >>> 16) & 0xff,
73
+ (lanes[1] >>> 8) & 0xff,
74
+ lanes[1] & 0xff,
75
+ (lanes[2] >>> 24) & 0xff,
76
+ (lanes[2] >>> 16) & 0xff,
77
+ ];
78
+ let body = '';
79
+ let accumulator = 0;
80
+ let bits = 0;
81
+ for (const byte of bytes) {
82
+ accumulator = ((accumulator << 8) | byte) >>> 0;
83
+ bits += 8;
84
+ while (bits >= 5) {
85
+ const index = (accumulator >>> (bits - 5)) & 31;
86
+ body += CROCKFORD[body.length === 0 ? index & 15 : index];
87
+ bits -= 5;
88
+ }
89
+ }
90
+ return body;
91
+ }
92
+ /**
93
+ * Builds a replay's correlation-id generator.
94
+ *
95
+ * `perKind: false` returns the run's single shared monotonic sequence and
96
+ * ignores the kind entirely, so both schemes go through one call path and the
97
+ * flag is the only difference between them.
98
+ */
99
+ export function createCorrelationIdGenerator(options) {
100
+ const { seed, fixedTimestamp, positional, perKind } = options;
101
+ if (!perKind) {
102
+ return positional;
103
+ }
104
+ const time = encodeTime(fixedTimestamp, TIME_CHARS);
105
+ const bodies = new Map();
106
+ return (kind) => {
107
+ const previous = bodies.get(kind);
108
+ const body = previous === undefined
109
+ ? deriveBody(seed, kind)
110
+ : incrementBase32(previous);
111
+ bodies.set(kind, body);
112
+ return `${time}${body}`;
113
+ };
114
+ }
115
+ /** Length of a ULID, exported so tests need not restate it. */
116
+ export const CORRELATION_ID_LENGTH = TIME_CHARS + BODY_CHARS;
117
+ /**
118
+ * Whether each entity family draws correlation ids from its own sequence rather
119
+ * than from one sequence shared by the whole run. Off unless opted in, so an SDK
120
+ * upgrade alone never moves a run between schemes.
121
+ *
122
+ * The invariant either way: a run must replay under the scheme that minted its
123
+ * ids. A replay under the other scheme mints ids its own earlier events do not
124
+ * carry, so it can consume none of them and fails the run. Two things can break
125
+ * it, and both are about turning the flag on rather than about upgrading:
126
+ *
127
+ * - Enabling it while runs are in flight. On Vercel, skew protection keeps a run
128
+ * on the deployment that started it, so a run only ever sees the value baked
129
+ * into its own deployment. Elsewhere (world-postgres, world-local, a
130
+ * self-hosted process) nothing pins a run to the code that started it, so
131
+ * enable it during a quiet window.
132
+ * - A rolling deploy that leaves both values live, which puts two schemes on one
133
+ * run concurrently — the side-by-side append this whole mechanism exists to
134
+ * avoid. Roll the value out to the whole fleet at once.
135
+ */
136
+ export function isPerKindCorrelationIdsEnabled() {
137
+ return process.env.WORKFLOW_PER_KIND_CORRELATION_IDS === '1';
138
+ }
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ycmVsYXRpb24taWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29ycmVsYXRpb24taWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUF5RW5ELE1BQU0sU0FBUyxHQUFHLGtDQUFrQyxDQUFDO0FBRXJELG1FQUFtRTtBQUNuRSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFFdEIsc0VBQXNFO0FBQ3RFLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUV0QixTQUFTLEtBQUssQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsU0FBUyxNQUFNLENBQUMsS0FBYSxFQUFFLEtBQWE7SUFDMUMsT0FBTyxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELHNDQUFzQztBQUN0QyxTQUFTLE1BQU0sQ0FBQyxLQUFhO0lBQzNCLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLENBQUM7SUFDcEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3pCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6QixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsT0FBTyxDQUFDLEtBQWE7SUFDNUIsTUFBTSxLQUFLLEdBQXFDO1FBQzlDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7S0FDL0MsQ0FBQztJQUNGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLHdEQUF3RDtJQUN4RCxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7UUFDcEMsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2QyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxJQUFZLEVBQUUsSUFBdUI7SUFDdkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxxQkFBcUIsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRCxNQUFNLEtBQUssR0FBRztRQUNaLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUk7UUFDeEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSTtRQUN4QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJO1FBQ3ZCLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO1FBQ2YsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSTtRQUN4QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJO1FBQ3hCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUk7UUFDdkIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7UUFDZixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJO1FBQ3hCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUk7S0FDekIsQ0FBQztJQUNGLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNkLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztJQUNwQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLFdBQVcsR0FBRyxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ1YsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxXQUFXLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDaEQsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUQsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLDRCQUE0QixDQUFDLE9BVTVDO0lBQ0MsTUFBTSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUU5RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztJQUVwRCxPQUFPLENBQUMsSUFBdUIsRUFBRSxFQUFFO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsTUFBTSxJQUFJLEdBQ1IsUUFBUSxLQUFLLFNBQVM7WUFDcEIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkIsT0FBTyxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFVBQVUsR0FBRyxVQUFVLENBQUM7QUFFN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sVUFBVSw4QkFBOEI7SUFDNUMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxLQUFLLEdBQUcsQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW5jb2RlVGltZSwgaW5jcmVtZW50QmFzZTMyIH0gZnJvbSAndWxpZCc7XG5cbi8qKlxuICogQ29ycmVsYXRpb24taWQgZ2VuZXJhdGlvbiBmb3IgdGhlIGVudGl0eSBmYW1pbGllcyBhIHJlcGxheSBjYW4gY3JlYXRlLlxuICpcbiAqIENvcnJlbGF0aW9uIGlkcyBhcmUgbWludGVkIGJ5IHRoZSB3b3JrZmxvdyBWTSBhbmQgYXJlIHRoZSBzZXJ2ZXIncyBpZGVudGl0eVxuICogZ2F0ZTogYSBjb25kaXRpb25hbCBjcmVhdGUgb24gdGhlIGlkIGlzIHdoYXQgbWFrZXMgYSBkdXBsaWNhdGUgd3JpdGUgZnJvbSBhXG4gKiBzZWNvbmQgbGl2ZSByZXBsYXkgaWRlbXBvdGVudCBpbnN0ZWFkIG9mIGFkZGl0aXZlLiBUaGF0IG9ubHkgd29ya3MgaWYgdHdvXG4gKiByZXBsYXlzIG9mIHRoZSBzYW1lIHJ1biBtaW50IHRoZSBzYW1lIGlkIGZvciB0aGUgc2FtZSBlbnRpdHkuXG4gKlxuICogSGlzdG9yaWNhbGx5IGV2ZXJ5IGlkIHdhcyB0aGUgTnRoIGRyYXcgb2YgKm9uZSogbW9ub3RvbmljIFVMSUQgc2VxdWVuY2UgcGVyXG4gKiBydW4sIHNoYXJlZCBieSBzdGVwcywgd2FpdHMsIGhvb2tzLCBhdHRyaWJ1dGUgd3JpdGVzLCBhYm9ydCBjb250cm9sbGVycyBhbmRcbiAqIHN0cmVhbSBpZHMgYWxpa2UuIEV2ZXJ5IGlkIHdhcyB0aGVyZWZvcmUgYW4gb3JkaW5hbCBvdmVyIHRoZSB3aG9sZSBydW4sIGFuZCBhXG4gKiBzaW5nbGUgZXh0cmEgZHJhdyBvZiBhbnkga2luZCByZW51bWJlcmVkIGV2ZXJ5IGVudGl0eSBvZiBldmVyeSBraW5kIGFmdGVyIGl0LlxuICogVHdvIHJlcGxheXMgdGhhdCBhZ3JlZWQgYWJvdXQgZXZlcnkgc3RlcCBidXQgZGlzYWdyZWVkIGFib3V0IG9uZSBgc2xlZXAoKWBcbiAqIHdvdWxkIG1pbnQgZGlmZmVyZW50IGlkcyBmb3IgYWxsIHN1YnNlcXVlbnQgc3RlcHMsIHNvIHRoZWlyIHdyaXRlcyBhcHBlbmRlZFxuICogc2lkZSBieSBzaWRlIGluc3RlYWQgb2YgY29sbGlkaW5nLCBhbmQgdGhlIHNldHRsZWQgbG9nIGVuZGVkIHVwIGhvbGRpbmcgdHdvXG4gKiBuYW1lcyBmb3Igb25lIGxvZ2ljYWwgc3RlcC4gT25seSBvbmUgb2YgdGhlbSBjYW4gYmUgY29uc3VtZWQgb24gdGhlIG5leHRcbiAqIHJlcGxheTsgdGhlIG90aGVyIGlzIGZhdGFsIChgb25VbmNvbnN1bWVkRXZlbnRgKS5cbiAqXG4gKiBQZXIta2luZCBzb3VyY2VzIG5hcnJvdyB0aGF0IGNvdXBsaW5nIHRvIG9uZSBraW5kIGF0IGEgdGltZTogZWFjaCBmYW1pbHlcbiAqIGRyYXdzIGZyb20gaXRzIG93biBpbmRlcGVuZGVudCBpbmNyZW1lbnRpbmcgc2VxdWVuY2UsIHNvIGEgZGlzYWdyZWVtZW50IGFib3V0XG4gKiBob3cgbWFueSBob29rcyBvciBzbGVlcHMgd2VyZSBjcmVhdGVkIG5vIGxvbmdlciByZW5hbWVzIHN0ZXBzLlxuICpcbiAqIElkcyBzdGF5IHN5bnRhY3RpY2FsbHkgdmFsaWQgVUxJRHMgKDEwIENyb2NrZm9yZCBjaGFyYWN0ZXJzIG9mXG4gKiBgZml4ZWRUaW1lc3RhbXBgIHBsdXMgMTYgb2YgYm9keSksIGJlY2F1c2UgY29ycmVsYXRpb24gaWRzIGFyZSB2YWxpZGF0ZWQgYXNcbiAqIHByZWZpeGVkIDI2LWNoYXIgVUxJRHMgYnkgdGhlIGJhY2tlbmQsIGFuZCB0aGV5IHN0YXkgbW9ub3RvbmljICp3aXRoaW4qIGFcbiAqIGtpbmQsIGJlY2F1c2UgYGhvb2tzLmxpc3RgIGlzIG9yZGVyZWQgYnkgaG9vayBpZC5cbiAqXG4gKiBNb25vdG9uaWNpdHkgaXMgcGVyIGtpbmQsIGFuZCB0d28ga2luZHMgbWludCBgaG9va19gIGlkcyAoYGhvb2tgIGFuZFxuICogYGFib3J0SG9va2ApLCBzbyBsaXN0aW5nIG9yZGVyIGlzIG9ubHkgY3JlYXRpb24gb3JkZXIgKndpdGhpbiogZWFjaCBvZiB0aGVtLlxuICogTm8gd29ybGQgZmlsdGVycyBzeXN0ZW0gaG9va3Mgb3V0IG9mIGEgbGlzdGluZywgc28gYSBydW4gdGhhdCBjb25zdHJ1Y3RzIGFuXG4gKiBhYm9ydCBjb250cm9sbGVyIGFuZCBhbHNvIGNyZWF0ZXMgaXRzIG93biBob29rcyBsaXN0cyB0aGF0IHN5c3RlbSBob29rIGF0IGFcbiAqIHBvc2l0aW9uIGRlY2lkZWQgYnkgaXRzIGtpbmQncyBoYXNoIHJhdGhlciB0aGFuIGF0IGl0cyBjcmVhdGlvbiBwb3NpdGlvbi5cbiAqIE9yZGVyIGFtb25nIHRoZSB1c2VyJ3Mgb3duIGhvb2tzIGlzIHVuYWZmZWN0ZWQuXG4gKlxuICogVGhpcyBkb2VzIG5vdCBtYWtlIGlkcyBpbmRlcGVuZGVudCBvZiAqb3JkaW5hbCBwb3NpdGlvbiB3aXRoaW4gdGhlaXIgb3duXG4gKiBraW5kKjogdHdvIHJlcGxheXMgdGhhdCBkaXNhZ3JlZSBhYm91dCBob3cgbWFueSBzdGVwcyByYW4gc3RpbGwgbWludFxuICogZGlmZmVyZW50IGlkcyBmb3IgdGhlIG5leHQgc3RlcC4gVGhhdCBpcyBhIG5hcnJvd2VyIGZhaWx1cmUgdGhhbiB0aGUgc2hhcmVkXG4gKiBzZXF1ZW5jZSdzLCBub3QgYW4gZWxpbWluYXRlZCBvbmUuXG4gKi9cblxuLyoqIEVudGl0eSBmYW1pbGllcyB0aGF0IGRyYXcgY29ycmVsYXRpb24gaWRzLCBlYWNoIGZyb20gaXRzIG93biBzZXF1ZW5jZS4gKi9cbmV4cG9ydCB0eXBlIENvcnJlbGF0aW9uSWRLaW5kID1cbiAgLyoqIGBzdGVwX2AgaWRzLCBvbmUgcGVyIHN0ZXAgaW52b2NhdGlvbi4gKi9cbiAgfCAnc3RlcCdcbiAgLyoqIGB3YWl0X2AgaWRzLCBvbmUgcGVyIGBzbGVlcCgpYC4gKi9cbiAgfCAnd2FpdCdcbiAgLyoqIGBob29rX2AgaWRzIGZvciBob29rcyBjcmVhdGVkIGJ5IHdvcmtmbG93IGNvZGUuICovXG4gIHwgJ2hvb2snXG4gIC8qKiBgYXR0cl9gIGlkcywgb25lIHBlciBhdHRyaWJ1dGUgd3JpdGUuICovXG4gIHwgJ2F0dHInXG4gIC8qKlxuICAgKiBUaGUgYWJvcnQgY29udHJvbGxlcidzIG93biBpZCwgd2hpY2ggYmVjb21lcyBpdHMgc3RyZWFtIG5hbWUgYW5kIGhvb2tcbiAgICogdG9rZW4uIFNlcGFyYXRlIGZyb20gYGhvb2tgIHNvIGNvbnN0cnVjdGluZyBhbiBhYm9ydCBjb250cm9sbGVyIGRvZXMgbm90XG4gICAqIHJlbnVtYmVyIGxhdGVyIHVzZXIgaG9va3MuXG4gICAqL1xuICB8ICdhYm9ydCdcbiAgLyoqIGBob29rX2AgaWRzIGZvciB0aGUgaW50ZXJuYWwgc3lzdGVtIGhvb2sgYmFja2luZyBhbiBhYm9ydCBjb250cm9sbGVyLiAqL1xuICB8ICdhYm9ydEhvb2snXG4gIC8qKlxuICAgKiBJZHMgbWludGVkIGR1cmluZyBzZXJpYWxpemF0aW9uIChgU1RBQkxFX1VMSURgKTogc3RyZWFtIG5hbWVzLCBhbmQgYW4gYWJvcnRcbiAgICogaG9sZGVyJ3Mgc3RyZWFtIG5hbWUgYW5kIGBhYnJ0X2AgaG9vayB0b2tlbiB3aGVuIGl0IHJlYWNoZXMgc2VyaWFsaXphdGlvblxuICAgKiB3aXRob3V0IGFuIGlkZW50aXR5IHlldCAoYHJlZHVjZUFib3J0V2l0aExpc3RlbmVyYCksIHdoaWNoIGlzIHdoeSBgYWJvcnRgXG4gICAqIGFib3ZlIGlzIG5vdCB0aGUgb25seSBtaW50IHBhdGggZm9yIGFuIGFib3J0IGlkZW50aXR5LiBOb3QgY29ycmVsYXRpb24gaWRzLFxuICAgKiBidXQgdGhleSBkcmV3IGZyb20gdGhlIHNhbWUgc2hhcmVkIHNlcXVlbmNlLCBzbyBhIHdvcmtmbG93IHRoYXQgc2VyaWFsaXplZFxuICAgKiBhIHN0cmVhbSByZW51bWJlcmVkIGV2ZXJ5IGVudGl0eSBjcmVhdGVkIGFmdGVyIGl0LlxuICAgKi9cbiAgfCAnc3RyZWFtJztcblxuLyoqIE1pbnRzIHRoZSBVTElEIGJvZHkgb2YgYSBjb3JyZWxhdGlvbiBpZCBmb3Igb25lIGVudGl0eSBmYW1pbHkuICovXG5leHBvcnQgdHlwZSBDb3JyZWxhdGlvbklkR2VuZXJhdG9yID0gKGtpbmQ6IENvcnJlbGF0aW9uSWRLaW5kKSA9PiBzdHJpbmc7XG5cbmNvbnN0IENST0NLRk9SRCA9ICcwMTIzNDU2Nzg5QUJDREVGR0hKS01OUFFSU1RWV1hZWic7XG5cbi8qKiBOdW1iZXIgb2YgQ3JvY2tmb3JkIGNoYXJhY3RlcnMgaW4gYSBVTElEJ3MgcmFuZG9tIGNvbXBvbmVudC4gKi9cbmNvbnN0IEJPRFlfQ0hBUlMgPSAxNjtcblxuLyoqIE51bWJlciBvZiBDcm9ja2ZvcmQgY2hhcmFjdGVycyBpbiBhIFVMSUQncyB0aW1lc3RhbXAgY29tcG9uZW50LiAqL1xuY29uc3QgVElNRV9DSEFSUyA9IDEwO1xuXG5mdW5jdGlvbiBtdWwzMihhOiBudW1iZXIsIGI6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLmltdWwoYSwgYikgPj4+IDA7XG59XG5cbmZ1bmN0aW9uIHJvdGwzMih2YWx1ZTogbnVtYmVyLCBzaGlmdDogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuICgodmFsdWUgPDwgc2hpZnQpIHwgKHZhbHVlID4+PiAoMzIgLSBzaGlmdCkpKSA+Pj4gMDtcbn1cblxuLyoqIE11cm11ckhhc2gzJ3MgMzItYml0IGZpbmFsaXplci4gKi9cbmZ1bmN0aW9uIGZtaXgzMihpbnB1dDogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IGggPSBpbnB1dCA+Pj4gMDtcbiAgaCA9IChoIF4gKGggPj4+IDE2KSkgPj4+IDA7XG4gIGggPSBtdWwzMihoLCAweDg1ZWJjYTZiKTtcbiAgaCA9IChoIF4gKGggPj4+IDEzKSkgPj4+IDA7XG4gIGggPSBtdWwzMihoLCAweGMyYjJhZTM1KTtcbiAgcmV0dXJuIChoIF4gKGggPj4+IDE2KSkgPj4+IDA7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5pc3RpYyAxMjgtYml0IGhhc2ggb2YgYSBzdHJpbmcsIGFzIGZvdXIgMzItYml0IGxhbmVzLlxuICpcbiAqIEEgTXVybXVySGFzaDMtc3R5bGUgbWl4ZXIgb3ZlciBVVEYtMTYgY29kZSB1bml0cywgcm90YXRpbmcgd2hpY2ggbGFuZSBhYnNvcmJzXG4gKiBlYWNoIHVuaXQgYW5kIGRpZmZ1c2luZyBhY3Jvc3MgbGFuZXMgYXQgdGhlIGVuZC4gT25seSBkZXRlcm1pbmlzbSBhbmRcbiAqIGRpZmZ1c2lvbiBtYXR0ZXIgaGVyZTogdGhpcyBpcyBub3QgYSBjcnlwdG9ncmFwaGljIGhhc2gsIGNsYWltcyBub1xuICogYml0LWNvbXBhdGliaWxpdHkgd2l0aCBhbnkgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uLCBhbmQgbXVzdCBub3QgYmUgdXNlZCBmb3JcbiAqIGFueXRoaW5nIHRoYXQgb3V0bGl2ZXMgYSBkZXBsb3ltZW50J3MgcmVwbGF5cy5cbiAqL1xuZnVuY3Rpb24gaGFzaDEyOChpbnB1dDogc3RyaW5nKTogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICBjb25zdCBsYW5lczogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbXG4gICAgMHg5ZTM3NzliMSwgMHg4NWViY2E3NywgMHhjMmIyYWUzZCwgMHgyN2Q0ZWIyZixcbiAgXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGxldCBrID0gaW5wdXQuY2hhckNvZGVBdChpKSA+Pj4gMDtcbiAgICBrID0gbXVsMzIoaywgMHhjYzllMmQ1MSk7XG4gICAgayA9IHJvdGwzMihrLCAxNSk7XG4gICAgayA9IG11bDMyKGssIDB4MWI4NzM1OTMpO1xuICAgIGNvbnN0IGxhbmUgPSBpICYgMztcbiAgICBsZXQgaCA9IChsYW5lc1tsYW5lXSBeIGspID4+PiAwO1xuICAgIGggPSByb3RsMzIoaCwgMTMpO1xuICAgIGxhbmVzW2xhbmVdID0gKG11bDMyKGgsIDUpICsgMHhlNjU0NmI2NCkgPj4+IDA7XG4gIH1cbiAgbGFuZXNbMF0gPSAobGFuZXNbMF0gXiBpbnB1dC5sZW5ndGgpID4+PiAwO1xuICAvLyBUd28gcGFzc2VzIHNvIGV2ZXJ5IGxhbmUgZGVwZW5kcyBvbiBldmVyeSBvdGhlciBsYW5lLlxuICBmb3IgKGxldCBwYXNzID0gMDsgcGFzcyA8IDI7IHBhc3MrKykge1xuICAgIGZvciAobGV0IGxhbmUgPSAwOyBsYW5lIDwgNDsgbGFuZSsrKSB7XG4gICAgICBjb25zdCBwcmV2aW91cyA9IGxhbmVzWyhsYW5lICsgMykgJiAzXTtcbiAgICAgIGxhbmVzW2xhbmVdID0gZm1peDMyKChsYW5lc1tsYW5lXSBeIHByZXZpb3VzKSA+Pj4gMCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsYW5lcztcbn1cblxuLyoqXG4gKiBEZXJpdmVzIGEga2luZCdzIHN0YXJ0aW5nIGJvZHk6IDgwIGJpdHMgb2YgYSAxMjgtYml0IGhhc2ggYXMgMTYgQ3JvY2tmb3JkXG4gKiBjaGFyYWN0ZXJzLCBtb3N0IHNpZ25pZmljYW50IGZpcnN0LlxuICpcbiAqIFRoZSBsZWFkaW5nIGNoYXJhY3RlciBpcyBjb25maW5lZCB0byB0aGUgYWxwaGFiZXQncyBsb3dlciBoYWxmIHNvIHRoZSBib2R5XG4gKiBzdGFydHMgYmVsb3cgaGFsZiBvZiB0aGUgODAtYml0IHNwYWNlLiBgaW5jcmVtZW50QmFzZTMyYCB0aHJvd3Mgb24gb3ZlcmZsb3csXG4gKiBhbmQgd2l0aG91dCB0aGlzIGEgYmFzZSB0aGF0IGhhcHBlbmVkIHRvIGxhbmQgbmVhciBgWuKAplpgIHdvdWxkIG1ha2Ugb3ZlcmZsb3dcbiAqIHJlYWNoYWJsZSBhZnRlciBmZXcgZHJhd3MgcmF0aGVyIHRoYW4gYWZ0ZXIgMl43OSBvZiB0aGVtLlxuICovXG5mdW5jdGlvbiBkZXJpdmVCb2R5KHNlZWQ6IHN0cmluZywga2luZDogQ29ycmVsYXRpb25JZEtpbmQpOiBzdHJpbmcge1xuICBjb25zdCBsYW5lcyA9IGhhc2gxMjgoYCR7c2VlZH0gY29ycmVsYXRpb24ta2luZCAke2tpbmR9YCk7XG4gIGNvbnN0IGJ5dGVzID0gW1xuICAgIChsYW5lc1swXSA+Pj4gMjQpICYgMHhmZixcbiAgICAobGFuZXNbMF0gPj4+IDE2KSAmIDB4ZmYsXG4gICAgKGxhbmVzWzBdID4+PiA4KSAmIDB4ZmYsXG4gICAgbGFuZXNbMF0gJiAweGZmLFxuICAgIChsYW5lc1sxXSA+Pj4gMjQpICYgMHhmZixcbiAgICAobGFuZXNbMV0gPj4+IDE2KSAmIDB4ZmYsXG4gICAgKGxhbmVzWzFdID4+PiA4KSAmIDB4ZmYsXG4gICAgbGFuZXNbMV0gJiAweGZmLFxuICAgIChsYW5lc1syXSA+Pj4gMjQpICYgMHhmZixcbiAgICAobGFuZXNbMl0gPj4+IDE2KSAmIDB4ZmYsXG4gIF07XG4gIGxldCBib2R5ID0gJyc7XG4gIGxldCBhY2N1bXVsYXRvciA9IDA7XG4gIGxldCBiaXRzID0gMDtcbiAgZm9yIChjb25zdCBieXRlIG9mIGJ5dGVzKSB7XG4gICAgYWNjdW11bGF0b3IgPSAoKGFjY3VtdWxhdG9yIDw8IDgpIHwgYnl0ZSkgPj4+IDA7XG4gICAgYml0cyArPSA4O1xuICAgIHdoaWxlIChiaXRzID49IDUpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gKGFjY3VtdWxhdG9yID4+PiAoYml0cyAtIDUpKSAmIDMxO1xuICAgICAgYm9keSArPSBDUk9DS0ZPUkRbYm9keS5sZW5ndGggPT09IDAgPyBpbmRleCAmIDE1IDogaW5kZXhdO1xuICAgICAgYml0cyAtPSA1O1xuICAgIH1cbiAgfVxuICByZXR1cm4gYm9keTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSByZXBsYXkncyBjb3JyZWxhdGlvbi1pZCBnZW5lcmF0b3IuXG4gKlxuICogYHBlcktpbmQ6IGZhbHNlYCByZXR1cm5zIHRoZSBydW4ncyBzaW5nbGUgc2hhcmVkIG1vbm90b25pYyBzZXF1ZW5jZSBhbmRcbiAqIGlnbm9yZXMgdGhlIGtpbmQgZW50aXJlbHksIHNvIGJvdGggc2NoZW1lcyBnbyB0aHJvdWdoIG9uZSBjYWxsIHBhdGggYW5kIHRoZVxuICogZmxhZyBpcyB0aGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvcnJlbGF0aW9uSWRHZW5lcmF0b3Iob3B0aW9uczoge1xuICAvKipcbiAgICogVGhlIHJ1bidzIHJlcGxheS1zdGFibGUgc2VlZC4gTXVzdCBub3QgdmFyeSBiZXR3ZWVuIHJlcGxheXMgb2Ygb25lIHJ1biwgYW5kXG4gICAqIG11c3QgZGlmZmVyIGJldHdlZW4gcnVucywgb3IgdHdvIHJ1bnMgd291bGQgbWludCBpZGVudGljYWwgaWRzLlxuICAgKi9cbiAgc2VlZDogc3RyaW5nO1xuICBmaXhlZFRpbWVzdGFtcDogbnVtYmVyO1xuICAvKiogVGhlIHJ1bidzIHNoYXJlZCBtb25vdG9uaWMgc2VxdWVuY2UsIHVzZWQgYXMtaXMgd2hlbiBgcGVyS2luZGAgaXMgZmFsc2UuICovXG4gIHBvc2l0aW9uYWw6ICgpID0+IHN0cmluZztcbiAgcGVyS2luZDogYm9vbGVhbjtcbn0pOiBDb3JyZWxhdGlvbklkR2VuZXJhdG9yIHtcbiAgY29uc3QgeyBzZWVkLCBmaXhlZFRpbWVzdGFtcCwgcG9zaXRpb25hbCwgcGVyS2luZCB9ID0gb3B0aW9ucztcblxuICBpZiAoIXBlcktpbmQpIHtcbiAgICByZXR1cm4gcG9zaXRpb25hbDtcbiAgfVxuXG4gIGNvbnN0IHRpbWUgPSBlbmNvZGVUaW1lKGZpeGVkVGltZXN0YW1wLCBUSU1FX0NIQVJTKTtcbiAgY29uc3QgYm9kaWVzID0gbmV3IE1hcDxDb3JyZWxhdGlvbklkS2luZCwgc3RyaW5nPigpO1xuXG4gIHJldHVybiAoa2luZDogQ29ycmVsYXRpb25JZEtpbmQpID0+IHtcbiAgICBjb25zdCBwcmV2aW91cyA9IGJvZGllcy5nZXQoa2luZCk7XG4gICAgY29uc3QgYm9keSA9XG4gICAgICBwcmV2aW91cyA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gZGVyaXZlQm9keShzZWVkLCBraW5kKVxuICAgICAgICA6IGluY3JlbWVudEJhc2UzMihwcmV2aW91cyk7XG4gICAgYm9kaWVzLnNldChraW5kLCBib2R5KTtcbiAgICByZXR1cm4gYCR7dGltZX0ke2JvZHl9YDtcbiAgfTtcbn1cblxuLyoqIExlbmd0aCBvZiBhIFVMSUQsIGV4cG9ydGVkIHNvIHRlc3RzIG5lZWQgbm90IHJlc3RhdGUgaXQuICovXG5leHBvcnQgY29uc3QgQ09SUkVMQVRJT05fSURfTEVOR1RIID0gVElNRV9DSEFSUyArIEJPRFlfQ0hBUlM7XG5cbi8qKlxuICogV2hldGhlciBlYWNoIGVudGl0eSBmYW1pbHkgZHJhd3MgY29ycmVsYXRpb24gaWRzIGZyb20gaXRzIG93biBzZXF1ZW5jZSByYXRoZXJcbiAqIHRoYW4gZnJvbSBvbmUgc2VxdWVuY2Ugc2hhcmVkIGJ5IHRoZSB3aG9sZSBydW4uIE9mZiB1bmxlc3Mgb3B0ZWQgaW4sIHNvIGFuIFNES1xuICogdXBncmFkZSBhbG9uZSBuZXZlciBtb3ZlcyBhIHJ1biBiZXR3ZWVuIHNjaGVtZXMuXG4gKlxuICogVGhlIGludmFyaWFudCBlaXRoZXIgd2F5OiBhIHJ1biBtdXN0IHJlcGxheSB1bmRlciB0aGUgc2NoZW1lIHRoYXQgbWludGVkIGl0c1xuICogaWRzLiBBIHJlcGxheSB1bmRlciB0aGUgb3RoZXIgc2NoZW1lIG1pbnRzIGlkcyBpdHMgb3duIGVhcmxpZXIgZXZlbnRzIGRvIG5vdFxuICogY2FycnksIHNvIGl0IGNhbiBjb25zdW1lIG5vbmUgb2YgdGhlbSBhbmQgZmFpbHMgdGhlIHJ1bi4gVHdvIHRoaW5ncyBjYW4gYnJlYWtcbiAqIGl0LCBhbmQgYm90aCBhcmUgYWJvdXQgdHVybmluZyB0aGUgZmxhZyBvbiByYXRoZXIgdGhhbiBhYm91dCB1cGdyYWRpbmc6XG4gKlxuICogLSBFbmFibGluZyBpdCB3aGlsZSBydW5zIGFyZSBpbiBmbGlnaHQuIE9uIFZlcmNlbCwgc2tldyBwcm90ZWN0aW9uIGtlZXBzIGEgcnVuXG4gKiAgIG9uIHRoZSBkZXBsb3ltZW50IHRoYXQgc3RhcnRlZCBpdCwgc28gYSBydW4gb25seSBldmVyIHNlZXMgdGhlIHZhbHVlIGJha2VkXG4gKiAgIGludG8gaXRzIG93biBkZXBsb3ltZW50LiBFbHNld2hlcmUgKHdvcmxkLXBvc3RncmVzLCB3b3JsZC1sb2NhbCwgYVxuICogICBzZWxmLWhvc3RlZCBwcm9jZXNzKSBub3RoaW5nIHBpbnMgYSBydW4gdG8gdGhlIGNvZGUgdGhhdCBzdGFydGVkIGl0LCBzb1xuICogICBlbmFibGUgaXQgZHVyaW5nIGEgcXVpZXQgd2luZG93LlxuICogLSBBIHJvbGxpbmcgZGVwbG95IHRoYXQgbGVhdmVzIGJvdGggdmFsdWVzIGxpdmUsIHdoaWNoIHB1dHMgdHdvIHNjaGVtZXMgb24gb25lXG4gKiAgIHJ1biBjb25jdXJyZW50bHkg4oCUIHRoZSBzaWRlLWJ5LXNpZGUgYXBwZW5kIHRoaXMgd2hvbGUgbWVjaGFuaXNtIGV4aXN0cyB0b1xuICogICBhdm9pZC4gUm9sbCB0aGUgdmFsdWUgb3V0IHRvIHRoZSB3aG9sZSBmbGVldCBhdCBvbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQZXJLaW5kQ29ycmVsYXRpb25JZHNFbmFibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuV09SS0ZMT1dfUEVSX0tJTkRfQ09SUkVMQVRJT05fSURTID09PSAnMSc7XG59XG4iXX0=
@@ -1,3 +1,5 @@
1
+ import type { StringValue } from 'ms';
2
+ import type { Run } from './runtime/run.js';
1
3
  import type { Serializable } from './schemas.js';
2
4
  /**
3
5
  * An object that can be awaited to receive a value.
@@ -24,6 +26,30 @@ export interface Hook<T = any> extends AsyncIterable<T>, Thenable<T> {
24
26
  * The token used to identify this hook.
25
27
  */
26
28
  token: string;
29
+ /**
30
+ * Returns the {@link Run} already using this token, or `null` when this Hook
31
+ * registers successfully.
32
+ *
33
+ * Calling `createHook()` alone does not register the hook — registration
34
+ * only happens when the workflow suspends. Awaiting `getConflict()`
35
+ * suspends the workflow to commit the hook registration without waiting for
36
+ * payload data.
37
+ *
38
+ * If it returns a run, this Hook was not created. Awaiting the Hook instead
39
+ * rejects with `HookConflictError`.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * using hook = createHook({ token: `order:${orderId}` });
44
+ * const conflict = await hook.getConflict();
45
+ * if (conflict) {
46
+ * // another run already owns this token
47
+ * return { status: 'duplicate', runId: conflict.runId };
48
+ * }
49
+ * // this Hook registered without waiting for payload data
50
+ * ```
51
+ */
52
+ getConflict(): Promise<Run<unknown> | null>;
27
53
  /**
28
54
  * Disposes the hook, releasing its token for reuse by other workflows.
29
55
  *
@@ -86,7 +112,9 @@ export interface HookOptions {
86
112
  * tokens are always randomly generated to prevent unauthorized access
87
113
  * to the public webhook endpoint.
88
114
  *
89
- * If not provided, a randomly generated token will be assigned.
115
+ * If provided, the token must be a non-empty string; passing an empty
116
+ * string throws. If not provided (or `undefined`), a randomly generated
117
+ * token will be assigned.
90
118
  *
91
119
  * @example
92
120
  *
@@ -98,6 +126,36 @@ export interface HookOptions {
98
126
  * ```
99
127
  */
100
128
  token?: string;
129
+ /**
130
+ * **Experimental.** Keeps this Hook's token unavailable for at least the
131
+ * configured time after `createHook()` runs.
132
+ *
133
+ * Accepts the same values as `sleep()`: a duration string, a number of
134
+ * milliseconds, or an absolute `Date`. Relative durations start when
135
+ * `createHook()` runs, not when the workflow ends.
136
+ *
137
+ * The Hook remains active until the workflow ends, even if the configured
138
+ * time passes first. Another Hook can use the token only after both the run
139
+ * has ended and the configured time has passed.
140
+ * After the run ends, the Hook can still be found with `getHookByToken()`
141
+ * until retention ends, but it cannot be resumed.
142
+ *
143
+ * Calling `dispose()` (including through `using`) releases the token
144
+ * immediately.
145
+ *
146
+ * `createHook()` throws if the configured World does not support this
147
+ * experimental option.
148
+ *
149
+ * @example
150
+ *
151
+ * ```ts
152
+ * const hook = createHook({
153
+ * token: `order:${orderId}`,
154
+ * experimental_minRetention: '30d',
155
+ * });
156
+ * ```
157
+ */
158
+ experimental_minRetention?: StringValue | Date | number;
101
159
  /**
102
160
  * Additional user-defined data to include with the hook payload.
103
161
  *
@@ -117,8 +175,8 @@ export interface HookOptions {
117
175
  * Whether this hook can be resumed via the public webhook endpoint.
118
176
  *
119
177
  * When `true`, the hook can be triggered by sending an HTTP request to the
120
- * public `/.well-known/workflow/v1/webhook/{token}` URL. This is automatically
121
- * set when using `createWebhook()`.
178
+ * public workflow webhook URL. This is automatically set when using
179
+ * `createWebhook()`.
122
180
  *
123
181
  * When `false` (the default), the hook can only be resumed server-side
124
182
  * via `resumeHook()`.
@@ -127,7 +185,7 @@ export interface HookOptions {
127
185
  */
128
186
  isWebhook?: boolean;
129
187
  }
130
- export interface WebhookOptions extends Omit<HookOptions, 'token' | 'isWebhook'> {
188
+ export interface WebhookOptions extends Omit<HookOptions, 'token' | 'isWebhook' | 'experimental_minRetention'> {
131
189
  /**
132
190
  * If set to a `Response` object, the webhook will automatically
133
191
  * respond with the specified response.
@@ -1 +1 @@
1
- {"version":3,"file":"create-hook.d.ts","sourceRoot":"","sources":["../src/create-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD;;GAEG;AACH,UAAU,QAAQ,CAAC,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,OAAO;IAClD,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;;;;;;;;;;;OAYG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,IAAI,CAAC,CAAC,CAAC;IACzD;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IAExB;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,WAAW,CAAC;IAChD;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,wBAAgB,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAIlE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,GAAG;IAAE,WAAW,EAAE,QAAQ,CAAA;CAAE,GAClD,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAChC,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"create-hook.d.ts","sourceRoot":"","sources":["../src/create-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAEtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD;;GAEG;AACH,UAAU,QAAQ,CAAC,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,OAAO;IAClD,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAE5C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;;;;;;;;;;;OAYG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,IAAI,CAAC,CAAC,CAAC;IACzD;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,yBAAyB,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC;IAExD;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IAExB;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cACf,SAAQ,IAAI,CACV,WAAW,EACX,OAAO,GAAG,WAAW,GAAG,2BAA2B,CACpD;IACD;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,wBAAgB,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAMlE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,GAAG;IAAE,WAAW,EAAE,QAAQ,CAAA;CAAE,GAClD,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAChC,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { throwNotInWorkflowContext } from './context-errors.js';
1
2
  /**
2
3
  * Creates a {@link Hook} that can be used to suspend and resume the workflow run with a payload.
3
4
  *
@@ -22,11 +23,11 @@
22
23
  */
23
24
  // @ts-expect-error `options` is here for types/docs
24
25
  export function createHook(options) {
25
- throw new Error('`createHook()` can only be called inside a workflow function');
26
+ throwNotInWorkflowContext('createHook()', 'https://workflow-sdk.dev/docs/api-reference/workflow/create-hook', createHook);
26
27
  }
27
28
  export function createWebhook(
28
29
  // @ts-expect-error `options` is here for types/docs
29
30
  options) {
30
- throw new Error('`createWebhook()` can only be called inside a workflow function');
31
+ throwNotInWorkflowContext('createWebhook()', 'https://workflow-sdk.dev/docs/api-reference/workflow/create-webhook', createWebhook);
31
32
  }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY3JlYXRlLWhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkpBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxvREFBb0Q7QUFDcEQsTUFBTSxVQUFVLFVBQVUsQ0FBVSxPQUFxQjtJQUN2RCxNQUFNLElBQUksS0FBSyxDQUNiLDhEQUE4RCxDQUMvRCxDQUFDO0FBQ0osQ0FBQztBQWFELE1BQU0sVUFBVSxhQUFhO0FBQzNCLG9EQUFvRDtBQUNwRCxPQUF3QjtJQUV4QixNQUFNLElBQUksS0FBSyxDQUNiLGlFQUFpRSxDQUNsRSxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2VyaWFsaXphYmxlIH0gZnJvbSAnLi9zY2hlbWFzLmpzJztcblxuLyoqXG4gKiBBbiBvYmplY3QgdGhhdCBjYW4gYmUgYXdhaXRlZCB0byByZWNlaXZlIGEgdmFsdWUuXG4gKi9cbmludGVyZmFjZSBUaGVuYWJsZTxUPiB7XG4gIHRoZW46IFByb21pc2U8VD5bJ3RoZW4nXTtcbn1cblxuLyoqXG4gKiBBIGBSZXF1ZXN0YCB0aGF0IGNhbiBiZSByZXNwb25kZWQgdG8gd2l0aGluIGEgd29ya2Zsb3dcbiAqIHN0ZXAgZnVuY3Rpb24gYnkgY2FsbGluZyB0aGUgYHJlc3BvbmRXaXRoKClgIG1ldGhvZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0V2l0aFJlc3BvbnNlIGV4dGVuZHMgUmVxdWVzdCB7XG4gIHJlc3BvbmRXaXRoOiAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIEEgaG9vayB0aGF0IGNhbiBiZSBhd2FpdGVkIGFuZC9vciBpdGVyYXRlZCBvdmVyIHRvIHJlY2VpdmVcbiAqIGEgdmFsdWUgd2l0aGluIGEgd29ya2Zsb3cgZnJvbSBhbiBleHRlcm5hbCBzeXN0ZW0uXG4gKlxuICogSG9va3MgaW1wbGVtZW50IHRoZSBUQzM5IEV4cGxpY2l0IFJlc291cmNlIE1hbmFnZW1lbnQgcHJvcG9zYWwsXG4gKiBhbGxvd2luZyB0aGVtIHRvIGJlIHVzZWQgd2l0aCB0aGUgYHVzaW5nYCBrZXl3b3JkIGZvciBhdXRvbWF0aWMgZGlzcG9zYWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSG9vazxUID0gYW55PiBleHRlbmRzIEFzeW5jSXRlcmFibGU8VD4sIFRoZW5hYmxlPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSB0b2tlbiB1c2VkIHRvIGlkZW50aWZ5IHRoaXMgaG9vay5cbiAgICovXG4gIHRva2VuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERpc3Bvc2VzIHRoZSBob29rLCByZWxlYXNpbmcgaXRzIHRva2VuIGZvciByZXVzZSBieSBvdGhlciB3b3JrZmxvd3MuXG4gICAqXG4gICAqIEFmdGVyIGNhbGxpbmcgYGRpc3Bvc2UoKWAsIHRoZSBob29rIHdpbGwgbm8gbG9uZ2VyIHJlY2VpdmUgYW55IGV2ZW50cy5cbiAgICogVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBleHBsaWNpdGx5IHJlbGVhc2UgYSBob29rIHRva2VuIGJlZm9yZVxuICAgKiB0aGUgd29ya2Zsb3cgY29tcGxldGVzLCBhbGxvd2luZyBhbm90aGVyIHdvcmtmbG93IHRvIHJlZ2lzdGVyIGEgaG9va1xuICAgKiB3aXRoIHRoZSBzYW1lIHRva2VuLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBjb25zdCBob29rID0gY3JlYXRlSG9vazx7IG1lc3NhZ2U6IHN0cmluZyB9Pih7IHRva2VuOiAnbXktdG9rZW4nIH0pO1xuICAgKlxuICAgKiBmb3IgYXdhaXQgKGNvbnN0IHBheWxvYWQgb2YgaG9vaykge1xuICAgKiAgIGlmIChwYXlsb2FkLm1lc3NhZ2UgPT09ICdkb25lJykge1xuICAgKiAgICAgaG9vay5kaXNwb3NlKCk7IC8vIFJlbGVhc2UgdGhlIHRva2VuIGVhcmx5XG4gICAqICAgICBicmVhaztcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBkaXNwb3NlKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudHMgdGhlIFRDMzkgRXhwbGljaXQgUmVzb3VyY2UgTWFuYWdlbWVudCBwcm9wb3NhbC5cbiAgICogQ2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB1c2luZyB0aGUgYHVzaW5nYCBrZXl3b3JkLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB7XG4gICAqICAgdXNpbmcgaG9vayA9IGNyZWF0ZUhvb2s8eyBtZXNzYWdlOiBzdHJpbmcgfT4oeyB0b2tlbjogJ215LXRva2VuJyB9KTtcbiAgICogICBjb25zdCBwYXlsb2FkID0gYXdhaXQgaG9vaztcbiAgICogICAvLyBob29rIGlzIGF1dG9tYXRpY2FsbHkgZGlzcG9zZWQgd2hlbiB0aGUgYmxvY2sgZXhpdHNcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIFtTeW1ib2wuZGlzcG9zZV0oKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIHdlYmhvb2sgdGhhdCBjYW4gYmUgdXNlZCB0byBzdXNwZW5kIGFuZCByZXN1bWUgdGhlIHdvcmtmbG93IHJ1blxuICogdXBvbiByZWNlaXZpbmcgYW4gSFRUUCByZXF1ZXN0IHRvIHRoZSBzcGVjaWZpZWQgVVJMLlxuICpcbiAqIEBzZWUge0BsaW5rIGNyZWF0ZVdlYmhvb2t9XG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9SZXF1ZXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2ViaG9vazxUIGV4dGVuZHMgUmVxdWVzdD4gZXh0ZW5kcyBIb29rPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBVUkwgdGhhdCBleHRlcm5hbCBzeXN0ZW1zIGNhbiBjYWxsIHRvIHNlbmQgZGF0YSB0byB0aGUgd29ya2Zsb3cuXG4gICAqL1xuICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIb29rT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBVbmlxdWUgdG9rZW4gdGhhdCBpcyB1c2VkIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBob29rLlxuICAgKlxuICAgKiBXaGVuIHNwZWNpZnlpbmcgYW4gZXhwbGljaXQgdG9rZW4sIHRoZSB0b2tlbiBzaG91bGQgYmUgY29uc3RydWN0ZWRcbiAgICogd2l0aCBpbmZvcm1hdGlvbiB0aGF0IHRoZSBkaXNwYXRjaGluZyBzaWRlIGNhbiByZWxpYWJseSByZWNvbnN0cnVjdFxuICAgKiB0aGUgdG9rZW4gd2l0aCB0aGUgaW5mb3JtYXRpb24gaXQgaGFzIGF2YWlsYWJsZS5cbiAgICpcbiAgICogRGV0ZXJtaW5pc3RpYyB0b2tlbnMgYXJlIGludGVuZGVkIGZvciB1c2Ugd2l0aCBgY3JlYXRlSG9vaygpYCBhbmRcbiAgICogc2VydmVyLXNpZGUgYHJlc3VtZUhvb2soKWAgb25seS4gRm9yIHdlYmhvb2tzIChgY3JlYXRlV2ViaG9vaygpYCksXG4gICAqIHRva2VucyBhcmUgYWx3YXlzIHJhbmRvbWx5IGdlbmVyYXRlZCB0byBwcmV2ZW50IHVuYXV0aG9yaXplZCBhY2Nlc3NcbiAgICogdG8gdGhlIHB1YmxpYyB3ZWJob29rIGVuZHBvaW50LlxuICAgKlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIGEgcmFuZG9tbHkgZ2VuZXJhdGVkIHRva2VuIHdpbGwgYmUgYXNzaWduZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIC8vIEV4cGxpY2l0IHRva2VuIGZvciBhIFNsYWNrIGJvdCAob25lIHdvcmtmbG93IHJ1biBwZXIgY2hhbm5lbClcbiAgICogY29uc3QgaG9vayA9IGNyZWF0ZUhvb2s8U2xhY2tNZXNzYWdlPih7XG4gICAqICAgdG9rZW46IGBzbGFja193ZWJob29rOiR7Y2hhbm5lbElkfWAsXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHRva2VuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHVzZXItZGVmaW5lZCBkYXRhIHRvIGluY2x1ZGUgd2l0aCB0aGUgaG9vayBwYXlsb2FkLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBjb25zdCBob29rID0gY3JlYXRlSG9vazx7IG5hbWU6IHN0cmluZyB9Pih7XG4gICAqICAgbWV0YWRhdGE6IHtcbiAgICogICAgIHR5cGU6IFwiY2F0XCIsXG4gICAqICAgICBjb2xvcjogXCJvcmFuZ2VcIixcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBtZXRhZGF0YT86IFNlcmlhbGl6YWJsZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGhvb2sgY2FuIGJlIHJlc3VtZWQgdmlhIHRoZSBwdWJsaWMgd2ViaG9vayBlbmRwb2ludC5cbiAgICpcbiAgICogV2hlbiBgdHJ1ZWAsIHRoZSBob29rIGNhbiBiZSB0cmlnZ2VyZWQgYnkgc2VuZGluZyBhbiBIVFRQIHJlcXVlc3QgdG8gdGhlXG4gICAqIHB1YmxpYyBgLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL3dlYmhvb2sve3Rva2VufWAgVVJMLiBUaGlzIGlzIGF1dG9tYXRpY2FsbHlcbiAgICogc2V0IHdoZW4gdXNpbmcgYGNyZWF0ZVdlYmhvb2soKWAuXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCAodGhlIGRlZmF1bHQpLCB0aGUgaG9vayBjYW4gb25seSBiZSByZXN1bWVkIHNlcnZlci1zaWRlXG4gICAqIHZpYSBgcmVzdW1lSG9vaygpYC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGlzV2ViaG9vaz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2ViaG9va09wdGlvbnNcbiAgZXh0ZW5kcyBPbWl0PEhvb2tPcHRpb25zLCAndG9rZW4nIHwgJ2lzV2ViaG9vayc+IHtcbiAgLyoqXG4gICAqIElmIHNldCB0byBhIGBSZXNwb25zZWAgb2JqZWN0LCB0aGUgd2ViaG9vayB3aWxsIGF1dG9tYXRpY2FsbHlcbiAgICogcmVzcG9uZCB3aXRoIHRoZSBzcGVjaWZpZWQgcmVzcG9uc2UuXG4gICAqXG4gICAqIElmIHNldCB0byBgXCJtYW51YWxcImAsIGVhY2ggaW5kaXZpZHVhbCByZXF1ZXN0IHdpbGwgbmVlZCB0b1xuICAgKiBiZSByZXNwb25kZWQgdG8gbWFudWFsbHkgZnJvbSB3aXRoaW4gdGhlIHdvcmtmbG93IGJ5IGNhbGxpbmcgdGhlXG4gICAqIGByZXNwb25kV2l0aCgpYCBtZXRob2QuXG4gICAqXG4gICAqIElmIG5vdCBzZXQgdGhlbiB0aGUgd2ViaG9vayB3aWxsIGF1dG9tYXRpY2FsbHkgcmVzcG9uZCB3aXRoXG4gICAqIGEgYDIwMiBBY2NlcHRlZGAgcmVzcG9uc2UuXG4gICAqL1xuICByZXNwb25kV2l0aD86IFJlc3BvbnNlIHwgJ21hbnVhbCc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHtAbGluayBIb29rfSB0aGF0IGNhbiBiZSB1c2VkIHRvIHN1c3BlbmQgYW5kIHJlc3VtZSB0aGUgd29ya2Zsb3cgcnVuIHdpdGggYSBwYXlsb2FkLlxuICpcbiAqIEhvb2tzIGFsbG93IGV4dGVybmFsIHN5c3RlbXMgdG8gc2VuZCBhcmJpdHJhcnkgc2VyaWFsaXphYmxlIGRhdGEgaW50byBhIHdvcmtmbG93LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgaG9vay5cbiAqIEByZXR1cm5zIEEgYEhvb2tgIHRoYXQgY2FuIGJlIGF3YWl0ZWQgdG8gcmVjZWl2ZSBvbmUgb3IgbW9yZSBwYXlsb2Fkcy5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYHRzXG4gKiBleHBvcnQgYXN5bmMgZnVuY3Rpb24gd29ya2Zsb3dXaXRoSG9vaygpIHtcbiAqICAgXCJ1c2Ugd29ya2Zsb3dcIjtcbiAqXG4gKiAgIGNvbnN0IGhvb2sgPSBjcmVhdGVIb29rPHsgbWVzc2FnZTogc3RyaW5nIH0+KCk7XG4gKiAgIGNvbnNvbGUubG9nKCdIb29rIHRva2VuOicsIGhvb2sudG9rZW4pO1xuICpcbiAqICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGhvb2s7XG4gKiAgIGNvbnNvbGUubG9nKCdSZWNlaXZlZDonLCBwYXlsb2FkLm1lc3NhZ2UpO1xuICogfVxuICogYGBgXG4gKi9cbi8vIEB0cy1leHBlY3QtZXJyb3IgYG9wdGlvbnNgIGlzIGhlcmUgZm9yIHR5cGVzL2RvY3NcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVIb29rPFQgPSBhbnk+KG9wdGlvbnM/OiBIb29rT3B0aW9ucyk6IEhvb2s8VD4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ2BjcmVhdGVIb29rKClgIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgYSB3b3JrZmxvdyBmdW5jdGlvbidcbiAgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEge0BsaW5rIFdlYmhvb2t9IHRoYXQgY2FuIGJlIHVzZWQgdG8gc3VzcGVuZCBhbmQgcmVzdW1lIHRoZSB3b3JrZmxvd1xuICogcnVuIHVwb24gcmVjZWl2aW5nIGFuIEhUVFAgcmVxdWVzdCB0byB0aGUgc3BlY2lmaWVkIFVSTC5cbiAqXG4gKiBXZWJob29rcyB3aWxsIHJlc3VsdCBpbiBhIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUmVxdWVzdCB8IFJlcXVlc3R9IG9iamVjdFxuICogdGhhdCBjYW4gYmUgaW50ZXJhY3RlZCB3aXRoIGluIHdvcmtmbG93IGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdlYmhvb2soXG4gIG9wdGlvbnM6IFdlYmhvb2tPcHRpb25zICYgeyByZXNwb25kV2l0aDogJ21hbnVhbCcgfVxuKTogV2ViaG9vazxSZXF1ZXN0V2l0aFJlc3BvbnNlPjtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXZWJob29rKG9wdGlvbnM/OiBXZWJob29rT3B0aW9ucyk6IFdlYmhvb2s8UmVxdWVzdD47XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV2ViaG9vayhcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBgb3B0aW9uc2AgaXMgaGVyZSBmb3IgdHlwZXMvZG9jc1xuICBvcHRpb25zPzogV2ViaG9va09wdGlvbnNcbik6IFdlYmhvb2s8UmVxdWVzdD4gfCBXZWJob29rPFJlcXVlc3RXaXRoUmVzcG9uc2U+IHtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgICdgY3JlYXRlV2ViaG9vaygpYCBjYW4gb25seSBiZSBjYWxsZWQgaW5zaWRlIGEgd29ya2Zsb3cgZnVuY3Rpb24nXG4gICk7XG59XG4iXX0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY3JlYXRlLWhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUEwTmhFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxvREFBb0Q7QUFDcEQsTUFBTSxVQUFVLFVBQVUsQ0FBVSxPQUFxQjtJQUN2RCx5QkFBeUIsQ0FDdkIsY0FBYyxFQUNkLGtFQUFrRSxFQUNsRSxVQUFVLENBQ1gsQ0FBQztBQUNKLENBQUM7QUFhRCxNQUFNLFVBQVUsYUFBYTtBQUMzQixvREFBb0Q7QUFDcEQsT0FBd0I7SUFFeEIseUJBQXlCLENBQ3ZCLGlCQUFpQixFQUNqQixxRUFBcUUsRUFDckUsYUFBYSxDQUNkLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdHJpbmdWYWx1ZSB9IGZyb20gJ21zJztcbmltcG9ydCB7IHRocm93Tm90SW5Xb3JrZmxvd0NvbnRleHQgfSBmcm9tICcuL2NvbnRleHQtZXJyb3JzLmpzJztcbmltcG9ydCB0eXBlIHsgUnVuIH0gZnJvbSAnLi9ydW50aW1lL3J1bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNlcmlhbGl6YWJsZSB9IGZyb20gJy4vc2NoZW1hcy5qcyc7XG5cbi8qKlxuICogQW4gb2JqZWN0IHRoYXQgY2FuIGJlIGF3YWl0ZWQgdG8gcmVjZWl2ZSBhIHZhbHVlLlxuICovXG5pbnRlcmZhY2UgVGhlbmFibGU8VD4ge1xuICB0aGVuOiBQcm9taXNlPFQ+Wyd0aGVuJ107XG59XG5cbi8qKlxuICogQSBgUmVxdWVzdGAgdGhhdCBjYW4gYmUgcmVzcG9uZGVkIHRvIHdpdGhpbiBhIHdvcmtmbG93XG4gKiBzdGVwIGZ1bmN0aW9uIGJ5IGNhbGxpbmcgdGhlIGByZXNwb25kV2l0aCgpYCBtZXRob2QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdFdpdGhSZXNwb25zZSBleHRlbmRzIFJlcXVlc3Qge1xuICByZXNwb25kV2l0aDogKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBBIGhvb2sgdGhhdCBjYW4gYmUgYXdhaXRlZCBhbmQvb3IgaXRlcmF0ZWQgb3ZlciB0byByZWNlaXZlXG4gKiBhIHZhbHVlIHdpdGhpbiBhIHdvcmtmbG93IGZyb20gYW4gZXh0ZXJuYWwgc3lzdGVtLlxuICpcbiAqIEhvb2tzIGltcGxlbWVudCB0aGUgVEMzOSBFeHBsaWNpdCBSZXNvdXJjZSBNYW5hZ2VtZW50IHByb3Bvc2FsLFxuICogYWxsb3dpbmcgdGhlbSB0byBiZSB1c2VkIHdpdGggdGhlIGB1c2luZ2Aga2V5d29yZCBmb3IgYXV0b21hdGljIGRpc3Bvc2FsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvb2s8VCA9IGFueT4gZXh0ZW5kcyBBc3luY0l0ZXJhYmxlPFQ+LCBUaGVuYWJsZTxUPiB7XG4gIC8qKlxuICAgKiBUaGUgdG9rZW4gdXNlZCB0byBpZGVudGlmeSB0aGlzIGhvb2suXG4gICAqL1xuICB0b2tlbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB7QGxpbmsgUnVufSBhbHJlYWR5IHVzaW5nIHRoaXMgdG9rZW4sIG9yIGBudWxsYCB3aGVuIHRoaXMgSG9va1xuICAgKiByZWdpc3RlcnMgc3VjY2Vzc2Z1bGx5LlxuICAgKlxuICAgKiBDYWxsaW5nIGBjcmVhdGVIb29rKClgIGFsb25lIGRvZXMgbm90IHJlZ2lzdGVyIHRoZSBob29rIOKAlCByZWdpc3RyYXRpb25cbiAgICogb25seSBoYXBwZW5zIHdoZW4gdGhlIHdvcmtmbG93IHN1c3BlbmRzLiBBd2FpdGluZyBgZ2V0Q29uZmxpY3QoKWBcbiAgICogc3VzcGVuZHMgdGhlIHdvcmtmbG93IHRvIGNvbW1pdCB0aGUgaG9vayByZWdpc3RyYXRpb24gd2l0aG91dCB3YWl0aW5nIGZvclxuICAgKiBwYXlsb2FkIGRhdGEuXG4gICAqXG4gICAqIElmIGl0IHJldHVybnMgYSBydW4sIHRoaXMgSG9vayB3YXMgbm90IGNyZWF0ZWQuIEF3YWl0aW5nIHRoZSBIb29rIGluc3RlYWRcbiAgICogcmVqZWN0cyB3aXRoIGBIb29rQ29uZmxpY3RFcnJvcmAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHVzaW5nIGhvb2sgPSBjcmVhdGVIb29rKHsgdG9rZW46IGBvcmRlcjoke29yZGVySWR9YCB9KTtcbiAgICogY29uc3QgY29uZmxpY3QgPSBhd2FpdCBob29rLmdldENvbmZsaWN0KCk7XG4gICAqIGlmIChjb25mbGljdCkge1xuICAgKiAgIC8vIGFub3RoZXIgcnVuIGFscmVhZHkgb3ducyB0aGlzIHRva2VuXG4gICAqICAgcmV0dXJuIHsgc3RhdHVzOiAnZHVwbGljYXRlJywgcnVuSWQ6IGNvbmZsaWN0LnJ1bklkIH07XG4gICAqIH1cbiAgICogLy8gdGhpcyBIb29rIHJlZ2lzdGVyZWQgd2l0aG91dCB3YWl0aW5nIGZvciBwYXlsb2FkIGRhdGFcbiAgICogYGBgXG4gICAqL1xuICBnZXRDb25mbGljdCgpOiBQcm9taXNlPFJ1bjx1bmtub3duPiB8IG51bGw+O1xuXG4gIC8qKlxuICAgKiBEaXNwb3NlcyB0aGUgaG9vaywgcmVsZWFzaW5nIGl0cyB0b2tlbiBmb3IgcmV1c2UgYnkgb3RoZXIgd29ya2Zsb3dzLlxuICAgKlxuICAgKiBBZnRlciBjYWxsaW5nIGBkaXNwb3NlKClgLCB0aGUgaG9vayB3aWxsIG5vIGxvbmdlciByZWNlaXZlIGFueSBldmVudHMuXG4gICAqIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IHdhbnQgdG8gZXhwbGljaXRseSByZWxlYXNlIGEgaG9vayB0b2tlbiBiZWZvcmVcbiAgICogdGhlIHdvcmtmbG93IGNvbXBsZXRlcywgYWxsb3dpbmcgYW5vdGhlciB3b3JrZmxvdyB0byByZWdpc3RlciBhIGhvb2tcbiAgICogd2l0aCB0aGUgc2FtZSB0b2tlbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogY29uc3QgaG9vayA9IGNyZWF0ZUhvb2s8eyBtZXNzYWdlOiBzdHJpbmcgfT4oeyB0b2tlbjogJ215LXRva2VuJyB9KTtcbiAgICpcbiAgICogZm9yIGF3YWl0IChjb25zdCBwYXlsb2FkIG9mIGhvb2spIHtcbiAgICogICBpZiAocGF5bG9hZC5tZXNzYWdlID09PSAnZG9uZScpIHtcbiAgICogICAgIGhvb2suZGlzcG9zZSgpOyAvLyBSZWxlYXNlIHRoZSB0b2tlbiBlYXJseVxuICAgKiAgICAgYnJlYWs7XG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZGlzcG9zZSgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIHRoZSBUQzM5IEV4cGxpY2l0IFJlc291cmNlIE1hbmFnZW1lbnQgcHJvcG9zYWwuXG4gICAqIENhbGxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdXNpbmcgdGhlIGB1c2luZ2Aga2V5d29yZC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICoge1xuICAgKiAgIHVzaW5nIGhvb2sgPSBjcmVhdGVIb29rPHsgbWVzc2FnZTogc3RyaW5nIH0+KHsgdG9rZW46ICdteS10b2tlbicgfSk7XG4gICAqICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGhvb2s7XG4gICAqICAgLy8gaG9vayBpcyBhdXRvbWF0aWNhbGx5IGRpc3Bvc2VkIHdoZW4gdGhlIGJsb2NrIGV4aXRzXG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBbU3ltYm9sLmRpc3Bvc2VdKCk6IHZvaWQ7XG59XG5cbi8qKlxuICogQSB3ZWJob29rIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3VzcGVuZCBhbmQgcmVzdW1lIHRoZSB3b3JrZmxvdyBydW5cbiAqIHVwb24gcmVjZWl2aW5nIGFuIEhUVFAgcmVxdWVzdCB0byB0aGUgc3BlY2lmaWVkIFVSTC5cbiAqXG4gKiBAc2VlIHtAbGluayBjcmVhdGVXZWJob29rfVxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUmVxdWVzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdlYmhvb2s8VCBleHRlbmRzIFJlcXVlc3Q+IGV4dGVuZHMgSG9vazxUPiB7XG4gIC8qKlxuICAgKiBUaGUgVVJMIHRoYXQgZXh0ZXJuYWwgc3lzdGVtcyBjYW4gY2FsbCB0byBzZW5kIGRhdGEgdG8gdGhlIHdvcmtmbG93LlxuICAgKi9cbiAgdXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG9va09wdGlvbnMge1xuICAvKipcbiAgICogVW5pcXVlIHRva2VuIHRoYXQgaXMgdXNlZCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgaG9vay5cbiAgICpcbiAgICogV2hlbiBzcGVjaWZ5aW5nIGFuIGV4cGxpY2l0IHRva2VuLCB0aGUgdG9rZW4gc2hvdWxkIGJlIGNvbnN0cnVjdGVkXG4gICAqIHdpdGggaW5mb3JtYXRpb24gdGhhdCB0aGUgZGlzcGF0Y2hpbmcgc2lkZSBjYW4gcmVsaWFibHkgcmVjb25zdHJ1Y3RcbiAgICogdGhlIHRva2VuIHdpdGggdGhlIGluZm9ybWF0aW9uIGl0IGhhcyBhdmFpbGFibGUuXG4gICAqXG4gICAqIERldGVybWluaXN0aWMgdG9rZW5zIGFyZSBpbnRlbmRlZCBmb3IgdXNlIHdpdGggYGNyZWF0ZUhvb2soKWAgYW5kXG4gICAqIHNlcnZlci1zaWRlIGByZXN1bWVIb29rKClgIG9ubHkuIEZvciB3ZWJob29rcyAoYGNyZWF0ZVdlYmhvb2soKWApLFxuICAgKiB0b2tlbnMgYXJlIGFsd2F5cyByYW5kb21seSBnZW5lcmF0ZWQgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgYWNjZXNzXG4gICAqIHRvIHRoZSBwdWJsaWMgd2ViaG9vayBlbmRwb2ludC5cbiAgICpcbiAgICogSWYgcHJvdmlkZWQsIHRoZSB0b2tlbiBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZzsgcGFzc2luZyBhbiBlbXB0eVxuICAgKiBzdHJpbmcgdGhyb3dzLiBJZiBub3QgcHJvdmlkZWQgKG9yIGB1bmRlZmluZWRgKSwgYSByYW5kb21seSBnZW5lcmF0ZWRcbiAgICogdG9rZW4gd2lsbCBiZSBhc3NpZ25lZC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogYGBgdHNcbiAgICogLy8gRXhwbGljaXQgdG9rZW4gZm9yIGEgU2xhY2sgYm90IChvbmUgd29ya2Zsb3cgcnVuIHBlciBjaGFubmVsKVxuICAgKiBjb25zdCBob29rID0gY3JlYXRlSG9vazxTbGFja01lc3NhZ2U+KHtcbiAgICogICB0b2tlbjogYHNsYWNrX3dlYmhvb2s6JHtjaGFubmVsSWR9YCxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqICoqRXhwZXJpbWVudGFsLioqIEtlZXBzIHRoaXMgSG9vaydzIHRva2VuIHVuYXZhaWxhYmxlIGZvciBhdCBsZWFzdCB0aGVcbiAgICogY29uZmlndXJlZCB0aW1lIGFmdGVyIGBjcmVhdGVIb29rKClgIHJ1bnMuXG4gICAqXG4gICAqIEFjY2VwdHMgdGhlIHNhbWUgdmFsdWVzIGFzIGBzbGVlcCgpYDogYSBkdXJhdGlvbiBzdHJpbmcsIGEgbnVtYmVyIG9mXG4gICAqIG1pbGxpc2Vjb25kcywgb3IgYW4gYWJzb2x1dGUgYERhdGVgLiBSZWxhdGl2ZSBkdXJhdGlvbnMgc3RhcnQgd2hlblxuICAgKiBgY3JlYXRlSG9vaygpYCBydW5zLCBub3Qgd2hlbiB0aGUgd29ya2Zsb3cgZW5kcy5cbiAgICpcbiAgICogVGhlIEhvb2sgcmVtYWlucyBhY3RpdmUgdW50aWwgdGhlIHdvcmtmbG93IGVuZHMsIGV2ZW4gaWYgdGhlIGNvbmZpZ3VyZWRcbiAgICogdGltZSBwYXNzZXMgZmlyc3QuIEFub3RoZXIgSG9vayBjYW4gdXNlIHRoZSB0b2tlbiBvbmx5IGFmdGVyIGJvdGggdGhlIHJ1blxuICAgKiBoYXMgZW5kZWQgYW5kIHRoZSBjb25maWd1cmVkIHRpbWUgaGFzIHBhc3NlZC5cbiAgICogQWZ0ZXIgdGhlIHJ1biBlbmRzLCB0aGUgSG9vayBjYW4gc3RpbGwgYmUgZm91bmQgd2l0aCBgZ2V0SG9va0J5VG9rZW4oKWBcbiAgICogdW50aWwgcmV0ZW50aW9uIGVuZHMsIGJ1dCBpdCBjYW5ub3QgYmUgcmVzdW1lZC5cbiAgICpcbiAgICogQ2FsbGluZyBgZGlzcG9zZSgpYCAoaW5jbHVkaW5nIHRocm91Z2ggYHVzaW5nYCkgcmVsZWFzZXMgdGhlIHRva2VuXG4gICAqIGltbWVkaWF0ZWx5LlxuICAgKlxuICAgKiBgY3JlYXRlSG9vaygpYCB0aHJvd3MgaWYgdGhlIGNvbmZpZ3VyZWQgV29ybGQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzXG4gICAqIGV4cGVyaW1lbnRhbCBvcHRpb24uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGNvbnN0IGhvb2sgPSBjcmVhdGVIb29rKHtcbiAgICogICB0b2tlbjogYG9yZGVyOiR7b3JkZXJJZH1gLFxuICAgKiAgIGV4cGVyaW1lbnRhbF9taW5SZXRlbnRpb246ICczMGQnLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBleHBlcmltZW50YWxfbWluUmV0ZW50aW9uPzogU3RyaW5nVmFsdWUgfCBEYXRlIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHVzZXItZGVmaW5lZCBkYXRhIHRvIGluY2x1ZGUgd2l0aCB0aGUgaG9vayBwYXlsb2FkLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBjb25zdCBob29rID0gY3JlYXRlSG9vazx7IG5hbWU6IHN0cmluZyB9Pih7XG4gICAqICAgbWV0YWRhdGE6IHtcbiAgICogICAgIHR5cGU6IFwiY2F0XCIsXG4gICAqICAgICBjb2xvcjogXCJvcmFuZ2VcIixcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBtZXRhZGF0YT86IFNlcmlhbGl6YWJsZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGhvb2sgY2FuIGJlIHJlc3VtZWQgdmlhIHRoZSBwdWJsaWMgd2ViaG9vayBlbmRwb2ludC5cbiAgICpcbiAgICogV2hlbiBgdHJ1ZWAsIHRoZSBob29rIGNhbiBiZSB0cmlnZ2VyZWQgYnkgc2VuZGluZyBhbiBIVFRQIHJlcXVlc3QgdG8gdGhlXG4gICAqIHB1YmxpYyB3b3JrZmxvdyB3ZWJob29rIFVSTC4gVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHNldCB3aGVuIHVzaW5nXG4gICAqIGBjcmVhdGVXZWJob29rKClgLlxuICAgKlxuICAgKiBXaGVuIGBmYWxzZWAgKHRoZSBkZWZhdWx0KSwgdGhlIGhvb2sgY2FuIG9ubHkgYmUgcmVzdW1lZCBzZXJ2ZXItc2lkZVxuICAgKiB2aWEgYHJlc3VtZUhvb2soKWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpc1dlYmhvb2s/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdlYmhvb2tPcHRpb25zXG4gIGV4dGVuZHMgT21pdDxcbiAgICBIb29rT3B0aW9ucyxcbiAgICAndG9rZW4nIHwgJ2lzV2ViaG9vaycgfCAnZXhwZXJpbWVudGFsX21pblJldGVudGlvbidcbiAgPiB7XG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gYSBgUmVzcG9uc2VgIG9iamVjdCwgdGhlIHdlYmhvb2sgd2lsbCBhdXRvbWF0aWNhbGx5XG4gICAqIHJlc3BvbmQgd2l0aCB0aGUgc3BlY2lmaWVkIHJlc3BvbnNlLlxuICAgKlxuICAgKiBJZiBzZXQgdG8gYFwibWFudWFsXCJgLCBlYWNoIGluZGl2aWR1YWwgcmVxdWVzdCB3aWxsIG5lZWQgdG9cbiAgICogYmUgcmVzcG9uZGVkIHRvIG1hbnVhbGx5IGZyb20gd2l0aGluIHRoZSB3b3JrZmxvdyBieSBjYWxsaW5nIHRoZVxuICAgKiBgcmVzcG9uZFdpdGgoKWAgbWV0aG9kLlxuICAgKlxuICAgKiBJZiBub3Qgc2V0IHRoZW4gdGhlIHdlYmhvb2sgd2lsbCBhdXRvbWF0aWNhbGx5IHJlc3BvbmQgd2l0aFxuICAgKiBhIGAyMDIgQWNjZXB0ZWRgIHJlc3BvbnNlLlxuICAgKi9cbiAgcmVzcG9uZFdpdGg/OiBSZXNwb25zZSB8ICdtYW51YWwnO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB7QGxpbmsgSG9va30gdGhhdCBjYW4gYmUgdXNlZCB0byBzdXNwZW5kIGFuZCByZXN1bWUgdGhlIHdvcmtmbG93IHJ1biB3aXRoIGEgcGF5bG9hZC5cbiAqXG4gKiBIb29rcyBhbGxvdyBleHRlcm5hbCBzeXN0ZW1zIHRvIHNlbmQgYXJiaXRyYXJ5IHNlcmlhbGl6YWJsZSBkYXRhIGludG8gYSB3b3JrZmxvdy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGhvb2suXG4gKiBAcmV0dXJucyBBIGBIb29rYCB0aGF0IGNhbiBiZSBhd2FpdGVkIHRvIHJlY2VpdmUgb25lIG9yIG1vcmUgcGF5bG9hZHMuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGB0c1xuICogZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdvcmtmbG93V2l0aEhvb2soKSB7XG4gKiAgIFwidXNlIHdvcmtmbG93XCI7XG4gKlxuICogICBjb25zdCBob29rID0gY3JlYXRlSG9vazx7IG1lc3NhZ2U6IHN0cmluZyB9PigpO1xuICogICBjb25zb2xlLmxvZygnSG9vayB0b2tlbjonLCBob29rLnRva2VuKTtcbiAqXG4gKiAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBob29rO1xuICogICBjb25zb2xlLmxvZygnUmVjZWl2ZWQ6JywgcGF5bG9hZC5tZXNzYWdlKTtcbiAqIH1cbiAqIGBgYFxuICovXG4vLyBAdHMtZXhwZWN0LWVycm9yIGBvcHRpb25zYCBpcyBoZXJlIGZvciB0eXBlcy9kb2NzXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSG9vazxUID0gYW55PihvcHRpb25zPzogSG9va09wdGlvbnMpOiBIb29rPFQ+IHtcbiAgdGhyb3dOb3RJbldvcmtmbG93Q29udGV4dChcbiAgICAnY3JlYXRlSG9vaygpJyxcbiAgICAnaHR0cHM6Ly93b3JrZmxvdy1zZGsuZGV2L2RvY3MvYXBpLXJlZmVyZW5jZS93b3JrZmxvdy9jcmVhdGUtaG9vaycsXG4gICAgY3JlYXRlSG9va1xuICApO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB7QGxpbmsgV2ViaG9va30gdGhhdCBjYW4gYmUgdXNlZCB0byBzdXNwZW5kIGFuZCByZXN1bWUgdGhlIHdvcmtmbG93XG4gKiBydW4gdXBvbiByZWNlaXZpbmcgYW4gSFRUUCByZXF1ZXN0IHRvIHRoZSBzcGVjaWZpZWQgVVJMLlxuICpcbiAqIFdlYmhvb2tzIHdpbGwgcmVzdWx0IGluIGEge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9SZXF1ZXN0IHwgUmVxdWVzdH0gb2JqZWN0XG4gKiB0aGF0IGNhbiBiZSBpbnRlcmFjdGVkIHdpdGggaW4gd29ya2Zsb3cgZnVuY3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV2ViaG9vayhcbiAgb3B0aW9uczogV2ViaG9va09wdGlvbnMgJiB7IHJlc3BvbmRXaXRoOiAnbWFudWFsJyB9XG4pOiBXZWJob29rPFJlcXVlc3RXaXRoUmVzcG9uc2U+O1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdlYmhvb2sob3B0aW9ucz86IFdlYmhvb2tPcHRpb25zKTogV2ViaG9vazxSZXF1ZXN0PjtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXZWJob29rKFxuICAvLyBAdHMtZXhwZWN0LWVycm9yIGBvcHRpb25zYCBpcyBoZXJlIGZvciB0eXBlcy9kb2NzXG4gIG9wdGlvbnM/OiBXZWJob29rT3B0aW9uc1xuKTogV2ViaG9vazxSZXF1ZXN0PiB8IFdlYmhvb2s8UmVxdWVzdFdpdGhSZXNwb25zZT4ge1xuICB0aHJvd05vdEluV29ya2Zsb3dDb250ZXh0KFxuICAgICdjcmVhdGVXZWJob29rKCknLFxuICAgICdodHRwczovL3dvcmtmbG93LXNkay5kZXYvZG9jcy9hcGktcmVmZXJlbmNlL3dvcmtmbG93L2NyZWF0ZS13ZWJob29rJyxcbiAgICBjcmVhdGVXZWJob29rXG4gICk7XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"define-hook.d.ts","sourceRoot":"","sources":["../src/define-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG1D;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,MAAM,EAAE,OAAO;IACxC;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7D;AAED,yBAAiB,SAAS,CAAC;IACzB;;OAEG;IACH,KAAY,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,IAC7C,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,EACnD,MAAM,GACP,GAAE;IACD,MAAM,CAAC,EAAE,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBlC"}
1
+ {"version":3,"file":"define-hook.d.ts","sourceRoot":"","sources":["../src/define-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG1D;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,MAAM,EAAE,OAAO;IACxC;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7D;AAED,yBAAiB,SAAS,CAAC;IACzB;;OAEG;IACH,KAAY,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,IAC7C,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,EACnD,MAAM,GACP,GAAE;IACD,MAAM,CAAC,EAAE,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CA8ClC"}
@@ -1,3 +1,4 @@
1
+ import { throwNotInWorkflowContext } from './context-errors.js';
1
2
  import { resumeHook } from './runtime/resume-hook.js';
2
3
  /**
3
4
  * Defines a typed hook for type-safe hook creation and resumption.
@@ -31,10 +32,14 @@ import { resumeHook } from './runtime/resume-hook.js';
31
32
  * ```
32
33
  */
33
34
  export function defineHook({ schema, } = {}) {
35
+ function create(_options) {
36
+ // NOTE: `create` is referenced by name (not `this.create`) so the stack
37
+ // strip still works if the caller destructured the hook (`const { create }
38
+ // = defineHook(); create()`) — in that case `this` is undefined.
39
+ throwNotInWorkflowContext('defineHook().create()', 'https://workflow-sdk.dev/docs/api-reference/workflow/define-hook', create);
40
+ }
34
41
  return {
35
- create(_options) {
36
- throw new Error('`defineHook().create()` can only be called inside a workflow function.');
37
- },
42
+ create,
38
43
  async resume(token, payload) {
39
44
  if (!schema?.['~standard']) {
40
45
  return await resumeHook(token, payload);
@@ -45,10 +50,20 @@ export function defineHook({ schema, } = {}) {
45
50
  }
46
51
  // if the `issues` field exists, the validation failed
47
52
  if (result.issues) {
48
- throw new Error(JSON.stringify(result.issues, null, 2));
53
+ const lines = result.issues.map((issue) => {
54
+ const path = issue.path
55
+ ?.map((segment) => typeof segment === 'object' && segment !== null
56
+ ? String(segment.key)
57
+ : String(segment))
58
+ .join('.');
59
+ return path
60
+ ? ` at "${path}": ${issue.message}`
61
+ : ` ${issue.message}`;
62
+ });
63
+ throw new Error(`Hook payload did not match the defined schema:\n${lines.join('\n')}`);
49
64
  }
50
65
  return await resumeHook(token, result.value);
51
66
  },
52
67
  };
53
68
  }
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLWhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVmaW5lLWhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBbUN0RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBMkIsRUFDbkQsTUFBTSxNQUdKLEVBQUU7SUFDSixPQUFPO1FBQ0wsTUFBTSxDQUFDLFFBQXNCO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQ2Isd0VBQXdFLENBQ3pFLENBQUM7UUFDSixDQUFDO1FBQ0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFhLEVBQUUsT0FBZTtZQUN6QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUVELElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkQsSUFBSSxNQUFNLFlBQVksT0FBTyxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQztZQUN4QixDQUFDO1lBRUQsc0RBQXNEO1lBQ3RELElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRCxDQUFDO1lBRUQsT0FBTyxNQUFNLFVBQVUsQ0FBVSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hELENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3RhbmRhcmRTY2hlbWFWMSB9IGZyb20gJ0BzdGFuZGFyZC1zY2hlbWEvc3BlYyc7XG5pbXBvcnQgdHlwZSB7IEhvb2sgYXMgSG9va0VudGl0eSB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgdHlwZSB7IEhvb2ssIEhvb2tPcHRpb25zIH0gZnJvbSAnLi9jcmVhdGUtaG9vay5qcyc7XG5pbXBvcnQgeyByZXN1bWVIb29rIH0gZnJvbSAnLi9ydW50aW1lL3Jlc3VtZS1ob29rLmpzJztcblxuLyoqXG4gKiBBIHR5cGVkIGhvb2sgaW50ZXJmYWNlIGZvciB0eXBlLXNhZmUgaG9vayBjcmVhdGlvbiBhbmQgcmVzdW1wdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlZEhvb2s8VElucHV0LCBUT3V0cHV0PiB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGhvb2sgd2l0aCB0aGUgZGVmaW5lZCBvdXRwdXQgdHlwZS5cbiAgICpcbiAgICogTm90ZTogVGhpcyBtZXRob2QgaXMgbm90IGF2YWlsYWJsZSBpbiBydW50aW1lIGJ1bmRsZXMuIFVzZSBpdCBmcm9tIHdvcmtmbG93IGNvbnRleHRzIG9ubHkuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgaG9vayBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm5zIEEgSG9vayB0aGF0IHJlc29sdmVzIHRvIHRoZSBkZWZpbmVkIG91dHB1dCB0eXBlXG4gICAqL1xuICBjcmVhdGUob3B0aW9ucz86IEhvb2tPcHRpb25zKTogSG9vazxUT3V0cHV0PjtcbiAgLyoqXG4gICAqIFJlc3VtZXMgYSBob29rIGJ5IHNlbmRpbmcgYSBwYXlsb2FkIHdpdGggdGhlIGRlZmluZWQgaW5wdXQgdHlwZS5cbiAgICogVGhpcyBpcyBhIHR5cGUtc2FmZSB3cmFwcGVyIGFyb3VuZCB0aGUgYHJlc3VtZUhvb2tgIHJ1bnRpbWUgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSB1bmlxdWUgdG9rZW4gaWRlbnRpZnlpbmcgdGhlIGhvb2tcbiAgICogQHBhcmFtIHBheWxvYWQgLSBUaGUgcGF5bG9hZCB0byBzZW5kOyBpZiBhIGBzY2hlbWFgIGlzIGNvbmZpZ3VyZWQgaXQgaXMgdmFsaWRhdGVkL3RyYW5zZm9ybWVkIGJlZm9yZSByZXN1bWluZ1xuICAgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgaG9vayBlbnRpdHlcbiAgICogQHRocm93cyBFcnJvciBpZiB0aGUgaG9vayBpcyBub3QgZm91bmQgb3IgaWYgdGhlcmUncyBhbiBlcnJvciBkdXJpbmcgdGhlIHByb2Nlc3NcbiAgICovXG4gIHJlc3VtZSh0b2tlbjogc3RyaW5nLCBwYXlsb2FkOiBUSW5wdXQpOiBQcm9taXNlPEhvb2tFbnRpdHk+O1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFR5cGVkSG9vayB7XG4gIC8qKlxuICAgKiBFeHRyYWN0cyB0aGUgaW5wdXQgdHlwZSBmcm9tIGEge0BsaW5rIFR5cGVkSG9va31cbiAgICovXG4gIGV4cG9ydCB0eXBlIElucHV0PFQgZXh0ZW5kcyBUeXBlZEhvb2s8YW55LCBhbnk+PiA9XG4gICAgVCBleHRlbmRzIFR5cGVkSG9vazxpbmZlciBJLCBhbnk+ID8gSSA6IG5ldmVyO1xufVxuXG4vKipcbiAqIERlZmluZXMgYSB0eXBlZCBob29rIGZvciB0eXBlLXNhZmUgaG9vayBjcmVhdGlvbiBhbmQgcmVzdW1wdGlvbi5cbiAqXG4gKiBUaGlzIGhlbHBlciBwcm92aWRlcyB0eXBlIHNhZmV0eSBieSBhbGxvd2luZyB5b3UgdG8gZGVmaW5lIHRoZSBpbnB1dCBhbmQgb3V0cHV0IHR5cGVzXG4gKiBmb3IgdGhlIGhvb2sncyBwYXlsb2FkLCB3aXRoIG9wdGlvbmFsIHZhbGlkYXRpb24gYW5kIHRyYW5zZm9ybWF0aW9uIHZpYSBhIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIC0gU2NoZW1hIHVzZWQgdG8gdmFsaWRhdGUgYW5kIHRyYW5zZm9ybSB0aGUgaW5wdXQgcGF5bG9hZCBiZWZvcmUgcmVzdW1pbmdcbiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIGBjcmVhdGVgIGFuZCBgcmVzdW1lYCBmdW5jdGlvbnMgcHJlLXR5cGVkIHdpdGggdGhlIGlucHV0IGFuZCBvdXRwdXQgdHlwZXNcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYHRzXG4gKiAvLyBEZWZpbmUgYSBob29rIHdpdGggYSBzcGVjaWZpYyBwYXlsb2FkIHR5cGVcbiAqIGNvbnN0IGFwcHJvdmFsSG9vayA9IGRlZmluZUhvb2s8eyBhcHByb3ZlZDogYm9vbGVhbjsgY29tbWVudDogc3RyaW5nIH0+KCk7XG4gKlxuICogLy8gSW4gYSB3b3JrZmxvd1xuICogZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdvcmtmbG93V2l0aEFwcHJvdmFsKCkge1xuICogICBcInVzZSB3b3JrZmxvd1wiO1xuICpcbiAqICAgY29uc3QgaG9vayA9IGFwcHJvdmFsSG9vay5jcmVhdGUoKTtcbiAqICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaG9vazsgLy8gRnVsbHkgdHlwZWQgYXMgeyBhcHByb3ZlZDogYm9vbGVhbjsgY29tbWVudDogc3RyaW5nOyB9XG4gKiB9XG4gKlxuICogLy8gSW4gYW4gQVBJIHJvdXRlXG4gKiBleHBvcnQgYXN5bmMgZnVuY3Rpb24gUE9TVChyZXF1ZXN0OiBSZXF1ZXN0KSB7XG4gKiAgIGNvbnN0IHsgdG9rZW4sIGFwcHJvdmVkLCBjb21tZW50IH0gPSBhd2FpdCByZXF1ZXN0Lmpzb24oKTtcbiAqICAgYXdhaXQgYXBwcm92YWxIb29rLnJlc3VtZSh0b2tlbiwgeyBhcHByb3ZlZCwgY29tbWVudCB9KTsgLy8gSW5wdXQgdHlwZVxuICogICByZXR1cm4gUmVzcG9uc2UuanNvbih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUhvb2s8VElucHV0LCBUT3V0cHV0ID0gVElucHV0Pih7XG4gIHNjaGVtYSxcbn06IHtcbiAgc2NoZW1hPzogU3RhbmRhcmRTY2hlbWFWMTxUSW5wdXQsIFRPdXRwdXQ+O1xufSA9IHt9KTogVHlwZWRIb29rPFRJbnB1dCwgVE91dHB1dD4ge1xuICByZXR1cm4ge1xuICAgIGNyZWF0ZShfb3B0aW9ucz86IEhvb2tPcHRpb25zKTogSG9vazxUT3V0cHV0PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdgZGVmaW5lSG9vaygpLmNyZWF0ZSgpYCBjYW4gb25seSBiZSBjYWxsZWQgaW5zaWRlIGEgd29ya2Zsb3cgZnVuY3Rpb24uJ1xuICAgICAgKTtcbiAgICB9LFxuICAgIGFzeW5jIHJlc3VtZSh0b2tlbjogc3RyaW5nLCBwYXlsb2FkOiBUSW5wdXQpOiBQcm9taXNlPEhvb2tFbnRpdHk+IHtcbiAgICAgIGlmICghc2NoZW1hPy5bJ35zdGFuZGFyZCddKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCByZXN1bWVIb29rKHRva2VuLCBwYXlsb2FkKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlc3VsdCA9IHNjaGVtYVsnfnN0YW5kYXJkJ10udmFsaWRhdGUocGF5bG9hZCk7XG4gICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICByZXN1bHQgPSBhd2FpdCByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGlmIHRoZSBgaXNzdWVzYCBmaWVsZCBleGlzdHMsIHRoZSB2YWxpZGF0aW9uIGZhaWxlZFxuICAgICAgaWYgKHJlc3VsdC5pc3N1ZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKEpTT04uc3RyaW5naWZ5KHJlc3VsdC5pc3N1ZXMsIG51bGwsIDIpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGF3YWl0IHJlc3VtZUhvb2s8VE91dHB1dD4odG9rZW4sIHJlc3VsdC52YWx1ZSk7XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLWhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVmaW5lLWhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBbUN0RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBMkIsRUFDbkQsTUFBTSxNQUdKLEVBQUU7SUFDSixTQUFTLE1BQU0sQ0FBQyxRQUFzQjtRQUNwQyx3RUFBd0U7UUFDeEUsMkVBQTJFO1FBQzNFLGlFQUFpRTtRQUNqRSx5QkFBeUIsQ0FDdkIsdUJBQXVCLEVBQ3ZCLGtFQUFrRSxFQUNsRSxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTTtRQUNOLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBYSxFQUFFLE9BQWU7WUFDekMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLENBQUM7WUFFRCxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25ELElBQUksTUFBTSxZQUFZLE9BQU8sRUFBRSxDQUFDO2dCQUM5QixNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUM7WUFDeEIsQ0FBQztZQUVELHNEQUFzRDtZQUN0RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDeEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUk7d0JBQ3JCLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDaEIsT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxJQUFJO3dCQUM3QyxDQUFDLENBQUMsTUFBTSxDQUFFLE9BQWdDLENBQUMsR0FBRyxDQUFDO3dCQUMvQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUNwQjt5QkFDQSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2IsT0FBTyxJQUFJO3dCQUNULENBQUMsQ0FBQyxTQUFTLElBQUksTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFO3dCQUNwQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzNCLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sSUFBSSxLQUFLLENBQ2IsbURBQW1ELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDdEUsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLE1BQU0sVUFBVSxDQUFVLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdGFuZGFyZFNjaGVtYVYxIH0gZnJvbSAnQHN0YW5kYXJkLXNjaGVtYS9zcGVjJztcbmltcG9ydCB0eXBlIHsgSG9vayBhcyBIb29rRW50aXR5IH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IHRocm93Tm90SW5Xb3JrZmxvd0NvbnRleHQgfSBmcm9tICcuL2NvbnRleHQtZXJyb3JzLmpzJztcbmltcG9ydCB0eXBlIHsgSG9vaywgSG9va09wdGlvbnMgfSBmcm9tICcuL2NyZWF0ZS1ob29rLmpzJztcbmltcG9ydCB7IHJlc3VtZUhvb2sgfSBmcm9tICcuL3J1bnRpbWUvcmVzdW1lLWhvb2suanMnO1xuXG4vKipcbiAqIEEgdHlwZWQgaG9vayBpbnRlcmZhY2UgZm9yIHR5cGUtc2FmZSBob29rIGNyZWF0aW9uIGFuZCByZXN1bXB0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVkSG9vazxUSW5wdXQsIFRPdXRwdXQ+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaG9vayB3aXRoIHRoZSBkZWZpbmVkIG91dHB1dCB0eXBlLlxuICAgKlxuICAgKiBOb3RlOiBUaGlzIG1ldGhvZCBpcyBub3QgYXZhaWxhYmxlIGluIHJ1bnRpbWUgYnVuZGxlcy4gVXNlIGl0IGZyb20gd29ya2Zsb3cgY29udGV4dHMgb25seS5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBob29rIGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgQSBIb29rIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGRlZmluZWQgb3V0cHV0IHR5cGVcbiAgICovXG4gIGNyZWF0ZShvcHRpb25zPzogSG9va09wdGlvbnMpOiBIb29rPFRPdXRwdXQ+O1xuICAvKipcbiAgICogUmVzdW1lcyBhIGhvb2sgYnkgc2VuZGluZyBhIHBheWxvYWQgd2l0aCB0aGUgZGVmaW5lZCBpbnB1dCB0eXBlLlxuICAgKiBUaGlzIGlzIGEgdHlwZS1zYWZlIHdyYXBwZXIgYXJvdW5kIHRoZSBgcmVzdW1lSG9va2AgcnVudGltZSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHRva2VuIC0gVGhlIHVuaXF1ZSB0b2tlbiBpZGVudGlmeWluZyB0aGUgaG9va1xuICAgKiBAcGFyYW0gcGF5bG9hZCAtIFRoZSBwYXlsb2FkIHRvIHNlbmQ7IGlmIGEgYHNjaGVtYWAgaXMgY29uZmlndXJlZCBpdCBpcyB2YWxpZGF0ZWQvdHJhbnNmb3JtZWQgYmVmb3JlIHJlc3VtaW5nXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBob29rIGVudGl0eVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBob29rIGlzIG5vdCBmb3VuZCBvciBpZiB0aGVyZSdzIGFuIGVycm9yIGR1cmluZyB0aGUgcHJvY2Vzc1xuICAgKi9cbiAgcmVzdW1lKHRva2VuOiBzdHJpbmcsIHBheWxvYWQ6IFRJbnB1dCk6IFByb21pc2U8SG9va0VudGl0eT47XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgVHlwZWRIb29rIHtcbiAgLyoqXG4gICAqIEV4dHJhY3RzIHRoZSBpbnB1dCB0eXBlIGZyb20gYSB7QGxpbmsgVHlwZWRIb29rfVxuICAgKi9cbiAgZXhwb3J0IHR5cGUgSW5wdXQ8VCBleHRlbmRzIFR5cGVkSG9vazxhbnksIGFueT4+ID1cbiAgICBUIGV4dGVuZHMgVHlwZWRIb29rPGluZmVyIEksIGFueT4gPyBJIDogbmV2ZXI7XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIHR5cGVkIGhvb2sgZm9yIHR5cGUtc2FmZSBob29rIGNyZWF0aW9uIGFuZCByZXN1bXB0aW9uLlxuICpcbiAqIFRoaXMgaGVscGVyIHByb3ZpZGVzIHR5cGUgc2FmZXR5IGJ5IGFsbG93aW5nIHlvdSB0byBkZWZpbmUgdGhlIGlucHV0IGFuZCBvdXRwdXQgdHlwZXNcbiAqIGZvciB0aGUgaG9vaydzIHBheWxvYWQsIHdpdGggb3B0aW9uYWwgdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb24gdmlhIGEgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBTY2hlbWEgdXNlZCB0byB2YWxpZGF0ZSBhbmQgdHJhbnNmb3JtIHRoZSBpbnB1dCBwYXlsb2FkIGJlZm9yZSByZXN1bWluZ1xuICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggYGNyZWF0ZWAgYW5kIGByZXN1bWVgIGZ1bmN0aW9ucyBwcmUtdHlwZWQgd2l0aCB0aGUgaW5wdXQgYW5kIG91dHB1dCB0eXBlc1xuICpcbiAqIEBleGFtcGxlXG4gKlxuICogYGBgdHNcbiAqIC8vIERlZmluZSBhIGhvb2sgd2l0aCBhIHNwZWNpZmljIHBheWxvYWQgdHlwZVxuICogY29uc3QgYXBwcm92YWxIb29rID0gZGVmaW5lSG9vazx7IGFwcHJvdmVkOiBib29sZWFuOyBjb21tZW50OiBzdHJpbmcgfT4oKTtcbiAqXG4gKiAvLyBJbiBhIHdvcmtmbG93XG4gKiBleHBvcnQgYXN5bmMgZnVuY3Rpb24gd29ya2Zsb3dXaXRoQXBwcm92YWwoKSB7XG4gKiAgIFwidXNlIHdvcmtmbG93XCI7XG4gKlxuICogICBjb25zdCBob29rID0gYXBwcm92YWxIb29rLmNyZWF0ZSgpO1xuICogICBjb25zdCByZXN1bHQgPSBhd2FpdCBob29rOyAvLyBGdWxseSB0eXBlZCBhcyB7IGFwcHJvdmVkOiBib29sZWFuOyBjb21tZW50OiBzdHJpbmc7IH1cbiAqIH1cbiAqXG4gKiAvLyBJbiBhbiBBUEkgcm91dGVcbiAqIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBQT1NUKHJlcXVlc3Q6IFJlcXVlc3QpIHtcbiAqICAgY29uc3QgeyB0b2tlbiwgYXBwcm92ZWQsIGNvbW1lbnQgfSA9IGF3YWl0IHJlcXVlc3QuanNvbigpO1xuICogICBhd2FpdCBhcHByb3ZhbEhvb2sucmVzdW1lKHRva2VuLCB7IGFwcHJvdmVkLCBjb21tZW50IH0pOyAvLyBJbnB1dCB0eXBlXG4gKiAgIHJldHVybiBSZXNwb25zZS5qc29uKHsgc3VjY2VzczogdHJ1ZSB9KTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lSG9vazxUSW5wdXQsIFRPdXRwdXQgPSBUSW5wdXQ+KHtcbiAgc2NoZW1hLFxufToge1xuICBzY2hlbWE/OiBTdGFuZGFyZFNjaGVtYVYxPFRJbnB1dCwgVE91dHB1dD47XG59ID0ge30pOiBUeXBlZEhvb2s8VElucHV0LCBUT3V0cHV0PiB7XG4gIGZ1bmN0aW9uIGNyZWF0ZShfb3B0aW9ucz86IEhvb2tPcHRpb25zKTogSG9vazxUT3V0cHV0PiB7XG4gICAgLy8gTk9URTogYGNyZWF0ZWAgaXMgcmVmZXJlbmNlZCBieSBuYW1lIChub3QgYHRoaXMuY3JlYXRlYCkgc28gdGhlIHN0YWNrXG4gICAgLy8gc3RyaXAgc3RpbGwgd29ya3MgaWYgdGhlIGNhbGxlciBkZXN0cnVjdHVyZWQgdGhlIGhvb2sgKGBjb25zdCB7IGNyZWF0ZSB9XG4gICAgLy8gPSBkZWZpbmVIb29rKCk7IGNyZWF0ZSgpYCkg4oCUIGluIHRoYXQgY2FzZSBgdGhpc2AgaXMgdW5kZWZpbmVkLlxuICAgIHRocm93Tm90SW5Xb3JrZmxvd0NvbnRleHQoXG4gICAgICAnZGVmaW5lSG9vaygpLmNyZWF0ZSgpJyxcbiAgICAgICdodHRwczovL3dvcmtmbG93LXNkay5kZXYvZG9jcy9hcGktcmVmZXJlbmNlL3dvcmtmbG93L2RlZmluZS1ob29rJyxcbiAgICAgIGNyZWF0ZVxuICAgICk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNyZWF0ZSxcbiAgICBhc3luYyByZXN1bWUodG9rZW46IHN0cmluZywgcGF5bG9hZDogVElucHV0KTogUHJvbWlzZTxIb29rRW50aXR5PiB7XG4gICAgICBpZiAoIXNjaGVtYT8uWyd+c3RhbmRhcmQnXSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgcmVzdW1lSG9vayh0b2tlbiwgcGF5bG9hZCk7XG4gICAgICB9XG5cbiAgICAgIGxldCByZXN1bHQgPSBzY2hlbWFbJ35zdGFuZGFyZCddLnZhbGlkYXRlKHBheWxvYWQpO1xuICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICAvLyBpZiB0aGUgYGlzc3Vlc2AgZmllbGQgZXhpc3RzLCB0aGUgdmFsaWRhdGlvbiBmYWlsZWRcbiAgICAgIGlmIChyZXN1bHQuaXNzdWVzKSB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gcmVzdWx0Lmlzc3Vlcy5tYXAoKGlzc3VlKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF0aCA9IGlzc3VlLnBhdGhcbiAgICAgICAgICAgID8ubWFwKChzZWdtZW50KSA9PlxuICAgICAgICAgICAgICB0eXBlb2Ygc2VnbWVudCA9PT0gJ29iamVjdCcgJiYgc2VnbWVudCAhPT0gbnVsbFxuICAgICAgICAgICAgICAgID8gU3RyaW5nKChzZWdtZW50IGFzIHsga2V5OiBQcm9wZXJ0eUtleSB9KS5rZXkpXG4gICAgICAgICAgICAgICAgOiBTdHJpbmcoc2VnbWVudClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKCcuJyk7XG4gICAgICAgICAgcmV0dXJuIHBhdGhcbiAgICAgICAgICAgID8gYCAgYXQgXCIke3BhdGh9XCI6ICR7aXNzdWUubWVzc2FnZX1gXG4gICAgICAgICAgICA6IGAgICR7aXNzdWUubWVzc2FnZX1gO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBIb29rIHBheWxvYWQgZGlkIG5vdCBtYXRjaCB0aGUgZGVmaW5lZCBzY2hlbWE6XFxuJHtsaW5lcy5qb2luKCdcXG4nKX1gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhd2FpdCByZXN1bWVIb29rPFRPdXRwdXQ+KHRva2VuLCByZXN1bHQudmFsdWUpO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,70 @@
1
+ import { type RunErrorCode } from '@workflow/errors';
2
+ /**
3
+ * Attribution of a workflow/step failure for presentation.
4
+ *
5
+ * - `user`: the error came from customer code (a step or workflow function
6
+ * threw, or a value they passed across a boundary wasn't serializable).
7
+ * - `sdk`: the SDK produced the error itself — an internal invariant broke,
8
+ * or a runtime guard rejected the call. These should be rare; when they
9
+ * happen we want to frame the terminal output as "this is us, not you."
10
+ */
11
+ export type ErrorAttribution = 'user' | 'sdk';
12
+ export interface ErrorDescription {
13
+ attribution: ErrorAttribution;
14
+ errorCode: RunErrorCode;
15
+ /**
16
+ * Short, class-aware hint to help a user understand what the error means.
17
+ * Only set for well-known SDK error classes (SerializationError,
18
+ * WorkflowRuntimeError, context-violation errors); `undefined` for plain
19
+ * user errors, where the stack is already the most useful thing to show.
20
+ */
21
+ hint?: string;
22
+ }
23
+ /**
24
+ * Error signal fields carried on persisted failure events (e.g.
25
+ * `run_failed` / `step_failed`). The shape is intentionally loose:
26
+ *
27
+ * - `errorCode` is typed as `string` rather than `RunErrorCode` because
28
+ * the value comes from stored JSON/CBOR and may predate the current
29
+ * enum — callers should not narrow on it blindly. Values that don't
30
+ * match a known `RUN_ERROR_CODES` entry fall through to USER_ERROR.
31
+ * - `errorName` is the thrown `Error#name`. It is not universally
32
+ * persisted today; callers that have access to it (either via an
33
+ * in-memory throw or a richer payload) can pass it in to sharpen
34
+ * the attribution and hint. When absent, `describeRunError` still
35
+ * returns a sensible attribution from `errorCode` alone.
36
+ */
37
+ export interface PersistedErrorSignal {
38
+ errorCode?: string;
39
+ errorName?: string;
40
+ }
41
+ /**
42
+ * Data-driven variant of {@link describeError} that works from persisted
43
+ * event fields instead of a live `Error` instance. Intended for CLI/web
44
+ * renderers that read failure events and no longer have the original
45
+ * thrown object.
46
+ */
47
+ export declare function describeRunError(signal: PersistedErrorSignal): ErrorDescription;
48
+ /**
49
+ * Describe an error for user-facing presentation. Purely informational —
50
+ * does not change any persisted event data or error classification used by
51
+ * the runtime.
52
+ *
53
+ * The attribution here is more nuanced than `classifyRunError`:
54
+ *
55
+ * - `SerializationError` is technically raised by the SDK, but it almost
56
+ * always points at something the caller did (passed a non-serializable
57
+ * value, didn't register a class). We attribute it to the user.
58
+ * - Context-violation errors (`NotInWorkflowContextError`, etc.) likewise
59
+ * describe a user mistake.
60
+ * - `WorkflowRuntimeError` (and subclasses like `StepNotRegisteredError`)
61
+ * indicates an internal SDK invariant broke — surface that as `sdk`.
62
+ *
63
+ * @param err The error value thrown by the workflow / step.
64
+ * @param errorCode Optional precomputed error code. Callers that already
65
+ * know the code (e.g. `REPLAY_TIMEOUT` or `MAX_DELIVERIES_EXCEEDED`, which
66
+ * `classifyRunError` can't derive from the error alone) should pass it so
67
+ * the attribution and hint reflect the actual failure category.
68
+ */
69
+ export declare function describeError(err: unknown, errorCode?: RunErrorCode): ErrorDescription;
70
+ //# sourceMappingURL=describe-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-error.d.ts","sourceRoot":"","sources":["../src/describe-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAGlB,MAAM,kBAAkB,CAAC;AAS1B;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,YAAY,CAAC;IACxB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+CD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,oBAAoB,GAC3B,gBAAgB,CAqDlB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,OAAO,EACZ,SAAS,CAAC,EAAE,YAAY,GACvB,gBAAgB,CAsFlB"}