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

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 (322) 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/create-hook.d.ts +62 -4
  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 +189 -0
  30. package/dist/encryption.d.ts +37 -3
  31. package/dist/encryption.d.ts.map +1 -1
  32. package/dist/encryption.js +97 -31
  33. package/dist/events-consumer.d.ts +147 -1
  34. package/dist/events-consumer.d.ts.map +1 -1
  35. package/dist/events-consumer.js +444 -43
  36. package/dist/flushable-stream.d.ts +65 -10
  37. package/dist/flushable-stream.d.ts.map +1 -1
  38. package/dist/flushable-stream.js +131 -18
  39. package/dist/global.d.ts +37 -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 +246 -8
  52. package/dist/private.d.ts.map +1 -1
  53. package/dist/private.js +345 -9
  54. package/dist/replay-payload-cache.d.ts +68 -0
  55. package/dist/replay-payload-cache.d.ts.map +1 -0
  56. package/dist/replay-payload-cache.js +160 -0
  57. package/dist/runtime/compute-instance.d.ts +12 -0
  58. package/dist/runtime/compute-instance.d.ts.map +1 -0
  59. package/dist/runtime/compute-instance.js +13 -0
  60. package/dist/runtime/constants.d.ts +251 -0
  61. package/dist/runtime/constants.d.ts.map +1 -1
  62. package/dist/runtime/constants.js +425 -16
  63. package/dist/runtime/count-step-started-events.d.ts +52 -0
  64. package/dist/runtime/count-step-started-events.d.ts.map +1 -0
  65. package/dist/runtime/count-step-started-events.js +72 -0
  66. package/dist/runtime/deployment-guard.d.ts +99 -0
  67. package/dist/runtime/deployment-guard.d.ts.map +1 -0
  68. package/dist/runtime/deployment-guard.js +154 -0
  69. package/dist/runtime/get-port-lazy.d.ts +25 -0
  70. package/dist/runtime/get-port-lazy.d.ts.map +1 -0
  71. package/dist/runtime/get-port-lazy.js +92 -0
  72. package/dist/runtime/get-world-lazy.d.ts +23 -0
  73. package/dist/runtime/get-world-lazy.d.ts.map +1 -0
  74. package/dist/runtime/get-world-lazy.js +46 -0
  75. package/dist/runtime/helpers.d.ts +327 -10
  76. package/dist/runtime/helpers.d.ts.map +1 -1
  77. package/dist/runtime/helpers.js +586 -40
  78. package/dist/runtime/quickjs-assets.generated.d.ts +14 -0
  79. package/dist/runtime/quickjs-assets.generated.d.ts.map +1 -0
  80. package/dist/runtime/quickjs-assets.generated.js +30 -0
  81. package/dist/runtime/quickjs-entrypoint.d.ts +124 -0
  82. package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -0
  83. package/dist/runtime/quickjs-entrypoint.js +1437 -0
  84. package/dist/runtime/quickjs-runtime.d.ts +228 -0
  85. package/dist/runtime/quickjs-runtime.d.ts.map +1 -0
  86. package/dist/runtime/quickjs-runtime.js +2372 -0
  87. package/dist/runtime/quickjs-serde.d.ts +107 -0
  88. package/dist/runtime/quickjs-serde.d.ts.map +1 -0
  89. package/dist/runtime/quickjs-serde.js +2098 -0
  90. package/dist/runtime/replay-budget.d.ts +89 -0
  91. package/dist/runtime/replay-budget.d.ts.map +1 -0
  92. package/dist/runtime/replay-budget.js +139 -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 +452 -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 +119 -13
  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 +313 -60
  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 +946 -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 +109 -7
  124. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  125. package/dist/runtime/suspension-handler.js +486 -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 +20 -0
  139. package/dist/runtime/world-compatibility.d.ts.map +1 -0
  140. package/dist/runtime/world-compatibility.js +32 -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 +3135 -328
  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 +16 -0
  160. package/dist/serialization/codec-devalue-vm.d.ts.map +1 -0
  161. package/dist/serialization/codec-devalue-vm.js +148 -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/workflow-vm.d.ts +29 -0
  211. package/dist/serialization/workflow-vm.d.ts.map +1 -0
  212. package/dist/serialization/workflow-vm.js +71 -0
  213. package/dist/serialization/workflow.d.ts +29 -0
  214. package/dist/serialization/workflow.d.ts.map +1 -0
  215. package/dist/serialization/workflow.js +54 -0
  216. package/dist/serialization-format.d.ts +60 -4
  217. package/dist/serialization-format.d.ts.map +1 -1
  218. package/dist/serialization-format.js +276 -56
  219. package/dist/serialization.d.ts +374 -221
  220. package/dist/serialization.d.ts.map +1 -1
  221. package/dist/serialization.js +2300 -783
  222. package/dist/set-attributes.d.ts +13 -0
  223. package/dist/set-attributes.d.ts.map +1 -0
  224. package/dist/set-attributes.js +60 -0
  225. package/dist/sleep.d.ts.map +1 -1
  226. package/dist/sleep.js +3 -2
  227. package/dist/source-map.d.ts +25 -0
  228. package/dist/source-map.d.ts.map +1 -1
  229. package/dist/source-map.js +148 -10
  230. package/dist/step/context-storage.d.ts +61 -2
  231. package/dist/step/context-storage.d.ts.map +1 -1
  232. package/dist/step/context-storage.js +7 -5
  233. package/dist/step/get-closure-vars.d.ts.map +1 -1
  234. package/dist/step/get-closure-vars.js +3 -2
  235. package/dist/step/get-step-metadata.d.ts.map +1 -1
  236. package/dist/step/get-step-metadata.js +3 -2
  237. package/dist/step/get-workflow-metadata.d.ts.map +1 -1
  238. package/dist/step/get-workflow-metadata.js +3 -2
  239. package/dist/step/writable-stream.d.ts.map +1 -1
  240. package/dist/step/writable-stream.js +71 -7
  241. package/dist/step.d.ts.map +1 -1
  242. package/dist/step.js +225 -29
  243. package/dist/symbols.d.ts +54 -0
  244. package/dist/symbols.d.ts.map +1 -1
  245. package/dist/symbols.js +55 -1
  246. package/dist/telemetry/semantic-conventions.d.ts +265 -2
  247. package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
  248. package/dist/telemetry/semantic-conventions.js +190 -1
  249. package/dist/telemetry.d.ts +73 -0
  250. package/dist/telemetry.d.ts.map +1 -1
  251. package/dist/telemetry.js +153 -16
  252. package/dist/types.d.ts +6 -0
  253. package/dist/types.d.ts.map +1 -1
  254. package/dist/types.js +23 -1
  255. package/dist/util.d.ts +16 -6
  256. package/dist/util.d.ts.map +1 -1
  257. package/dist/util.js +25 -16
  258. package/dist/version.d.ts +1 -1
  259. package/dist/version.d.ts.map +1 -1
  260. package/dist/version.js +2 -2
  261. package/dist/vm/index.d.ts.map +1 -1
  262. package/dist/vm/index.js +85 -14
  263. package/dist/vm/script-cache.d.ts +28 -0
  264. package/dist/vm/script-cache.d.ts.map +1 -0
  265. package/dist/vm/script-cache.js +140 -0
  266. package/dist/workflow/abort-controller.d.ts +65 -0
  267. package/dist/workflow/abort-controller.d.ts.map +1 -0
  268. package/dist/workflow/abort-controller.js +312 -0
  269. package/dist/workflow/attribute-dispatcher.d.ts +6 -0
  270. package/dist/workflow/attribute-dispatcher.d.ts.map +1 -0
  271. package/dist/workflow/attribute-dispatcher.js +48 -0
  272. package/dist/workflow/create-hook.d.ts.map +1 -1
  273. package/dist/workflow/create-hook.js +25 -3
  274. package/dist/workflow/define-hook.d.ts +1 -1
  275. package/dist/workflow/define-hook.d.ts.map +1 -1
  276. package/dist/workflow/define-hook.js +8 -4
  277. package/dist/workflow/get-workflow-metadata.d.ts.map +1 -1
  278. package/dist/workflow/get-workflow-metadata.js +14 -3
  279. package/dist/workflow/hook.d.ts.map +1 -1
  280. package/dist/workflow/hook.js +302 -36
  281. package/dist/workflow/index.d.ts +1 -0
  282. package/dist/workflow/index.d.ts.map +1 -1
  283. package/dist/workflow/index.js +5 -3
  284. package/dist/workflow/set-attributes.d.ts +68 -0
  285. package/dist/workflow/set-attributes.d.ts.map +1 -0
  286. package/dist/workflow/set-attributes.js +60 -0
  287. package/dist/workflow/sleep.d.ts.map +1 -1
  288. package/dist/workflow/sleep.js +57 -8
  289. package/dist/workflow/world-init-stub.d.ts +15 -0
  290. package/dist/workflow/world-init-stub.d.ts.map +1 -0
  291. package/dist/workflow/world-init-stub.js +15 -0
  292. package/dist/workflow.d.ts +79 -3
  293. package/dist/workflow.d.ts.map +1 -1
  294. package/dist/workflow.js +831 -553
  295. package/docs/api-reference/create-hook.mdx +79 -0
  296. package/docs/api-reference/create-webhook.mdx +1 -0
  297. package/docs/api-reference/define-hook.mdx +26 -24
  298. package/docs/api-reference/fatal-error.mdx +29 -7
  299. package/docs/api-reference/fetch.mdx +8 -4
  300. package/docs/api-reference/index.mdx +3 -0
  301. package/docs/api-reference/set-attributes.mdx +61 -0
  302. package/docs/api-reference/sleep.mdx +1 -1
  303. package/docs/foundations/cancellation.mdx +459 -0
  304. package/docs/foundations/errors-and-retries.mdx +7 -3
  305. package/docs/foundations/hooks.mdx +29 -0
  306. package/docs/foundations/idempotency.mdx +243 -11
  307. package/docs/foundations/index.mdx +1 -23
  308. package/docs/foundations/meta.json +3 -1
  309. package/docs/foundations/serialization.mdx +77 -41
  310. package/docs/foundations/starting-workflows.mdx +79 -2
  311. package/docs/foundations/streaming.mdx +14 -23
  312. package/docs/foundations/versioning.mdx +263 -0
  313. package/docs/how-it-works/cancellation.mdx +287 -0
  314. package/docs/how-it-works/code-transform.mdx +21 -17
  315. package/docs/how-it-works/encryption.mdx +5 -5
  316. package/docs/how-it-works/event-sourcing.mdx +17 -9
  317. package/docs/how-it-works/framework-integrations.mdx +96 -337
  318. package/docs/how-it-works/meta.json +2 -1
  319. package/package.json +31 -13
  320. package/dist/runtime/step-handler.d.ts +0 -2
  321. package/dist/runtime/step-handler.d.ts.map +0 -1
  322. package/dist/runtime/step-handler.js +0 -678
