@workflow/core 5.0.0-beta.4 → 5.0.0-beta.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attribute-changes.d.ts +7 -0
- package/dist/attribute-changes.d.ts.map +1 -0
- package/dist/attribute-changes.js +25 -0
- package/dist/capabilities.d.ts +33 -1
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +71 -4
- package/dist/capture-stack.d.ts +16 -0
- package/dist/capture-stack.d.ts.map +1 -0
- package/dist/capture-stack.js +21 -0
- package/dist/class-serialization.d.ts +32 -0
- package/dist/class-serialization.d.ts.map +1 -1
- package/dist/class-serialization.js +37 -1
- package/dist/classify-error.d.ts +26 -3
- package/dist/classify-error.d.ts.map +1 -1
- package/dist/classify-error.js +109 -6
- package/dist/context-errors.d.ts +27 -0
- package/dist/context-errors.d.ts.map +1 -0
- package/dist/context-errors.js +101 -0
- package/dist/context-violation-error.d.ts +97 -0
- package/dist/context-violation-error.d.ts.map +1 -0
- package/dist/context-violation-error.js +149 -0
- package/dist/correlation-id.d.ts +109 -0
- package/dist/correlation-id.d.ts.map +1 -0
- package/dist/correlation-id.js +139 -0
- package/dist/create-hook.d.ts +62 -4
- package/dist/create-hook.d.ts.map +1 -1
- package/dist/create-hook.js +4 -3
- package/dist/define-hook.d.ts.map +1 -1
- package/dist/define-hook.js +20 -5
- package/dist/describe-error.d.ts +70 -0
- package/dist/describe-error.d.ts.map +1 -0
- package/dist/describe-error.js +189 -0
- package/dist/encryption.d.ts +37 -3
- package/dist/encryption.d.ts.map +1 -1
- package/dist/encryption.js +97 -31
- package/dist/events-consumer.d.ts +26 -1
- package/dist/events-consumer.d.ts.map +1 -1
- package/dist/events-consumer.js +105 -18
- package/dist/flushable-stream.d.ts +65 -10
- package/dist/flushable-stream.d.ts.map +1 -1
- package/dist/flushable-stream.js +131 -18
- package/dist/global.d.ts +37 -1
- package/dist/global.d.ts.map +1 -1
- package/dist/global.js +21 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/log-format.d.ts +25 -0
- package/dist/log-format.d.ts.map +1 -0
- package/dist/log-format.js +250 -0
- package/dist/logger.d.ts +29 -30
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +82 -32
- package/dist/private.d.ts +178 -9
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +273 -9
- package/dist/replay-payload-cache.d.ts +68 -0
- package/dist/replay-payload-cache.d.ts.map +1 -0
- package/dist/replay-payload-cache.js +160 -0
- package/dist/runtime/compute-instance.d.ts +12 -0
- package/dist/runtime/compute-instance.d.ts.map +1 -0
- package/dist/runtime/compute-instance.js +13 -0
- package/dist/runtime/constants.d.ts +237 -0
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +405 -15
- package/dist/runtime/count-step-started-events.d.ts +52 -0
- package/dist/runtime/count-step-started-events.d.ts.map +1 -0
- package/dist/runtime/count-step-started-events.js +72 -0
- package/dist/runtime/deployment-guard.d.ts +99 -0
- package/dist/runtime/deployment-guard.d.ts.map +1 -0
- package/dist/runtime/deployment-guard.js +154 -0
- package/dist/runtime/get-port-lazy.d.ts +25 -0
- package/dist/runtime/get-port-lazy.d.ts.map +1 -0
- package/dist/runtime/get-port-lazy.js +92 -0
- package/dist/runtime/get-world-lazy.d.ts +23 -0
- package/dist/runtime/get-world-lazy.d.ts.map +1 -0
- package/dist/runtime/get-world-lazy.js +46 -0
- package/dist/runtime/helpers.d.ts +219 -10
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +414 -40
- package/dist/runtime/quickjs-assets.generated.d.ts +14 -0
- package/dist/runtime/quickjs-assets.generated.d.ts.map +1 -0
- package/dist/runtime/quickjs-assets.generated.js +30 -0
- package/dist/runtime/quickjs-entrypoint.d.ts +124 -0
- package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -0
- package/dist/runtime/quickjs-entrypoint.js +1429 -0
- package/dist/runtime/quickjs-runtime.d.ts +193 -0
- package/dist/runtime/quickjs-runtime.d.ts.map +1 -0
- package/dist/runtime/quickjs-runtime.js +1944 -0
- package/dist/runtime/replay-budget.d.ts +98 -0
- package/dist/runtime/replay-budget.d.ts.map +1 -0
- package/dist/runtime/replay-budget.js +192 -0
- package/dist/runtime/replay-recovery-reporter.d.ts +36 -0
- package/dist/runtime/replay-recovery-reporter.d.ts.map +1 -0
- package/dist/runtime/replay-recovery-reporter.js +64 -0
- package/dist/runtime/resume-hook.d.ts +27 -4
- package/dist/runtime/resume-hook.d.ts.map +1 -1
- package/dist/runtime/resume-hook.js +448 -76
- package/dist/runtime/run-id-time.d.ts +19 -0
- package/dist/runtime/run-id-time.d.ts.map +1 -0
- package/dist/runtime/run-id-time.js +42 -0
- package/dist/runtime/run.d.ts +8 -2
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +62 -15
- package/dist/runtime/runs.d.ts +54 -3
- package/dist/runtime/runs.d.ts.map +1 -1
- package/dist/runtime/runs.js +117 -10
- package/dist/runtime/start.d.ts +70 -1
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js +312 -54
- package/dist/runtime/step-executor.d.ts +177 -0
- package/dist/runtime/step-executor.d.ts.map +1 -0
- package/dist/runtime/step-executor.js +949 -0
- package/dist/runtime/step-latency.d.ts +197 -0
- package/dist/runtime/step-latency.d.ts.map +1 -0
- package/dist/runtime/step-latency.js +207 -0
- package/dist/runtime/step-ownership.d.ts +72 -0
- package/dist/runtime/step-ownership.d.ts.map +1 -0
- package/dist/runtime/step-ownership.js +114 -0
- package/dist/runtime/step-single-flight.d.ts +12 -0
- package/dist/runtime/step-single-flight.d.ts.map +1 -0
- package/dist/runtime/step-single-flight.js +69 -0
- package/dist/runtime/suspension-handler.d.ts +102 -7
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +439 -140
- package/dist/runtime/vm-mode.d.ts +44 -0
- package/dist/runtime/vm-mode.d.ts.map +1 -0
- package/dist/runtime/vm-mode.js +62 -0
- package/dist/runtime/vm-serde-bundle.generated.d.ts +14 -0
- package/dist/runtime/vm-serde-bundle.generated.d.ts.map +1 -0
- package/dist/runtime/vm-serde-bundle.generated.js +16 -0
- package/dist/runtime/wait-continuation.d.ts +84 -0
- package/dist/runtime/wait-continuation.d.ts.map +1 -0
- package/dist/runtime/wait-continuation.js +105 -0
- package/dist/runtime/wait-until.d.ts +18 -0
- package/dist/runtime/wait-until.d.ts.map +1 -0
- package/dist/runtime/wait-until.js +42 -0
- package/dist/runtime/world-compatibility.d.ts +5 -0
- package/dist/runtime/world-compatibility.d.ts.map +1 -0
- package/dist/runtime/world-compatibility.js +12 -0
- package/dist/runtime/world-init.d.ts +50 -0
- package/dist/runtime/world-init.d.ts.map +1 -0
- package/dist/runtime/world-init.js +50 -0
- package/dist/runtime/world.d.ts +14 -2
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +101 -26
- package/dist/runtime.d.ts +17 -12
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +3078 -327
- package/dist/schemas.d.ts +1 -1
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +1 -1
- package/dist/sealed-box.d.ts +167 -0
- package/dist/sealed-box.d.ts.map +1 -0
- package/dist/sealed-box.js +571 -0
- package/dist/serialization/client.d.ts +17 -0
- package/dist/serialization/client.d.ts.map +1 -0
- package/dist/serialization/client.js +48 -0
- package/dist/serialization/codec-devalue-vm.d.ts +9 -0
- package/dist/serialization/codec-devalue-vm.d.ts.map +1 -0
- package/dist/serialization/codec-devalue-vm.js +137 -0
- package/dist/serialization/codec-devalue.d.ts +14 -0
- package/dist/serialization/codec-devalue.d.ts.map +1 -0
- package/dist/serialization/codec-devalue.js +105 -0
- package/dist/serialization/codec.d.ts +125 -0
- package/dist/serialization/codec.d.ts.map +1 -0
- package/dist/serialization/codec.js +17 -0
- package/dist/serialization/compression.d.ts +104 -0
- package/dist/serialization/compression.d.ts.map +1 -0
- package/dist/serialization/compression.js +260 -0
- package/dist/serialization/encryption.d.ts +134 -0
- package/dist/serialization/encryption.d.ts.map +1 -0
- package/dist/serialization/encryption.js +186 -0
- package/dist/serialization/errors.d.ts +34 -0
- package/dist/serialization/errors.d.ts.map +1 -0
- package/dist/serialization/errors.js +59 -0
- package/dist/serialization/format.d.ts +60 -0
- package/dist/serialization/format.d.ts.map +1 -0
- package/dist/serialization/format.js +97 -0
- package/dist/serialization/hardened.d.ts +155 -0
- package/dist/serialization/hardened.d.ts.map +1 -0
- package/dist/serialization/hardened.js +523 -0
- package/dist/serialization/index.d.ts +20 -0
- package/dist/serialization/index.d.ts.map +1 -0
- package/dist/serialization/index.js +22 -0
- package/dist/serialization/reducers/class-vm.d.ts +20 -0
- package/dist/serialization/reducers/class-vm.d.ts.map +1 -0
- package/dist/serialization/reducers/class-vm.js +77 -0
- package/dist/serialization/reducers/class.d.ts +11 -0
- package/dist/serialization/reducers/class.d.ts.map +1 -0
- package/dist/serialization/reducers/class.js +73 -0
- package/dist/serialization/reducers/common-vm.d.ts +15 -0
- package/dist/serialization/reducers/common-vm.d.ts.map +1 -0
- package/dist/serialization/reducers/common-vm.js +579 -0
- package/dist/serialization/reducers/common.d.ts +16 -0
- package/dist/serialization/reducers/common.d.ts.map +1 -0
- package/dist/serialization/reducers/common.js +478 -0
- package/dist/serialization/reducers/step-function-vm.d.ts +44 -0
- package/dist/serialization/reducers/step-function-vm.d.ts.map +1 -0
- package/dist/serialization/reducers/step-function-vm.js +97 -0
- package/dist/serialization/reducers/step-function.d.ts +35 -0
- package/dist/serialization/reducers/step-function.d.ts.map +1 -0
- package/dist/serialization/reducers/step-function.js +104 -0
- package/dist/serialization/step.d.ts +17 -0
- package/dist/serialization/step.d.ts.map +1 -0
- package/dist/serialization/step.js +48 -0
- package/dist/serialization/types.d.ts +273 -0
- package/dist/serialization/types.d.ts.map +1 -0
- package/dist/serialization/types.js +35 -0
- package/dist/serialization/vm-bundle-entry.d.ts +12 -0
- package/dist/serialization/vm-bundle-entry.d.ts.map +1 -0
- package/dist/serialization/vm-bundle-entry.js +58 -0
- package/dist/serialization/workflow-vm.d.ts +24 -0
- package/dist/serialization/workflow-vm.d.ts.map +1 -0
- package/dist/serialization/workflow-vm.js +66 -0
- package/dist/serialization/workflow.d.ts +29 -0
- package/dist/serialization/workflow.d.ts.map +1 -0
- package/dist/serialization/workflow.js +54 -0
- package/dist/serialization-format.d.ts +60 -4
- package/dist/serialization-format.d.ts.map +1 -1
- package/dist/serialization-format.js +276 -56
- package/dist/serialization.d.ts +374 -221
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +2300 -783
- package/dist/set-attributes.d.ts +13 -0
- package/dist/set-attributes.d.ts.map +1 -0
- package/dist/set-attributes.js +60 -0
- package/dist/sleep.d.ts.map +1 -1
- package/dist/sleep.js +3 -2
- package/dist/source-map.d.ts +25 -0
- package/dist/source-map.d.ts.map +1 -1
- package/dist/source-map.js +148 -10
- package/dist/step/context-storage.d.ts +61 -2
- package/dist/step/context-storage.d.ts.map +1 -1
- package/dist/step/context-storage.js +7 -5
- package/dist/step/get-closure-vars.d.ts.map +1 -1
- package/dist/step/get-closure-vars.js +3 -2
- package/dist/step/get-step-metadata.d.ts.map +1 -1
- package/dist/step/get-step-metadata.js +3 -2
- package/dist/step/get-workflow-metadata.d.ts.map +1 -1
- package/dist/step/get-workflow-metadata.js +3 -2
- package/dist/step/writable-stream.d.ts.map +1 -1
- package/dist/step/writable-stream.js +71 -7
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +226 -30
- package/dist/symbols.d.ts +54 -0
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +55 -1
- package/dist/telemetry/semantic-conventions.d.ts +242 -2
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +173 -1
- package/dist/telemetry.d.ts +73 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +153 -16
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +23 -1
- package/dist/util.d.ts +16 -6
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +25 -16
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +2 -2
- package/dist/vm/index.d.ts.map +1 -1
- package/dist/vm/index.js +77 -9
- package/dist/vm/script-cache.d.ts +28 -0
- package/dist/vm/script-cache.d.ts.map +1 -0
- package/dist/vm/script-cache.js +140 -0
- package/dist/workflow/abort-controller.d.ts +65 -0
- package/dist/workflow/abort-controller.d.ts.map +1 -0
- package/dist/workflow/abort-controller.js +314 -0
- package/dist/workflow/attribute-dispatcher.d.ts +6 -0
- package/dist/workflow/attribute-dispatcher.d.ts.map +1 -0
- package/dist/workflow/attribute-dispatcher.js +48 -0
- package/dist/workflow/create-hook.d.ts.map +1 -1
- package/dist/workflow/create-hook.js +25 -3
- package/dist/workflow/define-hook.d.ts +1 -1
- package/dist/workflow/define-hook.d.ts.map +1 -1
- package/dist/workflow/define-hook.js +8 -4
- package/dist/workflow/get-workflow-metadata.d.ts.map +1 -1
- package/dist/workflow/get-workflow-metadata.js +14 -3
- package/dist/workflow/hook.d.ts.map +1 -1
- package/dist/workflow/hook.js +303 -37
- package/dist/workflow/index.d.ts +1 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +5 -3
- package/dist/workflow/set-attributes.d.ts +68 -0
- package/dist/workflow/set-attributes.d.ts.map +1 -0
- package/dist/workflow/set-attributes.js +60 -0
- package/dist/workflow/sleep.d.ts.map +1 -1
- package/dist/workflow/sleep.js +58 -9
- package/dist/workflow/world-init-stub.d.ts +15 -0
- package/dist/workflow/world-init-stub.d.ts.map +1 -0
- package/dist/workflow/world-init-stub.js +15 -0
- package/dist/workflow.d.ts +69 -3
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +791 -554
- package/docs/api-reference/create-hook.mdx +79 -0
- package/docs/api-reference/create-webhook.mdx +1 -0
- package/docs/api-reference/define-hook.mdx +26 -24
- package/docs/api-reference/fatal-error.mdx +29 -7
- package/docs/api-reference/fetch.mdx +8 -4
- package/docs/api-reference/index.mdx +3 -0
- package/docs/api-reference/set-attributes.mdx +61 -0
- package/docs/api-reference/sleep.mdx +1 -1
- package/docs/foundations/cancellation.mdx +459 -0
- package/docs/foundations/errors-and-retries.mdx +7 -3
- package/docs/foundations/hooks.mdx +29 -0
- package/docs/foundations/idempotency.mdx +243 -11
- package/docs/foundations/index.mdx +1 -23
- package/docs/foundations/meta.json +3 -1
- package/docs/foundations/serialization.mdx +77 -41
- package/docs/foundations/starting-workflows.mdx +79 -2
- package/docs/foundations/streaming.mdx +14 -23
- package/docs/foundations/versioning.mdx +263 -0
- package/docs/how-it-works/cancellation.mdx +287 -0
- package/docs/how-it-works/code-transform.mdx +21 -17
- package/docs/how-it-works/encryption.mdx +5 -5
- package/docs/how-it-works/event-sourcing.mdx +6 -6
- package/docs/how-it-works/framework-integrations.mdx +96 -337
- package/docs/how-it-works/meta.json +2 -1
- package/package.json +31 -13
- package/dist/runtime/step-handler.d.ts +0 -2
- package/dist/runtime/step-handler.d.ts.map +0 -1
- package/dist/runtime/step-handler.js +0 -678
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { encodeTime, incrementBase32 } from 'ulid';
|
|
2
|
+
const CROCKFORD = '0123456789ABCDEFGHJKMNPQRSTVWXYZ';
|
|
3
|
+
/** Number of Crockford characters in a ULID's random component. */
|
|
4
|
+
const BODY_CHARS = 16;
|
|
5
|
+
/** Number of Crockford characters in a ULID's timestamp component. */
|
|
6
|
+
const TIME_CHARS = 10;
|
|
7
|
+
function mul32(a, b) {
|
|
8
|
+
return Math.imul(a, b) >>> 0;
|
|
9
|
+
}
|
|
10
|
+
function rotl32(value, shift) {
|
|
11
|
+
return ((value << shift) | (value >>> (32 - shift))) >>> 0;
|
|
12
|
+
}
|
|
13
|
+
/** MurmurHash3's 32-bit finalizer. */
|
|
14
|
+
function fmix32(input) {
|
|
15
|
+
let h = input >>> 0;
|
|
16
|
+
h = (h ^ (h >>> 16)) >>> 0;
|
|
17
|
+
h = mul32(h, 0x85ebca6b);
|
|
18
|
+
h = (h ^ (h >>> 13)) >>> 0;
|
|
19
|
+
h = mul32(h, 0xc2b2ae35);
|
|
20
|
+
return (h ^ (h >>> 16)) >>> 0;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Deterministic 128-bit hash of a string, as four 32-bit lanes.
|
|
24
|
+
*
|
|
25
|
+
* A MurmurHash3-style mixer over UTF-16 code units, rotating which lane absorbs
|
|
26
|
+
* each unit and diffusing across lanes at the end. Only determinism and
|
|
27
|
+
* diffusion matter here: this is not a cryptographic hash, claims no
|
|
28
|
+
* bit-compatibility with any reference implementation, and must not be used for
|
|
29
|
+
* anything that outlives a deployment's replays.
|
|
30
|
+
*/
|
|
31
|
+
function hash128(input) {
|
|
32
|
+
const lanes = [
|
|
33
|
+
0x9e3779b1, 0x85ebca77, 0xc2b2ae3d, 0x27d4eb2f,
|
|
34
|
+
];
|
|
35
|
+
for (let i = 0; i < input.length; i++) {
|
|
36
|
+
let k = input.charCodeAt(i) >>> 0;
|
|
37
|
+
k = mul32(k, 0xcc9e2d51);
|
|
38
|
+
k = rotl32(k, 15);
|
|
39
|
+
k = mul32(k, 0x1b873593);
|
|
40
|
+
const lane = i & 3;
|
|
41
|
+
let h = (lanes[lane] ^ k) >>> 0;
|
|
42
|
+
h = rotl32(h, 13);
|
|
43
|
+
lanes[lane] = (mul32(h, 5) + 0xe6546b64) >>> 0;
|
|
44
|
+
}
|
|
45
|
+
lanes[0] = (lanes[0] ^ input.length) >>> 0;
|
|
46
|
+
// Two passes so every lane depends on every other lane.
|
|
47
|
+
for (let pass = 0; pass < 2; pass++) {
|
|
48
|
+
for (let lane = 0; lane < 4; lane++) {
|
|
49
|
+
const previous = lanes[(lane + 3) & 3];
|
|
50
|
+
lanes[lane] = fmix32((lanes[lane] ^ previous) >>> 0);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return lanes;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Derives a kind's starting body: 80 bits of a 128-bit hash as 16 Crockford
|
|
57
|
+
* characters, most significant first.
|
|
58
|
+
*
|
|
59
|
+
* The leading character is confined to the alphabet's lower half so the body
|
|
60
|
+
* starts below half of the 80-bit space. `incrementBase32` throws on overflow,
|
|
61
|
+
* and without this a base that happened to land near `Z…Z` would make overflow
|
|
62
|
+
* reachable after few draws rather than after 2^79 of them.
|
|
63
|
+
*/
|
|
64
|
+
function deriveBody(seed, kind) {
|
|
65
|
+
const lanes = hash128(`${seed} correlation-kind ${kind}`);
|
|
66
|
+
const bytes = [
|
|
67
|
+
(lanes[0] >>> 24) & 0xff,
|
|
68
|
+
(lanes[0] >>> 16) & 0xff,
|
|
69
|
+
(lanes[0] >>> 8) & 0xff,
|
|
70
|
+
lanes[0] & 0xff,
|
|
71
|
+
(lanes[1] >>> 24) & 0xff,
|
|
72
|
+
(lanes[1] >>> 16) & 0xff,
|
|
73
|
+
(lanes[1] >>> 8) & 0xff,
|
|
74
|
+
lanes[1] & 0xff,
|
|
75
|
+
(lanes[2] >>> 24) & 0xff,
|
|
76
|
+
(lanes[2] >>> 16) & 0xff,
|
|
77
|
+
];
|
|
78
|
+
let body = '';
|
|
79
|
+
let accumulator = 0;
|
|
80
|
+
let bits = 0;
|
|
81
|
+
for (const byte of bytes) {
|
|
82
|
+
accumulator = ((accumulator << 8) | byte) >>> 0;
|
|
83
|
+
bits += 8;
|
|
84
|
+
while (bits >= 5) {
|
|
85
|
+
const index = (accumulator >>> (bits - 5)) & 31;
|
|
86
|
+
body += CROCKFORD[body.length === 0 ? index & 15 : index];
|
|
87
|
+
bits -= 5;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return body;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Builds a replay's correlation-id generator.
|
|
94
|
+
*
|
|
95
|
+
* `perKind: false` returns the run's single shared monotonic sequence and
|
|
96
|
+
* ignores the kind entirely, so both schemes go through one call path and the
|
|
97
|
+
* flag is the only difference between them.
|
|
98
|
+
*/
|
|
99
|
+
export function createCorrelationIdGenerator(options) {
|
|
100
|
+
const { seed, fixedTimestamp, positional, perKind } = options;
|
|
101
|
+
if (!perKind) {
|
|
102
|
+
return positional;
|
|
103
|
+
}
|
|
104
|
+
const time = encodeTime(fixedTimestamp, TIME_CHARS);
|
|
105
|
+
const bodies = new Map();
|
|
106
|
+
return (kind) => {
|
|
107
|
+
const previous = bodies.get(kind);
|
|
108
|
+
const body = previous === undefined
|
|
109
|
+
? deriveBody(seed, kind)
|
|
110
|
+
: incrementBase32(previous);
|
|
111
|
+
bodies.set(kind, body);
|
|
112
|
+
return `${time}${body}`;
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/** Length of a ULID, exported so tests need not restate it. */
|
|
116
|
+
export const CORRELATION_ID_LENGTH = TIME_CHARS + BODY_CHARS;
|
|
117
|
+
/**
|
|
118
|
+
* Whether each entity family draws correlation ids from its own sequence rather
|
|
119
|
+
* than from one sequence shared by the whole run. Off unless opted in, so an SDK
|
|
120
|
+
* upgrade alone never moves a run between schemes.
|
|
121
|
+
*
|
|
122
|
+
* The invariant either way: a run must replay under the scheme that minted its
|
|
123
|
+
* ids. A replay under the other scheme mints ids its own earlier events do not
|
|
124
|
+
* carry, so it can consume none of them and fails the run. Two things can break
|
|
125
|
+
* it, and both are about turning the flag on rather than about upgrading:
|
|
126
|
+
*
|
|
127
|
+
* - Enabling it while runs are in flight. On Vercel, skew protection keeps a run
|
|
128
|
+
* on the deployment that started it, so a run only ever sees the value baked
|
|
129
|
+
* into its own deployment. Elsewhere (world-postgres, world-local, a
|
|
130
|
+
* self-hosted process) nothing pins a run to the code that started it, so
|
|
131
|
+
* enable it during a quiet window.
|
|
132
|
+
* - A rolling deploy that leaves both values live, which puts two schemes on one
|
|
133
|
+
* run concurrently — the side-by-side append this whole mechanism exists to
|
|
134
|
+
* avoid. Roll the value out to the whole fleet at once.
|
|
135
|
+
*/
|
|
136
|
+
export function isPerKindCorrelationIdsEnabled() {
|
|
137
|
+
return process.env.WORKFLOW_PER_KIND_CORRELATION_IDS === '1';
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ycmVsYXRpb24taWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29ycmVsYXRpb24taWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUF5RW5ELE1BQU0sU0FBUyxHQUFHLGtDQUFrQyxDQUFDO0FBRXJELG1FQUFtRTtBQUNuRSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFFdEIsc0VBQXNFO0FBQ3RFLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUV0QixTQUFTLEtBQUssQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsU0FBUyxNQUFNLENBQUMsS0FBYSxFQUFFLEtBQWE7SUFDMUMsT0FBTyxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELHNDQUFzQztBQUN0QyxTQUFTLE1BQU0sQ0FBQyxLQUFhO0lBQzNCLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLENBQUM7SUFDcEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3pCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN6QixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsT0FBTyxDQUFDLEtBQWE7SUFDNUIsTUFBTSxLQUFLLEdBQXFDO1FBQzlDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7S0FDL0MsQ0FBQztJQUNGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLHdEQUF3RDtJQUN4RCxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7UUFDcEMsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2QyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxJQUFZLEVBQUUsSUFBdUI7SUFDdkQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsSUFBSSxxQkFBcUIsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRCxNQUFNLEtBQUssR0FBRztRQUNaLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUk7UUFDeEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSTtRQUN4QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJO1FBQ3ZCLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO1FBQ2YsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSTtRQUN4QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJO1FBQ3hCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUk7UUFDdkIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7UUFDZixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJO1FBQ3hCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUk7S0FDekIsQ0FBQztJQUNGLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNkLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztJQUNwQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLFdBQVcsR0FBRyxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ1YsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxXQUFXLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDaEQsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUQsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLDRCQUE0QixDQUFDLE9BVTVDO0lBQ0MsTUFBTSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUU5RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztJQUVwRCxPQUFPLENBQUMsSUFBdUIsRUFBRSxFQUFFO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsTUFBTSxJQUFJLEdBQ1IsUUFBUSxLQUFLLFNBQVM7WUFDcEIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkIsT0FBTyxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFVBQVUsR0FBRyxVQUFVLENBQUM7QUFFN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sVUFBVSw4QkFBOEI7SUFDNUMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxLQUFLLEdBQUcsQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW5jb2RlVGltZSwgaW5jcmVtZW50QmFzZTMyIH0gZnJvbSAndWxpZCc7XG5cbi8qKlxuICogQ29ycmVsYXRpb24taWQgZ2VuZXJhdGlvbiBmb3IgdGhlIGVudGl0eSBmYW1pbGllcyBhIHJlcGxheSBjYW4gY3JlYXRlLlxuICpcbiAqIENvcnJlbGF0aW9uIGlkcyBhcmUgbWludGVkIGJ5IHRoZSB3b3JrZmxvdyBWTSBhbmQgYXJlIHRoZSBzZXJ2ZXIncyBpZGVudGl0eVxuICogZ2F0ZTogYSBjb25kaXRpb25hbCBjcmVhdGUgb24gdGhlIGlkIGlzIHdoYXQgbWFrZXMgYSBkdXBsaWNhdGUgd3JpdGUgZnJvbSBhXG4gKiBzZWNvbmQgbGl2ZSByZXBsYXkgaWRlbXBvdGVudCBpbnN0ZWFkIG9mIGFkZGl0aXZlLiBUaGF0IG9ubHkgd29ya3MgaWYgdHdvXG4gKiByZXBsYXlzIG9mIHRoZSBzYW1lIHJ1biBtaW50IHRoZSBzYW1lIGlkIGZvciB0aGUgc2FtZSBlbnRpdHkuXG4gKlxuICogSGlzdG9yaWNhbGx5IGV2ZXJ5IGlkIHdhcyB0aGUgTnRoIGRyYXcgb2YgKm9uZSogbW9ub3RvbmljIFVMSUQgc2VxdWVuY2UgcGVyXG4gKiBydW4sIHNoYXJlZCBieSBzdGVwcywgd2FpdHMsIGhvb2tzLCBhdHRyaWJ1dGUgd3JpdGVzLCBhYm9ydCBjb250cm9sbGVycyBhbmRcbiAqIHN0cmVhbSBpZHMgYWxpa2UuIEV2ZXJ5IGlkIHdhcyB0aGVyZWZvcmUgYW4gb3JkaW5hbCBvdmVyIHRoZSB3aG9sZSBydW4sIGFuZCBhXG4gKiBzaW5nbGUgZXh0cmEgZHJhdyBvZiBhbnkga2luZCByZW51bWJlcmVkIGV2ZXJ5IGVudGl0eSBvZiBldmVyeSBraW5kIGFmdGVyIGl0LlxuICogVHdvIHJlcGxheXMgdGhhdCBhZ3JlZWQgYWJvdXQgZXZlcnkgc3RlcCBidXQgZGlzYWdyZWVkIGFib3V0IG9uZSBgc2xlZXAoKWBcbiAqIHdvdWxkIG1pbnQgZGlmZmVyZW50IGlkcyBmb3IgYWxsIHN1YnNlcXVlbnQgc3RlcHMsIHNvIHRoZWlyIHdyaXRlcyBhcHBlbmRlZFxuICogc2lkZSBieSBzaWRlIGluc3RlYWQgb2YgY29sbGlkaW5nLCBhbmQgdGhlIHNldHRsZWQgbG9nIGVuZGVkIHVwIGhvbGRpbmcgdHdvXG4gKiBuYW1lcyBmb3Igb25lIGxvZ2ljYWwgc3RlcC4gT25seSBvbmUgb2YgdGhlbSBjYW4gYmUgY29uc3VtZWQgb24gdGhlIG5leHRcbiAqIHJlcGxheTsgdGhlIG90aGVyIGlzIGZhdGFsIChgb25VbmNvbnN1bWVkRXZlbnRgKS5cbiAqXG4gKiBQZXIta2luZCBzb3VyY2VzIG5hcnJvdyB0aGF0IGNvdXBsaW5nIHRvIG9uZSBraW5kIGF0IGEgdGltZTogZWFjaCBmYW1pbHlcbiAqIGRyYXdzIGZyb20gaXRzIG93biBpbmRlcGVuZGVudCBpbmNyZW1lbnRpbmcgc2VxdWVuY2UsIHNvIGEgZGlzYWdyZWVtZW50IGFib3V0XG4gKiBob3cgbWFueSBob29rcyBvciBzbGVlcHMgd2VyZSBjcmVhdGVkIG5vIGxvbmdlciByZW5hbWVzIHN0ZXBzLlxuICpcbiAqIElkcyBzdGF5IHN5bnRhY3RpY2FsbHkgdmFsaWQgVUxJRHMgKDEwIENyb2NrZm9yZCBjaGFyYWN0ZXJzIG9mXG4gKiBgZml4ZWRUaW1lc3RhbXBgIHBsdXMgMTYgb2YgYm9keSksIGJlY2F1c2UgY29ycmVsYXRpb24gaWRzIGFyZSB2YWxpZGF0ZWQgYXNcbiAqIHByZWZpeGVkIDI2LWNoYXIgVUxJRHMgYnkgdGhlIGJhY2tlbmQsIGFuZCB0aGV5IHN0YXkgbW9ub3RvbmljICp3aXRoaW4qIGFcbiAqIGtpbmQsIGJlY2F1c2UgYGhvb2tzLmxpc3RgIGlzIG9yZGVyZWQgYnkgaG9vayBpZC5cbiAqXG4gKiBNb25vdG9uaWNpdHkgaXMgcGVyIGtpbmQsIGFuZCB0d28ga2luZHMgbWludCBgaG9va19gIGlkcyAoYGhvb2tgIGFuZFxuICogYGFib3J0SG9va2ApLCBzbyBsaXN0aW5nIG9yZGVyIGlzIG9ubHkgY3JlYXRpb24gb3JkZXIgKndpdGhpbiogZWFjaCBvZiB0aGVtLlxuICogTm8gd29ybGQgZmlsdGVycyBzeXN0ZW0gaG9va3Mgb3V0IG9mIGEgbGlzdGluZywgc28gYSBydW4gdGhhdCBjb25zdHJ1Y3RzIGFuXG4gKiBhYm9ydCBjb250cm9sbGVyIGFuZCBhbHNvIGNyZWF0ZXMgaXRzIG93biBob29rcyBsaXN0cyB0aGF0IHN5c3RlbSBob29rIGF0IGFcbiAqIHBvc2l0aW9uIGRlY2lkZWQgYnkgaXRzIGtpbmQncyBoYXNoIHJhdGhlciB0aGFuIGF0IGl0cyBjcmVhdGlvbiBwb3NpdGlvbi5cbiAqIE9yZGVyIGFtb25nIHRoZSB1c2VyJ3Mgb3duIGhvb2tzIGlzIHVuYWZmZWN0ZWQuXG4gKlxuICogVGhpcyBkb2VzIG5vdCBtYWtlIGlkcyBpbmRlcGVuZGVudCBvZiAqb3JkaW5hbCBwb3NpdGlvbiB3aXRoaW4gdGhlaXIgb3duXG4gKiBraW5kKjogdHdvIHJlcGxheXMgdGhhdCBkaXNhZ3JlZSBhYm91dCBob3cgbWFueSBzdGVwcyByYW4gc3RpbGwgbWludFxuICogZGlmZmVyZW50IGlkcyBmb3IgdGhlIG5leHQgc3RlcC4gVGhhdCBpcyBhIG5hcnJvd2VyIGZhaWx1cmUgdGhhbiB0aGUgc2hhcmVkXG4gKiBzZXF1ZW5jZSdzLCBub3QgYW4gZWxpbWluYXRlZCBvbmUuXG4gKi9cblxuLyoqIEVudGl0eSBmYW1pbGllcyB0aGF0IGRyYXcgY29ycmVsYXRpb24gaWRzLCBlYWNoIGZyb20gaXRzIG93biBzZXF1ZW5jZS4gKi9cbmV4cG9ydCB0eXBlIENvcnJlbGF0aW9uSWRLaW5kID1cbiAgLyoqIGBzdGVwX2AgaWRzLCBvbmUgcGVyIHN0ZXAgaW52b2NhdGlvbi4gKi9cbiAgfCAnc3RlcCdcbiAgLyoqIGB3YWl0X2AgaWRzLCBvbmUgcGVyIGBzbGVlcCgpYC4gKi9cbiAgfCAnd2FpdCdcbiAgLyoqIGBob29rX2AgaWRzIGZvciBob29rcyBjcmVhdGVkIGJ5IHdvcmtmbG93IGNvZGUuICovXG4gIHwgJ2hvb2snXG4gIC8qKiBgYXR0cl9gIGlkcywgb25lIHBlciBhdHRyaWJ1dGUgd3JpdGUuICovXG4gIHwgJ2F0dHInXG4gIC8qKlxuICAgKiBUaGUgYWJvcnQgY29udHJvbGxlcidzIG93biBpZCwgd2hpY2ggYmVjb21lcyBpdHMgc3RyZWFtIG5hbWUgYW5kIGhvb2tcbiAgICogdG9rZW4uIFNlcGFyYXRlIGZyb20gYGhvb2tgIHNvIGNvbnN0cnVjdGluZyBhbiBhYm9ydCBjb250cm9sbGVyIGRvZXMgbm90XG4gICAqIHJlbnVtYmVyIGxhdGVyIHVzZXIgaG9va3MuXG4gICAqL1xuICB8ICdhYm9ydCdcbiAgLyoqIGBob29rX2AgaWRzIGZvciB0aGUgaW50ZXJuYWwgc3lzdGVtIGhvb2sgYmFja2luZyBhbiBhYm9ydCBjb250cm9sbGVyLiAqL1xuICB8ICdhYm9ydEhvb2snXG4gIC8qKlxuICAgKiBJZHMgbWludGVkIGR1cmluZyBzZXJpYWxpemF0aW9uIChgU1RBQkxFX1VMSURgKTogc3RyZWFtIG5hbWVzLCBhbmQgYW4gYWJvcnRcbiAgICogaG9sZGVyJ3Mgc3RyZWFtIG5hbWUgYW5kIGBhYnJ0X2AgaG9vayB0b2tlbiB3aGVuIGl0IHJlYWNoZXMgc2VyaWFsaXphdGlvblxuICAgKiB3aXRob3V0IGFuIGlkZW50aXR5IHlldCAoYHJlZHVjZUFib3J0V2l0aExpc3RlbmVyYCksIHdoaWNoIGlzIHdoeSBgYWJvcnRgXG4gICAqIGFib3ZlIGlzIG5vdCB0aGUgb25seSBtaW50IHBhdGggZm9yIGFuIGFib3J0IGlkZW50aXR5LiBOb3QgY29ycmVsYXRpb24gaWRzLFxuICAgKiBidXQgdGhleSBkcmV3IGZyb20gdGhlIHNhbWUgc2hhcmVkIHNlcXVlbmNlLCBzbyBhIHdvcmtmbG93IHRoYXQgc2VyaWFsaXplZFxuICAgKiBhIHN0cmVhbSByZW51bWJlcmVkIGV2ZXJ5IGVudGl0eSBjcmVhdGVkIGFmdGVyIGl0LlxuICAgKi9cbiAgfCAnc3RyZWFtJztcblxuLyoqIE1pbnRzIHRoZSBVTElEIGJvZHkgb2YgYSBjb3JyZWxhdGlvbiBpZCBmb3Igb25lIGVudGl0eSBmYW1pbHkuICovXG5leHBvcnQgdHlwZSBDb3JyZWxhdGlvbklkR2VuZXJhdG9yID0gKGtpbmQ6IENvcnJlbGF0aW9uSWRLaW5kKSA9PiBzdHJpbmc7XG5cbmNvbnN0IENST0NLRk9SRCA9ICcwMTIzNDU2Nzg5QUJDREVGR0hKS01OUFFSU1RWV1hZWic7XG5cbi8qKiBOdW1iZXIgb2YgQ3JvY2tmb3JkIGNoYXJhY3RlcnMgaW4gYSBVTElEJ3MgcmFuZG9tIGNvbXBvbmVudC4gKi9cbmNvbnN0IEJPRFlfQ0hBUlMgPSAxNjtcblxuLyoqIE51bWJlciBvZiBDcm9ja2ZvcmQgY2hhcmFjdGVycyBpbiBhIFVMSUQncyB0aW1lc3RhbXAgY29tcG9uZW50LiAqL1xuY29uc3QgVElNRV9DSEFSUyA9IDEwO1xuXG5mdW5jdGlvbiBtdWwzMihhOiBudW1iZXIsIGI6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLmltdWwoYSwgYikgPj4+IDA7XG59XG5cbmZ1bmN0aW9uIHJvdGwzMih2YWx1ZTogbnVtYmVyLCBzaGlmdDogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuICgodmFsdWUgPDwgc2hpZnQpIHwgKHZhbHVlID4+PiAoMzIgLSBzaGlmdCkpKSA+Pj4gMDtcbn1cblxuLyoqIE11cm11ckhhc2gzJ3MgMzItYml0IGZpbmFsaXplci4gKi9cbmZ1bmN0aW9uIGZtaXgzMihpbnB1dDogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IGggPSBpbnB1dCA+Pj4gMDtcbiAgaCA9IChoIF4gKGggPj4+IDE2KSkgPj4+IDA7XG4gIGggPSBtdWwzMihoLCAweDg1ZWJjYTZiKTtcbiAgaCA9IChoIF4gKGggPj4+IDEzKSkgPj4+IDA7XG4gIGggPSBtdWwzMihoLCAweGMyYjJhZTM1KTtcbiAgcmV0dXJuIChoIF4gKGggPj4+IDE2KSkgPj4+IDA7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5pc3RpYyAxMjgtYml0IGhhc2ggb2YgYSBzdHJpbmcsIGFzIGZvdXIgMzItYml0IGxhbmVzLlxuICpcbiAqIEEgTXVybXVySGFzaDMtc3R5bGUgbWl4ZXIgb3ZlciBVVEYtMTYgY29kZSB1bml0cywgcm90YXRpbmcgd2hpY2ggbGFuZSBhYnNvcmJzXG4gKiBlYWNoIHVuaXQgYW5kIGRpZmZ1c2luZyBhY3Jvc3MgbGFuZXMgYXQgdGhlIGVuZC4gT25seSBkZXRlcm1pbmlzbSBhbmRcbiAqIGRpZmZ1c2lvbiBtYXR0ZXIgaGVyZTogdGhpcyBpcyBub3QgYSBjcnlwdG9ncmFwaGljIGhhc2gsIGNsYWltcyBub1xuICogYml0LWNvbXBhdGliaWxpdHkgd2l0aCBhbnkgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uLCBhbmQgbXVzdCBub3QgYmUgdXNlZCBmb3JcbiAqIGFueXRoaW5nIHRoYXQgb3V0bGl2ZXMgYSBkZXBsb3ltZW50J3MgcmVwbGF5cy5cbiAqL1xuZnVuY3Rpb24gaGFzaDEyOChpbnB1dDogc3RyaW5nKTogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICBjb25zdCBsYW5lczogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbXG4gICAgMHg5ZTM3NzliMSwgMHg4NWViY2E3NywgMHhjMmIyYWUzZCwgMHgyN2Q0ZWIyZixcbiAgXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGxldCBrID0gaW5wdXQuY2hhckNvZGVBdChpKSA+Pj4gMDtcbiAgICBrID0gbXVsMzIoaywgMHhjYzllMmQ1MSk7XG4gICAgayA9IHJvdGwzMihrLCAxNSk7XG4gICAgayA9IG11bDMyKGssIDB4MWI4NzM1OTMpO1xuICAgIGNvbnN0IGxhbmUgPSBpICYgMztcbiAgICBsZXQgaCA9IChsYW5lc1tsYW5lXSBeIGspID4+PiAwO1xuICAgIGggPSByb3RsMzIoaCwgMTMpO1xuICAgIGxhbmVzW2xhbmVdID0gKG11bDMyKGgsIDUpICsgMHhlNjU0NmI2NCkgPj4+IDA7XG4gIH1cbiAgbGFuZXNbMF0gPSAobGFuZXNbMF0gXiBpbnB1dC5sZW5ndGgpID4+PiAwO1xuICAvLyBUd28gcGFzc2VzIHNvIGV2ZXJ5IGxhbmUgZGVwZW5kcyBvbiBldmVyeSBvdGhlciBsYW5lLlxuICBmb3IgKGxldCBwYXNzID0gMDsgcGFzcyA8IDI7IHBhc3MrKykge1xuICAgIGZvciAobGV0IGxhbmUgPSAwOyBsYW5lIDwgNDsgbGFuZSsrKSB7XG4gICAgICBjb25zdCBwcmV2aW91cyA9IGxhbmVzWyhsYW5lICsgMykgJiAzXTtcbiAgICAgIGxhbmVzW2xhbmVdID0gZm1peDMyKChsYW5lc1tsYW5lXSBeIHByZXZpb3VzKSA+Pj4gMCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsYW5lcztcbn1cblxuLyoqXG4gKiBEZXJpdmVzIGEga2luZCdzIHN0YXJ0aW5nIGJvZHk6IDgwIGJpdHMgb2YgYSAxMjgtYml0IGhhc2ggYXMgMTYgQ3JvY2tmb3JkXG4gKiBjaGFyYWN0ZXJzLCBtb3N0IHNpZ25pZmljYW50IGZpcnN0LlxuICpcbiAqIFRoZSBsZWFkaW5nIGNoYXJhY3RlciBpcyBjb25maW5lZCB0byB0aGUgYWxwaGFiZXQncyBsb3dlciBoYWxmIHNvIHRoZSBib2R5XG4gKiBzdGFydHMgYmVsb3cgaGFsZiBvZiB0aGUgODAtYml0IHNwYWNlLiBgaW5jcmVtZW50QmFzZTMyYCB0aHJvd3Mgb24gb3ZlcmZsb3csXG4gKiBhbmQgd2l0aG91dCB0aGlzIGEgYmFzZSB0aGF0IGhhcHBlbmVkIHRvIGxhbmQgbmVhciBgWuKAplpgIHdvdWxkIG1ha2Ugb3ZlcmZsb3dcbiAqIHJlYWNoYWJsZSBhZnRlciBmZXcgZHJhd3MgcmF0aGVyIHRoYW4gYWZ0ZXIgMl43OSBvZiB0aGVtLlxuICovXG5mdW5jdGlvbiBkZXJpdmVCb2R5KHNlZWQ6IHN0cmluZywga2luZDogQ29ycmVsYXRpb25JZEtpbmQpOiBzdHJpbmcge1xuICBjb25zdCBsYW5lcyA9IGhhc2gxMjgoYCR7c2VlZH0gY29ycmVsYXRpb24ta2luZCAke2tpbmR9YCk7XG4gIGNvbnN0IGJ5dGVzID0gW1xuICAgIChsYW5lc1swXSA+Pj4gMjQpICYgMHhmZixcbiAgICAobGFuZXNbMF0gPj4+IDE2KSAmIDB4ZmYsXG4gICAgKGxhbmVzWzBdID4+PiA4KSAmIDB4ZmYsXG4gICAgbGFuZXNbMF0gJiAweGZmLFxuICAgIChsYW5lc1sxXSA+Pj4gMjQpICYgMHhmZixcbiAgICAobGFuZXNbMV0gPj4+IDE2KSAmIDB4ZmYsXG4gICAgKGxhbmVzWzFdID4+PiA4KSAmIDB4ZmYsXG4gICAgbGFuZXNbMV0gJiAweGZmLFxuICAgIChsYW5lc1syXSA+Pj4gMjQpICYgMHhmZixcbiAgICAobGFuZXNbMl0gPj4+IDE2KSAmIDB4ZmYsXG4gIF07XG4gIGxldCBib2R5ID0gJyc7XG4gIGxldCBhY2N1bXVsYXRvciA9IDA7XG4gIGxldCBiaXRzID0gMDtcbiAgZm9yIChjb25zdCBieXRlIG9mIGJ5dGVzKSB7XG4gICAgYWNjdW11bGF0b3IgPSAoKGFjY3VtdWxhdG9yIDw8IDgpIHwgYnl0ZSkgPj4+IDA7XG4gICAgYml0cyArPSA4O1xuICAgIHdoaWxlIChiaXRzID49IDUpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gKGFjY3VtdWxhdG9yID4+PiAoYml0cyAtIDUpKSAmIDMxO1xuICAgICAgYm9keSArPSBDUk9DS0ZPUkRbYm9keS5sZW5ndGggPT09IDAgPyBpbmRleCAmIDE1IDogaW5kZXhdO1xuICAgICAgYml0cyAtPSA1O1xuICAgIH1cbiAgfVxuICByZXR1cm4gYm9keTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSByZXBsYXkncyBjb3JyZWxhdGlvbi1pZCBnZW5lcmF0b3IuXG4gKlxuICogYHBlcktpbmQ6IGZhbHNlYCByZXR1cm5zIHRoZSBydW4ncyBzaW5nbGUgc2hhcmVkIG1vbm90b25pYyBzZXF1ZW5jZSBhbmRcbiAqIGlnbm9yZXMgdGhlIGtpbmQgZW50aXJlbHksIHNvIGJvdGggc2NoZW1lcyBnbyB0aHJvdWdoIG9uZSBjYWxsIHBhdGggYW5kIHRoZVxuICogZmxhZyBpcyB0aGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvcnJlbGF0aW9uSWRHZW5lcmF0b3Iob3B0aW9uczoge1xuICAvKipcbiAgICogVGhlIHJ1bidzIHJlcGxheS1zdGFibGUgc2VlZC4gTXVzdCBub3QgdmFyeSBiZXR3ZWVuIHJlcGxheXMgb2Ygb25lIHJ1biwgYW5kXG4gICAqIG11c3QgZGlmZmVyIGJldHdlZW4gcnVucywgb3IgdHdvIHJ1bnMgd291bGQgbWludCBpZGVudGljYWwgaWRzLlxuICAgKi9cbiAgc2VlZDogc3RyaW5nO1xuICBmaXhlZFRpbWVzdGFtcDogbnVtYmVyO1xuICAvKiogVGhlIHJ1bidzIHNoYXJlZCBtb25vdG9uaWMgc2VxdWVuY2UsIHVzZWQgYXMtaXMgd2hlbiBgcGVyS2luZGAgaXMgZmFsc2UuICovXG4gIHBvc2l0aW9uYWw6ICgpID0+IHN0cmluZztcbiAgcGVyS2luZDogYm9vbGVhbjtcbn0pOiBDb3JyZWxhdGlvbklkR2VuZXJhdG9yIHtcbiAgY29uc3QgeyBzZWVkLCBmaXhlZFRpbWVzdGFtcCwgcG9zaXRpb25hbCwgcGVyS2luZCB9ID0gb3B0aW9ucztcblxuICBpZiAoIXBlcktpbmQpIHtcbiAgICByZXR1cm4gcG9zaXRpb25hbDtcbiAgfVxuXG4gIGNvbnN0IHRpbWUgPSBlbmNvZGVUaW1lKGZpeGVkVGltZXN0YW1wLCBUSU1FX0NIQVJTKTtcbiAgY29uc3QgYm9kaWVzID0gbmV3IE1hcDxDb3JyZWxhdGlvbklkS2luZCwgc3RyaW5nPigpO1xuXG4gIHJldHVybiAoa2luZDogQ29ycmVsYXRpb25JZEtpbmQpID0+IHtcbiAgICBjb25zdCBwcmV2aW91cyA9IGJvZGllcy5nZXQoa2luZCk7XG4gICAgY29uc3QgYm9keSA9XG4gICAgICBwcmV2aW91cyA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gZGVyaXZlQm9keShzZWVkLCBraW5kKVxuICAgICAgICA6IGluY3JlbWVudEJhc2UzMihwcmV2aW91cyk7XG4gICAgYm9kaWVzLnNldChraW5kLCBib2R5KTtcbiAgICByZXR1cm4gYCR7dGltZX0ke2JvZHl9YDtcbiAgfTtcbn1cblxuLyoqIExlbmd0aCBvZiBhIFVMSUQsIGV4cG9ydGVkIHNvIHRlc3RzIG5lZWQgbm90IHJlc3RhdGUgaXQuICovXG5leHBvcnQgY29uc3QgQ09SUkVMQVRJT05fSURfTEVOR1RIID0gVElNRV9DSEFSUyArIEJPRFlfQ0hBUlM7XG5cbi8qKlxuICogV2hldGhlciBlYWNoIGVudGl0eSBmYW1pbHkgZHJhd3MgY29ycmVsYXRpb24gaWRzIGZyb20gaXRzIG93biBzZXF1ZW5jZSByYXRoZXJcbiAqIHRoYW4gZnJvbSBvbmUgc2VxdWVuY2Ugc2hhcmVkIGJ5IHRoZSB3aG9sZSBydW4uIE9mZiB1bmxlc3Mgb3B0ZWQgaW4sIHNvIGFuIFNES1xuICogdXBncmFkZSBhbG9uZSBuZXZlciBtb3ZlcyBhIHJ1biBiZXR3ZWVuIHNjaGVtZXMuXG4gKlxuICogVGhlIGludmFyaWFudCBlaXRoZXIgd2F5OiBhIHJ1biBtdXN0IHJlcGxheSB1bmRlciB0aGUgc2NoZW1lIHRoYXQgbWludGVkIGl0c1xuICogaWRzLiBBIHJlcGxheSB1bmRlciB0aGUgb3RoZXIgc2NoZW1lIG1pbnRzIGlkcyBpdHMgb3duIGVhcmxpZXIgZXZlbnRzIGRvIG5vdFxuICogY2FycnksIHNvIGl0IGNhbiBjb25zdW1lIG5vbmUgb2YgdGhlbSBhbmQgZmFpbHMgdGhlIHJ1bi4gVHdvIHRoaW5ncyBjYW4gYnJlYWtcbiAqIGl0LCBhbmQgYm90aCBhcmUgYWJvdXQgdHVybmluZyB0aGUgZmxhZyBvbiByYXRoZXIgdGhhbiBhYm91dCB1cGdyYWRpbmc6XG4gKlxuICogLSBFbmFibGluZyBpdCB3aGlsZSBydW5zIGFyZSBpbiBmbGlnaHQuIE9uIFZlcmNlbCwgc2tldyBwcm90ZWN0aW9uIGtlZXBzIGEgcnVuXG4gKiAgIG9uIHRoZSBkZXBsb3ltZW50IHRoYXQgc3RhcnRlZCBpdCwgc28gYSBydW4gb25seSBldmVyIHNlZXMgdGhlIHZhbHVlIGJha2VkXG4gKiAgIGludG8gaXRzIG93biBkZXBsb3ltZW50LiBFbHNld2hlcmUgKHdvcmxkLXBvc3RncmVzLCB3b3JsZC1sb2NhbCwgYVxuICogICBzZWxmLWhvc3RlZCBwcm9jZXNzKSBub3RoaW5nIHBpbnMgYSBydW4gdG8gdGhlIGNvZGUgdGhhdCBzdGFydGVkIGl0LCBzb1xuICogICBlbmFibGUgaXQgZHVyaW5nIGEgcXVpZXQgd2luZG93LlxuICogLSBBIHJvbGxpbmcgZGVwbG95IHRoYXQgbGVhdmVzIGJvdGggdmFsdWVzIGxpdmUsIHdoaWNoIHB1dHMgdHdvIHNjaGVtZXMgb24gb25lXG4gKiAgIHJ1biBjb25jdXJyZW50bHkg4oCUIHRoZSBzaWRlLWJ5LXNpZGUgYXBwZW5kIHRoaXMgd2hvbGUgbWVjaGFuaXNtIGV4aXN0cyB0b1xuICogICBhdm9pZC4gUm9sbCB0aGUgdmFsdWUgb3V0IHRvIHRoZSB3aG9sZSBmbGVldCBhdCBvbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQZXJLaW5kQ29ycmVsYXRpb25JZHNFbmFibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuV09SS0ZMT1dfUEVSX0tJTkRfQ09SUkVMQVRJT05fSURTID09PSAnMSc7XG59XG4iXX0=
|
package/dist/create-hook.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
121
|
-
*
|
|
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
|
|
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"}
|
package/dist/create-hook.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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;
|
|
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"}
|
package/dist/define-hook.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { throwNotInWorkflowContext } from './context-errors.js';
|
|
1
2
|
import { resumeHook } from './runtime/resume-hook.js';
|
|
2
3
|
/**
|
|
3
4
|
* Defines a typed hook for type-safe hook creation and resumption.
|
|
@@ -31,10 +32,14 @@ import { resumeHook } from './runtime/resume-hook.js';
|
|
|
31
32
|
* ```
|
|
32
33
|
*/
|
|
33
34
|
export function defineHook({ schema, } = {}) {
|
|
35
|
+
function create(_options) {
|
|
36
|
+
// NOTE: `create` is referenced by name (not `this.create`) so the stack
|
|
37
|
+
// strip still works if the caller destructured the hook (`const { create }
|
|
38
|
+
// = defineHook(); create()`) — in that case `this` is undefined.
|
|
39
|
+
throwNotInWorkflowContext('defineHook().create()', 'https://workflow-sdk.dev/docs/api-reference/workflow/define-hook', create);
|
|
40
|
+
}
|
|
34
41
|
return {
|
|
35
|
-
create
|
|
36
|
-
throw new Error('`defineHook().create()` can only be called inside a workflow function.');
|
|
37
|
-
},
|
|
42
|
+
create,
|
|
38
43
|
async resume(token, payload) {
|
|
39
44
|
if (!schema?.['~standard']) {
|
|
40
45
|
return await resumeHook(token, payload);
|
|
@@ -45,10 +50,20 @@ export function defineHook({ schema, } = {}) {
|
|
|
45
50
|
}
|
|
46
51
|
// if the `issues` field exists, the validation failed
|
|
47
52
|
if (result.issues) {
|
|
48
|
-
|
|
53
|
+
const lines = result.issues.map((issue) => {
|
|
54
|
+
const path = issue.path
|
|
55
|
+
?.map((segment) => typeof segment === 'object' && segment !== null
|
|
56
|
+
? String(segment.key)
|
|
57
|
+
: String(segment))
|
|
58
|
+
.join('.');
|
|
59
|
+
return path
|
|
60
|
+
? ` at "${path}": ${issue.message}`
|
|
61
|
+
: ` ${issue.message}`;
|
|
62
|
+
});
|
|
63
|
+
throw new Error(`Hook payload did not match the defined schema:\n${lines.join('\n')}`);
|
|
49
64
|
}
|
|
50
65
|
return await resumeHook(token, result.value);
|
|
51
66
|
},
|
|
52
67
|
};
|
|
53
68
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lLWhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVmaW5lLWhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBbUN0RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBMkIsRUFDbkQsTUFBTSxNQUdKLEVBQUU7SUFDSixTQUFTLE1BQU0sQ0FBQyxRQUFzQjtRQUNwQyx3RUFBd0U7UUFDeEUsMkVBQTJFO1FBQzNFLGlFQUFpRTtRQUNqRSx5QkFBeUIsQ0FDdkIsdUJBQXVCLEVBQ3ZCLGtFQUFrRSxFQUNsRSxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTTtRQUNOLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBYSxFQUFFLE9BQWU7WUFDekMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLENBQUM7WUFFRCxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25ELElBQUksTUFBTSxZQUFZLE9BQU8sRUFBRSxDQUFDO2dCQUM5QixNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUM7WUFDeEIsQ0FBQztZQUVELHNEQUFzRDtZQUN0RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDeEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUk7d0JBQ3JCLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDaEIsT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxJQUFJO3dCQUM3QyxDQUFDLENBQUMsTUFBTSxDQUFFLE9BQWdDLENBQUMsR0FBRyxDQUFDO3dCQUMvQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUNwQjt5QkFDQSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2IsT0FBTyxJQUFJO3dCQUNULENBQUMsQ0FBQyxTQUFTLElBQUksTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFO3dCQUNwQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzNCLENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sSUFBSSxLQUFLLENBQ2IsbURBQW1ELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDdEUsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLE1BQU0sVUFBVSxDQUFVLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdGFuZGFyZFNjaGVtYVYxIH0gZnJvbSAnQHN0YW5kYXJkLXNjaGVtYS9zcGVjJztcbmltcG9ydCB0eXBlIHsgSG9vayBhcyBIb29rRW50aXR5IH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IHRocm93Tm90SW5Xb3JrZmxvd0NvbnRleHQgfSBmcm9tICcuL2NvbnRleHQtZXJyb3JzLmpzJztcbmltcG9ydCB0eXBlIHsgSG9vaywgSG9va09wdGlvbnMgfSBmcm9tICcuL2NyZWF0ZS1ob29rLmpzJztcbmltcG9ydCB7IHJlc3VtZUhvb2sgfSBmcm9tICcuL3J1bnRpbWUvcmVzdW1lLWhvb2suanMnO1xuXG4vKipcbiAqIEEgdHlwZWQgaG9vayBpbnRlcmZhY2UgZm9yIHR5cGUtc2FmZSBob29rIGNyZWF0aW9uIGFuZCByZXN1bXB0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVkSG9vazxUSW5wdXQsIFRPdXRwdXQ+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaG9vayB3aXRoIHRoZSBkZWZpbmVkIG91dHB1dCB0eXBlLlxuICAgKlxuICAgKiBOb3RlOiBUaGlzIG1ldGhvZCBpcyBub3QgYXZhaWxhYmxlIGluIHJ1bnRpbWUgYnVuZGxlcy4gVXNlIGl0IGZyb20gd29ya2Zsb3cgY29udGV4dHMgb25seS5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBob29rIGNvbmZpZ3VyYXRpb25cbiAgICogQHJldHVybnMgQSBIb29rIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGRlZmluZWQgb3V0cHV0IHR5cGVcbiAgICovXG4gIGNyZWF0ZShvcHRpb25zPzogSG9va09wdGlvbnMpOiBIb29rPFRPdXRwdXQ+O1xuICAvKipcbiAgICogUmVzdW1lcyBhIGhvb2sgYnkgc2VuZGluZyBhIHBheWxvYWQgd2l0aCB0aGUgZGVmaW5lZCBpbnB1dCB0eXBlLlxuICAgKiBUaGlzIGlzIGEgdHlwZS1zYWZlIHdyYXBwZXIgYXJvdW5kIHRoZSBgcmVzdW1lSG9va2AgcnVudGltZSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHRva2VuIC0gVGhlIHVuaXF1ZSB0b2tlbiBpZGVudGlmeWluZyB0aGUgaG9va1xuICAgKiBAcGFyYW0gcGF5bG9hZCAtIFRoZSBwYXlsb2FkIHRvIHNlbmQ7IGlmIGEgYHNjaGVtYWAgaXMgY29uZmlndXJlZCBpdCBpcyB2YWxpZGF0ZWQvdHJhbnNmb3JtZWQgYmVmb3JlIHJlc3VtaW5nXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBob29rIGVudGl0eVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBob29rIGlzIG5vdCBmb3VuZCBvciBpZiB0aGVyZSdzIGFuIGVycm9yIGR1cmluZyB0aGUgcHJvY2Vzc1xuICAgKi9cbiAgcmVzdW1lKHRva2VuOiBzdHJpbmcsIHBheWxvYWQ6IFRJbnB1dCk6IFByb21pc2U8SG9va0VudGl0eT47XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgVHlwZWRIb29rIHtcbiAgLyoqXG4gICAqIEV4dHJhY3RzIHRoZSBpbnB1dCB0eXBlIGZyb20gYSB7QGxpbmsgVHlwZWRIb29rfVxuICAgKi9cbiAgZXhwb3J0IHR5cGUgSW5wdXQ8VCBleHRlbmRzIFR5cGVkSG9vazxhbnksIGFueT4+ID1cbiAgICBUIGV4dGVuZHMgVHlwZWRIb29rPGluZmVyIEksIGFueT4gPyBJIDogbmV2ZXI7XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIHR5cGVkIGhvb2sgZm9yIHR5cGUtc2FmZSBob29rIGNyZWF0aW9uIGFuZCByZXN1bXB0aW9uLlxuICpcbiAqIFRoaXMgaGVscGVyIHByb3ZpZGVzIHR5cGUgc2FmZXR5IGJ5IGFsbG93aW5nIHlvdSB0byBkZWZpbmUgdGhlIGlucHV0IGFuZCBvdXRwdXQgdHlwZXNcbiAqIGZvciB0aGUgaG9vaydzIHBheWxvYWQsIHdpdGggb3B0aW9uYWwgdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb24gdmlhIGEgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBzY2hlbWEgLSBTY2hlbWEgdXNlZCB0byB2YWxpZGF0ZSBhbmQgdHJhbnNmb3JtIHRoZSBpbnB1dCBwYXlsb2FkIGJlZm9yZSByZXN1bWluZ1xuICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggYGNyZWF0ZWAgYW5kIGByZXN1bWVgIGZ1bmN0aW9ucyBwcmUtdHlwZWQgd2l0aCB0aGUgaW5wdXQgYW5kIG91dHB1dCB0eXBlc1xuICpcbiAqIEBleGFtcGxlXG4gKlxuICogYGBgdHNcbiAqIC8vIERlZmluZSBhIGhvb2sgd2l0aCBhIHNwZWNpZmljIHBheWxvYWQgdHlwZVxuICogY29uc3QgYXBwcm92YWxIb29rID0gZGVmaW5lSG9vazx7IGFwcHJvdmVkOiBib29sZWFuOyBjb21tZW50OiBzdHJpbmcgfT4oKTtcbiAqXG4gKiAvLyBJbiBhIHdvcmtmbG93XG4gKiBleHBvcnQgYXN5bmMgZnVuY3Rpb24gd29ya2Zsb3dXaXRoQXBwcm92YWwoKSB7XG4gKiAgIFwidXNlIHdvcmtmbG93XCI7XG4gKlxuICogICBjb25zdCBob29rID0gYXBwcm92YWxIb29rLmNyZWF0ZSgpO1xuICogICBjb25zdCByZXN1bHQgPSBhd2FpdCBob29rOyAvLyBGdWxseSB0eXBlZCBhcyB7IGFwcHJvdmVkOiBib29sZWFuOyBjb21tZW50OiBzdHJpbmc7IH1cbiAqIH1cbiAqXG4gKiAvLyBJbiBhbiBBUEkgcm91dGVcbiAqIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBQT1NUKHJlcXVlc3Q6IFJlcXVlc3QpIHtcbiAqICAgY29uc3QgeyB0b2tlbiwgYXBwcm92ZWQsIGNvbW1lbnQgfSA9IGF3YWl0IHJlcXVlc3QuanNvbigpO1xuICogICBhd2FpdCBhcHByb3ZhbEhvb2sucmVzdW1lKHRva2VuLCB7IGFwcHJvdmVkLCBjb21tZW50IH0pOyAvLyBJbnB1dCB0eXBlXG4gKiAgIHJldHVybiBSZXNwb25zZS5qc29uKHsgc3VjY2VzczogdHJ1ZSB9KTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lSG9vazxUSW5wdXQsIFRPdXRwdXQgPSBUSW5wdXQ+KHtcbiAgc2NoZW1hLFxufToge1xuICBzY2hlbWE/OiBTdGFuZGFyZFNjaGVtYVYxPFRJbnB1dCwgVE91dHB1dD47XG59ID0ge30pOiBUeXBlZEhvb2s8VElucHV0LCBUT3V0cHV0PiB7XG4gIGZ1bmN0aW9uIGNyZWF0ZShfb3B0aW9ucz86IEhvb2tPcHRpb25zKTogSG9vazxUT3V0cHV0PiB7XG4gICAgLy8gTk9URTogYGNyZWF0ZWAgaXMgcmVmZXJlbmNlZCBieSBuYW1lIChub3QgYHRoaXMuY3JlYXRlYCkgc28gdGhlIHN0YWNrXG4gICAgLy8gc3RyaXAgc3RpbGwgd29ya3MgaWYgdGhlIGNhbGxlciBkZXN0cnVjdHVyZWQgdGhlIGhvb2sgKGBjb25zdCB7IGNyZWF0ZSB9XG4gICAgLy8gPSBkZWZpbmVIb29rKCk7IGNyZWF0ZSgpYCkg4oCUIGluIHRoYXQgY2FzZSBgdGhpc2AgaXMgdW5kZWZpbmVkLlxuICAgIHRocm93Tm90SW5Xb3JrZmxvd0NvbnRleHQoXG4gICAgICAnZGVmaW5lSG9vaygpLmNyZWF0ZSgpJyxcbiAgICAgICdodHRwczovL3dvcmtmbG93LXNkay5kZXYvZG9jcy9hcGktcmVmZXJlbmNlL3dvcmtmbG93L2RlZmluZS1ob29rJyxcbiAgICAgIGNyZWF0ZVxuICAgICk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNyZWF0ZSxcbiAgICBhc3luYyByZXN1bWUodG9rZW46IHN0cmluZywgcGF5bG9hZDogVElucHV0KTogUHJvbWlzZTxIb29rRW50aXR5PiB7XG4gICAgICBpZiAoIXNjaGVtYT8uWyd+c3RhbmRhcmQnXSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgcmVzdW1lSG9vayh0b2tlbiwgcGF5bG9hZCk7XG4gICAgICB9XG5cbiAgICAgIGxldCByZXN1bHQgPSBzY2hlbWFbJ35zdGFuZGFyZCddLnZhbGlkYXRlKHBheWxvYWQpO1xuICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICAvLyBpZiB0aGUgYGlzc3Vlc2AgZmllbGQgZXhpc3RzLCB0aGUgdmFsaWRhdGlvbiBmYWlsZWRcbiAgICAgIGlmIChyZXN1bHQuaXNzdWVzKSB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gcmVzdWx0Lmlzc3Vlcy5tYXAoKGlzc3VlKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF0aCA9IGlzc3VlLnBhdGhcbiAgICAgICAgICAgID8ubWFwKChzZWdtZW50KSA9PlxuICAgICAgICAgICAgICB0eXBlb2Ygc2VnbWVudCA9PT0gJ29iamVjdCcgJiYgc2VnbWVudCAhPT0gbnVsbFxuICAgICAgICAgICAgICAgID8gU3RyaW5nKChzZWdtZW50IGFzIHsga2V5OiBQcm9wZXJ0eUtleSB9KS5rZXkpXG4gICAgICAgICAgICAgICAgOiBTdHJpbmcoc2VnbWVudClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKCcuJyk7XG4gICAgICAgICAgcmV0dXJuIHBhdGhcbiAgICAgICAgICAgID8gYCAgYXQgXCIke3BhdGh9XCI6ICR7aXNzdWUubWVzc2FnZX1gXG4gICAgICAgICAgICA6IGAgICR7aXNzdWUubWVzc2FnZX1gO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBIb29rIHBheWxvYWQgZGlkIG5vdCBtYXRjaCB0aGUgZGVmaW5lZCBzY2hlbWE6XFxuJHtsaW5lcy5qb2luKCdcXG4nKX1gXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhd2FpdCByZXN1bWVIb29rPFRPdXRwdXQ+KHRva2VuLCByZXN1bHQudmFsdWUpO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { type RunErrorCode } from '@workflow/errors';
|
|
2
|
+
/**
|
|
3
|
+
* Attribution of a workflow/step failure for presentation.
|
|
4
|
+
*
|
|
5
|
+
* - `user`: the error came from customer code (a step or workflow function
|
|
6
|
+
* threw, or a value they passed across a boundary wasn't serializable).
|
|
7
|
+
* - `sdk`: the SDK produced the error itself — an internal invariant broke,
|
|
8
|
+
* or a runtime guard rejected the call. These should be rare; when they
|
|
9
|
+
* happen we want to frame the terminal output as "this is us, not you."
|
|
10
|
+
*/
|
|
11
|
+
export type ErrorAttribution = 'user' | 'sdk';
|
|
12
|
+
export interface ErrorDescription {
|
|
13
|
+
attribution: ErrorAttribution;
|
|
14
|
+
errorCode: RunErrorCode;
|
|
15
|
+
/**
|
|
16
|
+
* Short, class-aware hint to help a user understand what the error means.
|
|
17
|
+
* Only set for well-known SDK error classes (SerializationError,
|
|
18
|
+
* WorkflowRuntimeError, context-violation errors); `undefined` for plain
|
|
19
|
+
* user errors, where the stack is already the most useful thing to show.
|
|
20
|
+
*/
|
|
21
|
+
hint?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Error signal fields carried on persisted failure events (e.g.
|
|
25
|
+
* `run_failed` / `step_failed`). The shape is intentionally loose:
|
|
26
|
+
*
|
|
27
|
+
* - `errorCode` is typed as `string` rather than `RunErrorCode` because
|
|
28
|
+
* the value comes from stored JSON/CBOR and may predate the current
|
|
29
|
+
* enum — callers should not narrow on it blindly. Values that don't
|
|
30
|
+
* match a known `RUN_ERROR_CODES` entry fall through to USER_ERROR.
|
|
31
|
+
* - `errorName` is the thrown `Error#name`. It is not universally
|
|
32
|
+
* persisted today; callers that have access to it (either via an
|
|
33
|
+
* in-memory throw or a richer payload) can pass it in to sharpen
|
|
34
|
+
* the attribution and hint. When absent, `describeRunError` still
|
|
35
|
+
* returns a sensible attribution from `errorCode` alone.
|
|
36
|
+
*/
|
|
37
|
+
export interface PersistedErrorSignal {
|
|
38
|
+
errorCode?: string;
|
|
39
|
+
errorName?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Data-driven variant of {@link describeError} that works from persisted
|
|
43
|
+
* event fields instead of a live `Error` instance. Intended for CLI/web
|
|
44
|
+
* renderers that read failure events and no longer have the original
|
|
45
|
+
* thrown object.
|
|
46
|
+
*/
|
|
47
|
+
export declare function describeRunError(signal: PersistedErrorSignal): ErrorDescription;
|
|
48
|
+
/**
|
|
49
|
+
* Describe an error for user-facing presentation. Purely informational —
|
|
50
|
+
* does not change any persisted event data or error classification used by
|
|
51
|
+
* the runtime.
|
|
52
|
+
*
|
|
53
|
+
* The attribution here is more nuanced than `classifyRunError`:
|
|
54
|
+
*
|
|
55
|
+
* - `SerializationError` is technically raised by the SDK, but it almost
|
|
56
|
+
* always points at something the caller did (passed a non-serializable
|
|
57
|
+
* value, didn't register a class). We attribute it to the user.
|
|
58
|
+
* - Context-violation errors (`NotInWorkflowContextError`, etc.) likewise
|
|
59
|
+
* describe a user mistake.
|
|
60
|
+
* - `WorkflowRuntimeError` (and subclasses like `StepNotRegisteredError`)
|
|
61
|
+
* indicates an internal SDK invariant broke — surface that as `sdk`.
|
|
62
|
+
*
|
|
63
|
+
* @param err The error value thrown by the workflow / step.
|
|
64
|
+
* @param errorCode Optional precomputed error code. Callers that already
|
|
65
|
+
* know the code (e.g. `REPLAY_TIMEOUT` or `MAX_DELIVERIES_EXCEEDED`, which
|
|
66
|
+
* `classifyRunError` can't derive from the error alone) should pass it so
|
|
67
|
+
* the attribution and hint reflect the actual failure category.
|
|
68
|
+
*/
|
|
69
|
+
export declare function describeError(err: unknown, errorCode?: RunErrorCode): ErrorDescription;
|
|
70
|
+
//# sourceMappingURL=describe-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describe-error.d.ts","sourceRoot":"","sources":["../src/describe-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAGlB,MAAM,kBAAkB,CAAC;AAS1B;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,EAAE,YAAY,CAAC;IACxB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+CD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,oBAAoB,GAC3B,gBAAgB,CAqDlB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,OAAO,EACZ,SAAS,CAAC,EAAE,YAAY,GACvB,gBAAgB,CAsFlB"}
|