@workflow/core 5.0.0-beta.3 → 5.0.0-beta.30

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 (268) 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 +22 -1
  5. package/dist/capabilities.d.ts.map +1 -1
  6. package/dist/capabilities.js +41 -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 +103 -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 +147 -0
  22. package/dist/create-hook.d.ts +42 -3
  23. package/dist/create-hook.d.ts.map +1 -1
  24. package/dist/create-hook.js +4 -3
  25. package/dist/define-hook.d.ts.map +1 -1
  26. package/dist/define-hook.js +20 -5
  27. package/dist/describe-error.d.ts +70 -0
  28. package/dist/describe-error.d.ts.map +1 -0
  29. package/dist/describe-error.js +165 -0
  30. package/dist/encryption.d.ts +22 -1
  31. package/dist/encryption.d.ts.map +1 -1
  32. package/dist/encryption.js +72 -27
  33. package/dist/events-consumer.d.ts +25 -1
  34. package/dist/events-consumer.d.ts.map +1 -1
  35. package/dist/events-consumer.js +95 -16
  36. package/dist/flushable-stream.d.ts +10 -10
  37. package/dist/flushable-stream.d.ts.map +1 -1
  38. package/dist/flushable-stream.js +26 -15
  39. package/dist/global.d.ts +35 -1
  40. package/dist/global.d.ts.map +1 -1
  41. package/dist/global.js +21 -3
  42. package/dist/index.d.ts +1 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +2 -1
  45. package/dist/log-format.d.ts +25 -0
  46. package/dist/log-format.d.ts.map +1 -0
  47. package/dist/log-format.js +250 -0
  48. package/dist/logger.d.ts +29 -30
  49. package/dist/logger.d.ts.map +1 -1
  50. package/dist/logger.js +82 -32
  51. package/dist/private.d.ts +107 -2
  52. package/dist/private.d.ts.map +1 -1
  53. package/dist/private.js +80 -3
  54. package/dist/runtime/constants.d.ts +189 -0
  55. package/dist/runtime/constants.d.ts.map +1 -1
  56. package/dist/runtime/constants.js +310 -15
  57. package/dist/runtime/get-port-lazy.d.ts +25 -0
  58. package/dist/runtime/get-port-lazy.d.ts.map +1 -0
  59. package/dist/runtime/get-port-lazy.js +92 -0
  60. package/dist/runtime/get-world-lazy.d.ts +23 -0
  61. package/dist/runtime/get-world-lazy.d.ts.map +1 -0
  62. package/dist/runtime/get-world-lazy.js +46 -0
  63. package/dist/runtime/helpers.d.ts +57 -6
  64. package/dist/runtime/helpers.d.ts.map +1 -1
  65. package/dist/runtime/helpers.js +169 -32
  66. package/dist/runtime/replay-budget.d.ts +98 -0
  67. package/dist/runtime/replay-budget.d.ts.map +1 -0
  68. package/dist/runtime/replay-budget.js +192 -0
  69. package/dist/runtime/resume-hook.d.ts.map +1 -1
  70. package/dist/runtime/resume-hook.js +39 -23
  71. package/dist/runtime/run-id-time.d.ts +10 -0
  72. package/dist/runtime/run-id-time.d.ts.map +1 -0
  73. package/dist/runtime/run-id-time.js +31 -0
  74. package/dist/runtime/run.d.ts +6 -2
  75. package/dist/runtime/run.d.ts.map +1 -1
  76. package/dist/runtime/run.js +52 -10
  77. package/dist/runtime/runs.d.ts +36 -2
  78. package/dist/runtime/runs.d.ts.map +1 -1
  79. package/dist/runtime/runs.js +18 -7
  80. package/dist/runtime/start.d.ts +58 -1
  81. package/dist/runtime/start.d.ts.map +1 -1
  82. package/dist/runtime/start.js +160 -46
  83. package/dist/runtime/step-executor.d.ts +131 -0
  84. package/dist/runtime/step-executor.d.ts.map +1 -0
  85. package/dist/runtime/step-executor.js +818 -0
  86. package/dist/runtime/step-handler.d.ts.map +1 -1
  87. package/dist/runtime/step-handler.js +718 -557
  88. package/dist/runtime/step-latency.d.ts +131 -0
  89. package/dist/runtime/step-latency.d.ts.map +1 -0
  90. package/dist/runtime/step-latency.js +155 -0
  91. package/dist/runtime/step-ownership.d.ts +72 -0
  92. package/dist/runtime/step-ownership.d.ts.map +1 -0
  93. package/dist/runtime/step-ownership.js +114 -0
  94. package/dist/runtime/step-single-flight.d.ts +12 -0
  95. package/dist/runtime/step-single-flight.d.ts.map +1 -0
  96. package/dist/runtime/step-single-flight.js +69 -0
  97. package/dist/runtime/suspension-handler.d.ts +81 -7
  98. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  99. package/dist/runtime/suspension-handler.js +355 -137
  100. package/dist/runtime/wait-continuation.d.ts +84 -0
  101. package/dist/runtime/wait-continuation.d.ts.map +1 -0
  102. package/dist/runtime/wait-continuation.js +105 -0
  103. package/dist/runtime/wait-until.d.ts +18 -0
  104. package/dist/runtime/wait-until.d.ts.map +1 -0
  105. package/dist/runtime/wait-until.js +42 -0
  106. package/dist/runtime/world-compatibility.d.ts +5 -0
  107. package/dist/runtime/world-compatibility.d.ts.map +1 -0
  108. package/dist/runtime/world-compatibility.js +12 -0
  109. package/dist/runtime/world-init.d.ts +50 -0
  110. package/dist/runtime/world-init.d.ts.map +1 -0
  111. package/dist/runtime/world-init.js +50 -0
  112. package/dist/runtime/world-target.d.ts +11 -0
  113. package/dist/runtime/world-target.d.ts.map +1 -0
  114. package/dist/runtime/world-target.js +15 -0
  115. package/dist/runtime/world.d.ts +21 -9
  116. package/dist/runtime/world.d.ts.map +1 -1
  117. package/dist/runtime/world.js +58 -83
  118. package/dist/runtime.d.ts +15 -10
  119. package/dist/runtime.d.ts.map +1 -1
  120. package/dist/runtime.js +1757 -326
  121. package/dist/schemas.d.ts +1 -1
  122. package/dist/schemas.d.ts.map +1 -1
  123. package/dist/schemas.js +1 -1
  124. package/dist/serialization/client.d.ts +17 -0
  125. package/dist/serialization/client.d.ts.map +1 -0
  126. package/dist/serialization/client.js +48 -0
  127. package/dist/serialization/codec-devalue.d.ts +14 -0
  128. package/dist/serialization/codec-devalue.d.ts.map +1 -0
  129. package/dist/serialization/codec-devalue.js +98 -0
  130. package/dist/serialization/codec.d.ts +106 -0
  131. package/dist/serialization/codec.d.ts.map +1 -0
  132. package/dist/serialization/codec.js +17 -0
  133. package/dist/serialization/compression.d.ts +104 -0
  134. package/dist/serialization/compression.d.ts.map +1 -0
  135. package/dist/serialization/compression.js +260 -0
  136. package/dist/serialization/encryption.d.ts +33 -0
  137. package/dist/serialization/encryption.d.ts.map +1 -0
  138. package/dist/serialization/encryption.js +70 -0
  139. package/dist/serialization/errors.d.ts +34 -0
  140. package/dist/serialization/errors.d.ts.map +1 -0
  141. package/dist/serialization/errors.js +59 -0
  142. package/dist/serialization/format.d.ts +60 -0
  143. package/dist/serialization/format.d.ts.map +1 -0
  144. package/dist/serialization/format.js +97 -0
  145. package/dist/serialization/index.d.ts +19 -0
  146. package/dist/serialization/index.d.ts.map +1 -0
  147. package/dist/serialization/index.js +22 -0
  148. package/dist/serialization/reducers/class.d.ts +11 -0
  149. package/dist/serialization/reducers/class.d.ts.map +1 -0
  150. package/dist/serialization/reducers/class.js +68 -0
  151. package/dist/serialization/reducers/common.d.ts +16 -0
  152. package/dist/serialization/reducers/common.d.ts.map +1 -0
  153. package/dist/serialization/reducers/common.js +417 -0
  154. package/dist/serialization/reducers/step-function.d.ts +35 -0
  155. package/dist/serialization/reducers/step-function.d.ts.map +1 -0
  156. package/dist/serialization/reducers/step-function.js +88 -0
  157. package/dist/serialization/step.d.ts +17 -0
  158. package/dist/serialization/step.d.ts.map +1 -0
  159. package/dist/serialization/step.js +48 -0
  160. package/dist/serialization/types.d.ts +253 -0
  161. package/dist/serialization/types.d.ts.map +1 -0
  162. package/dist/serialization/types.js +25 -0
  163. package/dist/serialization/workflow.d.ts +29 -0
  164. package/dist/serialization/workflow.d.ts.map +1 -0
  165. package/dist/serialization/workflow.js +54 -0
  166. package/dist/serialization-format.d.ts +16 -0
  167. package/dist/serialization-format.d.ts.map +1 -1
  168. package/dist/serialization-format.js +213 -50
  169. package/dist/serialization.d.ts +322 -214
  170. package/dist/serialization.d.ts.map +1 -1
  171. package/dist/serialization.js +1575 -664
  172. package/dist/set-attributes.d.ts +13 -0
  173. package/dist/set-attributes.d.ts.map +1 -0
  174. package/dist/set-attributes.js +56 -0
  175. package/dist/sleep.d.ts.map +1 -1
  176. package/dist/sleep.js +3 -2
  177. package/dist/source-map.d.ts +5 -0
  178. package/dist/source-map.d.ts.map +1 -1
  179. package/dist/source-map.js +102 -10
  180. package/dist/step/context-storage.d.ts +53 -0
  181. package/dist/step/context-storage.d.ts.map +1 -1
  182. package/dist/step/context-storage.js +1 -1
  183. package/dist/step/get-closure-vars.d.ts.map +1 -1
  184. package/dist/step/get-closure-vars.js +3 -2
  185. package/dist/step/get-step-metadata.d.ts.map +1 -1
  186. package/dist/step/get-step-metadata.js +3 -2
  187. package/dist/step/get-workflow-metadata.d.ts.map +1 -1
  188. package/dist/step/get-workflow-metadata.js +3 -2
  189. package/dist/step/writable-stream.d.ts.map +1 -1
  190. package/dist/step/writable-stream.js +58 -6
  191. package/dist/step-hydration-cache.d.ts +148 -0
  192. package/dist/step-hydration-cache.d.ts.map +1 -0
  193. package/dist/step-hydration-cache.js +171 -0
  194. package/dist/step.d.ts.map +1 -1
  195. package/dist/step.js +144 -25
  196. package/dist/symbols.d.ts +28 -0
  197. package/dist/symbols.d.ts.map +1 -1
  198. package/dist/symbols.js +29 -1
  199. package/dist/telemetry/semantic-conventions.d.ts +98 -2
  200. package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
  201. package/dist/telemetry/semantic-conventions.js +66 -1
  202. package/dist/telemetry.d.ts +68 -0
  203. package/dist/telemetry.d.ts.map +1 -1
  204. package/dist/telemetry.js +106 -4
  205. package/dist/types.d.ts +6 -0
  206. package/dist/types.d.ts.map +1 -1
  207. package/dist/types.js +23 -1
  208. package/dist/util.d.ts +16 -6
  209. package/dist/util.d.ts.map +1 -1
  210. package/dist/util.js +25 -16
  211. package/dist/version.d.ts +1 -1
  212. package/dist/version.d.ts.map +1 -1
  213. package/dist/version.js +2 -2
  214. package/dist/vm/index.d.ts.map +1 -1
  215. package/dist/vm/index.js +3 -2
  216. package/dist/vm/script-cache.d.ts +28 -0
  217. package/dist/vm/script-cache.d.ts.map +1 -0
  218. package/dist/vm/script-cache.js +140 -0
  219. package/dist/workflow/abort-controller.d.ts +65 -0
  220. package/dist/workflow/abort-controller.d.ts.map +1 -0
  221. package/dist/workflow/abort-controller.js +277 -0
  222. package/dist/workflow/attribute-dispatcher.d.ts +6 -0
  223. package/dist/workflow/attribute-dispatcher.d.ts.map +1 -0
  224. package/dist/workflow/attribute-dispatcher.js +48 -0
  225. package/dist/workflow/create-hook.d.ts.map +1 -1
  226. package/dist/workflow/create-hook.js +25 -3
  227. package/dist/workflow/define-hook.d.ts +1 -1
  228. package/dist/workflow/define-hook.d.ts.map +1 -1
  229. package/dist/workflow/define-hook.js +8 -4
  230. package/dist/workflow/get-workflow-metadata.d.ts.map +1 -1
  231. package/dist/workflow/get-workflow-metadata.js +14 -3
  232. package/dist/workflow/hook.d.ts.map +1 -1
  233. package/dist/workflow/hook.js +207 -33
  234. package/dist/workflow/index.d.ts +1 -0
  235. package/dist/workflow/index.d.ts.map +1 -1
  236. package/dist/workflow/index.js +5 -3
  237. package/dist/workflow/set-attributes.d.ts +73 -0
  238. package/dist/workflow/set-attributes.d.ts.map +1 -0
  239. package/dist/workflow/set-attributes.js +65 -0
  240. package/dist/workflow/sleep.d.ts.map +1 -1
  241. package/dist/workflow/sleep.js +45 -8
  242. package/dist/workflow/world-init-stub.d.ts +15 -0
  243. package/dist/workflow/world-init-stub.d.ts.map +1 -0
  244. package/dist/workflow/world-init-stub.js +15 -0
  245. package/dist/workflow.d.ts +17 -1
  246. package/dist/workflow.d.ts.map +1 -1
  247. package/dist/workflow.js +190 -56
  248. package/docs/api-reference/create-hook.mdx +38 -0
  249. package/docs/api-reference/create-webhook.mdx +1 -0
  250. package/docs/api-reference/experimental-set-attributes.mdx +65 -0
  251. package/docs/api-reference/fetch.mdx +5 -0
  252. package/docs/api-reference/index.mdx +3 -0
  253. package/docs/foundations/cancellation.mdx +459 -0
  254. package/docs/foundations/errors-and-retries.mdx +7 -3
  255. package/docs/foundations/hooks.mdx +29 -0
  256. package/docs/foundations/idempotency.mdx +236 -11
  257. package/docs/foundations/index.mdx +1 -23
  258. package/docs/foundations/meta.json +3 -1
  259. package/docs/foundations/serialization.mdx +77 -41
  260. package/docs/foundations/starting-workflows.mdx +5 -1
  261. package/docs/foundations/streaming.mdx +14 -23
  262. package/docs/foundations/versioning.mdx +263 -0
  263. package/docs/how-it-works/cancellation.mdx +287 -0
  264. package/docs/how-it-works/code-transform.mdx +2 -2
  265. package/docs/how-it-works/encryption.mdx +2 -2
  266. package/docs/how-it-works/event-sourcing.mdx +2 -2
  267. package/docs/how-it-works/meta.json +2 -1
  268. package/package.json +32 -11