@@ -0,0 +1,27 @@
1
+ import { ContextViolationError, type DocsUrl, NotInStepContextError, NotInWorkflowContextError, NotInWorkflowOrStepContextError } from './context-violation-error.js';
2
+ export { ContextViolationError, NotInStepContextError, NotInWorkflowContextError, NotInWorkflowOrStepContextError, };
3
+ /**
4
+ * Thrown when an API that MUST NOT run inside a workflow function is called
5
+ * from one (e.g. `resumeHook()`, which would cause determinism issues).
6
+ * The message names the specific workflow that made the offending call.
7
+ */
8
+ export declare class UnavailableInWorkflowContextError extends ContextViolationError {
9
+ name: string;
10
+ constructor(functionName: string, docsUrl: DocsUrl);
11
+ }
12
+ /**
13
+ * Throw a {@link NotInWorkflowContextError} whose stack trace points at the
14
+ * user code that called `stackStartFn`, not at our framework internals.
15
+ *
16
+ * Prefer this over `throw new NotInWorkflowContextError(...)` so tooling
17
+ * (Next.js error overlay, VS Code terminal linkifier, Sentry, etc.) shows
18
+ * the user's call site as the relevant frame.
19
+ */
20
+ export declare function throwNotInWorkflowContext(functionName: string, docsUrl: DocsUrl, stackStartFn: Function): never;
21
+ /** See {@link throwNotInWorkflowContext}. */
22
+ export declare function throwNotInStepContext(functionName: string, docsUrl: DocsUrl, stackStartFn: Function): never;
23
+ /** See {@link throwNotInWorkflowContext}. */
24
+ export declare function throwNotInWorkflowOrStepContext(functionName: string, docsUrl: DocsUrl, stackStartFn: Function): never;
25
+ /** See {@link throwNotInWorkflowContext}. */
26
+ export declare function throwUnavailableInWorkflowContext(functionName: string, docsUrl: DocsUrl, stackStartFn: Function): never;
27
+ //# sourceMappingURL=context-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-errors.d.ts","sourceRoot":"","sources":["../src/context-errors.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EAErB,KAAK,OAAO,EACZ,qBAAqB,EACrB,yBAAyB,EACzB,+BAA+B,EAChC,MAAM,8BAA8B,CAAC;AAUtC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,+BAA+B,GAChC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,iCAAkC,SAAQ,qBAAqB;IAC1E,IAAI,SAAuC;gBAE/B,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;CAgDnD;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,EAEhB,YAAY,EAAE,QAAQ,GACrB,KAAK,CAIP;AAED,6CAA6C;AAC7C,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,EAEhB,YAAY,EAAE,QAAQ,GACrB,KAAK,CAIP;AAED,6CAA6C;AAC7C,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,EAEhB,YAAY,EAAE,QAAQ,GACrB,KAAK,CAIP;AAED,6CAA6C;AAC7C,wBAAgB,iCAAiC,CAC/C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,EAEhB,YAAY,EAAE,QAAQ,GACrB,KAAK,CAIP"}
@@ -0,0 +1,101 @@
1
+ import { redirectStackToCaller } from './capture-stack.js';
2
+ import { ContextViolationError, NotInStepContextError, NotInWorkflowContextError, NotInWorkflowOrStepContextError, } from './context-violation-error.js';
3
+ import { WORKFLOW_CONTEXT_SYMBOL, } from './workflow/get-workflow-metadata.js';
4
+ // Re-export the structural base + subclasses so the public surface is a
5
+ // single import point. The base + simpler subclasses live in
6
+ // `context-violation-error.ts` because `get-workflow-metadata.ts` needs to
7
+ // throw one without creating an import cycle with this file.
8
+ export { ContextViolationError, NotInStepContextError, NotInWorkflowContextError, NotInWorkflowOrStepContextError, };
9
+ /**
10
+ * Thrown when an API that MUST NOT run inside a workflow function is called
11
+ * from one (e.g. `resumeHook()`, which would cause determinism issues).
12
+ * The message names the specific workflow that made the offending call.
13
+ */
14
+ export class UnavailableInWorkflowContextError extends ContextViolationError {
15
+ name = 'UnavailableInWorkflowContextError';
16
+ constructor(functionName, docsUrl) {
17
+ const ctx = globalThis[WORKFLOW_CONTEXT_SYMBOL];
18
+ const workflowName = ctx?.workflowName;
19
+ // Apply dim styling to `workflow/` / `step/` prefixes in the qualified
20
+ // name so the part the user named stands out.
21
+ const nameSegs = (() => {
22
+ if (!workflowName)
23
+ return null;
24
+ const m = workflowName.match(/^(workflow\/|step\/)(.*)$/);
25
+ if (m)
26
+ return [{ dim: m[1] }, { text: m[2] }];
27
+ return [{ text: workflowName }];
28
+ })();
29
+ const contextLine = nameSegs
30
+ ? {
31
+ type: 'plain',
32
+ segments: [
33
+ { text: 'this call was made from the ' },
34
+ ...nameSegs,
35
+ { text: ' workflow context.' },
36
+ ],
37
+ }
38
+ : {
39
+ type: 'plain',
40
+ segments: [{ text: 'this call was made from a workflow context.' }],
41
+ };
42
+ super({
43
+ title: [
44
+ { code: functionName },
45
+ { text: ' cannot be called from a workflow context.' },
46
+ ],
47
+ details: [
48
+ {
49
+ type: 'plain',
50
+ segments: [
51
+ {
52
+ text: 'calling this in a workflow context can cause determinism issues.',
53
+ },
54
+ ],
55
+ },
56
+ contextLine,
57
+ { type: 'docs', url: docsUrl },
58
+ ],
59
+ });
60
+ }
61
+ }
62
+ /**
63
+ * Throw a {@link NotInWorkflowContextError} whose stack trace points at the
64
+ * user code that called `stackStartFn`, not at our framework internals.
65
+ *
66
+ * Prefer this over `throw new NotInWorkflowContextError(...)` so tooling
67
+ * (Next.js error overlay, VS Code terminal linkifier, Sentry, etc.) shows
68
+ * the user's call site as the relevant frame.
69
+ */
70
+ export function throwNotInWorkflowContext(functionName, docsUrl,
71
+ // biome-ignore lint/complexity/noBannedTypes: matches Error.captureStackTrace
72
+ stackStartFn) {
73
+ const err = new NotInWorkflowContextError(functionName, docsUrl);
74
+ redirectStackToCaller(err, stackStartFn);
75
+ throw err;
76
+ }
77
+ /** See {@link throwNotInWorkflowContext}. */
78
+ export function throwNotInStepContext(functionName, docsUrl,
79
+ // biome-ignore lint/complexity/noBannedTypes: matches Error.captureStackTrace
80
+ stackStartFn) {
81
+ const err = new NotInStepContextError(functionName, docsUrl);
82
+ redirectStackToCaller(err, stackStartFn);
83
+ throw err;
84
+ }
85
+ /** See {@link throwNotInWorkflowContext}. */
86
+ export function throwNotInWorkflowOrStepContext(functionName, docsUrl,
87
+ // biome-ignore lint/complexity/noBannedTypes: matches Error.captureStackTrace
88
+ stackStartFn) {
89
+ const err = new NotInWorkflowOrStepContextError(functionName, docsUrl);
90
+ redirectStackToCaller(err, stackStartFn);
91
+ throw err;
92
+ }
93
+ /** See {@link throwNotInWorkflowContext}. */
94
+ export function throwUnavailableInWorkflowContext(functionName, docsUrl,
95
+ // biome-ignore lint/complexity/noBannedTypes: matches Error.captureStackTrace
96
+ stackStartFn) {
97
+ const err = new UnavailableInWorkflowContextError(functionName, docsUrl);
98
+ redirectStackToCaller(err, stackStartFn);
99
+ throw err;
100
+ }
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1lcnJvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dC1lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUNMLHFCQUFxQixFQUdyQixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLCtCQUErQixHQUNoQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFDTCx1QkFBdUIsR0FFeEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3Qyx3RUFBd0U7QUFDeEUsNkRBQTZEO0FBQzdELDJFQUEyRTtBQUMzRSw2REFBNkQ7QUFDN0QsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLCtCQUErQixHQUNoQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSxxQkFBcUI7SUFDMUUsSUFBSSxHQUFHLG1DQUFtQyxDQUFDO0lBRTNDLFlBQVksWUFBb0IsRUFBRSxPQUFnQjtRQUNoRCxNQUFNLEdBQUcsR0FBSSxVQUFrQixDQUFDLHVCQUF1QixDQUUxQyxDQUFDO1FBQ2QsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFLFlBQVksQ0FBQztRQUV2Qyx1RUFBdUU7UUFDdkUsOENBQThDO1FBQzlDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxZQUFZO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUM7Z0JBQUUsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFVLENBQUM7WUFDdkQsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFVLENBQUM7UUFDM0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVMLE1BQU0sV0FBVyxHQUFXLFFBQVE7WUFDbEMsQ0FBQyxDQUFDO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLFFBQVEsRUFBRTtvQkFDUixFQUFFLElBQUksRUFBRSw4QkFBOEIsRUFBRTtvQkFDeEMsR0FBRyxRQUFRO29CQUNYLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFO2lCQUMvQjthQUNGO1lBQ0gsQ0FBQyxDQUFDO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLDZDQUE2QyxFQUFFLENBQUM7YUFDcEUsQ0FBQztRQUVOLEtBQUssQ0FBQztZQUNKLEtBQUssRUFBRTtnQkFDTCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7Z0JBQ3RCLEVBQUUsSUFBSSxFQUFFLDRDQUE0QyxFQUFFO2FBQ3ZEO1lBQ0QsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxPQUFPO29CQUNiLFFBQVEsRUFBRTt3QkFDUjs0QkFDRSxJQUFJLEVBQUUsa0VBQWtFO3lCQUN6RTtxQkFDRjtpQkFDRjtnQkFDRCxXQUFXO2dCQUNYLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFO2FBQy9CO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsWUFBb0IsRUFDcEIsT0FBZ0I7QUFDaEIsOEVBQThFO0FBQzlFLFlBQXNCO0lBRXRCLE1BQU0sR0FBRyxHQUFHLElBQUkseUJBQXlCLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN6QyxNQUFNLEdBQUcsQ0FBQztBQUNaLENBQUM7QUFFRCw2Q0FBNkM7QUFDN0MsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxZQUFvQixFQUNwQixPQUFnQjtBQUNoQiw4RUFBOEU7QUFDOUUsWUFBc0I7SUFFdEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0QscUJBQXFCLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sR0FBRyxDQUFDO0FBQ1osQ0FBQztBQUVELDZDQUE2QztBQUM3QyxNQUFNLFVBQVUsK0JBQStCLENBQzdDLFlBQW9CLEVBQ3BCLE9BQWdCO0FBQ2hCLDhFQUE4RTtBQUM5RSxZQUFzQjtJQUV0QixNQUFNLEdBQUcsR0FBRyxJQUFJLCtCQUErQixDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RSxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDekMsTUFBTSxHQUFHLENBQUM7QUFDWixDQUFDO0FBRUQsNkNBQTZDO0FBQzdDLE1BQU0sVUFBVSxpQ0FBaUMsQ0FDL0MsWUFBb0IsRUFDcEIsT0FBZ0I7QUFDaEIsOEVBQThFO0FBQzlFLFlBQXNCO0lBRXRCLE1BQU0sR0FBRyxHQUFHLElBQUksaUNBQWlDLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN6QyxNQUFNLEdBQUcsQ0FBQztBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWRpcmVjdFN0YWNrVG9DYWxsZXIgfSBmcm9tICcuL2NhcHR1cmUtc3RhY2suanMnO1xuaW1wb3J0IHtcbiAgQ29udGV4dFZpb2xhdGlvbkVycm9yLFxuICB0eXBlIERldGFpbCxcbiAgdHlwZSBEb2NzVXJsLFxuICBOb3RJblN0ZXBDb250ZXh0RXJyb3IsXG4gIE5vdEluV29ya2Zsb3dDb250ZXh0RXJyb3IsXG4gIE5vdEluV29ya2Zsb3dPclN0ZXBDb250ZXh0RXJyb3IsXG59IGZyb20gJy4vY29udGV4dC12aW9sYXRpb24tZXJyb3IuanMnO1xuaW1wb3J0IHtcbiAgV09SS0ZMT1dfQ09OVEVYVF9TWU1CT0wsXG4gIHR5cGUgV29ya2Zsb3dNZXRhZGF0YSxcbn0gZnJvbSAnLi93b3JrZmxvdy9nZXQtd29ya2Zsb3ctbWV0YWRhdGEuanMnO1xuXG4vLyBSZS1leHBvcnQgdGhlIHN0cnVjdHVyYWwgYmFzZSArIHN1YmNsYXNzZXMgc28gdGhlIHB1YmxpYyBzdXJmYWNlIGlzIGFcbi8vIHNpbmdsZSBpbXBvcnQgcG9pbnQuIFRoZSBiYXNlICsgc2ltcGxlciBzdWJjbGFzc2VzIGxpdmUgaW5cbi8vIGBjb250ZXh0LXZpb2xhdGlvbi1lcnJvci50c2AgYmVjYXVzZSBgZ2V0LXdvcmtmbG93LW1ldGFkYXRhLnRzYCBuZWVkcyB0b1xuLy8gdGhyb3cgb25lIHdpdGhvdXQgY3JlYXRpbmcgYW4gaW1wb3J0IGN5Y2xlIHdpdGggdGhpcyBmaWxlLlxuZXhwb3J0IHtcbiAgQ29udGV4dFZpb2xhdGlvbkVycm9yLFxuICBOb3RJblN0ZXBDb250ZXh0RXJyb3IsXG4gIE5vdEluV29ya2Zsb3dDb250ZXh0RXJyb3IsXG4gIE5vdEluV29ya2Zsb3dPclN0ZXBDb250ZXh0RXJyb3IsXG59O1xuXG4vKipcbiAqIFRocm93biB3aGVuIGFuIEFQSSB0aGF0IE1VU1QgTk9UIHJ1biBpbnNpZGUgYSB3b3JrZmxvdyBmdW5jdGlvbiBpcyBjYWxsZWRcbiAqIGZyb20gb25lIChlLmcuIGByZXN1bWVIb29rKClgLCB3aGljaCB3b3VsZCBjYXVzZSBkZXRlcm1pbmlzbSBpc3N1ZXMpLlxuICogVGhlIG1lc3NhZ2UgbmFtZXMgdGhlIHNwZWNpZmljIHdvcmtmbG93IHRoYXQgbWFkZSB0aGUgb2ZmZW5kaW5nIGNhbGwuXG4gKi9cbmV4cG9ydCBjbGFzcyBVbmF2YWlsYWJsZUluV29ya2Zsb3dDb250ZXh0RXJyb3IgZXh0ZW5kcyBDb250ZXh0VmlvbGF0aW9uRXJyb3Ige1xuICBuYW1lID0gJ1VuYXZhaWxhYmxlSW5Xb3JrZmxvd0NvbnRleHRFcnJvcic7XG5cbiAgY29uc3RydWN0b3IoZnVuY3Rpb25OYW1lOiBzdHJpbmcsIGRvY3NVcmw6IERvY3NVcmwpIHtcbiAgICBjb25zdCBjdHggPSAoZ2xvYmFsVGhpcyBhcyBhbnkpW1dPUktGTE9XX0NPTlRFWFRfU1lNQk9MXSBhc1xuICAgICAgfCBXb3JrZmxvd01ldGFkYXRhXG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCB3b3JrZmxvd05hbWUgPSBjdHg/LndvcmtmbG93TmFtZTtcblxuICAgIC8vIEFwcGx5IGRpbSBzdHlsaW5nIHRvIGB3b3JrZmxvdy9gIC8gYHN0ZXAvYCBwcmVmaXhlcyBpbiB0aGUgcXVhbGlmaWVkXG4gICAgLy8gbmFtZSBzbyB0aGUgcGFydCB0aGUgdXNlciBuYW1lZCBzdGFuZHMgb3V0LlxuICAgIGNvbnN0IG5hbWVTZWdzID0gKCgpID0+IHtcbiAgICAgIGlmICghd29ya2Zsb3dOYW1lKSByZXR1cm4gbnVsbDtcbiAgICAgIGNvbnN0IG0gPSB3b3JrZmxvd05hbWUubWF0Y2goL14od29ya2Zsb3dcXC98c3RlcFxcLykoLiopJC8pO1xuICAgICAgaWYgKG0pIHJldHVybiBbeyBkaW06IG1bMV0gfSwgeyB0ZXh0OiBtWzJdIH1dIGFzIGNvbnN0O1xuICAgICAgcmV0dXJuIFt7IHRleHQ6IHdvcmtmbG93TmFtZSB9XSBhcyBjb25zdDtcbiAgICB9KSgpO1xuXG4gICAgY29uc3QgY29udGV4dExpbmU6IERldGFpbCA9IG5hbWVTZWdzXG4gICAgICA/IHtcbiAgICAgICAgICB0eXBlOiAncGxhaW4nLFxuICAgICAgICAgIHNlZ21lbnRzOiBbXG4gICAgICAgICAgICB7IHRleHQ6ICd0aGlzIGNhbGwgd2FzIG1hZGUgZnJvbSB0aGUgJyB9LFxuICAgICAgICAgICAgLi4ubmFtZVNlZ3MsXG4gICAgICAgICAgICB7IHRleHQ6ICcgd29ya2Zsb3cgY29udGV4dC4nIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgdHlwZTogJ3BsYWluJyxcbiAgICAgICAgICBzZWdtZW50czogW3sgdGV4dDogJ3RoaXMgY2FsbCB3YXMgbWFkZSBmcm9tIGEgd29ya2Zsb3cgY29udGV4dC4nIH1dLFxuICAgICAgICB9O1xuXG4gICAgc3VwZXIoe1xuICAgICAgdGl0bGU6IFtcbiAgICAgICAgeyBjb2RlOiBmdW5jdGlvbk5hbWUgfSxcbiAgICAgICAgeyB0ZXh0OiAnIGNhbm5vdCBiZSBjYWxsZWQgZnJvbSBhIHdvcmtmbG93IGNvbnRleHQuJyB9LFxuICAgICAgXSxcbiAgICAgIGRldGFpbHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdwbGFpbicsXG4gICAgICAgICAgc2VnbWVudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGV4dDogJ2NhbGxpbmcgdGhpcyBpbiBhIHdvcmtmbG93IGNvbnRleHQgY2FuIGNhdXNlIGRldGVybWluaXNtIGlzc3Vlcy4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBjb250ZXh0TGluZSxcbiAgICAgICAgeyB0eXBlOiAnZG9jcycsIHVybDogZG9jc1VybCB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFRocm93IGEge0BsaW5rIE5vdEluV29ya2Zsb3dDb250ZXh0RXJyb3J9IHdob3NlIHN0YWNrIHRyYWNlIHBvaW50cyBhdCB0aGVcbiAqIHVzZXIgY29kZSB0aGF0IGNhbGxlZCBgc3RhY2tTdGFydEZuYCwgbm90IGF0IG91ciBmcmFtZXdvcmsgaW50ZXJuYWxzLlxuICpcbiAqIFByZWZlciB0aGlzIG92ZXIgYHRocm93IG5ldyBOb3RJbldvcmtmbG93Q29udGV4dEVycm9yKC4uLilgIHNvIHRvb2xpbmdcbiAqIChOZXh0LmpzIGVycm9yIG92ZXJsYXksIFZTIENvZGUgdGVybWluYWwgbGlua2lmaWVyLCBTZW50cnksIGV0Yy4pIHNob3dzXG4gKiB0aGUgdXNlcidzIGNhbGwgc2l0ZSBhcyB0aGUgcmVsZXZhbnQgZnJhbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd05vdEluV29ya2Zsb3dDb250ZXh0KFxuICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgZG9jc1VybDogRG9jc1VybCxcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS9ub0Jhbm5lZFR5cGVzOiBtYXRjaGVzIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlXG4gIHN0YWNrU3RhcnRGbjogRnVuY3Rpb25cbik6IG5ldmVyIHtcbiAgY29uc3QgZXJyID0gbmV3IE5vdEluV29ya2Zsb3dDb250ZXh0RXJyb3IoZnVuY3Rpb25OYW1lLCBkb2NzVXJsKTtcbiAgcmVkaXJlY3RTdGFja1RvQ2FsbGVyKGVyciwgc3RhY2tTdGFydEZuKTtcbiAgdGhyb3cgZXJyO1xufVxuXG4vKiogU2VlIHtAbGluayB0aHJvd05vdEluV29ya2Zsb3dDb250ZXh0fS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd05vdEluU3RlcENvbnRleHQoXG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICBkb2NzVXJsOiBEb2NzVXJsLFxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb21wbGV4aXR5L25vQmFubmVkVHlwZXM6IG1hdGNoZXMgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2VcbiAgc3RhY2tTdGFydEZuOiBGdW5jdGlvblxuKTogbmV2ZXIge1xuICBjb25zdCBlcnIgPSBuZXcgTm90SW5TdGVwQ29udGV4dEVycm9yKGZ1bmN0aW9uTmFtZSwgZG9jc1VybCk7XG4gIHJlZGlyZWN0U3RhY2tUb0NhbGxlcihlcnIsIHN0YWNrU3RhcnRGbik7XG4gIHRocm93IGVycjtcbn1cblxuLyoqIFNlZSB7QGxpbmsgdGhyb3dOb3RJbldvcmtmbG93Q29udGV4dH0uICovXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dOb3RJbldvcmtmbG93T3JTdGVwQ29udGV4dChcbiAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gIGRvY3NVcmw6IERvY3NVcmwsXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvbXBsZXhpdHkvbm9CYW5uZWRUeXBlczogbWF0Y2hlcyBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZVxuICBzdGFja1N0YXJ0Rm46IEZ1bmN0aW9uXG4pOiBuZXZlciB7XG4gIGNvbnN0IGVyciA9IG5ldyBOb3RJbldvcmtmbG93T3JTdGVwQ29udGV4dEVycm9yKGZ1bmN0aW9uTmFtZSwgZG9jc1VybCk7XG4gIHJlZGlyZWN0U3RhY2tUb0NhbGxlcihlcnIsIHN0YWNrU3RhcnRGbik7XG4gIHRocm93IGVycjtcbn1cblxuLyoqIFNlZSB7QGxpbmsgdGhyb3dOb3RJbldvcmtmbG93Q29udGV4dH0uICovXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dVbmF2YWlsYWJsZUluV29ya2Zsb3dDb250ZXh0KFxuICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgZG9jc1VybDogRG9jc1VybCxcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS9ub0Jhbm5lZFR5cGVzOiBtYXRjaGVzIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlXG4gIHN0YWNrU3RhcnRGbjogRnVuY3Rpb25cbik6IG5ldmVyIHtcbiAgY29uc3QgZXJyID0gbmV3IFVuYXZhaWxhYmxlSW5Xb3JrZmxvd0NvbnRleHRFcnJvcihmdW5jdGlvbk5hbWUsIGRvY3NVcmwpO1xuICByZWRpcmVjdFN0YWNrVG9DYWxsZXIoZXJyLCBzdGFja1N0YXJ0Rm4pO1xuICB0aHJvdyBlcnI7XG59XG4iXX0=
@@ -0,0 +1,97 @@
1
+ /**
2
+ * A `docs:` line URL. The leading protocol is part of the type so call sites
3
+ * can't accidentally pass a protocol-relative or bare path.
4
+ */
5
+ export type DocsUrl = `https://${string}`;
6
+ declare const INSPECT_CUSTOM: unique symbol;
7
+ /**
8
+ * Structured data for a framed error. The base class takes this and renders
9
+ * it to plain text (for `.message` / `.stack` / structured logs) or to an
10
+ * ANSI-framed string (for terminal display via `util.inspect` / `toString`).
11
+ *
12
+ * Keeping the pieces structured means we never have to strip ANSI back out
13
+ * once it's in the message — we just don't put it there in the first place.
14
+ */
15
+ export interface FramedContent {
16
+ /** Headline. `{ code: 'foo()' }` segments render as backticked inline code. */
17
+ readonly title: readonly Segment[];
18
+ /** One framed branch per entry. The last uses `╰▶`, others use `├▶`. */
19
+ readonly details: readonly Detail[];
20
+ }
21
+ export type Segment = {
22
+ readonly text: string;
23
+ } | {
24
+ readonly code: string;
25
+ } | {
26
+ readonly dim: string;
27
+ };
28
+ export type Detail = {
29
+ readonly type: 'plain';
30
+ readonly segments: readonly Segment[];
31
+ } | {
32
+ readonly type: 'docs';
33
+ readonly url: DocsUrl;
34
+ };
35
+ export declare function renderPlain(c: FramedContent): string;
36
+ export declare function renderPretty(c: FramedContent): string;
37
+ /**
38
+ * Base class for structured context-violation errors.
39
+ *
40
+ * Design notes:
41
+ *
42
+ * - `.message` is **plain text** (no ANSI escape bytes). Structured logs,
43
+ * log drains, CBOR-serialized event data, and anything else that reads
44
+ * `err.message` / `err.stack` as a string gets clean output — no mojibake
45
+ * in JSON, no `\x1B[...m` noise in Vercel logs.
46
+ *
47
+ * - The ANSI-framed version is rendered **lazily** via `toString()` and
48
+ * `[util.inspect.custom]`. When the error is thrown and Node prints it
49
+ * via `util.inspect`, the user sees the colored, framed box. When it's
50
+ * attached to a structured log field, the consumer sees plain text.
51
+ *
52
+ * - `fatal = true` marks these as non-retryable. Calling `createHook()`
53
+ * from a step function will never succeed no matter how many retries —
54
+ * burning attempts just produces duplicated log output. The runtime's
55
+ * `FatalError.is(err)` gate recognizes any error with `fatal: true`.
56
+ */
57
+ export declare abstract class ContextViolationError extends Error {
58
+ #private;
59
+ /** Non-retryable — see class doc. */
60
+ readonly fatal = true;
61
+ constructor(content: FramedContent);
62
+ /**
63
+ * `console.log(err)` and most Node internals route through `util.inspect`,
64
+ * which respects this symbol. Returning a custom string here means the
65
+ * thrown error prints as a pretty frame in the terminal while `.message`
66
+ * and `.stack` stay plain.
67
+ */
68
+ [INSPECT_CUSTOM](): string;
69
+ toString(): string;
70
+ }
71
+ /**
72
+ * Thrown when an API that must run inside a workflow function is called
73
+ * from outside a workflow context (e.g. from a step function or from
74
+ * regular application code).
75
+ */
76
+ export declare class NotInWorkflowContextError extends ContextViolationError {
77
+ name: string;
78
+ constructor(functionName: string, docsUrl: DocsUrl);
79
+ }
80
+ /**
81
+ * Thrown when an API that must run inside a step function is called from
82
+ * outside a step context.
83
+ */
84
+ export declare class NotInStepContextError extends ContextViolationError {
85
+ name: string;
86
+ constructor(functionName: string, docsUrl: DocsUrl);
87
+ }
88
+ /**
89
+ * Thrown when an API that must run inside either a workflow or step function
90
+ * is called from regular application code.
91
+ */
92
+ export declare class NotInWorkflowOrStepContextError extends ContextViolationError {
93
+ name: string;
94
+ constructor(functionName: string, docsUrl: DocsUrl);
95
+ }
96
+ export {};
97
+ //# sourceMappingURL=context-violation-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-violation-error.d.ts","sourceRoot":"","sources":["../src/context-violation-error.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,WAAW,MAAM,EAAE,CAAC;AAE1C,QAAA,MAAM,cAAc,eAA2C,CAAC;AAEhE;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,MAAM,OAAO,GACf;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7B,MAAM,MAAM,MAAM,GACd;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;AAwBrD,wBAAgB,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAepD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAGrD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,8BAAsB,qBAAsB,SAAQ,KAAK;;IACvD,qCAAqC;IACrC,QAAQ,CAAC,KAAK,QAAQ;gBAIV,OAAO,EAAE,aAAa;IAKlC;;;;;OAKG;IACH,CAAC,cAAc,CAAC,IAAI,MAAM;IAgB1B,QAAQ,IAAI,MAAM;CAGnB;AAED;;;;GAIG;AACH,qBAAa,yBAA0B,SAAQ,qBAAqB;IAClE,IAAI,SAA+B;gBAEvB,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;CASnD;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,qBAAqB;IAC9D,IAAI,SAA2B;gBAEnB,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;CASnD;AAED;;;GAGG;AACH,qBAAa,+BAAgC,SAAQ,qBAAqB;IACxE,IAAI,SAAqC;gBAE7B,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;CASnD"}
@@ -0,0 +1,149 @@
1
+ import * as Ansi from '@workflow/errors/ansi';
2
+ const INSPECT_CUSTOM = Symbol.for('nodejs.util.inspect.custom');
3
+ function renderSegmentPlain(s) {
4
+ if ('code' in s)
5
+ return `\`${s.code}\``;
6
+ if ('dim' in s)
7
+ return s.dim;
8
+ return s.text;
9
+ }
10
+ function renderSegmentPretty(s) {
11
+ if ('code' in s)
12
+ return Ansi.code(s.code);
13
+ if ('dim' in s)
14
+ return Ansi.dim(s.dim);
15
+ return s.text;
16
+ }
17
+ function renderDetailPlain(d) {
18
+ if (d.type === 'docs')
19
+ return `docs: ${d.url}`;
20
+ return d.segments.map(renderSegmentPlain).join('');
21
+ }
22
+ function renderDetailPretty(d) {
23
+ if (d.type === 'docs')
24
+ return Ansi.docs(d.url);
25
+ return d.segments.map(renderSegmentPretty).join('');
26
+ }
27
+ export function renderPlain(c) {
28
+ // Mimic `Ansi.frame` structure so `.message` is still readable in logs
29
+ // even without the color.
30
+ const title = c.title.map(renderSegmentPlain).join('');
31
+ const lines = [title];
32
+ c.details.forEach((detail, index) => {
33
+ const isLast = index === c.details.length - 1;
34
+ const first = isLast ? '╰▶ ' : '├▶ ';
35
+ const cont = isLast ? ' ' : '│ ';
36
+ const raw = renderDetailPlain(detail).split('\n');
37
+ raw.forEach((line, i) => {
38
+ lines.push(`${i === 0 ? first : cont}${line}`);
39
+ });
40
+ });
41
+ return lines.join('\n');
42
+ }
43
+ export function renderPretty(c) {
44
+ const title = c.title.map(renderSegmentPretty).join('');
45
+ return Ansi.frame(title, c.details.map(renderDetailPretty));
46
+ }
47
+ /**
48
+ * Base class for structured context-violation errors.
49
+ *
50
+ * Design notes:
51
+ *
52
+ * - `.message` is **plain text** (no ANSI escape bytes). Structured logs,
53
+ * log drains, CBOR-serialized event data, and anything else that reads
54
+ * `err.message` / `err.stack` as a string gets clean output — no mojibake
55
+ * in JSON, no `\x1B[...m` noise in Vercel logs.
56
+ *
57
+ * - The ANSI-framed version is rendered **lazily** via `toString()` and
58
+ * `[util.inspect.custom]`. When the error is thrown and Node prints it
59
+ * via `util.inspect`, the user sees the colored, framed box. When it's
60
+ * attached to a structured log field, the consumer sees plain text.
61
+ *
62
+ * - `fatal = true` marks these as non-retryable. Calling `createHook()`
63
+ * from a step function will never succeed no matter how many retries —
64
+ * burning attempts just produces duplicated log output. The runtime's
65
+ * `FatalError.is(err)` gate recognizes any error with `fatal: true`.
66
+ */
67
+ export class ContextViolationError extends Error {
68
+ /** Non-retryable — see class doc. */
69
+ fatal = true;
70
+ #content;
71
+ constructor(content) {
72
+ super(renderPlain(content));
73
+ this.#content = content;
74
+ }
75
+ /**
76
+ * `console.log(err)` and most Node internals route through `util.inspect`,
77
+ * which respects this symbol. Returning a custom string here means the
78
+ * thrown error prints as a pretty frame in the terminal while `.message`
79
+ * and `.stack` stay plain.
80
+ */
81
+ [INSPECT_CUSTOM]() {
82
+ const pretty = renderPretty(this.#content);
83
+ // `stack` starts with `${name}: ${message}\n at ...`. Our message is
84
+ // multi-line (`title\n╰▶ docs: …`), so slicing only the first line glues
85
+ // the framed-detail tail of the message onto the prepended pretty form
86
+ // and renders every detail line twice. Slice past *all* message lines.
87
+ const messageLineCount = this.message.split('\n').length;
88
+ const tail = (this.stack ?? '')
89
+ .split('\n')
90
+ .slice(messageLineCount)
91
+ .join('\n');
92
+ return tail
93
+ ? `${this.name}: ${pretty}\n${tail}`
94
+ : `${this.name}: ${pretty}`;
95
+ }
96
+ toString() {
97
+ return `${this.name}: ${renderPretty(this.#content)}`;
98
+ }
99
+ }
100
+ /**
101
+ * Thrown when an API that must run inside a workflow function is called
102
+ * from outside a workflow context (e.g. from a step function or from
103
+ * regular application code).
104
+ */
105
+ export class NotInWorkflowContextError extends ContextViolationError {
106
+ name = 'NotInWorkflowContextError';
107
+ constructor(functionName, docsUrl) {
108
+ super({
109
+ title: [
110
+ { code: functionName },
111
+ { text: ' can only be called inside a workflow function' },
112
+ ],
113
+ details: [{ type: 'docs', url: docsUrl }],
114
+ });
115
+ }
116
+ }
117
+ /**
118
+ * Thrown when an API that must run inside a step function is called from
119
+ * outside a step context.
120
+ */
121
+ export class NotInStepContextError extends ContextViolationError {
122
+ name = 'NotInStepContextError';
123
+ constructor(functionName, docsUrl) {
124
+ super({
125
+ title: [
126
+ { code: functionName },
127
+ { text: ' can only be called inside a step function' },
128
+ ],
129
+ details: [{ type: 'docs', url: docsUrl }],
130
+ });
131
+ }
132
+ }
133
+ /**
134
+ * Thrown when an API that must run inside either a workflow or step function
135
+ * is called from regular application code.
136
+ */
137
+ export class NotInWorkflowOrStepContextError extends ContextViolationError {
138
+ name = 'NotInWorkflowOrStepContextError';
139
+ constructor(functionName, docsUrl) {
140
+ super({
141
+ title: [
142
+ { code: functionName },
143
+ { text: ' can only be called inside a workflow or step function' },
144
+ ],
145
+ details: [{ type: 'docs', url: docsUrl }],
146
+ });
147
+ }
148
+ }
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC12aW9sYXRpb24tZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dC12aW9sYXRpb24tZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSx1QkFBdUIsQ0FBQztBQVE5QyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUEwQmhFLFNBQVMsa0JBQWtCLENBQUMsQ0FBVTtJQUNwQyxJQUFJLE1BQU0sSUFBSSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN4QyxJQUFJLEtBQUssSUFBSSxDQUFDO1FBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxDQUFVO0lBQ3JDLElBQUksTUFBTSxJQUFJLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLElBQUksS0FBSyxJQUFJLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxDQUFTO0lBQ2xDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNO1FBQUUsT0FBTyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMvQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLENBQVM7SUFDbkMsSUFBSSxDQUFDLENBQUMs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LGlDQUFpQyxDQUFDO0lBRXpDLFlBQVksWUFBb0IsRUFBRSxPQUFnQjtRQUNoRCxLQUFLLENBQUM7WUFDSixLQUFLLEVBQUU7Z0JBQ0wsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO2dCQUN0QixFQUFFLElBQUksRUFBRSx3REFBd0QsRUFBRTthQUNuRTtZQUNELE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQW5zaSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzL2Fuc2knO1xuXG4vKipcbiAqIEEgYGRvY3M6YCBsaW5lIFVSTC4gVGhlIGxlYWRpbmcgcHJvdG9jb2wgaXMgcGFydCBvZiB0aGUgdHlwZSBzbyBjYWxsIHNpdGVzXG4gKiBjYW4ndCBhY2NpZGVudGFsbHkgcGFzcyBhIHByb3RvY29sLXJlbGF0aXZlIG9yIGJhcmUgcGF0aC5cbiAqL1xuZXhwb3J0IHR5cGUgRG9jc1VybCA9IGBodHRwczovLyR7c3RyaW5nfWA7XG5cbmNvbnN0IElOU1BFQ1RfQ1VTVE9NID0gU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKTtcblxuLyoqXG4gKiBTdHJ1Y3R1cmVkIGRhdGEgZm9yIGEgZnJhbWVkIGVycm9yLiBUaGUgYmFzZSBjbGFzcyB0YWtlcyB0aGlzIGFuZCByZW5kZXJzXG4gKiBpdCB0byBwbGFpbiB0ZXh0IChmb3IgYC5tZXNzYWdlYCAvIGAuc3RhY2tgIC8gc3RydWN0dXJlZCBsb2dzKSBvciB0byBhblxuICogQU5TSS1mcmFtZWQgc3RyaW5nIChmb3IgdGVybWluYWwgZGlzcGxheSB2aWEgYHV0aWwuaW5zcGVjdGAgLyBgdG9TdHJpbmdgKS5cbiAqXG4gKiBLZWVwaW5nIHRoZSBwaWVjZXMgc3RydWN0dXJlZCBtZWFucyB3ZSBuZXZlciBoYXZlIHRvIHN0cmlwIEFOU0kgYmFjayBvdXRcbiAqIG9uY2UgaXQncyBpbiB0aGUgbWVzc2FnZSDigJQgd2UganVzdCBkb24ndCBwdXQgaXQgdGhlcmUgaW4gdGhlIGZpcnN0IHBsYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyYW1lZENvbnRlbnQge1xuICAvKiogSGVhZGxpbmUuIGB7IGNvZGU6ICdmb28oKScgfWAgc2VnbWVudHMgcmVuZGVyIGFzIGJhY2t0aWNrZWQgaW5saW5lIGNvZGUuICovXG4gIHJlYWRvbmx5IHRpdGxlOiByZWFkb25seSBTZWdtZW50W107XG4gIC8qKiBPbmUgZnJhbWVkIGJyYW5jaCBwZXIgZW50cnkuIFRoZSBsYXN0IHVzZXMgYOKVsOKWtmAsIG90aGVycyB1c2UgYOKUnOKWtmAuICovXG4gIHJlYWRvbmx5IGRldGFpbHM6IHJlYWRvbmx5IERldGFpbFtdO1xufVxuXG5leHBvcnQgdHlwZSBTZWdtZW50ID1cbiAgfCB7IHJlYWRvbmx5IHRleHQ6IHN0cmluZyB9XG4gIHwgeyByZWFkb25seSBjb2RlOiBzdHJpbmcgfVxuICB8IHsgcmVhZG9ubHkgZGltOiBzdHJpbmcgfTtcblxuZXhwb3J0IHR5cGUgRGV0YWlsID1cbiAgfCB7IHJlYWRvbmx5IHR5cGU6ICdwbGFpbic7IHJlYWRvbmx5IHNlZ21lbnRzOiByZWFkb25seSBTZWdtZW50W10gfVxuICB8IHsgcmVhZG9ubHkgdHlwZTogJ2RvY3MnOyByZWFkb25seSB1cmw6IERvY3NVcmwgfTtcblxuZnVuY3Rpb24gcmVuZGVyU2VnbWVudFBsYWluKHM6IFNlZ21lbnQpOiBzdHJpbmcge1xuICBpZiAoJ2NvZGUnIGluIHMpIHJldHVybiBgXFxgJHtzLmNvZGV9XFxgYDtcbiAgaWYgKCdkaW0nIGluIHMpIHJldHVybiBzLmRpbTtcbiAgcmV0dXJuIHMudGV4dDtcbn1cblxuZnVuY3Rpb24gcmVuZGVyU2VnbWVudFByZXR0eShzOiBTZWdtZW50KTogc3RyaW5nIHtcbiAgaWYgKCdjb2RlJyBpbiBzKSByZXR1cm4gQW5zaS5jb2RlKHMuY29kZSk7XG4gIGlmICgnZGltJyBpbiBzKSByZXR1cm4gQW5zaS5kaW0ocy5kaW0pO1xuICByZXR1cm4gcy50ZXh0O1xufVxuXG5mdW5jdGlvbiByZW5kZXJEZXRhaWxQbGFpbihkOiBEZXRhaWwpOiBzdHJpbmcge1xuICBpZiAoZC50eXBlID09PSAnZG9jcycpIHJldHVybiBgZG9jczogJHtkLnVybH1gO1xuICByZXR1cm4gZC5zZWdtZW50cy5tYXAocmVuZGVyU2VnbWVudFBsYWluKS5qb2luKCcnKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRGV0YWlsUHJldHR5KGQ6IERldGFpbCk6IHN0cmluZyB7XG4gIGlmIChkLnR5cGUgPT09ICdkb2NzJykgcmV0dXJuIEFuc2kuZG9jcyhkLnVybCk7XG4gIHJldHVybiBkLnNlZ21lbnRzLm1hcChyZW5kZXJTZWdtZW50UHJldHR5KS5qb2luKCcnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclBsYWluKGM6IEZyYW1lZENvbnRlbnQpOiBzdHJpbmcge1xuICAvLyBNaW1pYyBgQW5zaS5mcmFtZWAgc3RydWN0dXJlIHNvIGAubWVzc2FnZWAgaXMgc3RpbGwgcmVhZGFibGUgaW4gbG9nc1xuICAvLyBldmVuIHdpdGhvdXQgdGhlIGNvbG9yLlxuICBjb25zdCB0aXRsZSA9IGMudGl0bGUubWFwKHJlbmRlclNlZ21lbnRQbGFpbikuam9pbignJyk7XG4gIGNvbnN0IGxpbmVzID0gW3RpdGxlXTtcbiAgYy5kZXRhaWxzLmZvckVhY2goKGRldGFpbCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpc0xhc3QgPSBpbmRleCA9PT0gYy5kZXRhaWxzLmxlbmd0aCAtIDE7XG4gICAgY29uc3QgZmlyc3QgPSBpc0xhc3QgPyAn4pWw4pa2ICcgOiAn4pSc4pa2ICc7XG4gICAgY29uc3QgY29udCA9IGlzTGFzdCA/ICcgICAnIDogJ+KUgiAgJztcbiAgICBjb25zdCByYXcgPSByZW5kZXJEZXRhaWxQbGFpbihkZXRhaWwpLnNwbGl0KCdcXG4nKTtcbiAgICByYXcuZm9yRWFjaCgobGluZSwgaSkgPT4ge1xuICAgICAgbGluZXMucHVzaChgJHtpID09PSAwID8gZmlyc3QgOiBjb250fSR7bGluZX1gKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclByZXR0eShjOiBGcmFtZWRDb250ZW50KTogc3RyaW5nIHtcbiAgY29uc3QgdGl0bGUgPSBjLnRpdGxlLm1hcChyZW5kZXJTZWdtZW50UHJldHR5KS5qb2luKCcnKTtcbiAgcmV0dXJuIEFuc2kuZnJhbWUodGl0bGUsIGMuZGV0YWlscy5tYXAocmVuZGVyRGV0YWlsUHJldHR5KSk7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3Igc3RydWN0dXJlZCBjb250ZXh0LXZpb2xhdGlvbiBlcnJvcnMuXG4gKlxuICogRGVzaWduIG5vdGVzOlxuICpcbiAqIC0gYC5tZXNzYWdlYCBpcyAqKnBsYWluIHRleHQqKiAobm8gQU5TSSBlc2NhcGUgYnl0ZXMpLiBTdHJ1Y3R1cmVkIGxvZ3MsXG4gKiAgIGxvZyBkcmFpbnMsIENCT1Itc2VyaWFsaXplZCBldmVudCBkYXRhLCBhbmQgYW55dGhpbmcgZWxzZSB0aGF0IHJlYWRzXG4gKiAgIGBlcnIubWVzc2FnZWAgLyBgZXJyLnN0YWNrYCBhcyBhIHN0cmluZyBnZXRzIGNsZWFuIG91dHB1dCDigJQgbm8gbW9qaWJha2VcbiAqICAgaW4gSlNPTiwgbm8gYFxceDFCWy4uLm1gIG5vaXNlIGluIFZlcmNlbCBsb2dzLlxuICpcbiAqIC0gVGhlIEFOU0ktZnJhbWVkIHZlcnNpb24gaXMgcmVuZGVyZWQgKipsYXppbHkqKiB2aWEgYHRvU3RyaW5nKClgIGFuZFxuICogICBgW3V0aWwuaW5zcGVjdC5jdXN0b21dYC4gV2hlbiB0aGUgZXJyb3IgaXMgdGhyb3duIGFuZCBOb2RlIHByaW50cyBpdFxuICogICB2aWEgYHV0aWwuaW5zcGVjdGAsIHRoZSB1c2VyIHNlZXMgdGhlIGNvbG9yZWQsIGZyYW1lZCBib3guIFdoZW4gaXQnc1xuICogICBhdHRhY2hlZCB0byBhIHN0cnVjdHVyZWQgbG9nIGZpZWxkLCB0aGUgY29uc3VtZXIgc2VlcyBwbGFpbiB0ZXh0LlxuICpcbiAqIC0gYGZhdGFsID0gdHJ1ZWAgbWFya3MgdGhlc2UgYXMgbm9uLXJldHJ5YWJsZS4gQ2FsbGluZyBgY3JlYXRlSG9vaygpYFxuICogICBmcm9tIGEgc3RlcCBmdW5jdGlvbiB3aWxsIG5ldmVyIHN1Y2NlZWQgbm8gbWF0dGVyIGhvdyBtYW55IHJldHJpZXMg4oCUXG4gKiAgIGJ1cm5pbmcgYXR0ZW1wdHMganVzdCBwcm9kdWNlcyBkdXBsaWNhdGVkIGxvZyBvdXRwdXQuIFRoZSBydW50aW1lJ3NcbiAqICAgYEZhdGFsRXJyb3IuaXMoZXJyKWAgZ2F0ZSByZWNvZ25pemVzIGFueSBlcnJvciB3aXRoIGBmYXRhbDogdHJ1ZWAuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb250ZXh0VmlvbGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKiBOb24tcmV0cnlhYmxlIOKAlCBzZWUgY2xhc3MgZG9jLiAqL1xuICByZWFkb25seSBmYXRhbCA9IHRydWU7XG5cbiAgcmVhZG9ubHkgI2NvbnRlbnQ6IEZyYW1lZENvbnRlbnQ7XG5cbiAgY29uc3RydWN0b3IoY29udGVudDogRnJhbWVkQ29udGVudCkge1xuICAgIHN1cGVyKHJlbmRlclBsYWluKGNvbnRlbnQpKTtcbiAgICB0aGlzLiNjb250ZW50ID0gY29udGVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBgY29uc29sZS5sb2coZXJyKWAgYW5kIG1vc3QgTm9kZSBpbnRlcm5hbHMgcm91dGUgdGhyb3VnaCBgdXRpbC5pbnNwZWN0YCxcbiAgICogd2hpY2ggcmVzcGVjdHMgdGhpcyBzeW1ib2wuIFJldHVybmluZyBhIGN1c3RvbSBzdHJpbmcgaGVyZSBtZWFucyB0aGVcbiAgICogdGhyb3duIGVycm9yIHByaW50cyBhcyBhIHByZXR0eSBmcmFtZSBpbiB0aGUgdGVybWluYWwgd2hpbGUgYC5tZXNzYWdlYFxuICAgKiBhbmQgYC5zdGFja2Agc3RheSBwbGFpbi5cbiAgICovXG4gIFtJTlNQRUNUX0NVU1RPTV0oKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcmV0dHkgPSByZW5kZXJQcmV0dHkodGhpcy4jY29udGVudCk7XG4gICAgLy8gYHN0YWNrYCBzdGFydHMgd2l0aCBgJHtuYW1lfTogJHttZXNzYWdlfVxcbiAgICBhdCAuLi5gLiBPdXIgbWVzc2FnZSBpc1xuICAgIC8vIG11bHRpLWxpbmUgKGB0aXRsZVxcbuKVsOKWtiBkb2NzOiDigKZgKSwgc28gc2xpY2luZyBvbmx5IHRoZSBmaXJzdCBsaW5lIGdsdWVzXG4gICAgLy8gdGhlIGZyYW1lZC1kZXRhaWwgdGFpbCBvZiB0aGUgbWVzc2FnZSBvbnRvIHRoZSBwcmVwZW5kZWQgcHJldHR5IGZvcm1cbiAgICAvLyBhbmQgcmVuZGVycyBldmVyeSBkZXRhaWwgbGluZSB0d2ljZS4gU2xpY2UgcGFzdCAqYWxsKiBtZXNzYWdlIGxpbmVzLlxuICAgIGNvbnN0IG1lc3NhZ2VMaW5lQ291bnQgPSB0aGlzLm1lc3NhZ2Uuc3BsaXQoJ1xcbicpLmxlbmd0aDtcbiAgICBjb25zdCB0YWlsID0gKHRoaXMuc3RhY2sgPz8gJycpXG4gICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAuc2xpY2UobWVzc2FnZUxpbmVDb3VudClcbiAgICAgIC5qb2luKCdcXG4nKTtcbiAgICByZXR1cm4gdGFpbFxuICAgICAgPyBgJHt0aGlzLm5hbWV9OiAke3ByZXR0eX1cXG4ke3RhaWx9YFxuICAgICAgOiBgJHt0aGlzLm5hbWV9OiAke3ByZXR0eX1gO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5uYW1lfTogJHtyZW5kZXJQcmV0dHkodGhpcy4jY29udGVudCl9YDtcbiAgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIGFuIEFQSSB0aGF0IG11c3QgcnVuIGluc2lkZSBhIHdvcmtmbG93IGZ1bmN0aW9uIGlzIGNhbGxlZFxuICogZnJvbSBvdXRzaWRlIGEgd29ya2Zsb3cgY29udGV4dCAoZS5nLiBmcm9tIGEgc3RlcCBmdW5jdGlvbiBvciBmcm9tXG4gKiByZWd1bGFyIGFwcGxpY2F0aW9uIGNvZGUpLlxuICovXG5leHBvcnQgY2xhc3MgTm90SW5Xb3JrZmxvd0NvbnRleHRFcnJvciBleHRlbmRzIENvbnRleHRWaW9sYXRpb25FcnJvciB7XG4gIG5hbWUgPSAnTm90SW5Xb3JrZmxvd0NvbnRleHRFcnJvcic7XG5cbiAgY29uc3RydWN0b3IoZnVuY3Rpb25OYW1lOiBzdHJpbmcsIGRvY3NVcmw6IERvY3NVcmwpIHtcbiAgICBzdXBlcih7XG4gICAgICB0aXRsZTogW1xuICAgICAgICB7IGNvZGU6IGZ1bmN0aW9uTmFtZSB9LFxuICAgICAgICB7IHRleHQ6ICcgY2FuIG9ubHkgYmUgY2FsbGVkIGluc2lkZSBhIHdvcmtmbG93IGZ1bmN0aW9uJyB9LFxuICAgICAgXSxcbiAgICAgIGRldGFpbHM6IFt7IHR5cGU6ICdkb2NzJywgdXJsOiBkb2NzVXJsIH1dLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gYW4gQVBJIHRoYXQgbXVzdCBydW4gaW5zaWRlIGEgc3RlcCBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbVxuICogb3V0c2lkZSBhIHN0ZXAgY29udGV4dC5cbiAqL1xuZXhwb3J0IGNsYXNzIE5vdEluU3RlcENvbnRleHRFcnJvciBleHRlbmRzIENvbnRleHRWaW9sYXRpb25FcnJvciB7XG4gIG5hbWUgPSAnTm90SW5TdGVwQ29udGV4dEVycm9yJztcblxuICBjb25zdHJ1Y3RvcihmdW5jdGlvbk5hbWU6IHN0cmluZywgZG9jc1VybDogRG9jc1VybCkge1xuICAgIHN1cGVyKHtcbiAgICAgIHRpdGxlOiBbXG4gICAgICAgIHsgY29kZTogZnVuY3Rpb25OYW1lIH0sXG4gICAgICAgIHsgdGV4dDogJyBjYW4gb25seSBiZSBjYWxsZWQgaW5zaWRlIGEgc3RlcCBmdW5jdGlvbicgfSxcbiAgICAgIF0sXG4gICAgICBkZXRhaWxzOiBbeyB0eXBlOiAnZG9jcycsIHVybDogZG9jc1VybCB9XSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIGFuIEFQSSB0aGF0IG11c3QgcnVuIGluc2lkZSBlaXRoZXIgYSB3b3JrZmxvdyBvciBzdGVwIGZ1bmN0aW9uXG4gKiBpcyBjYWxsZWQgZnJvbSByZWd1bGFyIGFwcGxpY2F0aW9uIGNvZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBOb3RJbldvcmtmbG93T3JTdGVwQ29udGV4dEVycm9yIGV4dGVuZHMgQ29udGV4dFZpb2xhdGlvbkVycm9yIHtcbiAgbmFtZSA9ICdOb3RJbldvcmtmbG93T3JTdGVwQ29udGV4dEVycm9yJztcblxuICBjb25zdHJ1Y3RvcihmdW5jdGlvbk5hbWU6IHN0cmluZywgZG9jc1VybDogRG9jc1VybCkge1xuICAgIHN1cGVyKHtcbiAgICAgIHRpdGxlOiBbXG4gICAgICAgIHsgY29kZTogZnVuY3Rpb25OYW1lIH0sXG4gICAgICAgIHsgdGV4dDogJyBjYW4gb25seSBiZSBjYWxsZWQgaW5zaWRlIGEgd29ya2Zsb3cgb3Igc3RlcCBmdW5jdGlvbicgfSxcbiAgICAgIF0sXG4gICAgICBkZXRhaWxzOiBbeyB0eXBlOiAnZG9jcycsIHVybDogZG9jc1VybCB9XSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -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"}