@workflow/core 5.0.0-beta.5 → 5.0.0-beta.51
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/README.md +5 -0
- package/dist/attribute-changes.d.ts +5 -0
- package/dist/attribute-changes.d.ts.map +1 -0
- package/dist/attribute-changes.js +25 -0
- package/dist/capabilities.d.ts +35 -2
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +74 -5
- package/dist/capture-stack.d.ts +1 -1
- package/dist/capture-stack.js +2 -2
- 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 +19 -3
- package/dist/classify-error.d.ts.map +1 -1
- package/dist/classify-error.js +98 -6
- package/dist/context-violation-error.d.ts +5 -5
- package/dist/context-violation-error.d.ts.map +1 -1
- package/dist/context-violation-error.js +8 -6
- package/dist/create-hook.d.ts +72 -7
- package/dist/create-hook.d.ts.map +1 -1
- package/dist/create-hook.js +1 -1
- package/dist/define-hook.js +2 -2
- package/dist/describe-error.d.ts +7 -7
- package/dist/describe-error.d.ts.map +1 -1
- package/dist/describe-error.js +97 -12
- package/dist/encryption.d.ts +38 -4
- package/dist/encryption.d.ts.map +1 -1
- package/dist/encryption.js +96 -14
- package/dist/events-consumer.d.ts +297 -0
- package/dist/events-consumer.d.ts.map +1 -1
- package/dist/events-consumer.js +673 -42
- package/dist/flushable-stream.d.ts +97 -1
- package/dist/flushable-stream.d.ts.map +1 -1
- package/dist/flushable-stream.js +291 -11
- package/dist/global.d.ts +36 -2
- package/dist/global.d.ts.map +1 -1
- package/dist/global.js +21 -6
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/log-format.d.ts +2 -2
- package/dist/log-format.js +19 -12
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +10 -6
- package/dist/private.d.ts +226 -9
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +626 -7
- package/dist/replay-divergence.d.ts +25 -0
- package/dist/replay-divergence.d.ts.map +1 -0
- package/dist/replay-divergence.js +61 -0
- package/dist/replay-payload-cache.d.ts +64 -0
- package/dist/replay-payload-cache.d.ts.map +1 -0
- package/dist/replay-payload-cache.js +158 -0
- package/dist/runtime/compute-instance.d.ts +13 -0
- package/dist/runtime/compute-instance.d.ts.map +1 -0
- package/dist/runtime/compute-instance.js +14 -0
- package/dist/runtime/constants.d.ts +315 -0
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +502 -16
- 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 +15 -0
- package/dist/runtime/get-port-lazy.d.ts.map +1 -1
- package/dist/runtime/get-port-lazy.js +75 -6
- package/dist/runtime/get-world-lazy.d.ts +5 -14
- package/dist/runtime/get-world-lazy.d.ts.map +1 -1
- package/dist/runtime/get-world-lazy.js +19 -29
- package/dist/runtime/helpers.d.ts +415 -29
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +686 -57
- 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 +158 -0
- package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -0
- package/dist/runtime/quickjs-entrypoint.js +1863 -0
- package/dist/runtime/quickjs-log-view.d.ts +129 -0
- package/dist/runtime/quickjs-log-view.d.ts.map +1 -0
- package/dist/runtime/quickjs-log-view.js +229 -0
- package/dist/runtime/quickjs-runtime.d.ts +244 -0
- package/dist/runtime/quickjs-runtime.d.ts.map +1 -0
- package/dist/runtime/quickjs-runtime.js +2427 -0
- package/dist/runtime/quickjs-serde.d.ts +107 -0
- package/dist/runtime/quickjs-serde.d.ts.map +1 -0
- package/dist/runtime/quickjs-serde.js +2159 -0
- package/dist/runtime/replay-budget.d.ts +97 -0
- package/dist/runtime/replay-budget.d.ts.map +1 -0
- package/dist/runtime/replay-budget.js +139 -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 +91 -8
- package/dist/runtime/resume-hook.d.ts.map +1 -1
- package/dist/runtime/resume-hook.js +512 -89
- package/dist/runtime/resume-latency.d.ts +150 -0
- package/dist/runtime/resume-latency.d.ts.map +1 -0
- package/dist/runtime/resume-latency.js +155 -0
- 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 +72 -7
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +280 -53
- package/dist/runtime/runs.d.ts +54 -3
- package/dist/runtime/runs.d.ts.map +1 -1
- package/dist/runtime/runs.js +126 -16
- package/dist/runtime/start.d.ts +101 -2
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js +352 -61
- package/dist/runtime/step-executor.d.ts +186 -5
- package/dist/runtime/step-executor.d.ts.map +1 -1
- package/dist/runtime/step-executor.js +768 -130
- package/dist/runtime/step-latency.d.ts +220 -0
- package/dist/runtime/step-latency.d.ts.map +1 -0
- package/dist/runtime/step-latency.js +215 -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 +75 -0
- package/dist/runtime/suspension-handler.d.ts +247 -7
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +1304 -125
- package/dist/runtime/unserializable-step.d.ts +34 -0
- package/dist/runtime/unserializable-step.d.ts.map +1 -0
- package/dist/runtime/unserializable-step.js +52 -0
- 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 +106 -0
- package/dist/runtime/wait-continuation.d.ts.map +1 -0
- package/dist/runtime/wait-continuation.js +136 -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 +32 -0
- package/dist/runtime/world-compatibility.d.ts.map +1 -0
- package/dist/runtime/world-compatibility.js +44 -0
- package/dist/runtime/world-init.d.ts +17 -42
- package/dist/runtime/world-init.d.ts.map +1 -1
- package/dist/runtime/world-init.js +18 -43
- package/dist/runtime/world.d.ts +14 -2
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +75 -19
- package/dist/runtime.d.ts +10 -6
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +3911 -489
- 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 +3 -3
- package/dist/serialization/client.d.ts.map +1 -1
- package/dist/serialization/client.js +8 -4
- package/dist/serialization/codec-devalue-vm.d.ts +16 -0
- package/dist/serialization/codec-devalue-vm.d.ts.map +1 -0
- package/dist/serialization/codec-devalue-vm.js +148 -0
- package/dist/serialization/codec-devalue.d.ts +1 -1
- package/dist/serialization/codec-devalue.d.ts.map +1 -1
- package/dist/serialization/codec-devalue.js +24 -6
- package/dist/serialization/codec.d.ts +37 -2
- package/dist/serialization/codec.d.ts.map +1 -1
- package/dist/serialization/codec.js +2 -2
- package/dist/serialization/compression.d.ts +105 -0
- package/dist/serialization/compression.d.ts.map +1 -0
- package/dist/serialization/compression.js +261 -0
- package/dist/serialization/encryption.d.ts +119 -17
- package/dist/serialization/encryption.d.ts.map +1 -1
- package/dist/serialization/encryption.js +152 -17
- package/dist/serialization/errors.d.ts +13 -0
- package/dist/serialization/errors.d.ts.map +1 -1
- package/dist/serialization/errors.js +20 -2
- package/dist/serialization/format.d.ts +6 -6
- package/dist/serialization/format.js +7 -7
- package/dist/serialization/hardened.d.ts +156 -0
- package/dist/serialization/hardened.d.ts.map +1 -0
- package/dist/serialization/hardened.js +538 -0
- package/dist/serialization/index.d.ts +10 -8
- package/dist/serialization/index.d.ts.map +1 -1
- package/dist/serialization/index.js +10 -8
- 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.map +1 -1
- package/dist/serialization/reducers/class.js +11 -6
- 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 +616 -0
- package/dist/serialization/reducers/common.d.ts +1 -1
- package/dist/serialization/reducers/common.d.ts.map +1 -1
- package/dist/serialization/reducers/common.js +202 -62
- 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.map +1 -1
- package/dist/serialization/reducers/step-function.js +25 -9
- package/dist/serialization/step.d.ts +4 -4
- package/dist/serialization/step.d.ts.map +1 -1
- package/dist/serialization/step.js +9 -5
- package/dist/serialization/types.d.ts +80 -1
- package/dist/serialization/types.d.ts.map +1 -1
- package/dist/serialization/types.js +15 -1
- package/dist/serialization/workflow-vm.d.ts +29 -0
- package/dist/serialization/workflow-vm.d.ts.map +1 -0
- package/dist/serialization/workflow-vm.js +74 -0
- package/dist/serialization-format.d.ts +64 -8
- package/dist/serialization-format.d.ts.map +1 -1
- package/dist/serialization-format.js +225 -73
- package/dist/serialization.d.ts +262 -34
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +1885 -277
- 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/source-map.d.ts +25 -0
- package/dist/source-map.d.ts.map +1 -1
- package/dist/source-map.js +154 -10
- package/dist/step/context-storage.d.ts +63 -2
- package/dist/step/context-storage.d.ts.map +1 -1
- package/dist/step/context-storage.js +7 -5
- package/dist/step/writable-stream.d.ts +3 -3
- package/dist/step/writable-stream.d.ts.map +1 -1
- package/dist/step/writable-stream.js +80 -13
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +148 -27
- package/dist/symbols.d.ts +50 -0
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +51 -1
- package/dist/telemetry/semantic-conventions.d.ts +433 -2
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +319 -3
- package/dist/telemetry.d.ts +91 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +244 -17
- package/dist/test-support/orchestrator-context.d.ts +25 -0
- package/dist/test-support/orchestrator-context.d.ts.map +1 -0
- package/dist/test-support/orchestrator-context.js +107 -0
- 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 +0 -5
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +1 -15
- 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 +84 -14
- package/dist/vm/script-cache.d.ts +26 -0
- package/dist/vm/script-cache.d.ts.map +1 -0
- package/dist/vm/script-cache.js +131 -0
- package/dist/vm/uint8array-base64.js +1 -1
- package/dist/workflow/abort-controller.d.ts +2 -2
- package/dist/workflow/abort-controller.d.ts.map +1 -1
- package/dist/workflow/abort-controller.js +88 -21
- 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 +45 -0
- package/dist/workflow/create-hook.d.ts.map +1 -1
- package/dist/workflow/create-hook.js +24 -3
- package/dist/workflow/get-workflow-metadata.js +2 -2
- package/dist/workflow/hook.d.ts.map +1 -1
- package/dist/workflow/hook.js +304 -47
- package/dist/workflow/index.d.ts +1 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +2 -1
- 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 -12
- package/dist/workflow/world-init-stub.d.ts +3 -3
- package/dist/workflow/world-init-stub.js +4 -4
- package/dist/workflow.d.ts +95 -3
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +900 -561
- package/docs/api-reference/create-hook.mdx +89 -10
- package/docs/api-reference/create-webhook.mdx +16 -15
- package/docs/api-reference/define-hook.mdx +35 -33
- package/docs/api-reference/fatal-error.mdx +30 -8
- package/docs/api-reference/fetch.mdx +14 -10
- package/docs/api-reference/get-step-metadata.mdx +2 -2
- package/docs/api-reference/get-workflow-metadata.mdx +3 -3
- package/docs/api-reference/get-writable.mdx +7 -7
- package/docs/api-reference/index.mdx +4 -1
- package/docs/api-reference/retryable-error.mdx +1 -1
- package/docs/api-reference/set-attributes.mdx +61 -0
- package/docs/api-reference/sleep.mdx +4 -4
- package/docs/foundations/cancellation.mdx +31 -32
- package/docs/foundations/errors-and-retries.mdx +42 -11
- package/docs/foundations/hooks.mdx +64 -35
- package/docs/foundations/idempotency.mdx +244 -12
- package/docs/foundations/index.mdx +1 -23
- package/docs/foundations/meta.json +2 -1
- package/docs/foundations/serialization.mdx +21 -22
- package/docs/foundations/starting-workflows.mdx +106 -30
- package/docs/foundations/streaming.mdx +108 -60
- package/docs/foundations/versioning.mdx +263 -0
- package/docs/foundations/workflows-and-steps.mdx +9 -9
- package/docs/how-it-works/cancellation.mdx +63 -63
- package/docs/how-it-works/code-transform.mdx +83 -67
- package/docs/how-it-works/encryption.mdx +30 -26
- package/docs/how-it-works/event-sourcing.mdx +125 -34
- package/docs/how-it-works/framework-integrations.mdx +96 -337
- package/docs/how-it-works/understanding-directives.mdx +22 -22
- package/package.json +24 -15
- 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 -776
package/README.md
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
# @workflow/core
|
|
2
2
|
|
|
3
3
|
Core runtime package for [Workflow SDK](https://workflow-sdk.dev).
|
|
4
|
+
|
|
5
|
+
Queued step messages carry immutable run identity in `runContext`, so step
|
|
6
|
+
execution skips the initial `runs.get` and fetches the run row only when
|
|
7
|
+
continuing into workflow replay. Messages from older producers without
|
|
8
|
+
`runContext` retain the initial fetch.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type AttributeChange } from '@workflow/world/attributes-validation';
|
|
2
|
+
export declare function normalizeAttributeChanges(attrs: Record<string, string | undefined>, options?: {
|
|
3
|
+
allowReservedAttributes?: boolean;
|
|
4
|
+
}): AttributeChange[];
|
|
5
|
+
//# sourceMappingURL=attribute-changes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute-changes.d.ts","sourceRoot":"","sources":["../src/attribute-changes.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,uCAAuC,CAAC;AAE/C,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACzC,OAAO,GAAE;IAAE,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAO,GAClD,eAAe,EAAE,CA4BnB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FatalError } from '@workflow/errors';
|
|
2
|
+
import { AttributeValidationError, validateAttributeChanges, } from '@workflow/world/attributes-validation';
|
|
3
|
+
export function normalizeAttributeChanges(attrs, options = {}) {
|
|
4
|
+
if (attrs === null || typeof attrs !== 'object' || Array.isArray(attrs)) {
|
|
5
|
+
throw new FatalError(`setAttributes requires a plain object, got ${attrs === null ? 'null' : Array.isArray(attrs) ? 'array' : typeof attrs}`);
|
|
6
|
+
}
|
|
7
|
+
const changes = Object.entries(attrs).map(([key, value]) => ({
|
|
8
|
+
key,
|
|
9
|
+
value: value === undefined ? null : value,
|
|
10
|
+
}));
|
|
11
|
+
if (changes.length === 0)
|
|
12
|
+
return changes;
|
|
13
|
+
const allowReservedAttributes = options.allowReservedAttributes === true;
|
|
14
|
+
try {
|
|
15
|
+
validateAttributeChanges(changes, { allowReservedAttributes });
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
if (err instanceof AttributeValidationError) {
|
|
19
|
+
throw new FatalError(err.message);
|
|
20
|
+
}
|
|
21
|
+
throw err;
|
|
22
|
+
}
|
|
23
|
+
return changes;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWNoYW5nZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXR0cmlidXRlLWNoYW5nZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsd0JBQXdCLEdBQ3pCLE1BQU0sdUNBQXVDLENBQUM7QUFFL0MsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxLQUF5QyxFQUN6QyxVQUFpRCxFQUFFO0lBRW5ELElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hFLE1BQU0sSUFBSSxVQUFVLENBQ2xCLDhDQUNFLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQ3BFLEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFzQixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FDMUQsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixHQUFHO1FBQ0gsS0FBSyxFQUFFLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSztLQUMxQyxDQUFDLENBQ0gsQ0FBQztJQUNGLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxPQUFPLENBQUM7SUFFekMsTUFBTSx1QkFBdUIsR0FBRyxPQUFPLENBQUMsdUJBQXVCLEtBQUssSUFBSSxDQUFDO0lBQ3pFLElBQUksQ0FBQztRQUNILHdCQUF3QixDQUFDLE9BQU8sRUFBRSxFQUFFLHVCQUF1QixFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksR0FBRyxZQUFZLHdCQUF3QixFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELE1BQU0sR0FBRyxDQUFDO0lBQ1osQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYXRhbEVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQge1xuICB0eXBlIEF0dHJpYnV0ZUNoYW5nZSxcbiAgQXR0cmlidXRlVmFsaWRhdGlvbkVycm9yLFxuICB2YWxpZGF0ZUF0dHJpYnV0ZUNoYW5nZXMsXG59IGZyb20gJ0B3b3JrZmxvdy93b3JsZC9hdHRyaWJ1dGVzLXZhbGlkYXRpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQXR0cmlidXRlQ2hhbmdlcyhcbiAgYXR0cnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4sXG4gIG9wdGlvbnM6IHsgYWxsb3dSZXNlcnZlZEF0dHJpYnV0ZXM/OiBib29sZWFuIH0gPSB7fVxuKTogQXR0cmlidXRlQ2hhbmdlW10ge1xuICBpZiAoYXR0cnMgPT09IG51bGwgfHwgdHlwZW9mIGF0dHJzICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGF0dHJzKSkge1xuICAgIHRocm93IG5ldyBGYXRhbEVycm9yKFxuICAgICAgYHNldEF0dHJpYnV0ZXMgcmVxdWlyZXMgYSBwbGFpbiBvYmplY3QsIGdvdCAke1xuICAgICAgICBhdHRycyA9PT0gbnVsbCA/ICdudWxsJyA6IEFycmF5LmlzQXJyYXkoYXR0cnMpID8gJ2FycmF5JyA6IHR5cGVvZiBhdHRyc1xuICAgICAgfWBcbiAgICApO1xuICB9XG5cbiAgY29uc3QgY2hhbmdlczogQXR0cmlidXRlQ2hhbmdlW10gPSBPYmplY3QuZW50cmllcyhhdHRycykubWFwKFxuICAgIChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICBrZXksXG4gICAgICB2YWx1ZTogdmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB2YWx1ZSxcbiAgICB9KVxuICApO1xuICBpZiAoY2hhbmdlcy5sZW5ndGggPT09IDApIHJldHVybiBjaGFuZ2VzO1xuXG4gIGNvbnN0IGFsbG93UmVzZXJ2ZWRBdHRyaWJ1dGVzID0gb3B0aW9ucy5hbGxvd1Jlc2VydmVkQXR0cmlidXRlcyA9PT0gdHJ1ZTtcbiAgdHJ5IHtcbiAgICB2YWxpZGF0ZUF0dHJpYnV0ZUNoYW5nZXMoY2hhbmdlcywgeyBhbGxvd1Jlc2VydmVkQXR0cmlidXRlcyB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEF0dHJpYnV0ZVZhbGlkYXRpb25FcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEZhdGFsRXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgIH1cbiAgICB0aHJvdyBlcnI7XG4gIH1cblxuICByZXR1cm4gY2hhbmdlcztcbn1cbiJdfQ==
|
package/dist/capabilities.d.ts
CHANGED
|
@@ -15,11 +15,34 @@
|
|
|
15
15
|
* `@workflow/core` version that supports it
|
|
16
16
|
* 3. The `getRunCapabilities()` function will automatically include it
|
|
17
17
|
*
|
|
18
|
+
* ## Adding a new non-format capability
|
|
19
|
+
*
|
|
20
|
+
* Some capabilities aren't serialization format prefixes: e.g.
|
|
21
|
+
* byte-stream wire framing is an envelope around chunks rather than
|
|
22
|
+
* a content format. For those, add a boolean field to `RunCapabilities`
|
|
23
|
+
* and an entry in `CAPABILITY_VERSION_TABLE` below.
|
|
24
|
+
*
|
|
18
25
|
* ## History
|
|
19
26
|
*
|
|
20
27
|
* - `encr` (AES-256-GCM encryption): added in `4.2.0-beta.64`
|
|
21
28
|
* Commit: 7618ac36 "Wire AES-GCM encryption into serialization layer (#1251)"
|
|
22
29
|
* https://github.com/vercel/workflow/commit/7618ac36
|
|
30
|
+
* - `framedByteStreams` (wire-level chunk framing for byte streams): added in `5.0.0-beta.15`
|
|
31
|
+
* - `gzip` (gzip payload compression): added in `5.0.0-beta.18`
|
|
32
|
+
* - `zstd` (zstd payload compression, preferred codec): added in `5.0.0-beta.18`
|
|
33
|
+
* alongside gzip; they co-ship, so any run that can read one can read both.
|
|
34
|
+
* - `encp` (X25519 sealed-box encryption for cross-run writes): added in
|
|
35
|
+
* `5.0.0-beta.37`. Note that producers do **not** gate `encp` on this table:
|
|
36
|
+
* they gate on the presence of `encryptionPublicKey` on the target run,
|
|
37
|
+
* which a run only carries if the deployment that created it could also
|
|
38
|
+
* open `encp`. The entry exists so the capability set stays a complete,
|
|
39
|
+
* auditable description of a run's decoding ability.
|
|
40
|
+
* - Hook-resume consumer protocol ("consumer re-ensures `hook_received` from
|
|
41
|
+
* `hookInput`"): deliberately NOT tracked here. Rather than predict a
|
|
42
|
+
* release cutoff, the run's creating deployment stamps an explicit
|
|
43
|
+
* `hookResumeInputVersion` execution-context marker (mirrored onto the
|
|
44
|
+
* hook's resumeContext by the server); older producers gate their lazy path
|
|
45
|
+
* on that marker.
|
|
23
46
|
*/
|
|
24
47
|
import { type SerializationFormatType } from './serialization.js';
|
|
25
48
|
/**
|
|
@@ -32,14 +55,24 @@ export interface RunCapabilities {
|
|
|
32
55
|
* if encryption is supported, etc.
|
|
33
56
|
*/
|
|
34
57
|
supportedFormats: ReadonlySet<SerializationFormatType>;
|
|
58
|
+
/**
|
|
59
|
+
* Whether the target run can decode wire-framed byte streams. When true,
|
|
60
|
+
* byte streams (`type: 'bytes'` ReadableStreams passed across boundaries)
|
|
61
|
+
* are wrapped in a length-prefixed frame envelope on the wire so the
|
|
62
|
+
* reader can identify chunk boundaries, which enables auto-reconnect
|
|
63
|
+
* on transient stream errors. When false, byte streams are written as
|
|
64
|
+
* raw bytes (the legacy format) for compatibility with older runs.
|
|
65
|
+
*/
|
|
66
|
+
framedByteStreams: boolean;
|
|
35
67
|
}
|
|
36
68
|
/**
|
|
37
69
|
* Look up what serialization capabilities a workflow run supports based on
|
|
38
70
|
* its `@workflow/core` version string (from `executionContext.workflowCoreVersion`).
|
|
39
71
|
*
|
|
40
72
|
* When the version is `undefined`, not a string, or not a valid semver string
|
|
41
|
-
* (e.g.
|
|
42
|
-
* we assume the most conservative capabilities (baseline formats only
|
|
73
|
+
* (e.g. older runs that predate the field, or corrupted metadata),
|
|
74
|
+
* we assume the most conservative capabilities (baseline formats only,
|
|
75
|
+
* non-format capabilities all `false`).
|
|
43
76
|
*/
|
|
44
77
|
export declare function getRunCapabilities(workflowCoreVersion: string | undefined): RunCapabilities;
|
|
45
78
|
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAGH,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,gBAAgB,EAAE,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAEvD;;;;;;;OAOG;IACH,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AA+DD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,mBAAmB,EAAE,MAAM,GAAG,SAAS,GACtC,eAAe,CA4BjB"}
|
package/dist/capabilities.js
CHANGED
|
@@ -15,11 +15,34 @@
|
|
|
15
15
|
* `@workflow/core` version that supports it
|
|
16
16
|
* 3. The `getRunCapabilities()` function will automatically include it
|
|
17
17
|
*
|
|
18
|
+
* ## Adding a new non-format capability
|
|
19
|
+
*
|
|
20
|
+
* Some capabilities aren't serialization format prefixes: e.g.
|
|
21
|
+
* byte-stream wire framing is an envelope around chunks rather than
|
|
22
|
+
* a content format. For those, add a boolean field to `RunCapabilities`
|
|
23
|
+
* and an entry in `CAPABILITY_VERSION_TABLE` below.
|
|
24
|
+
*
|
|
18
25
|
* ## History
|
|
19
26
|
*
|
|
20
27
|
* - `encr` (AES-256-GCM encryption): added in `4.2.0-beta.64`
|
|
21
28
|
* Commit: 7618ac36 "Wire AES-GCM encryption into serialization layer (#1251)"
|
|
22
29
|
* https://github.com/vercel/workflow/commit/7618ac36
|
|
30
|
+
* - `framedByteStreams` (wire-level chunk framing for byte streams): added in `5.0.0-beta.15`
|
|
31
|
+
* - `gzip` (gzip payload compression): added in `5.0.0-beta.18`
|
|
32
|
+
* - `zstd` (zstd payload compression, preferred codec): added in `5.0.0-beta.18`
|
|
33
|
+
* alongside gzip; they co-ship, so any run that can read one can read both.
|
|
34
|
+
* - `encp` (X25519 sealed-box encryption for cross-run writes): added in
|
|
35
|
+
* `5.0.0-beta.37`. Note that producers do **not** gate `encp` on this table:
|
|
36
|
+
* they gate on the presence of `encryptionPublicKey` on the target run,
|
|
37
|
+
* which a run only carries if the deployment that created it could also
|
|
38
|
+
* open `encp`. The entry exists so the capability set stays a complete,
|
|
39
|
+
* auditable description of a run's decoding ability.
|
|
40
|
+
* - Hook-resume consumer protocol ("consumer re-ensures `hook_received` from
|
|
41
|
+
* `hookInput`"): deliberately NOT tracked here. Rather than predict a
|
|
42
|
+
* release cutoff, the run's creating deployment stamps an explicit
|
|
43
|
+
* `hookResumeInputVersion` execution-context marker (mirrored onto the
|
|
44
|
+
* hook's resumeContext by the server); older producers gate their lazy path
|
|
45
|
+
* on that marker.
|
|
23
46
|
*/
|
|
24
47
|
import semver from 'semver';
|
|
25
48
|
import { SerializationFormat, } from './serialization.js';
|
|
@@ -30,10 +53,43 @@ import { SerializationFormat, } from './serialization.js';
|
|
|
30
53
|
*/
|
|
31
54
|
const FORMAT_VERSION_TABLE = [
|
|
32
55
|
{ format: SerializationFormat.ENCRYPTED, minVersion: '4.2.0-beta.64' },
|
|
56
|
+
// TODO(release): verify this matches the actual version that ships payload
|
|
57
|
+
// compression. If a "Version Packages (beta)" PR merges before this change,
|
|
58
|
+
// bump to the next beta. A too-low cutoff makes new producers write
|
|
59
|
+
// compressed payloads to consumers that cannot decompress them; too-high
|
|
60
|
+
// merely delays the optimization (safe). gzip and zstd ship together, so
|
|
61
|
+
// they share a min version: a run that can read one can read both.
|
|
62
|
+
{ format: SerializationFormat.GZIP, minVersion: '5.0.0-beta.18' },
|
|
63
|
+
{ format: SerializationFormat.ZSTD, minVersion: '5.0.0-beta.18' },
|
|
64
|
+
// TODO(release): verify this matches the actual version that ships sealed-box
|
|
65
|
+
// encryption. If a "Version Packages (beta)" PR merges before this change,
|
|
66
|
+
// bump to the next beta. Unlike the entries above, a wrong cutoff here is
|
|
67
|
+
// not a correctness hazard: producers gate `encp` on the target run carrying
|
|
68
|
+
// an `encryptionPublicKey`, not on this table (see History above).
|
|
69
|
+
{ format: SerializationFormat.SEALED, minVersion: '5.0.0-beta.37' },
|
|
33
70
|
// Future entries:
|
|
34
71
|
// { format: SerializationFormat.CBOR, minVersion: '5.x.y' },
|
|
35
72
|
// { format: SerializationFormat.ENCRYPTED_V2, minVersion: '5.x.y' },
|
|
36
73
|
];
|
|
74
|
+
/**
|
|
75
|
+
* Maps non-format capability flags (booleans on `RunCapabilities`) to the
|
|
76
|
+
* minimum `@workflow/core` version that introduced support for them.
|
|
77
|
+
*/
|
|
78
|
+
const CAPABILITY_VERSION_TABLE = [
|
|
79
|
+
// TODO(release): verify this matches the actual version that ships byte-stream
|
|
80
|
+
// framing. If a "Version Packages (beta)" PR merges before this change, bump
|
|
81
|
+
// to the next beta. A too-low cutoff makes new producers write framed bytes to
|
|
82
|
+
// consumers that cannot unframe them (silent corruption); too-high merely
|
|
83
|
+
// delays the optimization (safe).
|
|
84
|
+
{ capability: 'framedByteStreams', minVersion: '5.0.0-beta.15' },
|
|
85
|
+
// NOTE: the hook-resume consumer protocol ("does the consumer re-ensure
|
|
86
|
+
// `hook_received` from the queue message's `hookInput`?") is intentionally
|
|
87
|
+
// NOT gated here. A version-compare against a predicted release cutoff is a
|
|
88
|
+
// guess; instead the run's creating deployment stamps an explicit
|
|
89
|
+
// `hookResumeInputVersion` marker into its execution context, which the
|
|
90
|
+
// server mirrors onto the hook's resumeContext. Older producers gate their
|
|
91
|
+
// lazy path on that marker.
|
|
92
|
+
];
|
|
37
93
|
/**
|
|
38
94
|
* The set of formats supported by all specVersion 2 runs, regardless of
|
|
39
95
|
* `@workflow/core` version. These are the baseline formats that were present
|
|
@@ -47,12 +103,16 @@ const BASELINE_FORMATS = new Set([
|
|
|
47
103
|
* its `@workflow/core` version string (from `executionContext.workflowCoreVersion`).
|
|
48
104
|
*
|
|
49
105
|
* When the version is `undefined`, not a string, or not a valid semver string
|
|
50
|
-
* (e.g.
|
|
51
|
-
* we assume the most conservative capabilities (baseline formats only
|
|
106
|
+
* (e.g. older runs that predate the field, or corrupted metadata),
|
|
107
|
+
* we assume the most conservative capabilities (baseline formats only,
|
|
108
|
+
* non-format capabilities all `false`).
|
|
52
109
|
*/
|
|
53
110
|
export function getRunCapabilities(workflowCoreVersion) {
|
|
54
111
|
if (!workflowCoreVersion || !semver.valid(workflowCoreVersion)) {
|
|
55
|
-
return {
|
|
112
|
+
return {
|
|
113
|
+
supportedFormats: BASELINE_FORMATS,
|
|
114
|
+
framedByteStreams: false,
|
|
115
|
+
};
|
|
56
116
|
}
|
|
57
117
|
const formats = new Set(BASELINE_FORMATS);
|
|
58
118
|
for (const { format, minVersion } of FORMAT_VERSION_TABLE) {
|
|
@@ -60,6 +120,15 @@ export function getRunCapabilities(workflowCoreVersion) {
|
|
|
60
120
|
formats.add(format);
|
|
61
121
|
}
|
|
62
122
|
}
|
|
63
|
-
|
|
123
|
+
const result = {
|
|
124
|
+
supportedFormats: formats,
|
|
125
|
+
framedByteStreams: false,
|
|
126
|
+
};
|
|
127
|
+
for (const { capability, minVersion } of CAPABILITY_VERSION_TABLE) {
|
|
128
|
+
if (semver.gte(workflowCoreVersion, minVersion)) {
|
|
129
|
+
result[capability] = true;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return result;
|
|
64
133
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwYWJpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NhcGFiaWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQ0wsbUJBQW1CLEdBRXBCLE1BQU0sb0JBQW9CLENBQUM7QUFjNUI7Ozs7R0FJRztBQUNILE1BQU0sb0JBQW9CLEdBR3JCO0lBQ0gsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUU7SUFDdEUsa0JBQWtCO0lBQ2xCLDZEQUE2RDtJQUM3RCxxRUFBcUU7Q0FDdEUsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLGdCQUFnQixHQUF5QyxJQUFJLEdBQUcsQ0FBQztJQUNyRSxtQkFBbUIsQ0FBQyxVQUFVO0NBQy9CLENBQUMsQ0FBQztBQUVIOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLG1CQUF1QztJQUV2QyxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztRQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQTBCLGdCQUFnQixDQUFDLENBQUM7SUFFbkUsS0FBSyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDMUQsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDYXBhYmlsaXRpZXMgdGFibGUgZm9yIHdvcmtmbG93IHJ1bnMgYmFzZWQgb24gdGhlaXIgYEB3b3JrZmxvdy9jb3JlYCB2ZXJzaW9uLlxuICpcbiAqIFdoZW4gcmVzdW1pbmcgYSBob29rIG9yIHdlYmhvb2ssIHRoZSBwYXlsb2FkIG11c3QgYmUgZW5jb2RlZCBpbiBhIGZvcm1hdFxuICogdGhhdCB0aGUgKnRhcmdldCogd29ya2Zsb3cgcnVuJ3MgZGVwbG95bWVudCBjYW4gZGVjb2RlLiBUaGlzIG1vZHVsZSBwcm92aWRlc1xuICogYSB3YXkgdG8gbG9vayB1cCB3aGF0IHNlcmlhbGl6YXRpb24gZm9ybWF0cyBhIGdpdmVuIGBAd29ya2Zsb3cvY29yZWAgdmVyc2lvblxuICogc3VwcG9ydHMsIHNvIHRoYXQgbmV3ZXIgZGVwbG95bWVudHMgY2FuIGF2b2lkIGVuY29kaW5nIHBheWxvYWRzIGluIGZvcm1hdHNcbiAqIHRoYXQgb2xkZXIgZGVwbG95bWVudHMgZG9uJ3QgdW5kZXJzdGFuZCAoZS5nLiwgdGhlIGBlbmNyYCBlbmNyeXB0aW9uIGZvcm1hdCkuXG4gKlxuICogIyMgQWRkaW5nIGEgbmV3IGZvcm1hdFxuICpcbiAqIFdoZW4gYSBuZXcgc2VyaWFsaXphdGlvbiBmb3JtYXQgaXMgaW50cm9kdWNlZDpcbiAqIDEuIEFkZCB0aGUgZm9ybWF0IGNvbnN0YW50IHRvIGBTZXJpYWxpemF0aW9uRm9ybWF0YCBpbiBgc2VyaWFsaXphdGlvbi50c2BcbiAqIDIuIEFkZCBhbiBlbnRyeSB0byBgRk9STUFUX1ZFUlNJT05fVEFCTEVgIGJlbG93IHdpdGggdGhlIG1pbmltdW1cbiAqICAgIGBAd29ya2Zsb3cvY29yZWAgdmVyc2lvbiB0aGF0IHN1cHBvcnRzIGl0XG4gKiAzLiBUaGUgYGdldFJ1bkNhcGFiaWxpdGllcygpYCBmdW5jdGlvbiB3aWxsIGF1dG9tYXRpY2FsbHkgaW5jbHVkZSBpdFxuICpcbiAqICMjIEhpc3RvcnlcbiAqXG4gKiAtIGBlbmNyYCAoQUVTLTI1Ni1HQ00gZW5jcnlwdGlvbik6IGFkZGVkIGluIGA0LjIuMC1iZXRhLjY0YFxuICogICBDb21taXQ6IDc2MThhYzM2IFwiV2lyZSBBRVMtR0NNIGVuY3J5cHRpb24gaW50byBzZXJpYWxpemF0aW9uIGxheWVyICgjMTI1MSlcIlxuICogICBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL3dvcmtmbG93L2NvbW1pdC83NjE4YWMzNlxuICovXG5cbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCB7XG4gIFNlcmlhbGl6YXRpb25Gb3JtYXQsXG4gIHR5cGUgU2VyaWFsaXphdGlvbkZvcm1hdFR5cGUsXG59IGZyb20gJy4vc2VyaWFsaXphdGlvbi5qcyc7XG5cbi8qKlxuICogQ2FwYWJpbGl0aWVzIG9mIGEgd29ya2Zsb3cgcnVuIGJhc2VkIG9uIGl0cyBgQHdvcmtmbG93L2NvcmVgIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuQ2FwYWJpbGl0aWVzIHtcbiAgLyoqXG4gICAqIFRoZSBzZXQgb2Ygc2VyaWFsaXphdGlvbiBmb3JtYXQgcHJlZml4ZXMgdGhhdCB0aGUgdGFyZ2V0IHJ1biBjYW4gZGVjb2RlLlxuICAgKiBVc2UgYHN1cHBvcnRlZEZvcm1hdHMuaGFzKFNlcmlhbGl6YXRpb25Gb3JtYXQuRU5DUllQVEVEKWAgdG8gY2hlY2tcbiAgICogaWYgZW5jcnlwdGlvbiBpcyBzdXBwb3J0ZWQsIGV0Yy5cbiAgICovXG4gIHN1cHBvcnRlZEZvcm1hdHM6IFJlYWRvbmx5U2V0PFNlcmlhbGl6YXRpb25Gb3JtYXRUeXBlPjtcbn1cblxuLyoqXG4gKiBNYXBzIHNlcmlhbGl6YXRpb24gZm9ybWF0IGlkZW50aWZpZXJzIHRvIHRoZSBtaW5pbXVtIGBAd29ya2Zsb3cvY29yZWBcbiAqIHZlcnNpb24gdGhhdCBpbnRyb2R1Y2VkIHN1cHBvcnQgZm9yIHRoZW0uIEZvcm1hdHMgbm90IGxpc3RlZCBoZXJlIGFyZVxuICogYXNzdW1lZCB0byBiZSBzdXBwb3J0ZWQgYnkgYWxsIHNwZWNWZXJzaW9uIDIgcnVucyAoZS5nLiwgYGRldmxgKS5cbiAqL1xuY29uc3QgRk9STUFUX1ZFUlNJT05fVEFCTEU6IFJlYWRvbmx5QXJyYXk8e1xuICBmb3JtYXQ6IFNlcmlhbGl6YXRpb25Gb3JtYXRUeXBlO1xuICBtaW5WZXJzaW9uOiBzdHJpbmc7XG59PiA9IFtcbiAgeyBmb3JtYXQ6IFNlcmlhbGl6YXRpb25Gb3JtYXQuRU5DUllQVEVELCBtaW5WZXJzaW9uOiAnNC4yLjAtYmV0YS42NCcgfSxcbiAgLy8gRnV0dXJlIGVudHJpZXM6XG4gIC8vIHsgZm9ybWF0OiBTZXJpYWxpemF0aW9uRm9ybWF0LkNCT1IsIG1pblZlcnNpb246ICc1LngueScgfSxcbiAgLy8geyBmb3JtYXQ6IFNlcmlhbGl6YXRpb25Gb3JtYXQuRU5DUllQVEVEX1YyLCBtaW5WZXJzaW9uOiAnNS54LnknIH0sXG5dO1xuXG4vKipcbiAqIFRoZSBzZXQgb2YgZm9ybWF0cyBzdXBwb3J0ZWQgYnkgYWxsIHNwZWNWZXJzaW9uIDIgcnVucywgcmVnYXJkbGVzcyBvZlxuICogYEB3b3JrZmxvdy9jb3JlYCB2ZXJzaW9uLiBUaGVzZSBhcmUgdGhlIGJhc2VsaW5lIGZvcm1hdHMgdGhhdCB3ZXJlIHByZXNlbnRcbiAqIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBzcGVjVmVyc2lvbiAyIHByb3RvY29sLlxuICovXG5jb25zdCBCQVNFTElORV9GT1JNQVRTOiBSZWFkb25seVNldDxTZXJpYWxpemF0aW9uRm9ybWF0VHlwZT4gPSBuZXcgU2V0KFtcbiAgU2VyaWFsaXphdGlvbkZvcm1hdC5ERVZBTFVFX1YxLFxuXSk7XG5cbi8qKlxuICogTG9vayB1cCB3aGF0IHNlcmlhbGl6YXRpb24gY2FwYWJpbGl0aWVzIGEgd29ya2Zsb3cgcnVuIHN1cHBvcnRzIGJhc2VkIG9uXG4gKiBpdHMgYEB3b3JrZmxvdy9jb3JlYCB2ZXJzaW9uIHN0cmluZyAoZnJvbSBgZXhlY3V0aW9uQ29udGV4dC53b3JrZmxvd0NvcmVWZXJzaW9uYCkuXG4gKlxuICogV2hlbiB0aGUgdmVyc2lvbiBpcyBgdW5kZWZpbmVkYCwgbm90IGEgc3RyaW5nLCBvciBub3QgYSB2YWxpZCBzZW12ZXIgc3RyaW5nXG4gKiAoZS5nLiB2ZXJ5IG9sZCBydW5zIHRoYXQgcHJlZGF0ZSB0aGUgZmllbGQsIG9yIGNvcnJ1cHRlZCBtZXRhZGF0YSksXG4gKiB3ZSBhc3N1bWUgdGhlIG1vc3QgY29uc2VydmF0aXZlIGNhcGFiaWxpdGllcyAoYmFzZWxpbmUgZm9ybWF0cyBvbmx5KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJ1bkNhcGFiaWxpdGllcyhcbiAgd29ya2Zsb3dDb3JlVmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBSdW5DYXBhYmlsaXRpZXMge1xuICBpZiAoIXdvcmtmbG93Q29yZVZlcnNpb24gfHwgIXNlbXZlci52YWxpZCh3b3JrZmxvd0NvcmVWZXJzaW9uKSkge1xuICAgIHJldHVybiB7IHN1cHBvcnRlZEZvcm1hdHM6IEJBU0VMSU5FX0ZPUk1BVFMgfTtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdHMgPSBuZXcgU2V0PFNlcmlhbGl6YXRpb25Gb3JtYXRUeXBlPihCQVNFTElORV9GT1JNQVRTKTtcblxuICBmb3IgKGNvbnN0IHsgZm9ybWF0LCBtaW5WZXJzaW9uIH0gb2YgRk9STUFUX1ZFUlNJT05fVEFCTEUpIHtcbiAgICBpZiAoc2VtdmVyLmd0ZSh3b3JrZmxvd0NvcmVWZXJzaW9uLCBtaW5WZXJzaW9uKSkge1xuICAgICAgZm9ybWF0cy5hZGQoZm9ybWF0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBzdXBwb3J0ZWRGb3JtYXRzOiBmb3JtYXRzIH07XG59XG4iXX0=
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwYWJpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NhcGFiaWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNHO0FBRUgsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFDTCxtQkFBbUIsR0FFcEIsTUFBTSxvQkFBb0IsQ0FBQztBQXdCNUI7Ozs7R0FJRztBQUNILE1BQU0sb0JBQW9CLEdBR3JCO0lBQ0gsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUU7SUFDdEUsMkVBQTJFO0lBQzNFLDRFQUE0RTtJQUM1RSxvRUFBb0U7SUFDcEUseUVBQXlFO0lBQ3pFLHlFQUF5RTtJQUN6RSxtRUFBbUU7SUFDbkUsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUU7SUFDakUsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUU7SUFDakUsOEVBQThFO0lBQzlFLDJFQUEyRTtJQUMzRSwwRUFBMEU7SUFDMUUsNkVBQTZFO0lBQzdFLG1FQUFtRTtJQUNuRSxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRTtJQUNuRSxrQkFBa0I7SUFDbEIsNkRBQTZEO0lBQzdELHFFQUFxRTtDQUN0RSxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSx3QkFBd0IsR0FHekI7SUFDSCwrRUFBK0U7SUFDL0UsNkVBQTZFO0lBQzdFLCtFQUErRTtJQUMvRSwwRUFBMEU7SUFDMUUsa0NBQWtDO0lBQ2xDLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUU7SUFDaEUsd0VBQXdFO0lBQ3hFLDJFQUEyRTtJQUMzRSw0RUFBNEU7SUFDNUUsa0VBQWtFO0lBQ2xFLHdFQUF3RTtJQUN4RSwyRUFBMkU7SUFDM0UsNEJBQTRCO0NBQzdCLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBeUMsSUFBSSxHQUFHLENBQUM7SUFDckUsbUJBQW1CLENBQUMsVUFBVTtDQUMvQixDQUFDLENBQUM7QUFFSDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsbUJBQXVDO0lBRXZDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1FBQy9ELE9BQU87WUFDTCxnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDbEMsaUJBQWlCLEVBQUUsS0FBSztTQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUEwQixnQkFBZ0IsQ0FBQyxDQUFDO0lBRW5FLEtBQUssTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQzFELElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ2hELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBb0I7UUFDOUIsZ0JBQWdCLEVBQUUsT0FBTztRQUN6QixpQkFBaUIsRUFBRSxLQUFLO0tBQ3pCLENBQUM7SUFFRixLQUFLLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksd0JBQXdCLEVBQUUsQ0FBQztRQUNsRSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2FwYWJpbGl0aWVzIHRhYmxlIGZvciB3b3JrZmxvdyBydW5zIGJhc2VkIG9uIHRoZWlyIGBAd29ya2Zsb3cvY29yZWAgdmVyc2lvbi5cbiAqXG4gKiBXaGVuIHJlc3VtaW5nIGEgaG9vayBvciB3ZWJob29rLCB0aGUgcGF5bG9hZCBtdXN0IGJlIGVuY29kZWQgaW4gYSBmb3JtYXRcbiAqIHRoYXQgdGhlICp0YXJnZXQqIHdvcmtmbG93IHJ1bidzIGRlcGxveW1lbnQgY2FuIGRlY29kZS4gVGhpcyBtb2R1bGUgcHJvdmlkZXNcbiAqIGEgd2F5IHRvIGxvb2sgdXAgd2hhdCBzZXJpYWxpemF0aW9uIGZvcm1hdHMgYSBnaXZlbiBgQHdvcmtmbG93L2NvcmVgIHZlcnNpb25cbiAqIHN1cHBvcnRzLCBzbyB0aGF0IG5ld2VyIGRlcGxveW1lbnRzIGNhbiBhdm9pZCBlbmNvZGluZyBwYXlsb2FkcyBpbiBmb3JtYXRzXG4gKiB0aGF0IG9sZGVyIGRlcGxveW1lbnRzIGRvbid0IHVuZGVyc3RhbmQgKGUuZy4sIHRoZSBgZW5jcmAgZW5jcnlwdGlvbiBmb3JtYXQpLlxuICpcbiAqICMjIEFkZGluZyBhIG5ldyBmb3JtYXRcbiAqXG4gKiBXaGVuIGEgbmV3IHNlcmlhbGl6YXRpb24gZm9ybWF0IGlzIGludHJvZHVjZWQ6XG4gKiAxLiBBZGQgdGhlIGZvcm1hdCBjb25zdGFudCB0byBgU2VyaWFsaXphdGlvbkZvcm1hdGAgaW4gYHNlcmlhbGl6YXRpb24udHNgXG4gKiAyLiBBZGQgYW4gZW50cnkgdG8gYEZPUk1BVF9WRVJTSU9OX1RBQkxFYCBiZWxvdyB3aXRoIHRoZSBtaW5pbXVtXG4gKiAgICBgQHdvcmtmbG93L2NvcmVgIHZlcnNpb24gdGhhdCBzdXBwb3J0cyBpdFxuICogMy4gVGhlIGBnZXRSdW5DYXBhYmlsaXRpZXMoKWAgZnVuY3Rpb24gd2lsbCBhdXRvbWF0aWNhbGx5IGluY2x1ZGUgaXRcbiAqXG4gKiAjIyBBZGRpbmcgYSBuZXcgbm9uLWZvcm1hdCBjYXBhYmlsaXR5XG4gKlxuICogU29tZSBjYXBhYmlsaXRpZXMgYXJlbid0IHNlcmlhbGl6YXRpb24gZm9ybWF0IHByZWZpeGVzOiBlLmcuXG4gKiBieXRlLXN0cmVhbSB3aXJlIGZyYW1pbmcgaXMgYW4gZW52ZWxvcGUgYXJvdW5kIGNodW5rcyByYXRoZXIgdGhhblxuICogYSBjb250ZW50IGZvcm1hdC4gRm9yIHRob3NlLCBhZGQgYSBib29sZWFuIGZpZWxkIHRvIGBSdW5DYXBhYmlsaXRpZXNgXG4gKiBhbmQgYW4gZW50cnkgaW4gYENBUEFCSUxJVFlfVkVSU0lPTl9UQUJMRWAgYmVsb3cuXG4gKlxuICogIyMgSGlzdG9yeVxuICpcbiAqIC0gYGVuY3JgIChBRVMtMjU2LUdDTSBlbmNyeXB0aW9uKTogYWRkZWQgaW4gYDQuMi4wLWJldGEuNjRgXG4gKiAgIENvbW1pdDogNzYxOGFjMzYgXCJXaXJlIEFFUy1HQ00gZW5jcnlwdGlvbiBpbnRvIHNlcmlhbGl6YXRpb24gbGF5ZXIgKCMxMjUxKVwiXG4gKiAgIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvd29ya2Zsb3cvY29tbWl0Lzc2MThhYzM2XG4gKiAtIGBmcmFtZWRCeXRlU3RyZWFtc2AgKHdpcmUtbGV2ZWwgY2h1bmsgZnJhbWluZyBmb3IgYnl0ZSBzdHJlYW1zKTogYWRkZWQgaW4gYDUuMC4wLWJldGEuMTVgXG4gKiAtIGBnemlwYCAoZ3ppcCBwYXlsb2FkIGNvbXByZXNzaW9uKTogYWRkZWQgaW4gYDUuMC4wLWJldGEuMThgXG4gKiAtIGB6c3RkYCAoenN0ZCBwYXlsb2FkIGNvbXByZXNzaW9uLCBwcmVmZXJyZWQgY29kZWMpOiBhZGRlZCBpbiBgNS4wLjAtYmV0YS4xOGBcbiAqICAgYWxvbmdzaWRlIGd6aXA7IHRoZXkgY28tc2hpcCwgc28gYW55IHJ1biB0aGF0IGNhbiByZWFkIG9uZSBjYW4gcmVhZCBib3RoLlxuICogLSBgZW5jcGAgKFgyNTUxOSBzZWFsZWQtYm94IGVuY3J5cHRpb24gZm9yIGNyb3NzLXJ1biB3cml0ZXMpOiBhZGRlZCBpblxuICogICBgNS4wLjAtYmV0YS4zN2AuIE5vdGUgdGhhdCBwcm9kdWNlcnMgZG8gKipub3QqKiBnYXRlIGBlbmNwYCBvbiB0aGlzIHRhYmxlOlxuICogICB0aGV5IGdhdGUgb24gdGhlIHByZXNlbmNlIG9mIGBlbmNyeXB0aW9uUHVibGljS2V5YCBvbiB0aGUgdGFyZ2V0IHJ1bixcbiAqICAgd2hpY2ggYSBydW4gb25seSBjYXJyaWVzIGlmIHRoZSBkZXBsb3ltZW50IHRoYXQgY3JlYXRlZCBpdCBjb3VsZCBhbHNvXG4gKiAgIG9wZW4gYGVuY3BgLiBUaGUgZW50cnkgZXhpc3RzIHNvIHRoZSBjYXBhYmlsaXR5IHNldCBzdGF5cyBhIGNvbXBsZXRlLFxuICogICBhdWRpdGFibGUgZGVzY3JpcHRpb24gb2YgYSBydW4ncyBkZWNvZGluZyBhYmlsaXR5LlxuICogLSBIb29rLXJlc3VtZSBjb25zdW1lciBwcm90b2NvbCAoXCJjb25zdW1lciByZS1lbnN1cmVzIGBob29rX3JlY2VpdmVkYCBmcm9tXG4gKiAgIGBob29rSW5wdXRgXCIpOiBkZWxpYmVyYXRlbHkgTk9UIHRyYWNrZWQgaGVyZS4gUmF0aGVyIHRoYW4gcHJlZGljdCBhXG4gKiAgIHJlbGVhc2UgY3V0b2ZmLCB0aGUgcnVuJ3MgY3JlYXRpbmcgZGVwbG95bWVudCBzdGFtcHMgYW4gZXhwbGljaXRcbiAqICAgYGhvb2tSZXN1bWVJbnB1dFZlcnNpb25gIGV4ZWN1dGlvbi1jb250ZXh0IG1hcmtlciAobWlycm9yZWQgb250byB0aGVcbiAqICAgaG9vaydzIHJlc3VtZUNvbnRleHQgYnkgdGhlIHNlcnZlcik7IG9sZGVyIHByb2R1Y2VycyBnYXRlIHRoZWlyIGxhenkgcGF0aFxuICogICBvbiB0aGF0IG1hcmtlci5cbiAqL1xuXG5pbXBvcnQgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQge1xuICBTZXJpYWxpemF0aW9uRm9ybWF0LFxuICB0eXBlIFNlcmlhbGl6YXRpb25Gb3JtYXRUeXBlLFxufSBmcm9tICcuL3NlcmlhbGl6YXRpb24uanMnO1xuXG4vKipcbiAqIENhcGFiaWxpdGllcyBvZiBhIHdvcmtmbG93IHJ1biBiYXNlZCBvbiBpdHMgYEB3b3JrZmxvdy9jb3JlYCB2ZXJzaW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bkNhcGFiaWxpdGllcyB7XG4gIC8qKlxuICAgKiBUaGUgc2V0IG9mIHNlcmlhbGl6YXRpb24gZm9ybWF0IHByZWZpeGVzIHRoYXQgdGhlIHRhcmdldCBydW4gY2FuIGRlY29kZS5cbiAgICogVXNlIGBzdXBwb3J0ZWRGb3JtYXRzLmhhcyhTZXJpYWxpemF0aW9uRm9ybWF0LkVOQ1JZUFRFRClgIHRvIGNoZWNrXG4gICAqIGlmIGVuY3J5cHRpb24gaXMgc3VwcG9ydGVkLCBldGMuXG4gICAqL1xuICBzdXBwb3J0ZWRGb3JtYXRzOiBSZWFkb25seVNldDxTZXJpYWxpemF0aW9uRm9ybWF0VHlwZT47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHRhcmdldCBydW4gY2FuIGRlY29kZSB3aXJlLWZyYW1lZCBieXRlIHN0cmVhbXMuIFdoZW4gdHJ1ZSxcbiAgICogYnl0ZSBzdHJlYW1zIChgdHlwZTogJ2J5dGVzJ2AgUmVhZGFibGVTdHJlYW1zIHBhc3NlZCBhY3Jvc3MgYm91bmRhcmllcylcbiAgICogYXJlIHdyYXBwZWQgaW4gYSBsZW5ndGgtcHJlZml4ZWQgZnJhbWUgZW52ZWxvcGUgb24gdGhlIHdpcmUgc28gdGhlXG4gICAqIHJlYWRlciBjYW4gaWRlbnRpZnkgY2h1bmsgYm91bmRhcmllcywgd2hpY2ggZW5hYmxlcyBhdXRvLXJlY29ubmVjdFxuICAgKiBvbiB0cmFuc2llbnQgc3RyZWFtIGVycm9ycy4gV2hlbiBmYWxzZSwgYnl0ZSBzdHJlYW1zIGFyZSB3cml0dGVuIGFzXG4gICAqIHJhdyBieXRlcyAodGhlIGxlZ2FjeSBmb3JtYXQpIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgcnVucy5cbiAgICovXG4gIGZyYW1lZEJ5dGVTdHJlYW1zOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE1hcHMgc2VyaWFsaXphdGlvbiBmb3JtYXQgaWRlbnRpZmllcnMgdG8gdGhlIG1pbmltdW0gYEB3b3JrZmxvdy9jb3JlYFxuICogdmVyc2lvbiB0aGF0IGludHJvZHVjZWQgc3VwcG9ydCBmb3IgdGhlbS4gRm9ybWF0cyBub3QgbGlzdGVkIGhlcmUgYXJlXG4gKiBhc3N1bWVkIHRvIGJlIHN1cHBvcnRlZCBieSBhbGwgc3BlY1ZlcnNpb24gMiBydW5zIChlLmcuLCBgZGV2bGApLlxuICovXG5jb25zdCBGT1JNQVRfVkVSU0lPTl9UQUJMRTogUmVhZG9ubHlBcnJheTx7XG4gIGZvcm1hdDogU2VyaWFsaXphdGlvbkZvcm1hdFR5cGU7XG4gIG1pblZlcnNpb246IHN0cmluZztcbn0+ID0gW1xuICB7IGZvcm1hdDogU2VyaWFsaXphdGlvbkZvcm1hdC5FTkNSWVBURUQsIG1pblZlcnNpb246ICc0LjIuMC1iZXRhLjY0JyB9LFxuICAvLyBUT0RPKHJlbGVhc2UpOiB2ZXJpZnkgdGhpcyBtYXRjaGVzIHRoZSBhY3R1YWwgdmVyc2lvbiB0aGF0IHNoaXBzIHBheWxvYWRcbiAgLy8gY29tcHJlc3Npb24uIElmIGEgXCJWZXJzaW9uIFBhY2thZ2VzIChiZXRhKVwiIFBSIG1lcmdlcyBiZWZvcmUgdGhpcyBjaGFuZ2UsXG4gIC8vIGJ1bXAgdG8gdGhlIG5leHQgYmV0YS4gQSB0b28tbG93IGN1dG9mZiBtYWtlcyBuZXcgcHJvZHVjZXJzIHdyaXRlXG4gIC8vIGNvbXByZXNzZWQgcGF5bG9hZHMgdG8gY29uc3VtZXJzIHRoYXQgY2Fubm90IGRlY29tcHJlc3MgdGhlbTsgdG9vLWhpZ2hcbiAgLy8gbWVyZWx5IGRlbGF5cyB0aGUgb3B0aW1pemF0aW9uIChzYWZlKS4gZ3ppcCBhbmQgenN0ZCBzaGlwIHRvZ2V0aGVyLCBzb1xuICAvLyB0aGV5IHNoYXJlIGEgbWluIHZlcnNpb246IGEgcnVuIHRoYXQgY2FuIHJlYWQgb25lIGNhbiByZWFkIGJvdGguXG4gIHsgZm9ybWF0OiBTZXJpYWxpemF0aW9uRm9ybWF0LkdaSVAsIG1pblZlcnNpb246ICc1LjAuMC1iZXRhLjE4JyB9LFxuICB7IGZvcm1hdDogU2VyaWFsaXphdGlvbkZvcm1hdC5aU1RELCBtaW5WZXJzaW9uOiAnNS4wLjAtYmV0YS4xOCcgfSxcbiAgLy8gVE9ETyhyZWxlYXNlKTogdmVyaWZ5IHRoaXMgbWF0Y2hlcyB0aGUgYWN0dWFsIHZlcnNpb24gdGhhdCBzaGlwcyBzZWFsZWQtYm94XG4gIC8vIGVuY3J5cHRpb24uIElmIGEgXCJWZXJzaW9uIFBhY2thZ2VzIChiZXRhKVwiIFBSIG1lcmdlcyBiZWZvcmUgdGhpcyBjaGFuZ2UsXG4gIC8vIGJ1bXAgdG8gdGhlIG5leHQgYmV0YS4gVW5saWtlIHRoZSBlbnRyaWVzIGFib3ZlLCBhIHdyb25nIGN1dG9mZiBoZXJlIGlzXG4gIC8vIG5vdCBhIGNvcnJlY3RuZXNzIGhhemFyZDogcHJvZHVjZXJzIGdhdGUgYGVuY3BgIG9uIHRoZSB0YXJnZXQgcnVuIGNhcnJ5aW5nXG4gIC8vIGFuIGBlbmNyeXB0aW9uUHVibGljS2V5YCwgbm90IG9uIHRoaXMgdGFibGUgKHNlZSBIaXN0b3J5IGFib3ZlKS5cbiAgeyBmb3JtYXQ6IFNlcmlhbGl6YXRpb25Gb3JtYXQuU0VBTEVELCBtaW5WZXJzaW9uOiAnNS4wLjAtYmV0YS4zNycgfSxcbiAgLy8gRnV0dXJlIGVudHJpZXM6XG4gIC8vIHsgZm9ybWF0OiBTZXJpYWxpemF0aW9uRm9ybWF0LkNCT1IsIG1pblZlcnNpb246ICc1LngueScgfSxcbiAgLy8geyBmb3JtYXQ6IFNlcmlhbGl6YXRpb25Gb3JtYXQuRU5DUllQVEVEX1YyLCBtaW5WZXJzaW9uOiAnNS54LnknIH0sXG5dO1xuXG4vKipcbiAqIE1hcHMgbm9uLWZvcm1hdCBjYXBhYmlsaXR5IGZsYWdzIChib29sZWFucyBvbiBgUnVuQ2FwYWJpbGl0aWVzYCkgdG8gdGhlXG4gKiBtaW5pbXVtIGBAd29ya2Zsb3cvY29yZWAgdmVyc2lvbiB0aGF0IGludHJvZHVjZWQgc3VwcG9ydCBmb3IgdGhlbS5cbiAqL1xuY29uc3QgQ0FQQUJJTElUWV9WRVJTSU9OX1RBQkxFOiBSZWFkb25seUFycmF5PHtcbiAgY2FwYWJpbGl0eToga2V5b2YgT21pdDxSdW5DYXBhYmlsaXRpZXMsICdzdXBwb3J0ZWRGb3JtYXRzJz47XG4gIG1pblZlcnNpb246IHN0cmluZztcbn0+ID0gW1xuICAvLyBUT0RPKHJlbGVhc2UpOiB2ZXJpZnkgdGhpcyBtYXRjaGVzIHRoZSBhY3R1YWwgdmVyc2lvbiB0aGF0IHNoaXBzIGJ5dGUtc3RyZWFtXG4gIC8vIGZyYW1pbmcuIElmIGEgXCJWZXJzaW9uIFBhY2thZ2VzIChiZXRhKVwiIFBSIG1lcmdlcyBiZWZvcmUgdGhpcyBjaGFuZ2UsIGJ1bXBcbiAgLy8gdG8gdGhlIG5leHQgYmV0YS4gQSB0b28tbG93IGN1dG9mZiBtYWtlcyBuZXcgcHJvZHVjZXJzIHdyaXRlIGZyYW1lZCBieXRlcyB0b1xuICAvLyBjb25zdW1lcnMgdGhhdCBjYW5ub3QgdW5mcmFtZSB0aGVtIChzaWxlbnQgY29ycnVwdGlvbik7IHRvby1oaWdoIG1lcmVseVxuICAvLyBkZWxheXMgdGhlIG9wdGltaXphdGlvbiAoc2FmZSkuXG4gIHsgY2FwYWJpbGl0eTogJ2ZyYW1lZEJ5dGVTdHJlYW1zJywgbWluVmVyc2lvbjogJzUuMC4wLWJldGEuMTUnIH0sXG4gIC8vIE5PVEU6IHRoZSBob29rLXJlc3VtZSBjb25zdW1lciBwcm90b2NvbCAoXCJkb2VzIHRoZSBjb25zdW1lciByZS1lbnN1cmVcbiAgLy8gYGhvb2tfcmVjZWl2ZWRgIGZyb20gdGhlIHF1ZXVlIG1lc3NhZ2UncyBgaG9va0lucHV0YD9cIikgaXMgaW50ZW50aW9uYWxseVxuICAvLyBOT1QgZ2F0ZWQgaGVyZS4gQSB2ZXJzaW9uLWNvbXBhcmUgYWdhaW5zdCBhIHByZWRpY3RlZCByZWxlYXNlIGN1dG9mZiBpcyBhXG4gIC8vIGd1ZXNzOyBpbnN0ZWFkIHRoZSBydW4ncyBjcmVhdGluZyBkZXBsb3ltZW50IHN0YW1wcyBhbiBleHBsaWNpdFxuICAvLyBgaG9va1Jlc3VtZUlucHV0VmVyc2lvbmAgbWFya2VyIGludG8gaXRzIGV4ZWN1dGlvbiBjb250ZXh0LCB3aGljaCB0aGVcbiAgLy8gc2VydmVyIG1pcnJvcnMgb250byB0aGUgaG9vaydzIHJlc3VtZUNvbnRleHQuIE9sZGVyIHByb2R1Y2VycyBnYXRlIHRoZWlyXG4gIC8vIGxhenkgcGF0aCBvbiB0aGF0IG1hcmtlci5cbl07XG5cbi8qKlxuICogVGhlIHNldCBvZiBmb3JtYXRzIHN1cHBvcnRlZCBieSBhbGwgc3BlY1ZlcnNpb24gMiBydW5zLCByZWdhcmRsZXNzIG9mXG4gKiBgQHdvcmtmbG93L2NvcmVgIHZlcnNpb24uIFRoZXNlIGFyZSB0aGUgYmFzZWxpbmUgZm9ybWF0cyB0aGF0IHdlcmUgcHJlc2VudFxuICogZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHNwZWNWZXJzaW9uIDIgcHJvdG9jb2wuXG4gKi9cbmNvbnN0IEJBU0VMSU5FX0ZPUk1BVFM6IFJlYWRvbmx5U2V0PFNlcmlhbGl6YXRpb25Gb3JtYXRUeXBlPiA9IG5ldyBTZXQoW1xuICBTZXJpYWxpemF0aW9uRm9ybWF0LkRFVkFMVUVfVjEsXG5dKTtcblxuLyoqXG4gKiBMb29rIHVwIHdoYXQgc2VyaWFsaXphdGlvbiBjYXBhYmlsaXRpZXMgYSB3b3JrZmxvdyBydW4gc3VwcG9ydHMgYmFzZWQgb25cbiAqIGl0cyBgQHdvcmtmbG93L2NvcmVgIHZlcnNpb24gc3RyaW5nIChmcm9tIGBleGVjdXRpb25Db250ZXh0LndvcmtmbG93Q29yZVZlcnNpb25gKS5cbiAqXG4gKiBXaGVuIHRoZSB2ZXJzaW9uIGlzIGB1bmRlZmluZWRgLCBub3QgYSBzdHJpbmcsIG9yIG5vdCBhIHZhbGlkIHNlbXZlciBzdHJpbmdcbiAqIChlLmcuIG9sZGVyIHJ1bnMgdGhhdCBwcmVkYXRlIHRoZSBmaWVsZCwgb3IgY29ycnVwdGVkIG1ldGFkYXRhKSxcbiAqIHdlIGFzc3VtZSB0aGUgbW9zdCBjb25zZXJ2YXRpdmUgY2FwYWJpbGl0aWVzIChiYXNlbGluZSBmb3JtYXRzIG9ubHksXG4gKiBub24tZm9ybWF0IGNhcGFiaWxpdGllcyBhbGwgYGZhbHNlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSdW5DYXBhYmlsaXRpZXMoXG4gIHdvcmtmbG93Q29yZVZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogUnVuQ2FwYWJpbGl0aWVzIHtcbiAgaWYgKCF3b3JrZmxvd0NvcmVWZXJzaW9uIHx8ICFzZW12ZXIudmFsaWQod29ya2Zsb3dDb3JlVmVyc2lvbikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VwcG9ydGVkRm9ybWF0czogQkFTRUxJTkVfRk9STUFUUyxcbiAgICAgIGZyYW1lZEJ5dGVTdHJlYW1zOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZm9ybWF0cyA9IG5ldyBTZXQ8U2VyaWFsaXphdGlvbkZvcm1hdFR5cGU+KEJBU0VMSU5FX0ZPUk1BVFMpO1xuXG4gIGZvciAoY29uc3QgeyBmb3JtYXQsIG1pblZlcnNpb24gfSBvZiBGT1JNQVRfVkVSU0lPTl9UQUJMRSkge1xuICAgIGlmIChzZW12ZXIuZ3RlKHdvcmtmbG93Q29yZVZlcnNpb24sIG1pblZlcnNpb24pKSB7XG4gICAgICBmb3JtYXRzLmFkZChmb3JtYXQpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogUnVuQ2FwYWJpbGl0aWVzID0ge1xuICAgIHN1cHBvcnRlZEZvcm1hdHM6IGZvcm1hdHMsXG4gICAgZnJhbWVkQnl0ZVN0cmVhbXM6IGZhbHNlLFxuICB9O1xuXG4gIGZvciAoY29uc3QgeyBjYXBhYmlsaXR5LCBtaW5WZXJzaW9uIH0gb2YgQ0FQQUJJTElUWV9WRVJTSU9OX1RBQkxFKSB7XG4gICAgaWYgKHNlbXZlci5ndGUod29ya2Zsb3dDb3JlVmVyc2lvbiwgbWluVmVyc2lvbikpIHtcbiAgICAgIHJlc3VsdFtjYXBhYmlsaXR5XSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
|
package/dist/capture-stack.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* code frame at our `throw` site inside `@workflow/core`, which is useless
|
|
6
6
|
* to the user.
|
|
7
7
|
*
|
|
8
|
-
* No-op on engines that don't expose `Error.captureStackTrace
|
|
8
|
+
* No-op on engines that don't expose `Error.captureStackTrace`: the stack
|
|
9
9
|
* degrades gracefully to the default behavior.
|
|
10
10
|
*
|
|
11
11
|
* Kept in its own tiny module so callers that can't participate in the
|
package/dist/capture-stack.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* code frame at our `throw` site inside `@workflow/core`, which is useless
|
|
6
6
|
* to the user.
|
|
7
7
|
*
|
|
8
|
-
* No-op on engines that don't expose `Error.captureStackTrace
|
|
8
|
+
* No-op on engines that don't expose `Error.captureStackTrace`: the stack
|
|
9
9
|
* degrades gracefully to the default behavior.
|
|
10
10
|
*
|
|
11
11
|
* Kept in its own tiny module so callers that can't participate in the
|
|
@@ -18,4 +18,4 @@ stackStartFn) {
|
|
|
18
18
|
const capture = Error.captureStackTrace;
|
|
19
19
|
capture?.(err, stackStartFn);
|
|
20
20
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdHVyZS1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jYXB0dXJlLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLEdBQVU7QUFDVix3RkFBd0Y7QUFDeEYsWUFBc0I7SUFFdEIsTUFBTSxPQUFPLEdBQ1gsS0FHRCxDQUFDLGlCQUFpQixDQUFDO0lBQ3BCLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBWOC1vbmx5IChOb2RlLCBCdW4sIENocm9tZSwgRGVubykuIFJld3JpdGVzIGBlcnIuc3RhY2tgIHNvIHRoZSB0b3AgZnJhbWUgaXNcbiAqIHRoZSBjYWxsZXIgb2YgYHN0YWNrU3RhcnRGbmAgaW5zdGVhZCBvZiB0aGUgZnJhbWV3b3JrIGZ1bmN0aW9uIHRoYXQgdGhyZXcuXG4gKiBXaXRob3V0IHRoaXMsIHRlcm1pbmFsIG92ZXJsYXlzIChOZXh0LmpzLCBUdXJib3BhY2ssIFZTIENvZGUpIHJlbmRlciB0aGVcbiAqIGNvZGUgZnJhbWUgYXQgb3VyIGB0aHJvd2Agc2l0ZSBpbnNpZGUgYEB3b3JrZmxvdy9jb3JlYCwgd2hpY2ggaXMgdXNlbGVzc1xuICogdG8gdGhlIHVzZXIuXG4gKlxuICogTm8tb3Agb24gZW5naW5lcyB0aGF0IGRvbid0IGV4cG9zZSBgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2VgOiB0aGUgc3RhY2tcbiAqIGRlZ3JhZGVzIGdyYWNlZnVsbHkgdG8gdGhlIGRlZmF1bHQgYmVoYXZpb3IuXG4gKlxuICogS2VwdCBpbiBpdHMgb3duIHRpbnkgbW9kdWxlIHNvIGNhbGxlcnMgdGhhdCBjYW4ndCBwYXJ0aWNpcGF0ZSBpbiB0aGVcbiAqIGBjb250ZXh0LWVycm9ycy50c2Ag4oaUIGB3b3JrZmxvdy9nZXQtd29ya2Zsb3ctbWV0YWRhdGEudHNgIGltcG9ydCBjeWNsZSBjYW5cbiAqIHN0aWxsIHB1bGwgaW4gdGhlIGhlbHBlciB3aXRob3V0IHB1bGxpbmcgaW4gdGhlIGZ1bGwgZXJyb3IgY2xhc3Nlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZGlyZWN0U3RhY2tUb0NhbGxlcihcbiAgZXJyOiBFcnJvcixcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS9ub0Jhbm5lZFR5cGVzOiBzaWduYXR1cmUgbWF0Y2hlcyBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZVxuICBzdGFja1N0YXJ0Rm46IEZ1bmN0aW9uXG4pOiB2b2lkIHtcbiAgY29uc3QgY2FwdHVyZSA9IChcbiAgICBFcnJvciBhcyB1bmtub3duIGFzIHtcbiAgICAgIGNhcHR1cmVTdGFja1RyYWNlPzogKHRhcmdldDogb2JqZWN0LCBmbjogRnVuY3Rpb24pID0+IHZvaWQ7XG4gICAgfVxuICApLmNhcHR1cmVTdGFja1RyYWNlO1xuICBjYXB0dXJlPy4oZXJyLCBzdGFja1N0YXJ0Rm4pO1xufVxuIl19
|
|
@@ -18,6 +18,38 @@
|
|
|
18
18
|
* when serializing instances (e.g., step return values).
|
|
19
19
|
*/
|
|
20
20
|
export declare function registerSerializationClass(classId: string, cls: Function): void;
|
|
21
|
+
/**
|
|
22
|
+
* Stable, well-known registry ID for the SDK's `Run` class.
|
|
23
|
+
*
|
|
24
|
+
* The SWC plugin auto-registers `Run` under a *path-derived* ID (e.g.
|
|
25
|
+
* `class//./node_modules/@workflow/core/dist/runtime/run//Run`), which
|
|
26
|
+
* varies with the app's dependency layout and bundler. Host-side code
|
|
27
|
+
* that needs to construct `Run` instances inside the workflow VM (e.g.
|
|
28
|
+
* the hook event consumer resolving `hook.getConflict()`) cannot know
|
|
29
|
+
* that ID statically, so the workflow-mode `create-hook` module also
|
|
30
|
+
* aliases the bundle's `Run` under this stable ID at evaluation time.
|
|
31
|
+
*
|
|
32
|
+
* The `workflow` pseudo-path cannot collide with plugin-derived IDs,
|
|
33
|
+
* which always use real relative module paths (`./…` / `../…`).
|
|
34
|
+
*/
|
|
35
|
+
export declare const RUN_CLASS_ID = "class//workflow//Run";
|
|
36
|
+
/**
|
|
37
|
+
* Register an additional registry ID for a class without touching its
|
|
38
|
+
* `classId` property.
|
|
39
|
+
*
|
|
40
|
+
* Unlike {@link registerSerializationClass}, this is safe to call for a
|
|
41
|
+
* class the SWC plugin has already registered: the plugin's inlined IIFE
|
|
42
|
+
* defines `classId` as non-configurable, so a second `defineProperty`
|
|
43
|
+
* would throw. Aliasing only adds a registry entry: the class keeps
|
|
44
|
+
* serializing under its primary (path-derived) id, while lookups succeed
|
|
45
|
+
* under both IDs.
|
|
46
|
+
*
|
|
47
|
+
* Registration is per-global by construction: evaluated inside the
|
|
48
|
+
* workflow VM it registers the VM's compiled class on the VM's registry;
|
|
49
|
+
* evaluated on the host it registers the host class on the host's
|
|
50
|
+
* registry. Each context resolves its own correct variant.
|
|
51
|
+
*/
|
|
52
|
+
export declare function aliasSerializationClass(classId: string, cls: Function, global?: Record<string, any>): void;
|
|
21
53
|
/**
|
|
22
54
|
* Find a registered class constructor by ID (used during deserialization)
|
|
23
55
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class-serialization.d.ts","sourceRoot":"","sources":["../src/class-serialization.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH;;;;;;;;;;;GAWG;AAEH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,QASxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAE1B,QAAQ,GAAG,SAAS,CAEtB"}
|
|
1
|
+
{"version":3,"file":"class-serialization.d.ts","sourceRoot":"","sources":["../src/class-serialization.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuBH;;;;;;;;;;;GAWG;AAEH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,QASxE;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,yBAAyB,CAAC;AAEnD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EAEf,GAAG,EAAE,QAAQ,EACb,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAc,QAGzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAE1B,QAAQ,GAAG,SAAS,CAEtB"}
|
|
@@ -44,6 +44,42 @@ export function registerSerializationClass(classId, cls) {
|
|
|
44
44
|
configurable: false,
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Stable, well-known registry ID for the SDK's `Run` class.
|
|
49
|
+
*
|
|
50
|
+
* The SWC plugin auto-registers `Run` under a *path-derived* ID (e.g.
|
|
51
|
+
* `class//./node_modules/@workflow/core/dist/runtime/run//Run`), which
|
|
52
|
+
* varies with the app's dependency layout and bundler. Host-side code
|
|
53
|
+
* that needs to construct `Run` instances inside the workflow VM (e.g.
|
|
54
|
+
* the hook event consumer resolving `hook.getConflict()`) cannot know
|
|
55
|
+
* that ID statically, so the workflow-mode `create-hook` module also
|
|
56
|
+
* aliases the bundle's `Run` under this stable ID at evaluation time.
|
|
57
|
+
*
|
|
58
|
+
* The `workflow` pseudo-path cannot collide with plugin-derived IDs,
|
|
59
|
+
* which always use real relative module paths (`./…` / `../…`).
|
|
60
|
+
*/
|
|
61
|
+
export const RUN_CLASS_ID = 'class//workflow//Run';
|
|
62
|
+
/**
|
|
63
|
+
* Register an additional registry ID for a class without touching its
|
|
64
|
+
* `classId` property.
|
|
65
|
+
*
|
|
66
|
+
* Unlike {@link registerSerializationClass}, this is safe to call for a
|
|
67
|
+
* class the SWC plugin has already registered: the plugin's inlined IIFE
|
|
68
|
+
* defines `classId` as non-configurable, so a second `defineProperty`
|
|
69
|
+
* would throw. Aliasing only adds a registry entry: the class keeps
|
|
70
|
+
* serializing under its primary (path-derived) id, while lookups succeed
|
|
71
|
+
* under both IDs.
|
|
72
|
+
*
|
|
73
|
+
* Registration is per-global by construction: evaluated inside the
|
|
74
|
+
* workflow VM it registers the VM's compiled class on the VM's registry;
|
|
75
|
+
* evaluated on the host it registers the host class on the host's
|
|
76
|
+
* registry. Each context resolves its own correct variant.
|
|
77
|
+
*/
|
|
78
|
+
export function aliasSerializationClass(classId,
|
|
79
|
+
// biome-ignore lint/complexity/noBannedTypes: We need to use Function to represent class constructors
|
|
80
|
+
cls, global = globalThis) {
|
|
81
|
+
getRegistry(global).set(classId, cls);
|
|
82
|
+
}
|
|
47
83
|
/**
|
|
48
84
|
* Find a registered class constructor by ID (used during deserialization)
|
|
49
85
|
*
|
|
@@ -58,4 +94,4 @@ export function getSerializationClass(classId, global
|
|
|
58
94
|
) {
|
|
59
95
|
return getRegistry(global).get(classId);
|
|
60
96
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Mtc2VyaWFsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGFzcy1zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUt2RDs7Ozs7R0FLRztBQUNILFNBQVMsV0FBVyxDQUFDLFNBQThCLFVBQVU7SUFDM0QsTUFBTSxDQUFDLEdBQUcsTUFBYSxDQUFDO0lBQ3hCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyx1QkFBdUIsQ0FBOEIsQ0FBQztJQUN2RSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsdUJBQXVCLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDeEMsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHNHQUFzRztBQUN0RyxNQUFNLFVBQVUsMEJBQTBCLENBQUMsT0FBZSxFQUFFLEdBQWE7SUFDdkUsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoQyw2Q0FBNkM7SUFDN0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFO1FBQ3BDLEtBQUssRUFBRSxPQUFPO1FBQ2QsUUFBUSxFQUFFLEtBQUs7UUFDZixVQUFVLEVBQUUsS0FBSztRQUNqQixZQUFZLEVBQUUsS0FBSztLQUNwQixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxzQkFBc0IsQ0FBQztBQUVuRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLE9BQWU7QUFDZixzR0FBc0c7QUFDdEcsR0FBYSxFQUNiLFNBQThCLFVBQVU7SUFFeEMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxPQUFlLEVBQ2YsTUFBMkI7QUFDM0Isc0dBQXNHOztJQUV0RyxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2xhc3Mgc2VyaWFsaXphdGlvbiB1dGlsaXRpZXMuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgc2VwYXJhdGUgZnJvbSBwcml2YXRlLnRzIHRvIGF2b2lkIHB1bGxpbmcgaW4gTm9kZS5qcy1vbmx5XG4gKiBkZXBlbmRlbmNpZXMgKGxpa2UgYXN5bmNfaG9va3MgdmlhIGdldC1jbG9zdXJlLXZhcnMudHMpIHdoZW4gdXNlZCBpblxuICogd29ya2Zsb3cgYnVuZGxlcy5cbiAqL1xuXG5pbXBvcnQgeyBXT1JLRkxPV19DTEFTU19SRUdJU1RSWSB9IGZyb20gJy4vc3ltYm9scy5qcyc7XG5cbi8vIGJpb21lLWlnbm9yZSBsaW50L2NvbXBsZXhpdHkvbm9CYW5uZWRUeXBlczogV2UgbmVlZCB0byB1c2UgRnVuY3Rpb24gdG8gcmVwcmVzZW50IGNsYXNzIGNvbnN0cnVjdG9yc1xudHlwZSBDbGFzc1JlZ2lzdHJ5ID0gTWFwPHN0cmluZywgRnVuY3Rpb24+O1xuXG4vKipcbiAqIEdldCBvciBjcmVhdGUgdGhlIGNsYXNzIHJlZ2lzdHJ5IG9uIHRoZSBnaXZlbiBnbG9iYWwgb2JqZWN0LlxuICogVGhpcyB3b3JrcyBpc29tb3JwaGljYWxseSBpbiBib3RoIHN0ZXAgbW9kZSAobWFpbiBjb250ZXh0KSBhbmQgd29ya2Zsb3cgbW9kZSAoVk0gY29udGV4dCkuXG4gKlxuICogQHBhcmFtIGdsb2JhbCAtIFRoZSBnbG9iYWwgb2JqZWN0IHRvIHVzZS4gRGVmYXVsdHMgdG8gZ2xvYmFsVGhpcywgYnV0IGNhbiBiZSBhIFZNJ3MgZ2xvYmFsLlxuICovXG5mdW5jdGlvbiBnZXRSZWdpc3RyeShnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzKTogQ2xhc3NSZWdpc3RyeSB7XG4gIGNvbnN0IGcgPSBnbG9iYWwgYXMgYW55O1xuICBsZXQgcmVnaXN0cnkgPSBnW1dPUktGTE9XX0NMQVNTX1JFR0lTVFJZXSBhcyBDbGFzc1JlZ2lzdHJ5IHwgdW5kZWZpbmVkO1xuICBpZiAoIXJlZ2lzdHJ5KSB7XG4gICAgcmVnaXN0cnkgPSBuZXcgTWFwKCk7XG4gICAgZ1tXT1JLRkxPV19DTEFTU19SRUdJU1RSWV0gPSByZWdpc3RyeTtcbiAgfVxuICByZXR1cm4gcmVnaXN0cnk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgYSBjbGFzcyBjb25zdHJ1Y3RvciBmb3Igc2VyaWFsaXphdGlvbi5cbiAqIFRoaXMgYWxsb3dzIGNsYXNzIGNvbnN0cnVjdG9ycyB0byBiZSBkZXNlcmlhbGl6ZWQgYnkgbG9va2luZyB1cCB0aGUgY2xhc3NJZC5cbiAqXG4gKiBOb3RlOiBUaGUgU1dDIHBsdWdpbiBub3cgaW5saW5lcyBlcXVpdmFsZW50IHJlZ2lzdHJhdGlvbiBsb2dpYyBhcyBhXG4gKiBzZWxmLWNvbnRhaW5lZCBJSUZFICh1c2luZyB0aGUgc2FtZSBnbG9iYWxUaGlzIFN5bWJvbC1rZXllZCByZWdpc3RyeSksXG4gKiBzbyB0aGlzIGZ1bmN0aW9uIGlzIG5vIGxvbmdlciBpbXBvcnRlZCBieSBnZW5lcmF0ZWQgY29kZS4gSXQgaXMgcmV0YWluZWRcbiAqIGZvciBwcm9ncmFtbWF0aWMgdXNlIGFuZCB0ZXN0aW5nLlxuICpcbiAqIEFsc28gc2V0cyB0aGUgYGNsYXNzSWRgIHByb3BlcnR5IG9uIHRoZSBjbGFzcyBzbyB0aGUgc2VyaWFsaXplciBjYW4gZmluZCBpdFxuICogd2hlbiBzZXJpYWxpemluZyBpbnN0YW5jZXMgKGUuZy4sIHN0ZXAgcmV0dXJuIHZhbHVlcykuXG4gKi9cbi8vIGJpb21lLWlnbm9yZSBsaW50L2NvbXBsZXhpdHkvbm9CYW5uZWRUeXBlczogV2UgbmVlZCB0byB1c2UgRnVuY3Rpb24gdG8gcmVwcmVzZW50IGNsYXNzIGNvbnN0cnVjdG9yc1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyU2VyaWFsaXphdGlvbkNsYXNzKGNsYXNzSWQ6IHN0cmluZywgY2xzOiBGdW5jdGlvbikge1xuICBnZXRSZWdpc3RyeSgpLnNldChjbGFzc0lkLCBjbHMpO1xuICAvLyBTZXQgY2xhc3NJZCBvbiB0aGUgY2xhc3MgZm9yIHNlcmlhbGl6YXRpb25cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNscywgJ2NsYXNzSWQnLCB7XG4gICAgdmFsdWU6IGNsYXNzSWQsXG4gICAgd3JpdGFibGU6IGZhbHNlLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gIH0pO1xufVxuXG4vKipcbiAqIFN0YWJsZSwgd2VsbC1rbm93biByZWdpc3RyeSBJRCBmb3IgdGhlIFNESydzIGBSdW5gIGNsYXNzLlxuICpcbiAqIFRoZSBTV0MgcGx1Z2luIGF1dG8tcmVnaXN0ZXJzIGBSdW5gIHVuZGVyIGEgKnBhdGgtZGVyaXZlZCogSUQgKGUuZy5cbiAqIGBjbGFzcy8vLi9ub2RlX21vZHVsZXMvQHdvcmtmbG93L2NvcmUvZGlzdC9ydW50aW1lL3J1bi8vUnVuYCksIHdoaWNoXG4gKiB2YXJpZXMgd2l0aCB0aGUgYXBwJ3MgZGVwZW5kZW5jeSBsYXlvdXQgYW5kIGJ1bmRsZXIuIEhvc3Qtc2lkZSBjb2RlXG4gKiB0aGF0IG5lZWRzIHRvIGNvbnN0cnVjdCBgUnVuYCBpbnN0YW5jZXMgaW5zaWRlIHRoZSB3b3JrZmxvdyBWTSAoZS5nLlxuICogdGhlIGhvb2sgZXZlbnQgY29uc3VtZXIgcmVzb2x2aW5nIGBob29rLmdldENvbmZsaWN0KClgKSBjYW5ub3Qga25vd1xuICogdGhhdCBJRCBzdGF0aWNhbGx5LCBzbyB0aGUgd29ya2Zsb3ctbW9kZSBgY3JlYXRlLWhvb2tgIG1vZHVsZSBhbHNvXG4gKiBhbGlhc2VzIHRoZSBidW5kbGUncyBgUnVuYCB1bmRlciB0aGlzIHN0YWJsZSBJRCBhdCBldmFsdWF0aW9uIHRpbWUuXG4gKlxuICogVGhlIGB3b3JrZmxvd2AgcHNldWRvLXBhdGggY2Fubm90IGNvbGxpZGUgd2l0aCBwbHVnaW4tZGVyaXZlZCBJRHMsXG4gKiB3aGljaCBhbHdheXMgdXNlIHJlYWwgcmVsYXRpdmUgbW9kdWxlIHBhdGhzIChgLi/igKZgIC8gYC4uL+KApmApLlxuICovXG5leHBvcnQgY29uc3QgUlVOX0NMQVNTX0lEID0gJ2NsYXNzLy93b3JrZmxvdy8vUnVuJztcblxuLyoqXG4gKiBSZWdpc3RlciBhbiBhZGRpdGlvbmFsIHJlZ2lzdHJ5IElEIGZvciBhIGNsYXNzIHdpdGhvdXQgdG91Y2hpbmcgaXRzXG4gKiBgY2xhc3NJZGAgcHJvcGVydHkuXG4gKlxuICogVW5saWtlIHtAbGluayByZWdpc3RlclNlcmlhbGl6YXRpb25DbGFzc30sIHRoaXMgaXMgc2FmZSB0byBjYWxsIGZvciBhXG4gKiBjbGFzcyB0aGUgU1dDIHBsdWdpbiBoYXMgYWxyZWFkeSByZWdpc3RlcmVkOiB0aGUgcGx1Z2luJ3MgaW5saW5lZCBJSUZFXG4gKiBkZWZpbmVzIGBjbGFzc0lkYCBhcyBub24tY29uZmlndXJhYmxlLCBzbyBhIHNlY29uZCBgZGVmaW5lUHJvcGVydHlgXG4gKiB3b3VsZCB0aHJvdy4gQWxpYXNpbmcgb25seSBhZGRzIGEgcmVnaXN0cnkgZW50cnk6IHRoZSBjbGFzcyBrZWVwc1xuICogc2VyaWFsaXppbmcgdW5kZXIgaXRzIHByaW1hcnkgKHBhdGgtZGVyaXZlZCkgaWQsIHdoaWxlIGxvb2t1cHMgc3VjY2VlZFxuICogdW5kZXIgYm90aCBJRHMuXG4gKlxuICogUmVnaXN0cmF0aW9uIGlzIHBlci1nbG9iYWwgYnkgY29uc3RydWN0aW9uOiBldmFsdWF0ZWQgaW5zaWRlIHRoZVxuICogd29ya2Zsb3cgVk0gaXQgcmVnaXN0ZXJzIHRoZSBWTSdzIGNvbXBpbGVkIGNsYXNzIG9uIHRoZSBWTSdzIHJlZ2lzdHJ5O1xuICogZXZhbHVhdGVkIG9uIHRoZSBob3N0IGl0IHJlZ2lzdGVycyB0aGUgaG9zdCBjbGFzcyBvbiB0aGUgaG9zdCdzXG4gKiByZWdpc3RyeS4gRWFjaCBjb250ZXh0IHJlc29sdmVzIGl0cyBvd24gY29ycmVjdCB2YXJpYW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxpYXNTZXJpYWxpemF0aW9uQ2xhc3MoXG4gIGNsYXNzSWQ6IHN0cmluZyxcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS9ub0Jhbm5lZFR5cGVzOiBXZSBuZWVkIHRvIHVzZSBGdW5jdGlvbiB0byByZXByZXNlbnQgY2xhc3MgY29uc3RydWN0b3JzXG4gIGNsczogRnVuY3Rpb24sXG4gIGdsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXNcbikge1xuICBnZXRSZWdpc3RyeShnbG9iYWwpLnNldChjbGFzc0lkLCBjbHMpO1xufVxuXG4vKipcbiAqIEZpbmQgYSByZWdpc3RlcmVkIGNsYXNzIGNvbnN0cnVjdG9yIGJ5IElEICh1c2VkIGR1cmluZyBkZXNlcmlhbGl6YXRpb24pXG4gKlxuICogQHBhcmFtIGNsYXNzSWQgLSBUaGUgY2xhc3MgSUQgdG8gbG9vayB1cFxuICogQHBhcmFtIGdsb2JhbCAtIFRoZSBnbG9iYWwgb2JqZWN0IHRvIGNoZWNrLiBUaGlzIGVuc3VyZXMgd29ya2Zsb3cgY29kZSBydW5uaW5nXG4gKiAgICAgICAgICAgICAgICAgaW4gYSBWTSBvbmx5IGFjY2Vzc2VzIGNsYXNzZXMgcmVnaXN0ZXJlZCBvbiB0aGUgVk0ncyBnbG9iYWwsXG4gKiAgICAgICAgICAgICAgICAgbWF0Y2hpbmcgcHJvZHVjdGlvbiBzZXJ2ZXJsZXNzIGJlaGF2aW9yIHdoZXJlIHdvcmtmbG93IGNvZGVcbiAqICAgICAgICAgICAgICAgICBydW5zIGluIGlzb2xhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcmlhbGl6YXRpb25DbGFzcyhcbiAgY2xhc3NJZDogc3RyaW5nLFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS9ub0Jhbm5lZFR5cGVzOiBXZSBuZWVkIHRvIHVzZSBGdW5jdGlvbiB0byByZXByZXNlbnQgY2xhc3MgY29uc3RydWN0b3JzXG4pOiBGdW5jdGlvbiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBnZXRSZWdpc3RyeShnbG9iYWwpLmdldChjbGFzc0lkKTtcbn1cbiJdfQ==
|
package/dist/classify-error.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { type RunErrorCode } from '@workflow/errors';
|
|
1
|
+
import { type RunErrorCode, WorkflowWorldError } from '@workflow/errors';
|
|
2
2
|
/**
|
|
3
3
|
* Classify an error that caused a workflow run to fail.
|
|
4
4
|
*
|
|
5
5
|
* After the structural separation of infrastructure vs user code error
|
|
6
6
|
* handling, the only errors that reach the `run_failed` try/catch are:
|
|
7
7
|
* - User code errors (throws from workflow functions, propagated step failures)
|
|
8
|
-
* - WorkflowRuntimeError and subclasses (
|
|
9
|
-
*
|
|
8
|
+
* - WorkflowRuntimeError and subclasses (missing timestamps, workflow/step
|
|
9
|
+
* not registered, corrupted event log, etc.)
|
|
10
10
|
*
|
|
11
11
|
* Uses each subclass's `.is()` static (a name-based duck check) instead of
|
|
12
12
|
* a single `instanceof` check because workflows execute in a separate
|
|
@@ -15,5 +15,21 @@ import { type RunErrorCode } from '@workflow/errors';
|
|
|
15
15
|
* thrown inside the workflow VM and we'd misclassify genuine runtime
|
|
16
16
|
* errors as user errors.
|
|
17
17
|
*/
|
|
18
|
+
export declare function isWorldContractError(err: unknown): err is WorkflowWorldError;
|
|
19
|
+
/**
|
|
20
|
+
* True when an error from a world (workflow-server) call is a transient
|
|
21
|
+
* infrastructure failure that should be retried by redelivering the queue
|
|
22
|
+
* message, rather than failing the run. A fresh invocation will likely
|
|
23
|
+
* succeed once the backend (or the firewall in front of it) recovers.
|
|
24
|
+
*
|
|
25
|
+
* - `ThrottleError` (429): rate limited / load shed
|
|
26
|
+
* - `WorkflowWorldError` with `status >= 500`: server-side error
|
|
27
|
+
* - `WorkflowWorldError` with a retryable transport `code` (`TRANSPORT` /
|
|
28
|
+
* `TIMEOUT`): the request never produced a usable response
|
|
29
|
+
*
|
|
30
|
+
* Uses `.is()` name-based duck checks (not `instanceof`) for the same
|
|
31
|
+
* cross-`vm`-realm reason described on `classifyRunError`.
|
|
32
|
+
*/
|
|
33
|
+
export declare function isRetryableWorldError(err: unknown): boolean;
|
|
18
34
|
export declare function classifyRunError(err: unknown): RunErrorCode;
|
|
19
35
|
//# sourceMappingURL=classify-error.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classify-error.d.ts","sourceRoot":"","sources":["../src/classify-error.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"classify-error.d.ts","sourceRoot":"","sources":["../src/classify-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EAQjB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AA0C1B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,kBAAkB,CAe5E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAc3D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAsC3D"}
|