package/dist/types.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { types } from 'node:util';
2
+ import { FatalError } from '@workflow/errors';
2
3
  export function getErrorName(v) {
3
4
  if (types.isNativeError(v)) {
4
5
  return v.name;
@@ -11,6 +12,27 @@ export function getErrorStack(v) {
11
12
  }
12
13
  return '';
13
14
  }
15
+ export function isAbortError(value) {
16
+ return (typeof value === 'object' &&
17
+ value !== null &&
18
+ 'name' in value &&
19
+ value.name === 'AbortError' &&
20
+ 'message' in value &&
21
+ typeof value.message === 'string' &&
22
+ (!('stack' in value) ||
23
+ value.stack === undefined ||
24
+ typeof value.stack === 'string'));
25
+ }
26
+ export function promoteAbortErrorToFatal(value) {
27
+ if (!isAbortError(value) || FatalError.is(value)) {
28
+ return value;
29
+ }
30
+ const fatalError = new FatalError(`Aborted: ${value.message}`);
31
+ if (value.stack) {
32
+ fatalError.stack = value.stack;
33
+ }
34
+ return fatalError;
35
+ }
14
36
  function isThenable(value) {
15
37
  return (typeof value === 'object' &&
16
38
  value !== null &&
@@ -72,4 +94,4 @@ export async function normalizeUnknownError(value) {
72
94
  }
73
95
  return normalizeSyncError(value);
74
96
  }
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVsQyxNQUFNLFVBQVUsWUFBWSxDQUFDLENBQVU7SUFDckMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxDQUFVO0lBQ3RDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQVFELFNBQVMsVUFBVSxDQUFDLEtBQWM7SUFDaEMsT0FBTyxDQUNMLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFDekIsS0FBSyxLQUFLLElBQUk7UUFDZCxNQUFNLElBQUksS0FBSztRQUNmLE9BQVEsS0FBNEIsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUN6RCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsQ0FBVTtJQUNwQyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1lBQ1osT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO1lBQ2xCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7U0FDckIsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLE9BQU87WUFDTCxJQUFJLEVBQUUsT0FBTztZQUNiLE9BQU8sRUFBRSxDQUFDO1lBQ1YsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE9BQU87WUFDTCxJQUFJLEVBQUUsT0FBTztZQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUMxQixLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUM7SUFDSixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTztZQUNMLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDbEIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxxQkFBcUIsQ0FDekMsS0FBYztJQUVkLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUM7WUFDN0IsTUFBTSxVQUFVLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6RCxPQUFPO2dCQUNMLEdBQUcsVUFBVTtnQkFDYixPQUFPLEVBQUUsc0JBQXNCLFVBQVUsQ0FBQyxPQUFPLEVBQUU7YUFDcEQsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLFNBQVMsRUFBRSxDQUFDO1lBQ25CLE1BQU0sVUFBVSxHQUFHLE1BQU0scUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUQsT0FBTztnQkFDTCxHQUFHLFVBQVU7Z0JBQ2IsT0FBTyxFQUFFLHNCQUFzQixVQUFVLENBQUMsT0FBTyxFQUFFO2FBQ3BELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGVzIH0gZnJvbSAnbm9kZTp1dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVycm9yTmFtZSh2OiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVzLmlzTmF0aXZlRXJyb3IodikpIHtcbiAgICByZXR1cm4gdi5uYW1lO1xuICB9XG4gIHJldHVybiAnRXJyb3InO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXJyb3JTdGFjayh2OiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVzLmlzTmF0aXZlRXJyb3IodikpIHtcbiAgICByZXR1cm4gdi5zdGFjayA/PyAnJztcbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9ybWFsaXplZFVua25vd25FcnJvciB7XG4gIG5hbWU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzdGFjazogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBpc1RoZW5hYmxlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUHJvbWlzZTx1bmtub3duPiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgJ3RoZW4nIGluIHZhbHVlICYmXG4gICAgdHlwZW9mICh2YWx1ZSBhcyB7IHRoZW4/OiB1bmtub3duIH0pLnRoZW4gPT09ICdmdW5jdGlvbidcbiAgKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplU3luY0Vycm9yKHY6IHVua25vd24pOiBOb3JtYWxpemVkVW5rbm93bkVycm9yIHtcbiAgaWYgKHR5cGVzLmlzTmF0aXZlRXJyb3IodikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdi5uYW1lLFxuICAgICAgbWVzc2FnZTogdi5tZXNzYWdlLFxuICAgICAgc3RhY2s6IHYuc3RhY2sgPz8gJycsXG4gICAgfTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6IHYsXG4gICAgICBzdGFjazogJycsXG4gICAgfTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICdFcnJvcicsXG4gICAgICBtZXNzYWdlOiBKU09OLnN0cmluZ2lmeSh2KSxcbiAgICAgIHN0YWNrOiAnJyxcbiAgICB9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6IFN0cmluZyh2KSxcbiAgICAgIHN0YWNrOiAnJyxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyB1bmtub3duIHRocm93biB2YWx1ZXMgaW50byBhIHN0YWJsZSBlcnJvciBzaGFwZS5cbiAqIFRoaXMgaGFuZGxlcyBQcm9taXNlL3RoZW5hYmxlIHRocm93IHZhbHVlcyBzbyBsb2dzL2V2ZW50cyBuZXZlciBlbmQgdXBcbiAqIHdpdGggdW5oZWxwZnVsIFwiW29iamVjdCBQcm9taXNlXVwiIG1lc3NhZ2VzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbm9ybWFsaXplVW5rbm93bkVycm9yKFxuICB2YWx1ZTogdW5rbm93blxuKTogUHJvbWlzZTxOb3JtYWxpemVkVW5rbm93bkVycm9yPiB7XG4gIGlmIChpc1RoZW5hYmxlKHZhbHVlKSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IHZhbHVlO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IGF3YWl0IG5vcm1hbGl6ZVVua25vd25FcnJvcihyZXNvbHZlZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ub3JtYWxpemVkLFxuICAgICAgICBtZXNzYWdlOiBgUHJvbWlzZSByZWplY3Rpb246ICR7bm9ybWFsaXplZC5tZXNzYWdlfWAsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKHJlamVjdGlvbikge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IGF3YWl0IG5vcm1hbGl6ZVVua25vd25FcnJvcihyZWplY3Rpb24pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubm9ybWFsaXplZCxcbiAgICAgICAgbWVzc2FnZTogYFByb21pc2UgcmVqZWN0aW9uOiAke25vcm1hbGl6ZWQubWVzc2FnZX1gLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplU3luY0Vycm9yKHZhbHVlKTtcbn1cbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsTUFBTSxVQUFVLFlBQVksQ0FBQyxDQUFVO0lBQ3JDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsQ0FBVTtJQUN0QyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixLQUFjO0lBRWQsT0FBTyxDQUNMLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFDekIsS0FBSyxLQUFLLElBQUk7UUFDZCxNQUFNLElBQUksS0FBSztRQUNmLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWTtRQUMzQixTQUFTLElBQUksS0FBSztRQUNsQixPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUTtRQUNqQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDO1lBQ2xCLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUztZQUN6QixPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQ25DLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQWM7SUFDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsWUFBWSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvRCxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFRRCxTQUFTLFVBQVUsQ0FBQyxLQUFjO0lBQ2hDLE9BQU8sQ0FDTCxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLEtBQUssS0FBSyxJQUFJO1FBQ2QsTUFBTSxJQUFJLEtBQUs7UUFDZixPQUFRLEtBQTRCLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FDekQsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLENBQVU7SUFDcEMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0IsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNaLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztZQUNsQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1NBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMxQixPQUFPO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixPQUFPLEVBQUUsQ0FBQztZQUNWLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxPQUFPO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO0lBQ0osQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU87WUFDTCxJQUFJLEVBQUUsT0FBTztZQUNiLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUscUJBQXFCLENBQ3pDLEtBQWM7SUFFZCxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDO1lBQzdCLE1BQU0sVUFBVSxHQUFHLE1BQU0scUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekQsT0FBTztnQkFDTCxHQUFHLFVBQVU7Z0JBQ2IsT0FBTyxFQUFFLHNCQUFzQixVQUFVLENBQUMsT0FBTyxFQUFFO2FBQ3BELENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxTQUFTLEVBQUUsQ0FBQztZQUNuQixNQUFNLFVBQVUsR0FBRyxNQUFNLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFELE9BQU87Z0JBQ0wsR0FBRyxVQUFVO2dCQUNiLE9BQU8sRUFBRSxzQkFBc0IsVUFBVSxDQUFDLE9BQU8sRUFBRTthQUNwRCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlcyB9IGZyb20gJ25vZGU6dXRpbCc7XG5pbXBvcnQgeyBGYXRhbEVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvck5hbWUodjogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh0eXBlcy5pc05hdGl2ZUVycm9yKHYpKSB7XG4gICAgcmV0dXJuIHYubmFtZTtcbiAgfVxuICByZXR1cm4gJ0Vycm9yJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVycm9yU3RhY2sodjogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh0eXBlcy5pc05hdGl2ZUVycm9yKHYpKSB7XG4gICAgcmV0dXJuIHYuc3RhY2sgPz8gJyc7XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBYm9ydEVycm9yKFxuICB2YWx1ZTogdW5rbm93blxuKTogdmFsdWUgaXMgeyBuYW1lOiAnQWJvcnRFcnJvcic7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmcgfSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgJ25hbWUnIGluIHZhbHVlICYmXG4gICAgdmFsdWUubmFtZSA9PT0gJ0Fib3J0RXJyb3InICYmXG4gICAgJ21lc3NhZ2UnIGluIHZhbHVlICYmXG4gICAgdHlwZW9mIHZhbHVlLm1lc3NhZ2UgPT09ICdzdHJpbmcnICYmXG4gICAgKCEoJ3N0YWNrJyBpbiB2YWx1ZSkgfHxcbiAgICAgIHZhbHVlLnN0YWNrID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHR5cGVvZiB2YWx1ZS5zdGFjayA9PT0gJ3N0cmluZycpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9tb3RlQWJvcnRFcnJvclRvRmF0YWwodmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKCFpc0Fib3J0RXJyb3IodmFsdWUpIHx8IEZhdGFsRXJyb3IuaXModmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgY29uc3QgZmF0YWxFcnJvciA9IG5ldyBGYXRhbEVycm9yKGBBYm9ydGVkOiAke3ZhbHVlLm1lc3NhZ2V9YCk7XG4gIGlmICh2YWx1ZS5zdGFjaykge1xuICAgIGZhdGFsRXJyb3Iuc3RhY2sgPSB2YWx1ZS5zdGFjaztcbiAgfVxuICByZXR1cm4gZmF0YWxFcnJvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb3JtYWxpemVkVW5rbm93bkVycm9yIHtcbiAgbmFtZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHN0YWNrOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGlzVGhlbmFibGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQcm9taXNlPHVua25vd24+IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAndGhlbicgaW4gdmFsdWUgJiZcbiAgICB0eXBlb2YgKHZhbHVlIGFzIHsgdGhlbj86IHVua25vd24gfSkudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xuICApO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTeW5jRXJyb3IodjogdW5rbm93bik6IE5vcm1hbGl6ZWRVbmtub3duRXJyb3Ige1xuICBpZiAodHlwZXMuaXNOYXRpdmVFcnJvcih2KSkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB2Lm5hbWUsXG4gICAgICBtZXNzYWdlOiB2Lm1lc3NhZ2UsXG4gICAgICBzdGFjazogdi5zdGFjayA/PyAnJyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnRXJyb3InLFxuICAgICAgbWVzc2FnZTogdixcbiAgICAgIHN0YWNrOiAnJyxcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6IEpTT04uc3RyaW5naWZ5KHYpLFxuICAgICAgc3RhY2s6ICcnLFxuICAgIH07XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnRXJyb3InLFxuICAgICAgbWVzc2FnZTogU3RyaW5nKHYpLFxuICAgICAgc3RhY2s6ICcnLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIHVua25vd24gdGhyb3duIHZhbHVlcyBpbnRvIGEgc3RhYmxlIGVycm9yIHNoYXBlLlxuICogVGhpcyBoYW5kbGVzIFByb21pc2UvdGhlbmFibGUgdGhyb3cgdmFsdWVzIHNvIGxvZ3MvZXZlbnRzIG5ldmVyIGVuZCB1cFxuICogd2l0aCB1bmhlbHBmdWwgXCJbb2JqZWN0IFByb21pc2VdXCIgbWVzc2FnZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBub3JtYWxpemVVbmtub3duRXJyb3IoXG4gIHZhbHVlOiB1bmtub3duXG4pOiBQcm9taXNlPE5vcm1hbGl6ZWRVbmtub3duRXJyb3I+IHtcbiAgaWYgKGlzVGhlbmFibGUodmFsdWUpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gYXdhaXQgdmFsdWU7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gYXdhaXQgbm9ybWFsaXplVW5rbm93bkVycm9yKHJlc29sdmVkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm5vcm1hbGl6ZWQsXG4gICAgICAgIG1lc3NhZ2U6IGBQcm9taXNlIHJlamVjdGlvbjogJHtub3JtYWxpemVkLm1lc3NhZ2V9YCxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAocmVqZWN0aW9uKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gYXdhaXQgbm9ybWFsaXplVW5rbm93bkVycm9yKHJlamVjdGlvbik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ub3JtYWxpemVkLFxuICAgICAgICBtZXNzYWdlOiBgUHJvbWlzZSByZWplY3Rpb246ICR7bm9ybWFsaXplZC5tZXNzYWdlfWAsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVTeW5jRXJyb3IodmFsdWUpO1xufVxuIl19
package/dist/util.d.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  /**
2
- * Builds a workflow suspension log message based on the counts of steps, hooks, and waits.
3
- * @param runId - The workflow run ID
2
+ * Builds a workflow suspension log message based on the counts of steps,
3
+ * hooks, and waits. The structured logger attaches the run context, so the
4
+ * message itself only describes what's being enqueued.
4
5
  * @param stepCount - Number of steps to be enqueued
5
6
  * @param hookCount - Number of hooks to be enqueued
6
7
  * @param waitCount - Number of waits to be enqueued
7
8
  * @returns The formatted log message or null if all counts are 0
8
9
  */
9
- export declare function buildWorkflowSuspensionMessage(runId: string, stepCount: number, hookCount: number, waitCount: number): string | null;
10
+ export declare function buildWorkflowSuspensionMessage(stepCount: number, hookCount: number, waitCount: number): string | null;
10
11
  /**
11
12
  * Generates a stream ID for a workflow run.
12
13
  * User-defined streams include a "user" segment for isolation from future system-defined streams.
@@ -18,8 +19,17 @@ export declare function buildWorkflowSuspensionMessage(runId: string, stepCount:
18
19
  */
19
20
  export declare function getWorkflowRunStreamId(runId: string, namespace?: string): string;
20
21
  /**
21
- * A small wrapper around `waitUntil` that also returns
22
- * the result of the awaited promise.
22
+ * Generate a stream ID for an abort signal's backing stream.
23
+ * Uses the "_system_abort" namespace to isolate from user-defined streams.
24
+ *
25
+ * @param id - A unique identifier (typically a ULID)
26
+ * @returns The stream ID in format: `strm_{id}_system_abort`
27
+ */
28
+ export declare function getAbortStreamId(id: string): string;
29
+ /**
30
+ * Derive the abort stream name from a hook token.
31
+ * Hook tokens use the format `abrt_{id}`, and the corresponding stream is
32
+ * `strm_{id}_system_abort`.
23
33
  */
24
- export declare function waitedUntil<T>(fn: () => Promise<T>): Promise<T>;
34
+ export declare function getAbortStreamIdFromToken(hookToken: string): string;
25
35
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CA6Bf;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,UAUvE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAUrE"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CA6Bf;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,UAUvE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,UAE1C;AAID;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOnE"}
package/dist/util.js CHANGED
@@ -1,14 +1,14 @@
1
- import { waitUntil } from '@vercel/functions';
2
1
  import { pluralize } from '@workflow/utils';
3
2
  /**
4
- * Builds a workflow suspension log message based on the counts of steps, hooks, and waits.
5
- * @param runId - The workflow run ID
3
+ * Builds a workflow suspension log message based on the counts of steps,
4
+ * hooks, and waits. The structured logger attaches the run context, so the
5
+ * message itself only describes what's being enqueued.
6
6
  * @param stepCount - Number of steps to be enqueued
7
7
  * @param hookCount - Number of hooks to be enqueued
8
8
  * @param waitCount - Number of waits to be enqueued
9
9
  * @returns The formatted log message or null if all counts are 0
10
10
  */
11
- export function buildWorkflowSuspensionMessage(runId, stepCount, hookCount, waitCount) {
11
+ export function buildWorkflowSuspensionMessage(stepCount, hookCount, waitCount) {
12
12
  if (stepCount === 0 && hookCount === 0 && waitCount === 0) {
13
13
  return null;
14
14
  }
@@ -33,7 +33,7 @@ export function buildWorkflowSuspensionMessage(runId, stepCount, hookCount, wait
33
33
  resumeMsgParts.push('timers have elapsed');
34
34
  }
35
35
  const resumeMsg = resumeMsgParts.join(' and ');
36
- return `[Workflows] "${runId}" - ${parts.join(' and ')} to be enqueued\n Workflow will suspend and resume when ${resumeMsg}`;
36
+ return `${parts.join(' and ')} to be enqueued\n Workflow will suspend and resume when ${resumeMsg}`;
37
37
  }
38
38
  /**
39
39
  * Generates a stream ID for a workflow run.
@@ -54,16 +54,25 @@ export function getWorkflowRunStreamId(runId, namespace) {
54
54
  return `${streamId}_${encodedNamespace}`;
55
55
  }
56
56
  /**
57
- * A small wrapper around `waitUntil` that also returns
58
- * the result of the awaited promise.
57
+ * Generate a stream ID for an abort signal's backing stream.
58
+ * Uses the "_system_abort" namespace to isolate from user-defined streams.
59
+ *
60
+ * @param id - A unique identifier (typically a ULID)
61
+ * @returns The stream ID in format: `strm_{id}_system_abort`
62
+ */
63
+ export function getAbortStreamId(id) {
64
+ return `strm_${id}_system_abort`;
65
+ }
66
+ const ABORT_TOKEN_PREFIX = 'abrt_';
67
+ /**
68
+ * Derive the abort stream name from a hook token.
69
+ * Hook tokens use the format `abrt_{id}`, and the corresponding stream is
70
+ * `strm_{id}_system_abort`.
59
71
  */
60
- export async function waitedUntil(fn) {
61
- const result = fn();
62
- waitUntil(result.catch(() => {
63
- // Ignore error from the promise being rejected.
64
- // It's expected that the invoker of `waitedUntil`
65
- // will handle the error.
66
- }));
67
- return result;
72
+ export function getAbortStreamIdFromToken(hookToken) {
73
+ if (!hookToken.startsWith(ABORT_TOKEN_PREFIX)) {
74
+ throw new Error(`Invalid abort hook token format: expected "abrt_" prefix, got "${hookToken}"`);
75
+ }
76
+ return getAbortStreamId(hookToken.slice(ABORT_TOKEN_PREFIX.length));
68
77
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUM7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsS0FBYSxFQUNiLFNBQWlCLEVBQ2pCLFNBQWlCLEVBQ2pCLFNBQWlCO0lBRWpCLElBQUksU0FBUyxLQUFLLENBQUMsSUFBSSxTQUFTLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDakIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQWEsRUFBRSxDQUFDO0lBQ3BDLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEIsY0FBYyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixjQUFjLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFL0MsT0FBTyxnQkFBZ0IsS0FBSyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLDREQUE0RCxTQUFTLEVBQUUsQ0FBQztBQUNoSSxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsS0FBYSxFQUFFLFNBQWtCO0lBQ3RFLE1BQU0sUUFBUSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUMzRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBQ0QsaUdBQWlHO0lBQ2pHLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUMvRCxXQUFXLENBQ1osQ0FBQztJQUNGLE9BQU8sR0FBRyxRQUFRLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztBQUMzQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQUksRUFBb0I7SUFDdkQsTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDcEIsU0FBUyxDQUNQLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ2hCLGdEQUFnRDtRQUNoRCxrREFBa0Q7UUFDbEQseUJBQXlCO0lBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnQHZlcmNlbC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgcGx1cmFsaXplIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzJztcblxuLyoqXG4gKiBCdWlsZHMgYSB3b3JrZmxvdyBzdXNwZW5zaW9uIGxvZyBtZXNzYWdlIGJhc2VkIG9uIHRoZSBjb3VudHMgb2Ygc3RlcHMsIGhvb2tzLCBhbmQgd2FpdHMuXG4gKiBAcGFyYW0gcnVuSWQgLSBUaGUgd29ya2Zsb3cgcnVuIElEXG4gKiBAcGFyYW0gc3RlcENvdW50IC0gTnVtYmVyIG9mIHN0ZXBzIHRvIGJlIGVucXVldWVkXG4gKiBAcGFyYW0gaG9va0NvdW50IC0gTnVtYmVyIG9mIGhvb2tzIHRvIGJlIGVucXVldWVkXG4gKiBAcGFyYW0gd2FpdENvdW50IC0gTnVtYmVyIG9mIHdhaXRzIHRvIGJlIGVucXVldWVkXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIGxvZyBtZXNzYWdlIG9yIG51bGwgaWYgYWxsIGNvdW50cyBhcmUgMFxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRXb3JrZmxvd1N1c3BlbnNpb25NZXNzYWdlKFxuICBydW5JZDogc3RyaW5nLFxuICBzdGVwQ291bnQ6IG51bWJlcixcbiAgaG9va0NvdW50OiBudW1iZXIsXG4gIHdhaXRDb3VudDogbnVtYmVyXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHN0ZXBDb3VudCA9PT0gMCAmJiBob29rQ291bnQgPT09IDAgJiYgd2FpdENvdW50ID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBwYXJ0cyA9IFtdO1xuICBpZiAoc3RlcENvdW50ID4gMCkge1xuICAgIHBhcnRzLnB1c2goYCR7c3RlcENvdW50fSAke3BsdXJhbGl6ZSgnc3RlcCcsICdzdGVwcycsIHN0ZXBDb3VudCl9YCk7XG4gIH1cbiAgaWYgKGhvb2tDb3VudCA+IDApIHtcbiAgICBwYXJ0cy5wdXNoKGAke2hvb2tDb3VudH0gJHtwbHVyYWxpemUoJ2hvb2snLCAnaG9va3MnLCBob29rQ291bnQpfWApO1xuICB9XG4gIGlmICh3YWl0Q291bnQgPiAwKSB7XG4gICAgcGFydHMucHVzaChgJHt3YWl0Q291bnR9ICR7cGx1cmFsaXplKCd0aW1lcicsICd0aW1lcnMnLCB3YWl0Q291bnQpfWApO1xuICB9XG5cbiAgY29uc3QgcmVzdW1lTXNnUGFydHM6IHN0cmluZ1tdID0gW107XG4gIGlmIChzdGVwQ291bnQgPiAwKSB7XG4gICAgcmVzdW1lTXNnUGFydHMucHVzaCgnc3RlcHMgYXJlIGNvbXBsZXRlZCcpO1xuICB9XG4gIGlmIChob29rQ291bnQgPiAwKSB7XG4gICAgcmVzdW1lTXNnUGFydHMucHVzaCgnaG9va3MgYXJlIHJlY2VpdmVkJyk7XG4gIH1cbiAgaWYgKHdhaXRDb3VudCA+IDApIHtcbiAgICByZXN1bWVNc2dQYXJ0cy5wdXNoKCd0aW1lcnMgaGF2ZSBlbGFwc2VkJyk7XG4gIH1cbiAgY29uc3QgcmVzdW1lTXNnID0gcmVzdW1lTXNnUGFydHMuam9pbignIGFuZCAnKTtcblxuICByZXR1cm4gYFtXb3JrZmxvd3NdIFwiJHtydW5JZH1cIiAtICR7cGFydHMuam9pbignIGFuZCAnKX0gdG8gYmUgZW5xdWV1ZWRcXG4gIFdvcmtmbG93IHdpbGwgc3VzcGVuZCBhbmQgcmVzdW1lIHdoZW4gJHtyZXN1bWVNc2d9YDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBzdHJlYW0gSUQgZm9yIGEgd29ya2Zsb3cgcnVuLlxuICogVXNlci1kZWZpbmVkIHN0cmVhbXMgaW5jbHVkZSBhIFwidXNlclwiIHNlZ21lbnQgZm9yIGlzb2xhdGlvbiBmcm9tIGZ1dHVyZSBzeXN0ZW0tZGVmaW5lZCBzdHJlYW1zLlxuICogTmFtZXNwYWNlcyBhcmUgYmFzZTY0LWVuY29kZWQgdG8gaGFuZGxlIGNoYXJhY3RlcnMgbm90IGFsbG93ZWQgaW4gUmVkaXMga2V5IG5hbWVzLlxuICpcbiAqIEBwYXJhbSBydW5JZCAtIFRoZSB3b3JrZmxvdyBydW4gSURcbiAqIEBwYXJhbSBuYW1lc3BhY2UgLSBPcHRpb25hbCBuYW1lc3BhY2UgZm9yIHRoZSBzdHJlYW1cbiAqIEByZXR1cm5zIFRoZSBzdHJlYW0gSUQgaW4gZm9ybWF0OiBgc3RybV97VUxJRH1fdXNlcl97YmFzZTY0KG5hbWVzcGFjZSk/fWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdvcmtmbG93UnVuU3RyZWFtSWQocnVuSWQ6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nKSB7XG4gIGNvbnN0IHN0cmVhbUlkID0gYCR7cnVuSWQucmVwbGFjZSgnd3J1bl8nLCAnc3RybV8nKX1fdXNlcmA7XG4gIGlmICghbmFtZXNwYWNlKSB7XG4gICAgcmV0dXJuIHN0cmVhbUlkO1xuICB9XG4gIC8vIEJhc2U2NCBlbmNvZGUgdGhlIG5hbWVzcGFjZSB0byBoYW5kbGUgc3BlY2lhbCBjaGFyYWN0ZXJzIHRoYXQgbWF5IG5vdCBiZSBhbGxvd2VkIGluIFJlZGlzIGtleXNcbiAgY29uc3QgZW5jb2RlZE5hbWVzcGFjZSA9IEJ1ZmZlci5mcm9tKG5hbWVzcGFjZSwgJ3V0Zi04JykudG9TdHJpbmcoXG4gICAgJ2Jhc2U2NHVybCdcbiAgKTtcbiAgcmV0dXJuIGAke3N0cmVhbUlkfV8ke2VuY29kZWROYW1lc3BhY2V9YDtcbn1cblxuLyoqXG4gKiBBIHNtYWxsIHdyYXBwZXIgYXJvdW5kIGB3YWl0VW50aWxgIHRoYXQgYWxzbyByZXR1cm5zXG4gKiB0aGUgcmVzdWx0IG9mIHRoZSBhd2FpdGVkIHByb21pc2UuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0ZWRVbnRpbDxUPihmbjogKCkgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICBjb25zdCByZXN1bHQgPSBmbigpO1xuICB3YWl0VW50aWwoXG4gICAgcmVzdWx0LmNhdGNoKCgpID0+IHtcbiAgICAgIC8vIElnbm9yZSBlcnJvciBmcm9tIHRoZSBwcm9taXNlIGJlaW5nIHJlamVjdGVkLlxuICAgICAgLy8gSXQncyBleHBlY3RlZCB0aGF0IHRoZSBpbnZva2VyIG9mIGB3YWl0ZWRVbnRpbGBcbiAgICAgIC8vIHdpbGwgaGFuZGxlIHRoZSBlcnJvci5cbiAgICB9KVxuICApO1xuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsU0FBaUIsRUFDakIsU0FBaUIsRUFDakIsU0FBaUI7SUFFakIsSUFBSSxTQUFTLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBYSxFQUFFLENBQUM7SUFDcEMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEIsY0FBYyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUvQyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsNERBQTRELFNBQVMsRUFBRSxDQUFDO0FBQ3ZHLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsU0FBa0I7SUFDdEUsTUFBTSxRQUFRLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxpR0FBaUc7SUFDakcsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQy9ELFdBQVcsQ0FDWixDQUFDO0lBQ0YsT0FBTyxHQUFHLFFBQVEsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0FBQzNDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBVTtJQUN6QyxPQUFPLFFBQVEsRUFBRSxlQUFlLENBQUM7QUFDbkMsQ0FBQztBQUVELE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDO0FBRW5DOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQUMsU0FBaUI7SUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQ2Isa0VBQWtFLFNBQVMsR0FBRyxDQUMvRSxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwbHVyYWxpemUgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuXG4vKipcbiAqIEJ1aWxkcyBhIHdvcmtmbG93IHN1c3BlbnNpb24gbG9nIG1lc3NhZ2UgYmFzZWQgb24gdGhlIGNvdW50cyBvZiBzdGVwcyxcbiAqIGhvb2tzLCBhbmQgd2FpdHMuIFRoZSBzdHJ1Y3R1cmVkIGxvZ2dlciBhdHRhY2hlcyB0aGUgcnVuIGNvbnRleHQsIHNvIHRoZVxuICogbWVzc2FnZSBpdHNlbGYgb25seSBkZXNjcmliZXMgd2hhdCdzIGJlaW5nIGVucXVldWVkLlxuICogQHBhcmFtIHN0ZXBDb3VudCAtIE51bWJlciBvZiBzdGVwcyB0byBiZSBlbnF1ZXVlZFxuICogQHBhcmFtIGhvb2tDb3VudCAtIE51bWJlciBvZiBob29rcyB0byBiZSBlbnF1ZXVlZFxuICogQHBhcmFtIHdhaXRDb3VudCAtIE51bWJlciBvZiB3YWl0cyB0byBiZSBlbnF1ZXVlZFxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBsb2cgbWVzc2FnZSBvciBudWxsIGlmIGFsbCBjb3VudHMgYXJlIDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkV29ya2Zsb3dTdXNwZW5zaW9uTWVzc2FnZShcbiAgc3RlcENvdW50OiBudW1iZXIsXG4gIGhvb2tDb3VudDogbnVtYmVyLFxuICB3YWl0Q291bnQ6IG51bWJlclxuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmIChzdGVwQ291bnQgPT09IDAgJiYgaG9va0NvdW50ID09PSAwICYmIHdhaXRDb3VudCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcGFydHMgPSBbXTtcbiAgaWYgKHN0ZXBDb3VudCA+IDApIHtcbiAgICBwYXJ0cy5wdXNoKGAke3N0ZXBDb3VudH0gJHtwbHVyYWxpemUoJ3N0ZXAnLCAnc3RlcHMnLCBzdGVwQ291bnQpfWApO1xuICB9XG4gIGlmIChob29rQ291bnQgPiAwKSB7XG4gICAgcGFydHMucHVzaChgJHtob29rQ291bnR9ICR7cGx1cmFsaXplKCdob29rJywgJ2hvb2tzJywgaG9va0NvdW50KX1gKTtcbiAgfVxuICBpZiAod2FpdENvdW50ID4gMCkge1xuICAgIHBhcnRzLnB1c2goYCR7d2FpdENvdW50fSAke3BsdXJhbGl6ZSgndGltZXInLCAndGltZXJzJywgd2FpdENvdW50KX1gKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VtZU1zZ1BhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAoc3RlcENvdW50ID4gMCkge1xuICAgIHJlc3VtZU1zZ1BhcnRzLnB1c2goJ3N0ZXBzIGFyZSBjb21wbGV0ZWQnKTtcbiAgfVxuICBpZiAoaG9va0NvdW50ID4gMCkge1xuICAgIHJlc3VtZU1zZ1BhcnRzLnB1c2goJ2hvb2tzIGFyZSByZWNlaXZlZCcpO1xuICB9XG4gIGlmICh3YWl0Q291bnQgPiAwKSB7XG4gICAgcmVzdW1lTXNnUGFydHMucHVzaCgndGltZXJzIGhhdmUgZWxhcHNlZCcpO1xuICB9XG4gIGNvbnN0IHJlc3VtZU1zZyA9IHJlc3VtZU1zZ1BhcnRzLmpvaW4oJyBhbmQgJyk7XG5cbiAgcmV0dXJuIGAke3BhcnRzLmpvaW4oJyBhbmQgJyl9IHRvIGJlIGVucXVldWVkXFxuICBXb3JrZmxvdyB3aWxsIHN1c3BlbmQgYW5kIHJlc3VtZSB3aGVuICR7cmVzdW1lTXNnfWA7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgc3RyZWFtIElEIGZvciBhIHdvcmtmbG93IHJ1bi5cbiAqIFVzZXItZGVmaW5lZCBzdHJlYW1zIGluY2x1ZGUgYSBcInVzZXJcIiBzZWdtZW50IGZvciBpc29sYXRpb24gZnJvbSBmdXR1cmUgc3lzdGVtLWRlZmluZWQgc3RyZWFtcy5cbiAqIE5hbWVzcGFjZXMgYXJlIGJhc2U2NC1lbmNvZGVkIHRvIGhhbmRsZSBjaGFyYWN0ZXJzIG5vdCBhbGxvd2VkIGluIFJlZGlzIGtleSBuYW1lcy5cbiAqXG4gKiBAcGFyYW0gcnVuSWQgLSBUaGUgd29ya2Zsb3cgcnVuIElEXG4gKiBAcGFyYW0gbmFtZXNwYWNlIC0gT3B0aW9uYWwgbmFtZXNwYWNlIGZvciB0aGUgc3RyZWFtXG4gKiBAcmV0dXJucyBUaGUgc3RyZWFtIElEIGluIGZvcm1hdDogYHN0cm1fe1VMSUR9X3VzZXJfe2Jhc2U2NChuYW1lc3BhY2UpP31gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3JrZmxvd1J1blN0cmVhbUlkKHJ1bklkOiBzdHJpbmcsIG5hbWVzcGFjZT86IHN0cmluZykge1xuICBjb25zdCBzdHJlYW1JZCA9IGAke3J1bklkLnJlcGxhY2UoJ3dydW5fJywgJ3N0cm1fJyl9X3VzZXJgO1xuICBpZiAoIW5hbWVzcGFjZSkge1xuICAgIHJldHVybiBzdHJlYW1JZDtcbiAgfVxuICAvLyBCYXNlNjQgZW5jb2RlIHRoZSBuYW1lc3BhY2UgdG8gaGFuZGxlIHNwZWNpYWwgY2hhcmFjdGVycyB0aGF0IG1heSBub3QgYmUgYWxsb3dlZCBpbiBSZWRpcyBrZXlzXG4gIGNvbnN0IGVuY29kZWROYW1lc3BhY2UgPSBCdWZmZXIuZnJvbShuYW1lc3BhY2UsICd1dGYtOCcpLnRvU3RyaW5nKFxuICAgICdiYXNlNjR1cmwnXG4gICk7XG4gIHJldHVybiBgJHtzdHJlYW1JZH1fJHtlbmNvZGVkTmFtZXNwYWNlfWA7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzdHJlYW0gSUQgZm9yIGFuIGFib3J0IHNpZ25hbCdzIGJhY2tpbmcgc3RyZWFtLlxuICogVXNlcyB0aGUgXCJfc3lzdGVtX2Fib3J0XCIgbmFtZXNwYWNlIHRvIGlzb2xhdGUgZnJvbSB1c2VyLWRlZmluZWQgc3RyZWFtcy5cbiAqXG4gKiBAcGFyYW0gaWQgLSBBIHVuaXF1ZSBpZGVudGlmaWVyICh0eXBpY2FsbHkgYSBVTElEKVxuICogQHJldHVybnMgVGhlIHN0cmVhbSBJRCBpbiBmb3JtYXQ6IGBzdHJtX3tpZH1fc3lzdGVtX2Fib3J0YFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWJvcnRTdHJlYW1JZChpZDogc3RyaW5nKSB7XG4gIHJldHVybiBgc3RybV8ke2lkfV9zeXN0ZW1fYWJvcnRgO1xufVxuXG5jb25zdCBBQk9SVF9UT0tFTl9QUkVGSVggPSAnYWJydF8nO1xuXG4vKipcbiAqIERlcml2ZSB0aGUgYWJvcnQgc3RyZWFtIG5hbWUgZnJvbSBhIGhvb2sgdG9rZW4uXG4gKiBIb29rIHRva2VucyB1c2UgdGhlIGZvcm1hdCBgYWJydF97aWR9YCwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHN0cmVhbSBpc1xuICogYHN0cm1fe2lkfV9zeXN0ZW1fYWJvcnRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWJvcnRTdHJlYW1JZEZyb21Ub2tlbihob29rVG9rZW46IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghaG9va1Rva2VuLnN0YXJ0c1dpdGgoQUJPUlRfVE9LRU5fUFJFRklYKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhbGlkIGFib3J0IGhvb2sgdG9rZW4gZm9ybWF0OiBleHBlY3RlZCBcImFicnRfXCIgcHJlZml4LCBnb3QgXCIke2hvb2tUb2tlbn1cImBcbiAgICApO1xuICB9XG4gIHJldHVybiBnZXRBYm9ydFN0cmVhbUlkKGhvb2tUb2tlbi5zbGljZShBQk9SVF9UT0tFTl9QUkVGSVgubGVuZ3RoKSk7XG59XG4iXX0=
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "5.0.0-beta.3";
1
+ export declare const version = "5.0.0-beta.30";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,iBAAiB,CAAA"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,kBAAkB,CAAA"}
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // Generated by genversion.
2
- export const version = '5.0.0-beta.3';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGdlbnZlcnNpb24uXG5leHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1LjAuMC1iZXRhLjMnXG4iXX0=
2
+ export const version = '5.0.0-beta.30';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGdlbnZlcnNpb24uXG5leHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1LjAuMC1iZXRhLjMwJ1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vm/index.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IAEb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB;;;iCAoG1B,MAAM;EAItC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vm/index.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IAEb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB;;;iCAsG1B,MAAM;EAItC"}
package/dist/vm/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { runInContext, createContext as vmCreateContext } from 'node:vm';
2
+ import { WorkflowRuntimeError } from '@workflow/errors';
2
3
  import seedrandom from 'seedrandom';
3
4
  import { installUint8ArrayBase64 } from './uint8array-base64.js';
4
5
  import { createRandomUUID } from './uuid.js';
@@ -55,7 +56,7 @@ export function createContext(options) {
55
56
  get(target, prop) {
56
57
  if (prop === 'generateKey') {
57
58
  return () => {
58
- throw new Error('Not implemented');
59
+ throw new WorkflowRuntimeError('`crypto.subtle.generateKey()` is not available inside a workflow function. Move key generation to a step function where full Node.js crypto is available.');
59
60
  };
60
61
  }
61
62
  else if (prop === 'digest') {
@@ -99,4 +100,4 @@ export function createContext(options) {
99
100
  },
100
101
  };
101
102
  }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLElBQUksZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pFLE9BQU8sVUFBVSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFRN0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE2QjtJQUN6RCxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDekIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLE1BQU0sT0FBTyxHQUFHLGVBQWUsRUFBRSxDQUFDO0lBRWxDLE1BQU0sQ0FBQyxHQUFzQixZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpFLGdDQUFnQztJQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFFcEIsaUZBQWlGO0lBQ2pGLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckIsNkhBQTZIO0lBQzVILENBQVMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxJQUFJLENBQzdCLEdBQUcsSUFBK0M7UUFFbEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELDBEQUEwRDtRQUMxRCxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQyxD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L0MsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUV6QixvRUFBb0U7SUFDcEUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLGlFQUFpRTtJQUNoRSxDQUFDLENBQUMsTUFBYyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDLE1BQWMsQ0FBQyxZQUFZLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRXJFLHNDQUFzQztJQUN0QyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNkLENBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRTNDLE9BQU87UUFDTCxPQUFPO1FBQ1AsVUFBVSxFQUFFLENBQUM7UUFDYixlQUFlLEVBQUUsQ0FBQyxTQUFpQixFQUFFLEVBQUU7WUFDckMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUM3QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBydW5JbkNvbnRleHQsIGNyZWF0ZUNvbnRleHQgYXMgdm1DcmVhdGVDb250ZXh0IH0gZnJvbSAnbm9kZTp2bSc7XG5pbXBvcnQgc2VlZHJhbmRvbSBmcm9tICdzZWVkcmFuZG9tJztcbmltcG9ydCB7IGluc3RhbGxVaW50OEFycmF5QmFzZTY0IH0gZnJvbSAnLi91aW50OGFycmF5LWJhc2U2NC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVSYW5kb21VVUlEIH0gZnJvbSAnLi91dWlkLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDb250ZXh0T3B0aW9ucyB7XG4gIHNlZWQ6IHN0cmluZztcbiAgLy8gRml4ZWQgdGltZXN0YW1wIGZvciBkZXRlcm1pbmlzdGljIERhdGUgb3BlcmF0aW9uc1xuICBmaXhlZFRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBOb2RlLmpzIGB2bS5Db250ZXh0YCBjb25maWd1cmVkIHRvIGJlIHVzYWJsZSBmb3JcbiAqIGV4ZWN1dGluZyB3b3JrZmxvdyBsb2dpYyBpbiBhIGRldGVybWluaXN0aWMgZW52aXJvbm1lbnQuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGNvbnRleHQuXG4gKiBAcmV0dXJucyBUaGUgY29udGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQob3B0aW9uczogQ3JlYXRlQ29udGV4dE9wdGlvbnMpIHtcbiAgbGV0IHsgZml4ZWRUaW1lc3RhbXAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHsgc2VlZCB9ID0gb3B0aW9ucztcbiAgY29uc3Qgcm5nID0gc2VlZHJhbmRvbShzZWVkKTtcbiAgY29uc3QgY29udGV4dCA9IHZtQ3JlYXRlQ29udGV4dCgpO1xuXG4gIGNvbnN0IGc6IHR5cGVvZiBnbG9iYWxUaGlzID0gcnVuSW5Db250ZXh0KCdnbG9iYWxUaGlzJywgY29udGV4dCk7XG5cbiAgLy8gRGV0ZXJtaW5pc3RpYyBgTWF0aC5yYW5kb20oKWBcbiAgZy5NYXRoLnJhbmRvbSA9IHJuZztcblxuICAvLyBPdmVycmlkZSBgRGF0ZWAgY29uc3RydWN0b3IgdG8gcmV0dXJuIGZpeGVkIHRpbWUgd2hlbiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHNcbiAgY29uc3QgRGF0ZV8gPSBnLkRhdGU7XG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9TaGFkb3dSZXN0cmljdGVkTmFtZXM6IFdlJ3JlIHNoYWRvd2luZyB0aGUgZ2xvYmFsIGBEYXRlYCBwcm9wZXJ0eSB0byBtYWtlIGl0IGRldGVybWluaXN0aWMuXG4gIChnIGFzIGFueSkuRGF0ZSA9IGZ1bmN0aW9uIERhdGUoXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczwodHlwZW9mIGdsb2JhbFRoaXMpWydEYXRlJ10+W11cbiAgKSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGVfKGZpeGVkVGltZXN0YW1wKTtcbiAgICB9XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIEFyZ3MgaXMgYERhdGVgIGNvbnN0cnVjdG9yIGFyZ3VtZW50c1xuICAgIHJldHVybiBuZXcgRGF0ZV8oLi4uYXJncyk7XG4gIH07XG4gIChnIGFzIGFueSkuRGF0ZS5wcm90b3R5cGUgPSBEYXRlXy5wcm90b3R5cGU7XG4gIC8vIFByZXNlcnZlIHN0YXRpYyBtZXRob2RzXG4gIE9iamVjdC5zZXRQcm90b3R5cGVPZihnLkRhdGUsIERhdGVfKTtcbiAgZy5EYXRlLm5vdyA9ICgpID0+IGZpeGVkVGltZXN0YW1wO1xuXG4gIC8vIERldGVybWluaXN0aWMgYGNyeXB0b2AgdXNpbmcgUHJveHkgdG8gYXZvaWQgbXV0YXRpbmcgZ2xvYmFsIG9iamVjdHNcbiAgY29uc3Qgb3JpZ2luYWxDcnlwdG8gPSBnbG9iYWxUaGlzLmNyeXB0bztcbiAgY29uc3Qgb3JpZ2luYWxTdWJ0bGUgPSBvcmlnaW5hbENyeXB0by5zdWJ0bGU7XG5cbiAgZnVuY3Rpb24gZ2V0UmFuZG9tVmFsdWVzKGFycmF5OiBVaW50OEFycmF5KSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgYXJyYXlbaV0gPSBNYXRoLmZsb29yKHJuZygpICogMjU2KTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgY29uc3QgcmFuZG9tVVVJRCA9IGNyZWF0ZVJhbmRvbVVVSUQocm5nKTtcblxuICBjb25zdCBib3VuZERpZ2VzdCA9IG9yaWdpbmFsU3VidGxlLmRpZ2VzdC5iaW5kKG9yaWdpbmFsU3VidGxlKTtcblxuICBnLmNyeXB0byA9IG5ldyBQcm94eShvcmlnaW5hbENyeXB0bywge1xuICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgIGlmIChwcm9wID09PSAnZ2V0UmFuZG9tVmFsdWVzJykge1xuICAgICAgICByZXR1cm4gZ2V0UmFuZG9tVmFsdWVzO1xuICAgICAgfVxuICAgICAgaWYgKHByb3AgPT09ICdyYW5kb21VVUlEJykge1xuICAgICAgICByZXR1cm4gcmFuZG9tVVVJRDtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wID09PSAnc3VidGxlJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KG9yaWdpbmFsU3VidGxlLCB7XG4gICAgICAgICAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgaWYgKHByb3AgPT09ICdnZW5lcmF0ZUtleScpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wID09PSAnZGlnZXN0Jykge1xuICAgICAgICAgICAgICByZXR1cm4gYm91bmREaWdlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3AgYXMga2V5b2YgdHlwZW9mIG9yaWdpbmFsU3VidGxlXTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRbcHJvcCBhcyBrZXlvZiB0eXBlb2Ygb3JpZ2luYWxDcnlwdG9dO1xuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFByb3BhZ2F0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgKGcgYXMgYW55KS5wcm9jZXNzID0ge1xuICAgIGVudjogT2JqZWN0LmZyZWV6ZSh7IC4uLnByb2Nlc3MuZW52IH0pLFxuICB9O1xuXG4gIC8vIFN0YXRlbGVzcyArIHN5bmNocm9ub3VzIFdlYiBBUElzIHRoYXQgYXJlIG1hZGUgYXZhaWxhYmxlIGluc2lkZSB0aGUgc2FuZGJveFxuICBnLkRPTUV4Y2VwdGlvbiA9IGdsb2JhbFRoaXMuRE9NRXhjZXB0aW9uO1xuICBnLkhlYWRlcnMgPSBnbG9iYWxUaGlzLkhlYWRlcnM7XG4gIGcuVGV4dEVuY29kZXIgPSBnbG9iYWxUaGlzLlRleHRFbmNvZGVyO1xuICBnLlRleHREZWNvZGVyID0gZ2xvYmFsVGhpcy5UZXh0RGVjb2RlcjtcbiAgZy5jb25zb2xlID0gZ2xvYmFsVGhpcy5jb25zb2xlO1xuICBnLlVSTCA9IGdsb2JhbFRoaXMuVVJMO1xuICBnLlVSTFNlYXJjaFBhcmFtcyA9IGdsb2JhbFRoaXMuVVJMU2VhcmNoUGFyYW1zO1xuICBnLnN0cnVjdHVyZWRDbG9uZSA9IGdsb2JhbFRoaXMuc3RydWN0dXJlZENsb25lO1xuICBnLmF0b2IgPSBnbG9iYWxUaGlzLmF0b2I7XG4gIGcuYnRvYSA9IGdsb2JhbFRoaXMuYnRvYTtcblxuICAvLyBUQzM5IFVpbnQ4QXJyYXkgYmFzZTY0L2hleCBwb2x5ZmlsbCAocHJvcG9zYWwtYXJyYXlidWZmZXItYmFzZTY0KVxuICBpbnN0YWxsVWludDhBcnJheUJhc2U2NChnLlVpbnQ4QXJyYXkpO1xuXG4gIC8vIFRDMzkgRXhwbGljaXQgUmVzb3VyY2UgTWFuYWdlbWVudCBwb2x5ZmlsbCBmb3IgYHVzaW5nYCBrZXl3b3JkXG4gIChnLlN5bWJvbCBhcyBhbnkpLmRpc3Bvc2UgPz89IFN5bWJvbC5mb3IoJ1N5bWJvbC5kaXNwb3NlJyk7XG4gIChnLlN5bWJvbCBhcyBhbnkpLmFzeW5jRGlzcG9zZSA/Pz0gU3ltYm9sLmZvcignU3ltYm9sLmFzeW5jRGlzcG9zZScpO1xuXG4gIC8vIEhBQ0s6IFNoaW0gYGV4cG9ydHNgIGZvciB0aGUgYnVuZGxlXG4gIGcuZXhwb3J0cyA9IHt9O1xuICAoZyBhcyBhbnkpLm1vZHVsZSA9IHsgZXhwb3J0czogZy5leHBvcnRzIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0LFxuICAgIGdsb2JhbFRoaXM6IGcsXG4gICAgdXBkYXRlVGltZXN0YW1wOiAodGltZXN0YW1wOiBudW1iZXIpID0+IHtcbiAgICAgIGZpeGVkVGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLElBQUksZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sVUFBVSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFRN0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE2QjtJQUN6RCxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDekIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLE1BQU0sT0FBTyxHQUFHLGVBQWUsRUFBRSxDQUFDO0lBRWxDLE1BQU0sQ0FBQyxHQUFzQixZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpFLGdDQUFnQztJQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFFcEIsaUZBQWlGO0lBQ2pGLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckIsNkhBQTZIO0lBQzVILENBQVMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxJQUFJLENBQzdCLEdBQUcsSUFBK0M7UUFFbEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELDBEQUEwRDtRQUMxRCxPQUFPLElB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QUMvQyxDQUFDLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUM7SUFDL0MsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUV6QixvRUFBb0U7SUFDcEUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLGlFQUFpRTtJQUNoRSxDQUFDLENBQUMsTUFBYyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDLE1BQWMsQ0FBQyxZQUFZLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRXJFLHNDQUFzQztJQUN0QyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNkLENBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRTNDLE9BQU87UUFDTCxPQUFPO1FBQ1AsVUFBVSxFQUFFLENBQUM7UUFDYixlQUFlLEVBQUUsQ0FBQyxTQUFpQixFQUFFLEVBQUU7WUFDckMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUM3QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBydW5JbkNvbnRleHQsIGNyZWF0ZUNvbnRleHQgYXMgdm1DcmVhdGVDb250ZXh0IH0gZnJvbSAnbm9kZTp2bSc7XG5pbXBvcnQgeyBXb3JrZmxvd1J1bnRpbWVFcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHNlZWRyYW5kb20gZnJvbSAnc2VlZHJhbmRvbSc7XG5pbXBvcnQgeyBpbnN0YWxsVWludDhBcnJheUJhc2U2NCB9IGZyb20gJy4vdWludDhhcnJheS1iYXNlNjQuanMnO1xuaW1wb3J0IHsgY3JlYXRlUmFuZG9tVVVJRCB9IGZyb20gJy4vdXVpZC5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ29udGV4dE9wdGlvbnMge1xuICBzZWVkOiBzdHJpbmc7XG4gIC8vIEZpeGVkIHRpbWVzdGFtcCBmb3IgZGV0ZXJtaW5pc3RpYyBEYXRlIG9wZXJhdGlvbnNcbiAgZml4ZWRUaW1lc3RhbXA6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgTm9kZS5qcyBgdm0uQ29udGV4dGAgY29uZmlndXJlZCB0byBiZSB1c2FibGUgZm9yXG4gKiBleGVjdXRpbmcgd29ya2Zsb3cgbG9naWMgaW4gYSBkZXRlcm1pbmlzdGljIGVudmlyb25tZW50LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBjb250ZXh0LlxuICogQHJldHVybnMgVGhlIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0KG9wdGlvbnM6IENyZWF0ZUNvbnRleHRPcHRpb25zKSB7XG4gIGxldCB7IGZpeGVkVGltZXN0YW1wIH0gPSBvcHRpb25zO1xuICBjb25zdCB7IHNlZWQgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJuZyA9IHNlZWRyYW5kb20oc2VlZCk7XG4gIGNvbnN0IGNvbnRleHQgPSB2bUNyZWF0ZUNvbnRleHQoKTtcblxuICBjb25zdCBnOiB0eXBlb2YgZ2xvYmFsVGhpcyA9IHJ1bkluQ29udGV4dCgnZ2xvYmFsVGhpcycsIGNvbnRleHQpO1xuXG4gIC8vIERldGVybWluaXN0aWMgYE1hdGgucmFuZG9tKClgXG4gIGcuTWF0aC5yYW5kb20gPSBybmc7XG5cbiAgLy8gT3ZlcnJpZGUgYERhdGVgIGNvbnN0cnVjdG9yIHRvIHJldHVybiBmaXhlZCB0aW1lIHdoZW4gY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzXG4gIGNvbnN0IERhdGVfID0gZy5EYXRlO1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vU2hhZG93UmVzdHJpY3RlZE5hbWVzOiBXZSdyZSBzaGFkb3dpbmcgdGhlIGdsb2JhbCBgRGF0ZWAgcHJvcGVydHkgdG8gbWFrZSBpdCBkZXRlcm1pbmlzdGljLlxuICAoZyBhcyBhbnkpLkRhdGUgPSBmdW5jdGlvbiBEYXRlKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8KHR5cGVvZiBnbG9iYWxUaGlzKVsnRGF0ZSddPltdXG4gICkge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlXyhmaXhlZFRpbWVzdGFtcCk7XG4gICAgfVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBBcmdzIGlzIGBEYXRlYCBjb25zdHJ1Y3RvciBhcmd1bWVudHNcbiAgICByZXR1cm4gbmV3IERhdGVfKC4uLmFyZ3MpO1xuICB9O1xuICAoZyBhcyBhbnkpLkRhdGUucHJvdG90eXBlID0gRGF0ZV8ucHJvdG90eXBlO1xuICAvLyBQcmVzZXJ2ZSBzdGF0aWMgbWV0aG9kc1xuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZy5EYXRlLCBEYXRlXyk7XG4gIGcuRGF0ZS5ub3cgPSAoKSA9PiBmaXhlZFRpbWVzdGFtcDtcblxuICAvLyBEZXRlcm1pbmlzdGljIGBjcnlwdG9gIHVzaW5nIFByb3h5IHRvIGF2b2lkIG11dGF0aW5nIGdsb2JhbCBvYmplY3RzXG4gIGNvbnN0IG9yaWdpbmFsQ3J5cHRvID0gZ2xvYmFsVGhpcy5jcnlwdG87XG4gIGNvbnN0IG9yaWdpbmFsU3VidGxlID0gb3JpZ2luYWxDcnlwdG8uc3VidGxlO1xuXG4gIGZ1bmN0aW9uIGdldFJhbmRvbVZhbHVlcyhhcnJheTogVWludDhBcnJheSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycmF5W2ldID0gTWF0aC5mbG9vcihybmcoKSAqIDI1Nik7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIGNvbnN0IHJhbmRvbVVVSUQgPSBjcmVhdGVSYW5kb21VVUlEKHJuZyk7XG5cbiAgY29uc3QgYm91bmREaWdlc3QgPSBvcmlnaW5hbFN1YnRsZS5kaWdlc3QuYmluZChvcmlnaW5hbFN1YnRsZSk7XG5cbiAgZy5jcnlwdG8gPSBuZXcgUHJveHkob3JpZ2luYWxDcnlwdG8sIHtcbiAgICBnZXQodGFyZ2V0LCBwcm9wKSB7XG4gICAgICBpZiAocHJvcCA9PT0gJ2dldFJhbmRvbVZhbHVlcycpIHtcbiAgICAgICAgcmV0dXJuIGdldFJhbmRvbVZhbHVlcztcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wID09PSAncmFuZG9tVVVJRCcpIHtcbiAgICAgICAgcmV0dXJuIHJhbmRvbVVVSUQ7XG4gICAgICB9XG4gICAgICBpZiAocHJvcCA9PT0gJ3N1YnRsZScpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm94eShvcmlnaW5hbFN1YnRsZSwge1xuICAgICAgICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgIGlmIChwcm9wID09PSAnZ2VuZXJhdGVLZXknKSB7XG4gICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdvcmtmbG93UnVudGltZUVycm9yKFxuICAgICAgICAgICAgICAgICAgJ2BjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KClgIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIGEgd29ya2Zsb3cgZnVuY3Rpb24uIE1vdmUga2V5IGdlbmVyYXRpb24gdG8gYSBzdGVwIGZ1bmN0aW9uIHdoZXJlIGZ1bGwgTm9kZS5qcyBjcnlwdG8gaXMgYXZhaWxhYmxlLidcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wID09PSAnZGlnZXN0Jykge1xuICAgICAgICAgICAgICByZXR1cm4gYm91bmREaWdlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3AgYXMga2V5b2YgdHlwZW9mIG9yaWdpbmFsU3VidGxlXTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRbcHJvcCBhcyBrZXlvZiB0eXBlb2Ygb3JpZ2luYWxDcnlwdG9dO1xuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFByb3BhZ2F0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgKGcgYXMgYW55KS5wcm9jZXNzID0ge1xuICAgIGVudjogT2JqZWN0LmZyZWV6ZSh7IC4uLnByb2Nlc3MuZW52IH0pLFxuICB9O1xuXG4gIC8vIFN0YXRlbGVzcyArIHN5bmNocm9ub3VzIFdlYiBBUElzIHRoYXQgYXJlIG1hZGUgYXZhaWxhYmxlIGluc2lkZSB0aGUgc2FuZGJveFxuICBnLkRPTUV4Y2VwdGlvbiA9IGdsb2JhbFRoaXMuRE9NRXhjZXB0aW9uO1xuICBnLkhlYWRlcnMgPSBnbG9iYWxUaGlzLkhlYWRlcnM7XG4gIGcuVGV4dEVuY29kZXIgPSBnbG9iYWxUaGlzLlRleHRFbmNvZGVyO1xuICBnLlRleHREZWNvZGVyID0gZ2xvYmFsVGhpcy5UZXh0RGVjb2RlcjtcbiAgZy5jb25zb2xlID0gZ2xvYmFsVGhpcy5jb25zb2xlO1xuICBnLlVSTCA9IGdsb2JhbFRoaXMuVVJMO1xuICBnLlVSTFNlYXJjaFBhcmFtcyA9IGdsb2JhbFRoaXMuVVJMU2VhcmNoUGFyYW1zO1xuICBnLnN0cnVjdHVyZWRDbG9uZSA9IGdsb2JhbFRoaXMuc3RydWN0dXJlZENsb25lO1xuICBnLmF0b2IgPSBnbG9iYWxUaGlzLmF0b2I7XG4gIGcuYnRvYSA9IGdsb2JhbFRoaXMuYnRvYTtcblxuICAvLyBUQzM5IFVpbnQ4QXJyYXkgYmFzZTY0L2hleCBwb2x5ZmlsbCAocHJvcG9zYWwtYXJyYXlidWZmZXItYmFzZTY0KVxuICBpbnN0YWxsVWludDhBcnJheUJhc2U2NChnLlVpbnQ4QXJyYXkpO1xuXG4gIC8vIFRDMzkgRXhwbGljaXQgUmVzb3VyY2UgTWFuYWdlbWVudCBwb2x5ZmlsbCBmb3IgYHVzaW5nYCBrZXl3b3JkXG4gIChnLlN5bWJvbCBhcyBhbnkpLmRpc3Bvc2UgPz89IFN5bWJvbC5mb3IoJ1N5bWJvbC5kaXNwb3NlJyk7XG4gIChnLlN5bWJvbCBhcyBhbnkpLmFzeW5jRGlzcG9zZSA/Pz0gU3ltYm9sLmZvcignU3ltYm9sLmFzeW5jRGlzcG9zZScpO1xuXG4gIC8vIEhBQ0s6IFNoaW0gYGV4cG9ydHNgIGZvciB0aGUgYnVuZGxlXG4gIGcuZXhwb3J0cyA9IHt9O1xuICAoZyBhcyBhbnkpLm1vZHVsZSA9IHsgZXhwb3J0czogZy5leHBvcnRzIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0LFxuICAgIGdsb2JhbFRoaXM6IGcsXG4gICAgdXBkYXRlVGltZXN0YW1wOiAodGltZXN0YW1wOiBudW1iZXIpID0+IHtcbiAgICAgIGZpeGVkVGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { type Context, Script } from 'node:vm';
2
+ /**
3
+ * Returns a compiled `vm.Script` for the given workflow bundle code and
4
+ * filename, compiling and caching it on first use. Subsequent calls with the
5
+ * same `(code, filename)` return the cached `Script`.
6
+ *
7
+ * The returned `Script` is not yet bound to any context; the caller runs it
8
+ * against a specific VM context via `script.runInContext(context)`. This is
9
+ * equivalent to `vm.runInContext(code, context, { filename })` but skips the
10
+ * recompile.
11
+ */
12
+ export declare function getCachedWorkflowScript(code: string, filename: string): Script;
13
+ /**
14
+ * Runs the cached workflow-bundle `Script` against `context`. Compiles and
15
+ * caches the `Script` on first use for the given `(code, filename)`.
16
+ */
17
+ export declare function runCachedWorkflowScript(code: string, filename: string, context: Context): unknown;
18
+ /**
19
+ * Clears the compiled-script cache. Intended for tests that want to assert
20
+ * compile-vs-cache behaviour in isolation; not used on the hot path.
21
+ */
22
+ export declare function clearWorkflowScriptCache(): void;
23
+ /**
24
+ * Number of distinct bundle (`code`) versions currently retained. Exposed for
25
+ * tests asserting the LRU bound; not used on the hot path.
26
+ */
27
+ export declare function workflowScriptCacheSize(): number;
28
+ //# sourceMappingURL=script-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-cache.d.ts","sourceRoot":"","sources":["../../src/vm/script-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA0F/C;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,MAAM,CAqBR;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD"}
@@ -0,0 +1,140 @@
1
+ import { Script } from 'node:vm';
2
+ /**
3
+ * Module-level cache of compiled workflow-bundle `vm.Script` objects.
4
+ *
5
+ * Why this exists
6
+ * ---------------
7
+ * Replaying a workflow re-evaluates the workflow bundle against a fresh VM
8
+ * context on every iteration of the inline replay loop (see
9
+ * `runWorkflow` in `../workflow.ts`). The bundle is a single string that
10
+ * contains every workflow function in the app and registers them on
11
+ * `globalThis.__private_workflows`. Previously each replay called
12
+ * `vm.runInContext(workflowCode, context, { filename })`, which RE-PARSES and
13
+ * RE-COMPILES the entire bundle every time — O(N) full re-parses for a
14
+ * sequential workflow of N steps, plus the same parse cost repeated across
15
+ * every invocation in the process.
16
+ *
17
+ * Compilation is a pure function of `(code, filename)`: a `vm.Script` carries
18
+ * no realm/context state — it is only bound to a context at `runInContext`
19
+ * time. So a single compiled `Script` can be reused across replays AND across
20
+ * workflow invocations in the same process without affecting determinism: the
21
+ * produced workflow function is identical to the previous re-parse-every-time
22
+ * behaviour, with identical `filename` source attribution (see the precise
23
+ * claim — and its one caveat — in `runWorkflow`).
24
+ *
25
+ * Keying
26
+ * ------
27
+ * Keyed by `code` then `filename`. The `filename` is part of the key on
28
+ * purpose, NOT as a dedupe key: it is baked into the compiled script's source
29
+ * attribution and surfaces in stack traces, where `remapErrorStack` keys on it
30
+ * to map frames back to the user's source. Two workflows in the same bundle
31
+ * share the same `code` but have different `filename`s, so they intentionally
32
+ * compile to distinct `Script`s — collapsing them onto a single shared `Script`
33
+ * would misattribute one workflow's stack frames to another file. The cost of
34
+ * keeping them distinct is that the whole bundle is compiled once per distinct
35
+ * `filename` (not once per bundle); in practice that is bounded by the number
36
+ * of source files that define a workflow, and because V8 lazily compiles
37
+ * function bodies the duplicated work is the (cheap) top-level parse, not full
38
+ * per-workflow codegen.
39
+ *
40
+ * We use a nested Map (code -> filename -> Script) so that evicting a bundle
41
+ * (e.g. a new deployment/hot-reload producing a different `code`) drops the old
42
+ * code string and all of its per-filename scripts together.
43
+ *
44
+ * Bounding
45
+ * --------
46
+ * The top-level (`code`-keyed) map is an insertion-ordered LRU capped at
47
+ * `MAX_BUNDLES` entries. In production this bound is never reached: a
48
+ * deployment is its own process serving exactly one build-time bundle literal
49
+ * (skew protection runs old versions as separate processes), so there is a
50
+ * single `code` key for the process lifetime. The bound exists for dev/watch
51
+ * mode, where the dev route re-reads `workflowCode` from disk and re-invokes
52
+ * the entrypoint on every edit — each edit produces a NEW bundle string, which
53
+ * without a bound would pin every historical version forever (~0.8MB per edit,
54
+ * growing monotonically with edit count). The dev path only ever needs the
55
+ * latest bundle, so an LRU that keeps the few most-recent bundles and evicts
56
+ * the rest preserves the pre-cache GC behaviour while still serving the
57
+ * steady-state single-bundle case for free. The per-`filename` inner map is not
58
+ * separately bounded: it is naturally bounded by the (small) number of workflow
59
+ * source files in a bundle and is dropped wholesale when its parent `code`
60
+ * entry is evicted.
61
+ */
62
+ const scriptCache = new Map();
63
+ /**
64
+ * Max number of distinct bundle (`code`) versions to retain. One is enough for
65
+ * production; a handful covers pathological dev hot-reload / repeated-rebuild
66
+ * churn within a single long-lived process (e.g. a watch session or a test
67
+ * file) without unbounded growth. Kept deliberately small — there is no value
68
+ * in retaining stale bundles, only a memory cost.
69
+ */
70
+ const MAX_BUNDLES = 8;
71
+ /**
72
+ * Looks up the per-filename map for `code`, marking it most-recently-used.
73
+ * Relies on `Map` preserving insertion order: deleting and re-inserting an
74
+ * existing key moves it to the end (newest), so the first key is always the
75
+ * least-recently-used eviction candidate.
76
+ */
77
+ function touchBundle(code) {
78
+ const byFilename = scriptCache.get(code);
79
+ if (byFilename === undefined) {
80
+ return undefined;
81
+ }
82
+ // Move to the most-recently-used position (end of insertion order).
83
+ scriptCache.delete(code);
84
+ scriptCache.set(code, byFilename);
85
+ return byFilename;
86
+ }
87
+ /**
88
+ * Returns a compiled `vm.Script` for the given workflow bundle code and
89
+ * filename, compiling and caching it on first use. Subsequent calls with the
90
+ * same `(code, filename)` return the cached `Script`.
91
+ *
92
+ * The returned `Script` is not yet bound to any context; the caller runs it
93
+ * against a specific VM context via `script.runInContext(context)`. This is
94
+ * equivalent to `vm.runInContext(code, context, { filename })` but skips the
95
+ * recompile.
96
+ */
97
+ export function getCachedWorkflowScript(code, filename) {
98
+ let byFilename = touchBundle(code);
99
+ if (byFilename === undefined) {
100
+ byFilename = new Map();
101
+ scriptCache.set(code, byFilename);
102
+ // Evict the least-recently-used bundle(s) when over the cap. New bundles
103
+ // are appended at the end, so the oldest live at the front.
104
+ while (scriptCache.size > MAX_BUNDLES) {
105
+ const oldest = scriptCache.keys().next().value;
106
+ if (oldest === undefined) {
107
+ break;
108
+ }
109
+ scriptCache.delete(oldest);
110
+ }
111
+ }
112
+ let script = byFilename.get(filename);
113
+ if (script === undefined) {
114
+ script = new Script(code, { filename });
115
+ byFilename.set(filename, script);
116
+ }
117
+ return script;
118
+ }
119
+ /**
120
+ * Runs the cached workflow-bundle `Script` against `context`. Compiles and
121
+ * caches the `Script` on first use for the given `(code, filename)`.
122
+ */
123
+ export function runCachedWorkflowScript(code, filename, context) {
124
+ return getCachedWorkflowScript(code, filename).runInContext(context);
125
+ }
126
+ /**
127
+ * Clears the compiled-script cache. Intended for tests that want to assert
128
+ * compile-vs-cache behaviour in isolation; not used on the hot path.
129
+ */
130
+ export function clearWorkflowScriptCache() {
131
+ scriptCache.clear();
132
+ }
133
+ /**
134
+ * Number of distinct bundle (`code`) versions currently retained. Exposed for
135
+ * tests asserting the LRU bound; not used on the hot path.
136
+ */
137
+ export function workflowScriptCacheSize() {
138
+ return scriptCache.size;
139
+ }
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0LWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZtL3NjcmlwdC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyREc7QUFDSCxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztBQUUzRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFFdEI7Ozs7O0dBS0c7QUFDSCxTQUFTLFdBQVcsQ0FBQyxJQUFZO0lBQy9CLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDN0IsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELG9FQUFvRTtJQUNwRSxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2xDLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLElBQVksRUFDWixRQUFnQjtJQUVoQixJQUFJLFVBQVUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDN0IsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBQ3ZDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLHlFQUF5RTtRQUN6RSw0REFBNEQ7UUFDNUQsT0FBTyxXQUFXLENBQUMsSUFBSSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDL0MsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3pCLE1BQU07WUFDUixDQUFDO1lBQ0QsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDekIsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDeEMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLElBQVksRUFDWixRQUFnQixFQUNoQixPQUFnQjtJQUVoQixPQUFPLHVCQUF1QixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx3QkFBd0I7SUFDdEMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3RCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBDb250ZXh0LCBTY3JpcHQgfSBmcm9tICdub2RlOnZtJztcblxuLyoqXG4gKiBNb2R1bGUtbGV2ZWwgY2FjaGUgb2YgY29tcGlsZWQgd29ya2Zsb3ctYnVuZGxlIGB2bS5TY3JpcHRgIG9iamVjdHMuXG4gKlxuICogV2h5IHRoaXMgZXhpc3RzXG4gKiAtLS0tLS0tLS0tLS0tLS1cbiAqIFJlcGxheWluZyBhIHdvcmtmbG93IHJlLWV2YWx1YXRlcyB0aGUgd29ya2Zsb3cgYnVuZGxlIGFnYWluc3QgYSBmcmVzaCBWTVxuICogY29udGV4dCBvbiBldmVyeSBpdGVyYXRpb24gb2YgdGhlIGlubGluZSByZXBsYXkgbG9vcCAoc2VlXG4gKiBgcnVuV29ya2Zsb3dgIGluIGAuLi93b3JrZmxvdy50c2ApLiBUaGUgYnVuZGxlIGlzIGEgc2luZ2xlIHN0cmluZyB0aGF0XG4gKiBjb250YWlucyBldmVyeSB3b3JrZmxvdyBmdW5jdGlvbiBpbiB0aGUgYXBwIGFuZCByZWdpc3RlcnMgdGhlbSBvblxuICogYGdsb2JhbFRoaXMuX19wcml2YXRlX3dvcmtmbG93c2AuIFByZXZpb3VzbHkgZWFjaCByZXBsYXkgY2FsbGVkXG4gKiBgdm0ucnVuSW5Db250ZXh0KHdvcmtmbG93Q29kZSwgY29udGV4dCwgeyBmaWxlbmFtZSB9KWAsIHdoaWNoIFJFLVBBUlNFUyBhbmRcbiAqIFJFLUNPTVBJTEVTIHRoZSBlbnRpcmUgYnVuZGxlIGV2ZXJ5IHRpbWUg4oCUIE8oTikgZnVsbCByZS1wYXJzZXMgZm9yIGFcbiAqIHNlcXVlbnRpYWwgd29ya2Zsb3cgb2YgTiBzdGVwcywgcGx1cyB0aGUgc2FtZSBwYXJzZSBjb3N0IHJlcGVhdGVkIGFjcm9zc1xuICogZXZlcnkgaW52b2NhdGlvbiBpbiB0aGUgcHJvY2Vzcy5cbiAqXG4gKiBDb21waWxhdGlvbiBpcyBhIHB1cmUgZnVuY3Rpb24gb2YgYChjb2RlLCBmaWxlbmFtZSlgOiBhIGB2bS5TY3JpcHRgIGNhcnJpZXNcbiAqIG5vIHJlYWxtL2NvbnRleHQgc3RhdGUg4oCUIGl0IGlzIG9ubHkgYm91bmQgdG8gYSBjb250ZXh0IGF0IGBydW5JbkNvbnRleHRgXG4gKiB0aW1lLiBTbyBhIHNpbmdsZSBjb21waWxlZCBgU2NyaXB0YCBjYW4gYmUgcmV1c2VkIGFjcm9zcyByZXBsYXlzIEFORCBhY3Jvc3NcbiAqIHdvcmtmbG93IGludm9jYXRpb25zIGluIHRoZSBzYW1lIHByb2Nlc3Mgd2l0aG91dCBhZmZlY3RpbmcgZGV0ZXJtaW5pc206IHRoZVxuICogcHJvZHVjZWQgd29ya2Zsb3cgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSBwcmV2aW91cyByZS1wYXJzZS1ldmVyeS10aW1lXG4gKiBiZWhhdmlvdXIsIHdpdGggaWRlbnRpY2FsIGBmaWxlbmFtZWAgc291cmNlIGF0dHJpYnV0aW9uIChzZWUgdGhlIHByZWNpc2VcbiAqIGNsYWltIOKAlCBhbmQgaXRzIG9uZSBjYXZlYXQg4oCUIGluIGBydW5Xb3JrZmxvd2ApLlxuICpcbiAqIEtleWluZ1xuICogLS0tLS0tXG4gKiBLZXllZCBieSBgY29kZWAgdGhlbiBgZmlsZW5hbWVgLiBUaGUgYGZpbGVuYW1lYCBpcyBwYXJ0IG9mIHRoZSBrZXkgb25cbiAqIHB1cnBvc2UsIE5PVCBhcyBhIGRlZHVwZSBrZXk6IGl0IGlzIGJha2VkIGludG8gdGhlIGNvbXBpbGVkIHNjcmlwdCdzIHNvdXJjZVxuICogYXR0cmlidXRpb24gYW5kIHN1cmZhY2VzIGluIHN0YWNrIHRyYWNlcywgd2hlcmUgYHJlbWFwRXJyb3JTdGFja2Aga2V5cyBvbiBpdFxuICogdG8gbWFwIGZyYW1lcyBiYWNrIHRvIHRoZSB1c2VyJ3Mgc291cmNlLiBUd28gd29ya2Zsb3dzIGluIHRoZSBzYW1lIGJ1bmRsZVxuICogc2hhcmUgdGhlIHNhbWUgYGNvZGVgIGJ1dCBoYXZlIGRpZmZlcmVudCBgZmlsZW5hbWVgcywgc28gdGhleSBpbnRlbnRpb25hbGx5XG4gKiBjb21waWxlIHRvIGRpc3RpbmN0IGBTY3JpcHRgcyDigJQgY29sbGFwc2luZyB0aGVtIG9udG8gYSBzaW5nbGUgc2hhcmVkIGBTY3JpcHRgXG4gKiB3b3VsZCBtaXNhdHRyaWJ1dGUgb25lIHdvcmtmbG93J3Mgc3RhY2sgZnJhbWVzIHRvIGFub3RoZXIgZmlsZS4gVGhlIGNvc3Qgb2ZcbiAqIGtlZXBpbmcgdGhlbSBkaXN0aW5jdCBpcyB0aGF0IHRoZSB3aG9sZSBidW5kbGUgaXMgY29tcGlsZWQgb25jZSBwZXIgZGlzdGluY3RcbiAqIGBmaWxlbmFtZWAgKG5vdCBvbmNlIHBlciBidW5kbGUpOyBpbiBwcmFjdGljZSB0aGF0IGlzIGJvdW5kZWQgYnkgdGhlIG51bWJlclxuICogb2Ygc291cmNlIGZpbGVzIHRoYXQgZGVmaW5lIGEgd29ya2Zsb3csIGFuZCBiZWNhdXNlIFY4IGxhemlseSBjb21waWxlc1xuICogZnVuY3Rpb24gYm9kaWVzIHRoZSBkdXBsaWNhdGVkIHdvcmsgaXMgdGhlIChjaGVhcCkgdG9wLWxldmVsIHBhcnNlLCBub3QgZnVsbFxuICogcGVyLXdvcmtmbG93IGNvZGVnZW4uXG4gKlxuICogV2UgdXNlIGEgbmVzdGVkIE1hcCAoY29kZSAtPiBmaWxlbmFtZSAtPiBTY3JpcHQpIHNvIHRoYXQgZXZpY3RpbmcgYSBidW5kbGVcbiAqIChlLmcuIGEgbmV3IGRlcGxveW1lbnQvaG90LXJlbG9hZCBwcm9kdWNpbmcgYSBkaWZmZXJlbnQgYGNvZGVgKSBkcm9wcyB0aGUgb2xkXG4gKiBjb2RlIHN0cmluZyBhbmQgYWxsIG9mIGl0cyBwZXItZmlsZW5hbWUgc2NyaXB0cyB0b2dldGhlci5cbiAqXG4gKiBCb3VuZGluZ1xuICogLS0tLS0tLS1cbiAqIFRoZSB0b3AtbGV2ZWwgKGBjb2RlYC1rZXllZCkgbWFwIGlzIGFuIGluc2VydGlvbi1vcmRlcmVkIExSVSBjYXBwZWQgYXRcbiAqIGBNQVhfQlVORExFU2AgZW50cmllcy4gSW4gcHJvZHVjdGlvbiB0aGlzIGJvdW5kIGlzIG5ldmVyIHJlYWNoZWQ6IGFcbiAqIGRlcGxveW1lbnQgaXMgaXRzIG93biBwcm9jZXNzIHNlcnZpbmcgZXhhY3RseSBvbmUgYnVpbGQtdGltZSBidW5kbGUgbGl0ZXJhbFxuICogKHNrZXcgcHJvdGVjdGlvbiBydW5zIG9sZCB2ZXJzaW9ucyBhcyBzZXBhcmF0ZSBwcm9jZXNzZXMpLCBzbyB0aGVyZSBpcyBhXG4gKiBzaW5nbGUgYGNvZGVgIGtleSBmb3IgdGhlIHByb2Nlc3MgbGlmZXRpbWUuIFRoZSBib3VuZCBleGlzdHMgZm9yIGRldi93YXRjaFxuICogbW9kZSwgd2hlcmUgdGhlIGRldiByb3V0ZSByZS1yZWFkcyBgd29ya2Zsb3dDb2RlYCBmcm9tIGRpc2sgYW5kIHJlLWludm9rZXNcbiAqIHRoZSBlbnRyeXBvaW50IG9uIGV2ZXJ5IGVkaXQg4oCUIGVhY2ggZWRpdCBwcm9kdWNlcyBhIE5FVyBidW5kbGUgc3RyaW5nLCB3aGljaFxuICogd2l0aG91dCBhIGJvdW5kIHdvdWxkIHBpbiBldmVyeSBoaXN0b3JpY2FsIHZlcnNpb24gZm9yZXZlciAofjAuOE1CIHBlciBlZGl0LFxuICogZ3Jvd2luZyBtb25vdG9uaWNhbGx5IHdpdGggZWRpdCBjb3VudCkuIFRoZSBkZXYgcGF0aCBvbmx5IGV2ZXIgbmVlZHMgdGhlXG4gKiBsYXRlc3QgYnVuZGxlLCBzbyBhbiBMUlUgdGhhdCBrZWVwcyB0aGUgZmV3IG1vc3QtcmVjZW50IGJ1bmRsZXMgYW5kIGV2aWN0c1xuICogdGhlIHJlc3QgcHJlc2VydmVzIHRoZSBwcmUtY2FjaGUgR0MgYmVoYXZpb3VyIHdoaWxlIHN0aWxsIHNlcnZpbmcgdGhlXG4gKiBzdGVhZHktc3RhdGUgc2luZ2xlLWJ1bmRsZSBjYXNlIGZvciBmcmVlLiBUaGUgcGVyLWBmaWxlbmFtZWAgaW5uZXIgbWFwIGlzIG5vdFxuICogc2VwYXJhdGVseSBib3VuZGVkOiBpdCBpcyBuYXR1cmFsbHkgYm91bmRlZCBieSB0aGUgKHNtYWxsKSBudW1iZXIgb2Ygd29ya2Zsb3dcbiAqIHNvdXJjZSBmaWxlcyBpbiBhIGJ1bmRsZSBhbmQgaXMgZHJvcHBlZCB3aG9sZXNhbGUgd2hlbiBpdHMgcGFyZW50IGBjb2RlYFxuICogZW50cnkgaXMgZXZpY3RlZC5cbiAqL1xuY29uc3Qgc2NyaXB0Q2FjaGUgPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgU2NyaXB0Pj4oKTtcblxuLyoqXG4gKiBNYXggbnVtYmVyIG9mIGRpc3RpbmN0IGJ1bmRsZSAoYGNvZGVgKSB2ZXJzaW9ucyB0byByZXRhaW4uIE9uZSBpcyBlbm91Z2ggZm9yXG4gKiBwcm9kdWN0aW9uOyBhIGhhbmRmdWwgY292ZXJzIHBhdGhvbG9naWNhbCBkZXYgaG90LXJlbG9hZCAvIHJlcGVhdGVkLXJlYnVpbGRcbiAqIGNodXJuIHdpdGhpbiBhIHNpbmdsZSBsb25nLWxpdmVkIHByb2Nlc3MgKGUuZy4gYSB3YXRjaCBzZXNzaW9uIG9yIGEgdGVzdFxuICogZmlsZSkgd2l0aG91dCB1bmJvdW5kZWQgZ3Jvd3RoLiBLZXB0IGRlbGliZXJhdGVseSBzbWFsbCDigJQgdGhlcmUgaXMgbm8gdmFsdWVcbiAqIGluIHJldGFpbmluZyBzdGFsZSBidW5kbGVzLCBvbmx5IGEgbWVtb3J5IGNvc3QuXG4gKi9cbmNvbnN0IE1BWF9CVU5ETEVTID0gODtcblxuLyoqXG4gKiBMb29rcyB1cCB0aGUgcGVyLWZpbGVuYW1lIG1hcCBmb3IgYGNvZGVgLCBtYXJraW5nIGl0IG1vc3QtcmVjZW50bHktdXNlZC5cbiAqIFJlbGllcyBvbiBgTWFwYCBwcmVzZXJ2aW5nIGluc2VydGlvbiBvcmRlcjogZGVsZXRpbmcgYW5kIHJlLWluc2VydGluZyBhblxuICogZXhpc3Rpbmcga2V5IG1vdmVzIGl0IHRvIHRoZSBlbmQgKG5ld2VzdCksIHNvIHRoZSBmaXJzdCBrZXkgaXMgYWx3YXlzIHRoZVxuICogbGVhc3QtcmVjZW50bHktdXNlZCBldmljdGlvbiBjYW5kaWRhdGUuXG4gKi9cbmZ1bmN0aW9uIHRvdWNoQnVuZGxlKGNvZGU6IHN0cmluZyk6IE1hcDxzdHJpbmcsIFNjcmlwdD4gfCB1bmRlZmluZWQge1xuICBjb25zdCBieUZpbGVuYW1lID0gc2NyaXB0Q2FjaGUuZ2V0KGNvZGUpO1xuICBpZiAoYnlGaWxlbmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICAvLyBNb3ZlIHRvIHRoZSBtb3N0LXJlY2VudGx5LXVzZWQgcG9zaXRpb24gKGVuZCBvZiBpbnNlcnRpb24gb3JkZXIpLlxuICBzY3JpcHRDYWNoZS5kZWxldGUoY29kZSk7XG4gIHNjcmlwdENhY2hlLnNldChjb2RlLCBieUZpbGVuYW1lKTtcbiAgcmV0dXJuIGJ5RmlsZW5hbWU7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGNvbXBpbGVkIGB2bS5TY3JpcHRgIGZvciB0aGUgZ2l2ZW4gd29ya2Zsb3cgYnVuZGxlIGNvZGUgYW5kXG4gKiBmaWxlbmFtZSwgY29tcGlsaW5nIGFuZCBjYWNoaW5nIGl0IG9uIGZpcnN0IHVzZS4gU3Vic2VxdWVudCBjYWxscyB3aXRoIHRoZVxuICogc2FtZSBgKGNvZGUsIGZpbGVuYW1lKWAgcmV0dXJuIHRoZSBjYWNoZWQgYFNjcmlwdGAuXG4gKlxuICogVGhlIHJldHVybmVkIGBTY3JpcHRgIGlzIG5vdCB5ZXQgYm91bmQgdG8gYW55IGNvbnRleHQ7IHRoZSBjYWxsZXIgcnVucyBpdFxuICogYWdhaW5zdCBhIHNwZWNpZmljIFZNIGNvbnRleHQgdmlhIGBzY3JpcHQucnVuSW5Db250ZXh0KGNvbnRleHQpYC4gVGhpcyBpc1xuICogZXF1aXZhbGVudCB0byBgdm0ucnVuSW5Db250ZXh0KGNvZGUsIGNvbnRleHQsIHsgZmlsZW5hbWUgfSlgIGJ1dCBza2lwcyB0aGVcbiAqIHJlY29tcGlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhY2hlZFdvcmtmbG93U2NyaXB0KFxuICBjb2RlOiBzdHJpbmcsXG4gIGZpbGVuYW1lOiBzdHJpbmdcbik6IFNjcmlwdCB7XG4gIGxldCBieUZpbGVuYW1lID0gdG91Y2hCdW5kbGUoY29kZSk7XG4gIGlmIChieUZpbGVuYW1lID09PSB1bmRlZmluZWQpIHtcbiAgICBieUZpbGVuYW1lID0gbmV3IE1hcDxzdHJpbmcsIFNjcmlwdD4oKTtcbiAgICBzY3JpcHRDYWNoZS5zZXQoY29kZSwgYnlGaWxlbmFtZSk7XG4gICAgLy8gRXZpY3QgdGhlIGxlYXN0LXJlY2VudGx5LXVzZWQgYnVuZGxlKHMpIHdoZW4gb3ZlciB0aGUgY2FwLiBOZXcgYnVuZGxlc1xuICAgIC8vIGFyZSBhcHBlbmRlZCBhdCB0aGUgZW5kLCBzbyB0aGUgb2xkZXN0IGxpdmUgYXQgdGhlIGZyb250LlxuICAgIHdoaWxlIChzY3JpcHRDYWNoZS5zaXplID4gTUFYX0JVTkRMRVMpIHtcbiAgICAgIGNvbnN0IG9sZGVzdCA9IHNjcmlwdENhY2hlLmtleXMoKS5uZXh0KCkudmFsdWU7XG4gICAgICBpZiAob2xkZXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBzY3JpcHRDYWNoZS5kZWxldGUob2xkZXN0KTtcbiAgICB9XG4gIH1cbiAgbGV0IHNjcmlwdCA9IGJ5RmlsZW5hbWUuZ2V0KGZpbGVuYW1lKTtcbiAgaWYgKHNjcmlwdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc2NyaXB0ID0gbmV3IFNjcmlwdChjb2RlLCB7IGZpbGVuYW1lIH0pO1xuICAgIGJ5RmlsZW5hbWUuc2V0KGZpbGVuYW1lLCBzY3JpcHQpO1xuICB9XG4gIHJldHVybiBzY3JpcHQ7XG59XG5cbi8qKlxuICogUnVucyB0aGUgY2FjaGVkIHdvcmtmbG93LWJ1bmRsZSBgU2NyaXB0YCBhZ2FpbnN0IGBjb250ZXh0YC4gQ29tcGlsZXMgYW5kXG4gKiBjYWNoZXMgdGhlIGBTY3JpcHRgIG9uIGZpcnN0IHVzZSBmb3IgdGhlIGdpdmVuIGAoY29kZSwgZmlsZW5hbWUpYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkNhY2hlZFdvcmtmbG93U2NyaXB0KFxuICBjb2RlOiBzdHJpbmcsXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4gIGNvbnRleHQ6IENvbnRleHRcbik6IHVua25vd24ge1xuICByZXR1cm4gZ2V0Q2FjaGVkV29ya2Zsb3dTY3JpcHQoY29kZSwgZmlsZW5hbWUpLnJ1bkluQ29udGV4dChjb250ZXh0KTtcbn1cblxuLyoqXG4gKiBDbGVhcnMgdGhlIGNvbXBpbGVkLXNjcmlwdCBjYWNoZS4gSW50ZW5kZWQgZm9yIHRlc3RzIHRoYXQgd2FudCB0byBhc3NlcnRcbiAqIGNvbXBpbGUtdnMtY2FjaGUgYmVoYXZpb3VyIGluIGlzb2xhdGlvbjsgbm90IHVzZWQgb24gdGhlIGhvdCBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJXb3JrZmxvd1NjcmlwdENhY2hlKCk6IHZvaWQge1xuICBzY3JpcHRDYWNoZS5jbGVhcigpO1xufVxuXG4vKipcbiAqIE51bWJlciBvZiBkaXN0aW5jdCBidW5kbGUgKGBjb2RlYCkgdmVyc2lvbnMgY3VycmVudGx5IHJldGFpbmVkLiBFeHBvc2VkIGZvclxuICogdGVzdHMgYXNzZXJ0aW5nIHRoZSBMUlUgYm91bmQ7IG5vdCB1c2VkIG9uIHRoZSBob3QgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdvcmtmbG93U2NyaXB0Q2FjaGVTaXplKCk6IG51bWJlciB7XG4gIHJldHVybiBzY3JpcHRDYWNoZS5zaXplO1xufVxuIl19
@@ -0,0 +1,65 @@
1
+ import type { WorkflowOrchestratorContext } from '../private.js';
2
+ import { ABORT_HOOK_TOKEN, ABORT_STREAM_NAME } from '../symbols.js';
3
+ /**
4
+ * A lightweight AbortSignal implementation for the workflow VM context.
5
+ *
6
+ * `signal.aborted` and listeners are updated in two scenarios:
7
+ * 1. On first-run: when `abort()` is called in the workflow code
8
+ * 2. On replay: when the events consumer processes the `hook_received`
9
+ * event (chained through promiseQueue for deterministic ordering)
10
+ *
11
+ * On replay, `abort()` in the workflow code becomes a no-op since
12
+ * `_setAborted` was already called by the events consumer.
13
+ */
14
+ export declare class WorkflowAbortSignal {
15
+ #private;
16
+ aborted: boolean;
17
+ reason: unknown;
18
+ readonly [ABORT_STREAM_NAME]: string;
19
+ readonly [ABORT_HOOK_TOKEN]: string;
20
+ get onabort(): ((this: WorkflowAbortSignal) => void) | null;
21
+ set onabort(handler: ((this: WorkflowAbortSignal) => void) | null);
22
+ constructor(streamName: string, hookToken: string);
23
+ /**
24
+ * @internal Sets aborted state and fires listeners.
25
+ * Called by abort() on first-run, or by the events consumer on replay.
26
+ * Idempotent — second call is a no-op.
27
+ */
28
+ _setAborted(reason?: unknown): void;
29
+ addEventListener(type: string, listener: () => void): void;
30
+ removeEventListener(type: string, listener: () => void): void;
31
+ throwIfAborted(): void;
32
+ }
33
+ /**
34
+ * Creates a workflow-context `AbortController` class that uses hooks for
35
+ * durable state and streams for real-time step propagation.
36
+ *
37
+ * Follows the same pattern as `createCreateHook()` in `workflow/hook.ts`:
38
+ * - Registers a hook in the invocations queue on construction
39
+ * - Subscribes to the events consumer for hook_created/hook_received events
40
+ * - `abort()` calls `_setAborted` + marks the hook for resumption
41
+ * - The suspension handler processes the abort (creates event + writes stream)
42
+ * - On replay, the events consumer calls `_setAborted` when hook_received
43
+ * is processed, and `abort()` in the workflow code becomes a no-op
44
+ */
45
+ export declare function createCreateAbortController(ctx: WorkflowOrchestratorContext): {
46
+ new (): {
47
+ readonly signal: WorkflowAbortSignal;
48
+ abort(reason?: unknown): void;
49
+ readonly [ABORT_STREAM_NAME]: string;
50
+ readonly [ABORT_HOOK_TOKEN]: string;
51
+ };
52
+ };
53
+ /**
54
+ * Creates a workflow-context `AbortSignal` object with static methods.
55
+ */
56
+ export declare function createAbortSignalStatics(): {
57
+ abort: (reason?: unknown) => WorkflowAbortSignal;
58
+ any: (signals: Iterable<{
59
+ aborted: boolean;
60
+ reason?: unknown;
61
+ addEventListener?: Function;
62
+ }>) => WorkflowAbortSignal;
63
+ timeout: () => never;
64
+ };
65
+ //# sourceMappingURL=abort-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort-controller.d.ts","sourceRoot":"","sources":["../../src/workflow/abort-controller.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGpE;;;;;;;;;;GAUG;AACH,qBAAa,mBAAmB;;IAC9B,OAAO,UAAS;IAChB,MAAM,EAAE,OAAO,CAAa;IAE5B,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAKpC,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC,GAAG,IAAI,CAE1D;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC,GAAG,IAAI,EAKhE;gBAEW,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKjD;;;;OAIG;IACH,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAanC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAa1D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAK7D,cAAc,IAAI,IAAI;CAQvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,2BAA2B;;yBAEvD,mBAAmB;uBAwIrB,OAAO,GAAG,IAAI;sCAvIC,MAAM;qCACP,MAAM;;EAuJtC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI;IAC1C,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,mBAAmB,CAAC;IACjD,GAAG,EAAE,CACH,OAAO,EAAE,QAAQ,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,gBAAgB,CAAC,EAAE,QAAQ,CAAC;KAC7B,CAAC,KACC,mBAAmB,CAAC;IACzB,OAAO,EAAE,MAAM,KAAK,CAAC;CACtB,CAwEA"}