@workflow/core 5.0.0-beta.43 → 5.0.0-beta.44
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/capabilities.d.ts +4 -4
- package/dist/capabilities.js +5 -5
- package/dist/capture-stack.d.ts +1 -1
- package/dist/capture-stack.js +2 -2
- package/dist/class-serialization.d.ts +8 -8
- package/dist/class-serialization.js +9 -9
- package/dist/classify-error.js +5 -5
- 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 +5 -5
- package/dist/create-hook.d.ts +2 -2
- 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.js +8 -8
- package/dist/encryption.d.ts +5 -5
- package/dist/encryption.js +7 -7
- package/dist/events-consumer.d.ts +19 -7
- package/dist/events-consumer.d.ts.map +1 -1
- package/dist/events-consumer.js +33 -12
- package/dist/flushable-stream.d.ts +4 -4
- package/dist/flushable-stream.js +12 -12
- package/dist/global.d.ts +1 -1
- package/dist/global.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/log-format.d.ts +2 -2
- package/dist/log-format.js +5 -5
- package/dist/logger.js +4 -4
- package/dist/private.d.ts +21 -65
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +160 -38
- package/dist/replay-payload-cache.d.ts +1 -1
- package/dist/replay-payload-cache.js +4 -4
- package/dist/runtime/compute-instance.d.ts +4 -3
- package/dist/runtime/compute-instance.d.ts.map +1 -1
- package/dist/runtime/compute-instance.js +5 -4
- package/dist/runtime/constants.d.ts +24 -24
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +49 -43
- package/dist/runtime/count-step-started-events.d.ts +7 -7
- package/dist/runtime/count-step-started-events.js +4 -4
- package/dist/runtime/deployment-guard.d.ts +7 -7
- package/dist/runtime/deployment-guard.js +8 -8
- package/dist/runtime/get-port-lazy.d.ts +2 -2
- package/dist/runtime/get-port-lazy.d.ts.map +1 -1
- package/dist/runtime/get-port-lazy.js +37 -30
- package/dist/runtime/get-world-lazy.d.ts +2 -2
- package/dist/runtime/get-world-lazy.js +3 -3
- package/dist/runtime/helpers.d.ts +18 -18
- package/dist/runtime/helpers.js +27 -27
- package/dist/runtime/quickjs-entrypoint.d.ts +21 -10
- package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -1
- package/dist/runtime/quickjs-entrypoint.js +199 -81
- package/dist/runtime/quickjs-runtime.d.ts +31 -15
- package/dist/runtime/quickjs-runtime.d.ts.map +1 -1
- package/dist/runtime/quickjs-runtime.js +126 -77
- package/dist/runtime/quickjs-serde.d.ts +10 -10
- package/dist/runtime/quickjs-serde.js +20 -20
- package/dist/runtime/replay-budget.d.ts +4 -4
- package/dist/runtime/replay-budget.js +5 -5
- package/dist/runtime/replay-recovery-reporter.d.ts +1 -1
- package/dist/runtime/replay-recovery-reporter.js +2 -2
- package/dist/runtime/resume-hook.d.ts +2 -2
- package/dist/runtime/resume-hook.js +27 -27
- package/dist/runtime/resume-latency.d.ts +25 -25
- package/dist/runtime/resume-latency.d.ts.map +1 -1
- package/dist/runtime/resume-latency.js +4 -4
- package/dist/runtime/run-id-time.d.ts +2 -2
- package/dist/runtime/run-id-time.js +5 -5
- package/dist/runtime/run.d.ts +21 -4
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +104 -10
- package/dist/runtime/runs.d.ts +4 -4
- package/dist/runtime/runs.js +2 -2
- package/dist/runtime/start.d.ts +3 -3
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js +27 -23
- package/dist/runtime/step-executor.d.ts +14 -14
- package/dist/runtime/step-executor.d.ts.map +1 -1
- package/dist/runtime/step-executor.js +54 -39
- package/dist/runtime/step-latency.d.ts +14 -14
- package/dist/runtime/step-latency.js +11 -11
- package/dist/runtime/step-ownership.d.ts +6 -6
- package/dist/runtime/step-ownership.js +8 -8
- package/dist/runtime/step-single-flight.d.ts +1 -1
- package/dist/runtime/step-single-flight.d.ts.map +1 -1
- package/dist/runtime/step-single-flight.js +17 -11
- package/dist/runtime/suspension-handler.d.ts +29 -17
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +206 -71
- 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 +1 -1
- package/dist/runtime/vm-mode.js +2 -2
- package/dist/runtime/wait-continuation.d.ts +31 -9
- package/dist/runtime/wait-continuation.d.ts.map +1 -1
- package/dist/runtime/wait-continuation.js +44 -13
- package/dist/runtime/wait-until.d.ts +1 -1
- package/dist/runtime/wait-until.js +2 -2
- package/dist/runtime/world-compatibility.d.ts +20 -9
- package/dist/runtime/world-compatibility.d.ts.map +1 -1
- package/dist/runtime/world-compatibility.js +24 -13
- package/dist/runtime/world-init.d.ts +5 -5
- package/dist/runtime/world-init.js +6 -6
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +13 -3
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +300 -206
- package/dist/sealed-box.d.ts +7 -7
- package/dist/sealed-box.js +15 -15
- package/dist/serialization/client.js +2 -2
- package/dist/serialization/codec-devalue-vm.d.ts +1 -1
- package/dist/serialization/codec-devalue-vm.js +4 -4
- package/dist/serialization/codec-devalue.d.ts +1 -1
- package/dist/serialization/codec-devalue.js +2 -2
- package/dist/serialization/codec.d.ts +4 -4
- package/dist/serialization/codec.js +2 -2
- package/dist/serialization/compression.d.ts +12 -11
- package/dist/serialization/compression.d.ts.map +1 -1
- package/dist/serialization/compression.js +16 -15
- package/dist/serialization/encryption.d.ts +7 -7
- package/dist/serialization/encryption.d.ts.map +1 -1
- package/dist/serialization/encryption.js +8 -8
- package/dist/serialization/errors.js +2 -2
- package/dist/serialization/format.d.ts +6 -6
- package/dist/serialization/format.js +7 -7
- package/dist/serialization/hardened.d.ts +18 -18
- package/dist/serialization/hardened.d.ts.map +1 -1
- package/dist/serialization/hardened.js +41 -32
- package/dist/serialization/index.d.ts +1 -1
- package/dist/serialization/index.js +2 -2
- package/dist/serialization/reducers/class-vm.d.ts +1 -1
- package/dist/serialization/reducers/class-vm.js +2 -2
- package/dist/serialization/reducers/class.js +2 -2
- package/dist/serialization/reducers/common-vm.js +12 -12
- package/dist/serialization/reducers/common.js +12 -12
- package/dist/serialization/reducers/step-function-vm.d.ts +1 -1
- package/dist/serialization/reducers/step-function-vm.js +2 -2
- package/dist/serialization/reducers/step-function.js +2 -2
- package/dist/serialization/step.js +2 -2
- package/dist/serialization/types.d.ts +5 -5
- package/dist/serialization/types.js +2 -2
- package/dist/serialization/workflow-vm.d.ts +1 -1
- package/dist/serialization/workflow-vm.d.ts.map +1 -1
- package/dist/serialization/workflow-vm.js +13 -10
- package/dist/serialization-format.d.ts +11 -11
- package/dist/serialization-format.d.ts.map +1 -1
- package/dist/serialization-format.js +29 -23
- package/dist/serialization.d.ts +10 -10
- package/dist/serialization.js +98 -98
- package/dist/set-attributes.js +2 -2
- package/dist/source-map.d.ts +1 -1
- package/dist/source-map.d.ts.map +1 -1
- package/dist/source-map.js +18 -12
- package/dist/step/context-storage.d.ts +5 -5
- package/dist/step/context-storage.js +1 -1
- package/dist/step/writable-stream.d.ts +3 -3
- package/dist/step/writable-stream.js +7 -7
- package/dist/step.js +12 -12
- package/dist/symbols.d.ts +2 -2
- package/dist/symbols.js +3 -3
- package/dist/telemetry/semantic-conventions.d.ts +21 -13
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +21 -15
- package/dist/telemetry.d.ts +3 -3
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +19 -10
- package/dist/test-support/orchestrator-context.d.ts.map +1 -1
- package/dist/test-support/orchestrator-context.js +12 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +2 -2
- package/dist/vm/index.js +4 -4
- package/dist/vm/script-cache.d.ts.map +1 -1
- package/dist/vm/script-cache.js +23 -17
- package/dist/vm/uint8array-base64.js +1 -1
- package/dist/workflow/abort-controller.d.ts +1 -1
- package/dist/workflow/abort-controller.js +12 -12
- package/dist/workflow/create-hook.js +2 -2
- package/dist/workflow/get-workflow-metadata.js +2 -2
- package/dist/workflow/hook.js +16 -16
- package/dist/workflow/set-attributes.d.ts +1 -1
- package/dist/workflow/set-attributes.js +2 -2
- package/dist/workflow/sleep.js +2 -2
- package/dist/workflow/world-init-stub.d.ts +1 -1
- package/dist/workflow/world-init-stub.js +2 -2
- package/dist/workflow.d.ts +2 -2
- package/dist/workflow.js +21 -7
- package/docs/api-reference/create-hook.mdx +15 -15
- package/docs/api-reference/create-webhook.mdx +15 -15
- package/docs/api-reference/define-hook.mdx +10 -10
- package/docs/api-reference/fatal-error.mdx +2 -2
- package/docs/api-reference/fetch.mdx +7 -7
- 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 +1 -1
- package/docs/api-reference/retryable-error.mdx +1 -1
- package/docs/api-reference/set-attributes.mdx +2 -2
- package/docs/api-reference/sleep.mdx +3 -3
- package/docs/foundations/cancellation.mdx +31 -31
- package/docs/foundations/errors-and-retries.mdx +42 -11
- package/docs/foundations/hooks.mdx +35 -35
- package/docs/foundations/idempotency.mdx +9 -9
- package/docs/foundations/serialization.mdx +21 -22
- package/docs/foundations/starting-workflows.mdx +36 -37
- package/docs/foundations/streaming.mdx +46 -41
- package/docs/foundations/versioning.mdx +3 -3
- package/docs/foundations/workflows-and-steps.mdx +9 -9
- package/docs/how-it-works/cancellation.mdx +62 -62
- package/docs/how-it-works/code-transform.mdx +66 -54
- package/docs/how-it-works/encryption.mdx +25 -21
- package/docs/how-it-works/event-sourcing.mdx +53 -35
- package/docs/how-it-works/framework-integrations.mdx +12 -12
- package/docs/how-it-works/understanding-directives.mdx +21 -21
- package/package.json +7 -7
|
@@ -34,7 +34,7 @@ export declare class ReplayPayloadCache {
|
|
|
34
34
|
* Required before a replay whose event log was reloaded rather than extended:
|
|
35
35
|
* a corrected log inserts the events the previous load was missing, which
|
|
36
36
|
* shifts every later position, so a positional resume would skip exactly the
|
|
37
|
-
* events the reload was for. Already-prepared payloads are kept
|
|
37
|
+
* events the reload was for. Already-prepared payloads are kept: they are
|
|
38
38
|
* keyed by event id, so re-scanning re-observes them for free.
|
|
39
39
|
*/
|
|
40
40
|
resetScan(): void;
|
|
@@ -59,8 +59,8 @@ export class ReplayPayloadCache {
|
|
|
59
59
|
// This cache is scoped to one invocation. Incremental loads and write
|
|
60
60
|
// response deltas only ever append, so the scanned length locates the
|
|
61
61
|
// events added since the previous replay. A reload that can insert events
|
|
62
|
-
// BELOW that length
|
|
63
|
-
// corrected one
|
|
62
|
+
// BELOW that length (a stale-snapshot restart replacing the log with a
|
|
63
|
+
// corrected one) must call `resetScan()` first, or the inserted events are
|
|
64
64
|
// never scanned. Prepared entries stay valid across that: they are keyed by
|
|
65
65
|
// event id, not by position.
|
|
66
66
|
for (let index = this.nextUnscannedEventIndex; index < events.length; index++) {
|
|
@@ -89,7 +89,7 @@ export class ReplayPayloadCache {
|
|
|
89
89
|
* Required before a replay whose event log was reloaded rather than extended:
|
|
90
90
|
* a corrected log inserts the events the previous load was missing, which
|
|
91
91
|
* shifts every later position, so a positional resume would skip exactly the
|
|
92
|
-
* events the reload was for. Already-prepared payloads are kept
|
|
92
|
+
* events the reload was for. Already-prepared payloads are kept: they are
|
|
93
93
|
* keyed by event id, so re-scanning re-observes them for free.
|
|
94
94
|
*/
|
|
95
95
|
resetScan() {
|
|
@@ -157,4 +157,4 @@ export class ReplayPayloadCache {
|
|
|
157
157
|
return `event:${eventId}:${field}`;
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGF5LXBheWxvYWQtY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVwbGF5LXBheWxvYWQtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUVMLG9CQUFvQixHQUVyQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE1BQU0sNkJBQTZCLEdBQUcsSUFBSSxDQUFDO0FBRzNDLFNBQVMscUJBQXFCLENBQUMsS0FBYztJQUMzQyxJQUFJLEtBQUssS0FBSyxJQUFJO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDaEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxLQUFLLENBQUM7SUFDMUIsSUFBSSxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxVQUFVO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDM0QsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDdEIsT0FBUSxLQUFnQixDQUFDLE1BQU0sSUFBSSw2QkFBNkIsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDdEIsT0FBUSxLQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sSUFBSSw2QkFBNkIsQ0FBQztJQUM5RSxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBU1Y7SUFDQTtJQVRGLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUd4QyxDQUFDO0lBQ2Esb0JBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7SUFDM0QsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDO0lBRXBDLFlBQ21CLGFBQXFDLEVBQ3JDLFdBQWtDLG9CQUFvQjtRQUR0RCxrQkFBYSxHQUFiLGFBQWEsQ0FBd0I7UUFDckMsYUFBUSxHQUFSLFFBQVEsQ0FBOEM7SUFDdEUsQ0FBQztJQUVKOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsT0FB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QyxDQUFDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnRkFBZ0Y7SUFDeEUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFjO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFhO1FBQ3BDLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQWUsRUFBRSxLQUF5QjtRQUNoRSxPQUFPLFNBQVMsT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXZlbnQsIFdvcmtmbG93UnVuIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB0eXBlIHsgUGF5bG9hZEtleSB9IGZyb20gJy4vc2VyaWFsaXphdGlvbi9lbmNyeXB0aW9uLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgUHJlcGFyZWRSZXBsYXlQYXlsb2FkLFxuICBwcmVwYXJlUmVwbGF5UGF5bG9hZCxcbiAgdHlwZSBSZXBsYXlQYXlsb2FkUHJlcGFyZXIsXG59IGZyb20gJy4vc2VyaWFsaXphdGlvbi5qcyc7XG5cbmNvbnN0IE1BWF9NRU1PSVpFRF9QUklNSVRJVkVfTEVOR1RIID0gNDA5NjtcbnR5cGUgUmVwbGF5UGF5bG9hZEZpZWxkID0gJ3Jlc3VsdCcgfCAnZXJyb3InIHwgJ3BheWxvYWQnO1xuXG5mdW5jdGlvbiBpc01lbW9pemFibGVQcmltaXRpdmUodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgaWYgKHR5cGUgPT09ICdvYmplY3QnIHx8IHR5cGUgPT09ICdmdW5jdGlvbicpIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuICh2YWx1ZSBhcyBzdHJpbmcpLmxlbmd0aCA8PSBNQVhfTUVNT0laRURfUFJJTUlUSVZFX0xFTkdUSDtcbiAgfVxuICBpZiAodHlwZSA9PT0gJ2JpZ2ludCcpIHtcbiAgICByZXR1cm4gKHZhbHVlIGFzIGJpZ2ludCkudG9TdHJpbmcoKS5sZW5ndGggPD0gTUFYX01FTU9JWkVEX1BSSU1JVElWRV9MRU5HVEg7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogSW52b2NhdGlvbi1zY29wZWQgY2FjaGUgZm9yIHJlcGxheSBwYXlsb2FkIGh5ZHJhdGlvbi5cbiAqXG4gKiBBIHdvcmtmbG93IGludm9jYXRpb24gbWF5IHJlcGxheSB0aGUgc2FtZSBldmVudCBsb2cgdGhyb3VnaCBzZXZlcmFsIGZyZXNoXG4gKiBWTXMuIFRoaXMgY2FjaGUga2VlcHMgdGhlIFZNLWluZGVwZW5kZW50IGRlY3J5cHQvZGVjb21wcmVzcyByZXN1bHQgYWNyb3NzXG4gKiB0aG9zZSByZXBsYXlzLiBEZXNlcmlhbGl6YXRpb24gc3RpbGwgcnVucyBhZ2FpbnN0IGVhY2ggVk0ncyBnbG9iYWxzIHNvIGV2ZXJ5XG4gKiByZXBsYXkgcmVjZWl2ZXMgZnJlc2ggb2JqZWN0IGdyYXBocyBhbmQgY29ycmVjdGx5IHJldml2ZWQgV29ya2Zsb3cgb2JqZWN0cy5cbiAqXG4gKiBTdWNjZXNzZnVsIHByZXBhcmVkIHBsYWludGV4dCByZW1haW5zIHJlc2lkZW50IGZvciB0aGUgaW52b2NhdGlvbiBsaWZldGltZS5cbiAqIEl0cyBtZW1vcnkgY29zdCBpcyB0aGUgc3VtIG9mIGRlY3J5cHRlZCBhbmQgZGVjb21wcmVzc2VkIHBheWxvYWQgc2l6ZXMsIGJ1dFxuICogaXQgbmV2ZXIgY3Jvc3NlcyB3b3JrZmxvdyBydW5zIG9yIHF1ZXVlIGRlbGl2ZXJpZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXBsYXlQYXlsb2FkQ2FjaGUge1xuICBwcml2YXRlIHJlYWRvbmx5IHByZXBhcmVkUGF5bG9hZHMgPSBuZXcgTWFwPFxuICAgIHN0cmluZyxcbiAgICBQcm9taXNlPFByZXBhcmVkUmVwbGF5UGF5bG9hZD5cbiAgPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHByaW1pdGl2ZVN0ZXBSZXN1bHRzID0gbmV3IE1hcDxzdHJpbmcsIHVua25vd24+KCk7XG4gIHByaXZhdGUgbmV4dFVuc2Nhbm5lZEV2ZW50SW5kZXggPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZW5jcnlwdGlvbktleTogUGF5bG9hZEtleSB8IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByZXBhcmVyOiBSZXBsYXlQYXlsb2FkUHJlcGFyZXIgPSBwcmVwYXJlUmVwbGF5UGF5bG9hZFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGV2ZXJ5IG1pc3NpbmcgYmluYXJ5IHByZXBhcmF0aW9uIGJlZm9yZSB3b3JrZmxvdyBleGVjdXRpb24uIEZhaWx1cmVzXG4gICAqIGFyZSBpbnRlbnRpb25hbGx5IHJldGFpbmVkOiB0aGUgb3JkZXJlZCBldmVudCBjb25zdW1lciBtdXN0IG9ic2VydmUgdGhlXG4gICAqIG9yaWdpbmFsIHJlamVjdGlvbiBiZWZvcmUgdGhhdCBlbnRyeSBiZWNvbWVzIHJldHJ5YWJsZS5cbiAgICovXG4gIGFzeW5jIHByZXdhcm0od29ya2Zsb3dSdW46IFdvcmtmbG93UnVuLCBldmVudHM6IEV2ZW50W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcmVwYXJhdGlvbnM6IFByb21pc2U8UHJlcGFyZWRSZXBsYXlQYXlsb2FkPltdID0gW107XG4gICAgY29uc3Qgc3RhcnQgPSAoY2FjaGVLZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkID0+IHtcbiAgICAgIC8vIExlZ2FjeSBmbGF0dGVuZWQgdmFsdWVzIG1heSBiZSBtdXRhdGVkIGJ5IGRldmFsdWUncyB1bmZsYXR0ZW4gYW5kIGFyZVxuICAgICAgLy8gdGhlcmVmb3JlIHByZXBhcmVkIG9ubHkgYnkgdGhlaXIgZXZlbnR1YWwgY29uc3VtZXIsIG5ldmVyIGNhY2hlZC5cbiAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHJldHVybjtcblxuICAgICAgLy8gRWFjaCByZXBsYXkgc2NhbnMgdGhlIGZ1bGwgZXZlbnQgbG9nLCBzbyBhd2FpdGluZyBjYWNoZWQgcHJvbWlzZXMgaGVyZVxuICAgICAgLy8gd291bGQgYWRkIE8oTl4yKSBwcm9taXNlIHJlYWN0aW9ucyBvdmVyIGFuIE4tc3RlcCBpbnZvY2F0aW9uLiBPbmx5IHdhaXRcbiAgICAgIC8vIGZvciBwcmVwYXJhdGlvbnMgZmlyc3QgZGlzY292ZXJlZCBieSB0aGlzIHByZXdhcm0gcGFzcy5cbiAgICAgIGlmICh0aGlzLnByZXBhcmVkUGF5bG9hZHMuaGFzKGNhY2hlS2V5KSkgcmV0dXJuO1xuICAgICAgcHJlcGFyYXRpb25zLnB1c2godGhpcy5lbnN1cmVQcmVwYXJhdGlvbihjYWNoZUtleSwgdmFsdWUpKTtcbiAgICB9O1xuXG4gICAgc3RhcnQodGhpcy53b3JrZmxvd0lucHV0S2V5KHdvcmtmbG93UnVuLnJ1bklkKSwgd29ya2Zsb3dSdW4uaW5wdXQpO1xuICAgIC8vIFRoaXMgY2FjaGUgaXMgc2NvcGVkIHRvIG9uZSBpbnZvY2F0aW9uLiBJbmNyZW1lbnRhbCBsb2FkcyBhbmQgd3JpdGVcbiAgICAvLyByZXNwb25zZSBkZWx0YXMgb25seSBldmVyIGFwcGVuZCwgc28gdGhlIHNjYW5uZWQgbGVuZ3RoIGxvY2F0ZXMgdGhlXG4gICAgLy8gZXZlbnRzIGFkZGVkIHNpbmNlIHRoZSBwcmV2aW91cyByZXBsYXkuIEEgcmVsb2FkIHRoYXQgY2FuIGluc2VydCBldmVudHNcbiAgICAvLyBCRUxPVyB0aGF0IGxlbmd0aCDigJQgYSBzdGFsZS1zbmFwc2hvdCByZXN0YXJ0IHJlcGxhY2luZyB0aGUgbG9nIHdpdGggYVxuICAgIC8vIGNvcnJlY3RlZCBvbmUg4oCUIG11c3QgY2FsbCBgcmVzZXRTY2FuKClgIGZpcnN0LCBvciB0aGUgaW5zZXJ0ZWQgZXZlbnRzIGFyZVxuICAgIC8vIG5ldmVyIHNjYW5uZWQuIFByZXBhcmVkIGVudHJpZXMgc3RheSB2YWxpZCBhY3Jvc3MgdGhhdDogdGhleSBhcmUga2V5ZWQgYnlcbiAgICAvLyBldmVudCBpZCwgbm90IGJ5IHBvc2l0aW9uLlxuICAgIGZvciAoXG4gICAgICBsZXQgaW5kZXggPSB0aGlzLm5leHRVbnNjYW5uZWRFdmVudEluZGV4O1xuICAgICAgaW5kZXggPCBldmVudHMubGVuZ3RoO1xuICAgICAgaW5kZXgrK1xuICAgICkge1xuICAgICAgY29uc3QgZXZlbnQgPSBldmVudHNbaW5kZXhdO1xuICAgICAgc3dpdGNoIChldmVudC5ldmVudFR5cGUpIHtcbiAgICAgICAgY2FzZSAnc3RlcF9jb21wbGV0ZWQnOlxuICAgICAgICAgIHN0YXJ0KFxuICAgICAgICAgICAgdGhpcy5ldmVudFBheWxvYWRLZXkoZXZlbnQuZXZlbnRJZCwgJ3Jlc3VsdCcpLFxuICAgICAgICAgICAgZXZlbnQuZXZlbnREYXRhPy5yZXN1bHRcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzdGVwX2ZhaWxlZCc6XG4gICAgICAgICAgc3RhcnQoXG4gICAgICAgICAgICB0aGlzLmV2ZW50UGF5bG9hZEtleShldmVudC5ldmVudElkLCAnZXJyb3InKSxcbiAgICAgICAgICAgIGV2ZW50LmV2ZW50RGF0YT8uZXJyb3JcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdob29rX3JlY2VpdmVkJzpcbiAgICAgICAgICBzdGFydChcbiAgICAgICAgICAgIHRoaXMuZXZlbnRQYXlsb2FkS2V5KGV2ZW50LmV2ZW50SWQsICdwYXlsb2FkJyksXG4gICAgICAgICAgICBldmVudC5ldmVudERhdGE/LnBheWxvYWRcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm5leHRVbnNjYW5uZWRFdmVudEluZGV4ID0gZXZlbnRzLmxlbmd0aDtcblxuICAgIC8vIFByZXdhcm1pbmcgaXMgc3BlY3VsYXRpdmUgYW5kIG11c3Qgbm90IGZhaWwgcmVwbGF5IGJlZm9yZSB0aGUgbWF0Y2hpbmdcbiAgICAvLyBldmVudCBpcyBjb25zdW1lZC4gYWxsU2V0dGxlZCBhbHNvIGF0dGFjaGVzIHJlamVjdGlvbiBoYW5kbGVycyBlYWdlcmx5LlxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChwcmVwYXJhdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcmdldCBob3cgbXVjaCBvZiB0aGUgZXZlbnQgbG9nIGhhcyBiZWVuIHNjYW5uZWQsIHNvIHRoZSBuZXh0XG4gICAqIHtAbGluayBwcmV3YXJtfSB3YWxrcyBpdCBmcm9tIHRoZSBzdGFydCBhZ2Fpbi5cbiAgICpcbiAgICogUmVxdWlyZWQgYmVmb3JlIGEgcmVwbGF5IHdob3NlIGV2ZW50IGxvZyB3YXMgcmVsb2FkZWQgcmF0aGVyIHRoYW4gZXh0ZW5kZWQ6XG4gICAqIGEgY29ycmVjdGVkIGxvZyBpbnNlcnRzIHRoZSBldmVudHMgdGhlIHByZXZpb3VzIGxvYWQgd2FzIG1pc3NpbmcsIHdoaWNoXG4gICAqIHNoaWZ0cyBldmVyeSBsYXRlciBwb3NpdGlvbiwgc28gYSBwb3NpdGlvbmFsIHJlc3VtZSB3b3VsZCBza2lwIGV4YWN0bHkgdGhlXG4gICAqIGV2ZW50cyB0aGUgcmVsb2FkIHdhcyBmb3IuIEFscmVhZHktcHJlcGFyZWQgcGF5bG9hZHMgYXJlIGtlcHQg4oCUIHRoZXkgYXJlXG4gICAqIGtleWVkIGJ5IGV2ZW50IGlkLCBzbyByZS1zY2FubmluZyByZS1vYnNlcnZlcyB0aGVtIGZvciBmcmVlLlxuICAgKi9cbiAgcmVzZXRTY2FuKCk6IHZvaWQge1xuICAgIHRoaXMubmV4dFVuc2Nhbm5lZEV2ZW50SW5kZXggPSAwO1xuICB9XG5cbiAgLyoqIFJldHVybiB0aGUgd29ya2Zsb3cgaW5wdXQgYWZ0ZXIgc2hhcmVkIGhvc3Qtc2lkZSBwcmVwYXJhdGlvbi4gKi9cbiAgcHJlcGFyZVdvcmtmbG93SW5wdXQoXG4gICAgd29ya2Zsb3dSdW46IFdvcmtmbG93UnVuXG4gICk6IFByb21pc2U8UHJlcGFyZWRSZXBsYXlQYXlsb2FkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3VtZVByZXBhcmF0aW9uKFxuICAgICAgdGhpcy53b3JrZmxvd0lucHV0S2V5KHdvcmtmbG93UnVuLnJ1bklkKSxcbiAgICAgIHdvcmtmbG93UnVuLmlucHV0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gZXZlbnQgcGF5bG9hZCBhZnRlciBzaGFyZWQgaG9zdC1zaWRlIHByZXBhcmF0aW9uLiBBIHJlamVjdGVkXG4gICAqIHByZXBhcmF0aW9uIGlzIGV2aWN0ZWQgb25seSBhZnRlciB0aGlzIG9yZGVyZWQgY29uc3VtZXIgcmVxdWVzdHMgaXQsIHNvIGFcbiAgICogbGF0ZXIgcmVwbGF5IGNhbiByZXRyeSB3aXRob3V0IGhpZGluZyB0aGUgb3JpZ2luYWwgZmFpbHVyZS5cbiAgICovXG4gIHByZXBhcmVFdmVudFBheWxvYWQoXG4gICAgZXZlbnRJZDogc3RyaW5nLFxuICAgIGZpZWxkOiBSZXBsYXlQYXlsb2FkRmllbGQsXG4gICAgdmFsdWU6IHVua25vd25cbiAgKTogUHJvbWlzZTxQcmVwYXJlZFJlcGxheVBheWxvYWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb25zdW1lUHJlcGFyYXRpb24odGhpcy5ldmVudFBheWxvYWRLZXkoZXZlbnRJZCwgZmllbGQpLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV1c2UgZmluYWwgc3RlcCB2YWx1ZXMgb25seSB3aGVuIHNoYXJpbmcgdGhlbSBhY3Jvc3MgVk1zIGlzIHVub2JzZXJ2YWJsZS5cbiAgICogT2JqZWN0cyBhbmQgbGFyZ2Ugc3RyaW5ncy9iaWdpbnRzIGFsd2F5cyBydW4gYGh5ZHJhdGVgIGFnYWluLCBwcm9kdWNpbmcgYVxuICAgKiBmcmVzaCBWTS1zcGVjaWZpYyB2YWx1ZSBmcm9tIHRoZSBzZXBhcmF0ZWx5IGNhY2hlZCBwcmVwYXJlZCBwYXlsb2FkLlxuICAgKi9cbiAgYXN5bmMgZ2V0U3RlcFJlc3VsdChcbiAgICBldmVudElkOiBzdHJpbmcsXG4gICAgaHlkcmF0ZTogKCkgPT4gUHJvbWlzZTx1bmtub3duPlxuICApOiBQcm9taXNlPHVua25vd24+IHtcbiAgICBpZiAodGhpcy5wcmltaXRpdmVTdGVwUmVzdWx0cy5oYXMoZXZlbnRJZCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnByaW1pdGl2ZVN0ZXBSZXN1bHRzLmdldChldmVudElkKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IGh5ZHJhdGUoKTtcbiAgICBpZiAoaXNNZW1vaXphYmxlUHJpbWl0aXZlKHZhbHVlKSkge1xuICAgICAgdGhpcy5wcmltaXRpdmVTdGVwUmVzdWx0cy5zZXQoZXZlbnRJZCwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3VtZXItZmFjaW5nIGxvb2t1cC4gQmluYXJ5IHBheWxvYWRzIHNoYXJlIHByZXBhcmF0aW9uOyBsZWdhY3kgdmFsdWVzXG4gICAqIGJ5cGFzcyB0aGUgY2FjaGUgYmVjYXVzZSB0aGVpciBmbGF0dGVuZWQgcmVwcmVzZW50YXRpb24gbWF5IGJlIG11dGF0ZWQuXG4gICAqL1xuICBwcml2YXRlIGNvbnN1bWVQcmVwYXJhdGlvbihcbiAgICBjYWNoZUtleTogc3RyaW5nLFxuICAgIHZhbHVlOiB1bmtub3duXG4gICk6IFByb21pc2U8UHJlcGFyZWRSZXBsYXlQYXlsb2FkPiB7XG4gICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkgcmV0dXJuIHRoaXMucnVuUHJlcGFyYXRpb24odmFsdWUpO1xuXG4gICAgY29uc3QgcHJlcGFyYXRpb24gPSB0aGlzLmVuc3VyZVByZXBhcmF0aW9uKGNhY2hlS2V5LCB2YWx1ZSk7XG4gICAgdm9pZCBwcmVwYXJhdGlvbi5jYXRjaCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcmVwYXJlZFBheWxvYWRzLmdldChjYWNoZUtleSkgPT09IHByZXBhcmF0aW9uKSB7XG4gICAgICAgIHRoaXMucHJlcGFyZWRQYXlsb2Fkcy5kZWxldGUoY2FjaGVLZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcmVwYXJhdGlvbjtcbiAgfVxuXG4gIC8qKiBTdGFydCBwcmVwYXJhdGlvbiBvbmNlIGFuZCBzaGFyZSB0aGUgZXhhY3QgaW4tZmxpZ2h0IHByb21pc2UuICovXG4gIHByaXZhdGUgZW5zdXJlUHJlcGFyYXRpb24oXG4gICAgY2FjaGVLZXk6IHN0cmluZyxcbiAgICB2YWx1ZTogVWludDhBcnJheVxuICApOiBQcm9taXNlPFByZXBhcmVkUmVwbGF5UGF5bG9hZD4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMucHJlcGFyZWRQYXlsb2Fkcy5nZXQoY2FjaGVLZXkpO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG5cbiAgICBjb25zdCBwcmVwYXJhdGlvbiA9IHRoaXMucnVuUHJlcGFyYXRpb24odmFsdWUpO1xuICAgIHRoaXMucHJlcGFyZWRQYXlsb2Fkcy5zZXQoY2FjaGVLZXksIHByZXBhcmF0aW9uKTtcbiAgICByZXR1cm4gcHJlcGFyYXRpb247XG4gIH1cblxuICAvKiogTm9ybWFsaXplIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgcHJlcGFyZXJzIHRvIG9uZSBwcm9taXNlIGNvbnRyYWN0LiAqL1xuICBwcml2YXRlIGFzeW5jIHJ1blByZXBhcmF0aW9uKHZhbHVlOiB1bmtub3duKTogUHJvbWlzZTxQcmVwYXJlZFJlcGxheVBheWxvYWQ+IHtcbiAgICByZXR1cm4gdGhpcy5wcmVwYXJlcih2YWx1ZSwgdGhpcy5lbmNyeXB0aW9uS2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgd29ya2Zsb3dJbnB1dEtleShydW5JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHJ1bjoke3J1bklkfTppbnB1dGA7XG4gIH1cblxuICBwcml2YXRlIGV2ZW50UGF5bG9hZEtleShldmVudElkOiBzdHJpbmcsIGZpZWxkOiBSZXBsYXlQYXlsb2FkRmllbGQpOiBzdHJpbmcge1xuICAgIHJldHVybiBgZXZlbnQ6JHtldmVudElkfToke2ZpZWxkfWA7XG4gIH1cbn1cbiJdfQ==
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGF5LXBheWxvYWQtY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVwbGF5LXBheWxvYWQtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUVMLG9CQUFvQixHQUVyQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE1BQU0sNkJBQTZCLEdBQUcsSUFBSSxDQUFDO0FBRzNDLFNBQVMscUJBQXFCLENBQUMsS0FBYztJQUMzQyxJQUFJLEtBQUssS0FBSyxJQUFJO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDaEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxLQUFLLENBQUM7SUFDMUIsSUFBSSxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxVQUFVO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDM0QsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDdEIsT0FBUSxLQUFnQixDQUFDLE1BQU0sSUFBSSw2QkFBNkIsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDdEIsT0FBUSxLQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sSUFBSSw2QkFBNkIsQ0FBQztJQUM5RSxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBU1Y7SUFDQTtJQVRGLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUd4QyxDQUFDO0lBQ2Esb0JBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7SUFDM0QsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDO0lBRXBDLFlBQ21CLGFBQXFDLEVBQ3JDLFdBQWtDLG9CQUFvQjtRQUR0RCxrQkFBYSxHQUFiLGFBQWEsQ0FBd0I7UUFDckMsYUFBUSxHQUFSLFFBQVEsQ0FBOEM7SUFDdEUsQ0FBQztJQUVKOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsT0FB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QyxDQUFDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnRkFBZ0Y7SUFDeEUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFjO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFhO1FBQ3BDLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQWUsRUFBRSxLQUF5QjtRQUNoRSxPQUFPLFNBQVMsT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXZlbnQsIFdvcmtmbG93UnVuIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB0eXBlIHsgUGF5bG9hZEtleSB9IGZyb20gJy4vc2VyaWFsaXphdGlvbi9lbmNyeXB0aW9uLmpzJztcbmltcG9ydCB7XG4gIHR5cGUgUHJlcGFyZWRSZXBsYXlQYXlsb2FkLFxuICBwcmVwYXJlUmVwbGF5UGF5bG9hZCxcbiAgdHlwZSBSZXBsYXlQYXlsb2FkUHJlcGFyZXIsXG59IGZyb20gJy4vc2VyaWFsaXphdGlvbi5qcyc7XG5cbmNvbnN0IE1BWF9NRU1PSVpFRF9QUklNSVRJVkVfTEVOR1RIID0gNDA5NjtcbnR5cGUgUmVwbGF5UGF5bG9hZEZpZWxkID0gJ3Jlc3VsdCcgfCAnZXJyb3InIHwgJ3BheWxvYWQnO1xuXG5mdW5jdGlvbiBpc01lbW9pemFibGVQcmltaXRpdmUodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgaWYgKHR5cGUgPT09ICdvYmplY3QnIHx8IHR5cGUgPT09ICdmdW5jdGlvbicpIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuICh2YWx1ZSBhcyBzdHJpbmcpLmxlbmd0aCA8PSBNQVhfTUVNT0laRURfUFJJTUlUSVZFX0xFTkdUSDtcbiAgfVxuICBpZiAodHlwZSA9PT0gJ2JpZ2ludCcpIHtcbiAgICByZXR1cm4gKHZhbHVlIGFzIGJpZ2ludCkudG9TdHJpbmcoKS5sZW5ndGggPD0gTUFYX01FTU9JWkVEX1BSSU1JVElWRV9MRU5HVEg7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogSW52b2NhdGlvbi1zY29wZWQgY2FjaGUgZm9yIHJlcGxheSBwYXlsb2FkIGh5ZHJhdGlvbi5cbiAqXG4gKiBBIHdvcmtmbG93IGludm9jYXRpb24gbWF5IHJlcGxheSB0aGUgc2FtZSBldmVudCBsb2cgdGhyb3VnaCBzZXZlcmFsIGZyZXNoXG4gKiBWTXMuIFRoaXMgY2FjaGUga2VlcHMgdGhlIFZNLWluZGVwZW5kZW50IGRlY3J5cHQvZGVjb21wcmVzcyByZXN1bHQgYWNyb3NzXG4gKiB0aG9zZSByZXBsYXlzLiBEZXNlcmlhbGl6YXRpb24gc3RpbGwgcnVucyBhZ2FpbnN0IGVhY2ggVk0ncyBnbG9iYWxzIHNvIGV2ZXJ5XG4gKiByZXBsYXkgcmVjZWl2ZXMgZnJlc2ggb2JqZWN0IGdyYXBocyBhbmQgY29ycmVjdGx5IHJldml2ZWQgV29ya2Zsb3cgb2JqZWN0cy5cbiAqXG4gKiBTdWNjZXNzZnVsIHByZXBhcmVkIHBsYWludGV4dCByZW1haW5zIHJlc2lkZW50IGZvciB0aGUgaW52b2NhdGlvbiBsaWZldGltZS5cbiAqIEl0cyBtZW1vcnkgY29zdCBpcyB0aGUgc3VtIG9mIGRlY3J5cHRlZCBhbmQgZGVjb21wcmVzc2VkIHBheWxvYWQgc2l6ZXMsIGJ1dFxuICogaXQgbmV2ZXIgY3Jvc3NlcyB3b3JrZmxvdyBydW5zIG9yIHF1ZXVlIGRlbGl2ZXJpZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXBsYXlQYXlsb2FkQ2FjaGUge1xuICBwcml2YXRlIHJlYWRvbmx5IHByZXBhcmVkUGF5bG9hZHMgPSBuZXcgTWFwPFxuICAgIHN0cmluZyxcbiAgICBQcm9taXNlPFByZXBhcmVkUmVwbGF5UGF5bG9hZD5cbiAgPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHByaW1pdGl2ZVN0ZXBSZXN1bHRzID0gbmV3IE1hcDxzdHJpbmcsIHVua25vd24+KCk7XG4gIHByaXZhdGUgbmV4dFVuc2Nhbm5lZEV2ZW50SW5kZXggPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZW5jcnlwdGlvbktleTogUGF5bG9hZEtleSB8IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByZXBhcmVyOiBSZXBsYXlQYXlsb2FkUHJlcGFyZXIgPSBwcmVwYXJlUmVwbGF5UGF5bG9hZFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGV2ZXJ5IG1pc3NpbmcgYmluYXJ5IHByZXBhcmF0aW9uIGJlZm9yZSB3b3JrZmxvdyBleGVjdXRpb24uIEZhaWx1cmVzXG4gICAqIGFyZSBpbnRlbnRpb25hbGx5IHJldGFpbmVkOiB0aGUgb3JkZXJlZCBldmVudCBjb25zdW1lciBtdXN0IG9ic2VydmUgdGhlXG4gICAqIG9yaWdpbmFsIHJlamVjdGlvbiBiZWZvcmUgdGhhdCBlbnRyeSBiZWNvbWVzIHJldHJ5YWJsZS5cbiAgICovXG4gIGFzeW5jIHByZXdhcm0od29ya2Zsb3dSdW46IFdvcmtmbG93UnVuLCBldmVudHM6IEV2ZW50W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcmVwYXJhdGlvbnM6IFByb21pc2U8UHJlcGFyZWRSZXBsYXlQYXlsb2FkPltdID0gW107XG4gICAgY29uc3Qgc3RhcnQgPSAoY2FjaGVLZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkID0+IHtcbiAgICAgIC8vIExlZ2FjeSBmbGF0dGVuZWQgdmFsdWVzIG1heSBiZSBtdXRhdGVkIGJ5IGRldmFsdWUncyB1bmZsYXR0ZW4gYW5kIGFyZVxuICAgICAgLy8gdGhlcmVmb3JlIHByZXBhcmVkIG9ubHkgYnkgdGhlaXIgZXZlbnR1YWwgY29uc3VtZXIsIG5ldmVyIGNhY2hlZC5cbiAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHJldHVybjtcblxuICAgICAgLy8gRWFjaCByZXBsYXkgc2NhbnMgdGhlIGZ1bGwgZXZlbnQgbG9nLCBzbyBhd2FpdGluZyBjYWNoZWQgcHJvbWlzZXMgaGVyZVxuICAgICAgLy8gd291bGQgYWRkIE8oTl4yKSBwcm9taXNlIHJlYWN0aW9ucyBvdmVyIGFuIE4tc3RlcCBpbnZvY2F0aW9uLiBPbmx5IHdhaXRcbiAgICAgIC8vIGZvciBwcmVwYXJhdGlvbnMgZmlyc3QgZGlzY292ZXJlZCBieSB0aGlzIHByZXdhcm0gcGFzcy5cbiAgICAgIGlmICh0aGlzLnByZXBhcmVkUGF5bG9hZHMuaGFzKGNhY2hlS2V5KSkgcmV0dXJuO1xuICAgICAgcHJlcGFyYXRpb25zLnB1c2godGhpcy5lbnN1cmVQcmVwYXJhdGlvbihjYWNoZUtleSwgdmFsdWUpKTtcbiAgICB9O1xuXG4gICAgc3RhcnQodGhpcy53b3JrZmxvd0lucHV0S2V5KHdvcmtmbG93UnVuLnJ1bklkKSwgd29ya2Zsb3dSdW4uaW5wdXQpO1xuICAgIC8vIFRoaXMgY2FjaGUgaXMgc2NvcGVkIHRvIG9uZSBpbnZvY2F0aW9uLiBJbmNyZW1lbnRhbCBsb2FkcyBhbmQgd3JpdGVcbiAgICAvLyByZXNwb25zZSBkZWx0YXMgb25seSBldmVyIGFwcGVuZCwgc28gdGhlIHNjYW5uZWQgbGVuZ3RoIGxvY2F0ZXMgdGhlXG4gICAgLy8gZXZlbnRzIGFkZGVkIHNpbmNlIHRoZSBwcmV2aW91cyByZXBsYXkuIEEgcmVsb2FkIHRoYXQgY2FuIGluc2VydCBldmVudHNcbiAgICAvLyBCRUxPVyB0aGF0IGxlbmd0aCAoYSBzdGFsZS1zbmFwc2hvdCByZXN0YXJ0IHJlcGxhY2luZyB0aGUgbG9nIHdpdGggYVxuICAgIC8vIGNvcnJlY3RlZCBvbmUpIG11c3QgY2FsbCBgcmVzZXRTY2FuKClgIGZpcnN0LCBvciB0aGUgaW5zZXJ0ZWQgZXZlbnRzIGFyZVxuICAgIC8vIG5ldmVyIHNjYW5uZWQuIFByZXBhcmVkIGVudHJpZXMgc3RheSB2YWxpZCBhY3Jvc3MgdGhhdDogdGhleSBhcmUga2V5ZWQgYnlcbiAgICAvLyBldmVudCBpZCwgbm90IGJ5IHBvc2l0aW9uLlxuICAgIGZvciAoXG4gICAgICBsZXQgaW5kZXggPSB0aGlzLm5leHRVbnNjYW5uZWRFdmVudEluZGV4O1xuICAgICAgaW5kZXggPCBldmVudHMubGVuZ3RoO1xuICAgICAgaW5kZXgrK1xuICAgICkge1xuICAgICAgY29uc3QgZXZlbnQgPSBldmVudHNbaW5kZXhdO1xuICAgICAgc3dpdGNoIChldmVudC5ldmVudFR5cGUpIHtcbiAgICAgICAgY2FzZSAnc3RlcF9jb21wbGV0ZWQnOlxuICAgICAgICAgIHN0YXJ0KFxuICAgICAgICAgICAgdGhpcy5ldmVudFBheWxvYWRLZXkoZXZlbnQuZXZlbnRJZCwgJ3Jlc3VsdCcpLFxuICAgICAgICAgICAgZXZlbnQuZXZlbnREYXRhPy5yZXN1bHRcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzdGVwX2ZhaWxlZCc6XG4gICAgICAgICAgc3RhcnQoXG4gICAgICAgICAgICB0aGlzLmV2ZW50UGF5bG9hZEtleShldmVudC5ldmVudElkLCAnZXJyb3InKSxcbiAgICAgICAgICAgIGV2ZW50LmV2ZW50RGF0YT8uZXJyb3JcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdob29rX3JlY2VpdmVkJzpcbiAgICAgICAgICBzdGFydChcbiAgICAgICAgICAgIHRoaXMuZXZlbnRQYXlsb2FkS2V5KGV2ZW50LmV2ZW50SWQsICdwYXlsb2FkJyksXG4gICAgICAgICAgICBldmVudC5ldmVudERhdGE/LnBheWxvYWRcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm5leHRVbnNjYW5uZWRFdmVudEluZGV4ID0gZXZlbnRzLmxlbmd0aDtcblxuICAgIC8vIFByZXdhcm1pbmcgaXMgc3BlY3VsYXRpdmUgYW5kIG11c3Qgbm90IGZhaWwgcmVwbGF5IGJlZm9yZSB0aGUgbWF0Y2hpbmdcbiAgICAvLyBldmVudCBpcyBjb25zdW1lZC4gYWxsU2V0dGxlZCBhbHNvIGF0dGFjaGVzIHJlamVjdGlvbiBoYW5kbGVycyBlYWdlcmx5LlxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChwcmVwYXJhdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcmdldCBob3cgbXVjaCBvZiB0aGUgZXZlbnQgbG9nIGhhcyBiZWVuIHNjYW5uZWQsIHNvIHRoZSBuZXh0XG4gICAqIHtAbGluayBwcmV3YXJtfSB3YWxrcyBpdCBmcm9tIHRoZSBzdGFydCBhZ2Fpbi5cbiAgICpcbiAgICogUmVxdWlyZWQgYmVmb3JlIGEgcmVwbGF5IHdob3NlIGV2ZW50IGxvZyB3YXMgcmVsb2FkZWQgcmF0aGVyIHRoYW4gZXh0ZW5kZWQ6XG4gICAqIGEgY29ycmVjdGVkIGxvZyBpbnNlcnRzIHRoZSBldmVudHMgdGhlIHByZXZpb3VzIGxvYWQgd2FzIG1pc3NpbmcsIHdoaWNoXG4gICAqIHNoaWZ0cyBldmVyeSBsYXRlciBwb3NpdGlvbiwgc28gYSBwb3NpdGlvbmFsIHJlc3VtZSB3b3VsZCBza2lwIGV4YWN0bHkgdGhlXG4gICAqIGV2ZW50cyB0aGUgcmVsb2FkIHdhcyBmb3IuIEFscmVhZHktcHJlcGFyZWQgcGF5bG9hZHMgYXJlIGtlcHQ6IHRoZXkgYXJlXG4gICAqIGtleWVkIGJ5IGV2ZW50IGlkLCBzbyByZS1zY2FubmluZyByZS1vYnNlcnZlcyB0aGVtIGZvciBmcmVlLlxuICAgKi9cbiAgcmVzZXRTY2FuKCk6IHZvaWQge1xuICAgIHRoaXMubmV4dFVuc2Nhbm5lZEV2ZW50SW5kZXggPSAwO1xuICB9XG5cbiAgLyoqIFJldHVybiB0aGUgd29ya2Zsb3cgaW5wdXQgYWZ0ZXIgc2hhcmVkIGhvc3Qtc2lkZSBwcmVwYXJhdGlvbi4gKi9cbiAgcHJlcGFyZVdvcmtmbG93SW5wdXQoXG4gICAgd29ya2Zsb3dSdW46IFdvcmtmbG93UnVuXG4gICk6IFByb21pc2U8UHJlcGFyZWRSZXBsYXlQYXlsb2FkPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3VtZVByZXBhcmF0aW9uKFxuICAgICAgdGhpcy53b3JrZmxvd0lucHV0S2V5KHdvcmtmbG93UnVuLnJ1bklkKSxcbiAgICAgIHdvcmtmbG93UnVuLmlucHV0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gZXZlbnQgcGF5bG9hZCBhZnRlciBzaGFyZWQgaG9zdC1zaWRlIHByZXBhcmF0aW9uLiBBIHJlamVjdGVkXG4gICAqIHByZXBhcmF0aW9uIGlzIGV2aWN0ZWQgb25seSBhZnRlciB0aGlzIG9yZGVyZWQgY29uc3VtZXIgcmVxdWVzdHMgaXQsIHNvIGFcbiAgICogbGF0ZXIgcmVwbGF5IGNhbiByZXRyeSB3aXRob3V0IGhpZGluZyB0aGUgb3JpZ2luYWwgZmFpbHVyZS5cbiAgICovXG4gIHByZXBhcmVFdmVudFBheWxvYWQoXG4gICAgZXZlbnRJZDogc3RyaW5nLFxuICAgIGZpZWxkOiBSZXBsYXlQYXlsb2FkRmllbGQsXG4gICAgdmFsdWU6IHVua25vd25cbiAgKTogUHJvbWlzZTxQcmVwYXJlZFJlcGxheVBheWxvYWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb25zdW1lUHJlcGFyYXRpb24odGhpcy5ldmVudFBheWxvYWRLZXkoZXZlbnRJZCwgZmllbGQpLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV1c2UgZmluYWwgc3RlcCB2YWx1ZXMgb25seSB3aGVuIHNoYXJpbmcgdGhlbSBhY3Jvc3MgVk1zIGlzIHVub2JzZXJ2YWJsZS5cbiAgICogT2JqZWN0cyBhbmQgbGFyZ2Ugc3RyaW5ncy9iaWdpbnRzIGFsd2F5cyBydW4gYGh5ZHJhdGVgIGFnYWluLCBwcm9kdWNpbmcgYVxuICAgKiBmcmVzaCBWTS1zcGVjaWZpYyB2YWx1ZSBmcm9tIHRoZSBzZXBhcmF0ZWx5IGNhY2hlZCBwcmVwYXJlZCBwYXlsb2FkLlxuICAgKi9cbiAgYXN5bmMgZ2V0U3RlcFJlc3VsdChcbiAgICBldmVudElkOiBzdHJpbmcsXG4gICAgaHlkcmF0ZTogKCkgPT4gUHJvbWlzZTx1bmtub3duPlxuICApOiBQcm9taXNlPHVua25vd24+IHtcbiAgICBpZiAodGhpcy5wcmltaXRpdmVTdGVwUmVzdWx0cy5oYXMoZXZlbnRJZCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnByaW1pdGl2ZVN0ZXBSZXN1bHRzLmdldChldmVudElkKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IGh5ZHJhdGUoKTtcbiAgICBpZiAoaXNNZW1vaXphYmxlUHJpbWl0aXZlKHZhbHVlKSkge1xuICAgICAgdGhpcy5wcmltaXRpdmVTdGVwUmVzdWx0cy5zZXQoZXZlbnRJZCwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3VtZXItZmFjaW5nIGxvb2t1cC4gQmluYXJ5IHBheWxvYWRzIHNoYXJlIHByZXBhcmF0aW9uOyBsZWdhY3kgdmFsdWVzXG4gICAqIGJ5cGFzcyB0aGUgY2FjaGUgYmVjYXVzZSB0aGVpciBmbGF0dGVuZWQgcmVwcmVzZW50YXRpb24gbWF5IGJlIG11dGF0ZWQuXG4gICAqL1xuICBwcml2YXRlIGNvbnN1bWVQcmVwYXJhdGlvbihcbiAgICBjYWNoZUtleTogc3RyaW5nLFxuICAgIHZhbHVlOiB1bmtub3duXG4gICk6IFByb21pc2U8UHJlcGFyZWRSZXBsYXlQYXlsb2FkPiB7XG4gICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkgcmV0dXJuIHRoaXMucnVuUHJlcGFyYXRpb24odmFsdWUpO1xuXG4gICAgY29uc3QgcHJlcGFyYXRpb24gPSB0aGlzLmVuc3VyZVByZXBhcmF0aW9uKGNhY2hlS2V5LCB2YWx1ZSk7XG4gICAgdm9pZCBwcmVwYXJhdGlvbi5jYXRjaCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcmVwYXJlZFBheWxvYWRzLmdldChjYWNoZUtleSkgPT09IHByZXBhcmF0aW9uKSB7XG4gICAgICAgIHRoaXMucHJlcGFyZWRQYXlsb2Fkcy5kZWxldGUoY2FjaGVLZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcmVwYXJhdGlvbjtcbiAgfVxuXG4gIC8qKiBTdGFydCBwcmVwYXJhdGlvbiBvbmNlIGFuZCBzaGFyZSB0aGUgZXhhY3QgaW4tZmxpZ2h0IHByb21pc2UuICovXG4gIHByaXZhdGUgZW5zdXJlUHJlcGFyYXRpb24oXG4gICAgY2FjaGVLZXk6IHN0cmluZyxcbiAgICB2YWx1ZTogVWludDhBcnJheVxuICApOiBQcm9taXNlPFByZXBhcmVkUmVwbGF5UGF5bG9hZD4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMucHJlcGFyZWRQYXlsb2Fkcy5nZXQoY2FjaGVLZXkpO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG5cbiAgICBjb25zdCBwcmVwYXJhdGlvbiA9IHRoaXMucnVuUHJlcGFyYXRpb24odmFsdWUpO1xuICAgIHRoaXMucHJlcGFyZWRQYXlsb2Fkcy5zZXQoY2FjaGVLZXksIHByZXBhcmF0aW9uKTtcbiAgICByZXR1cm4gcHJlcGFyYXRpb247XG4gIH1cblxuICAvKiogTm9ybWFsaXplIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgcHJlcGFyZXJzIHRvIG9uZSBwcm9taXNlIGNvbnRyYWN0LiAqL1xuICBwcml2YXRlIGFzeW5jIHJ1blByZXBhcmF0aW9uKHZhbHVlOiB1bmtub3duKTogUHJvbWlzZTxQcmVwYXJlZFJlcGxheVBheWxvYWQ+IHtcbiAgICByZXR1cm4gdGhpcy5wcmVwYXJlcih2YWx1ZSwgdGhpcy5lbmNyeXB0aW9uS2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgd29ya2Zsb3dJbnB1dEtleShydW5JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHJ1bjoke3J1bklkfTppbnB1dGA7XG4gIH1cblxuICBwcml2YXRlIGV2ZW50UGF5bG9hZEtleShldmVudElkOiBzdHJpbmcsIGZpZWxkOiBSZXBsYXlQYXlsb2FkRmllbGQpOiBzdHJpbmcge1xuICAgIHJldHVybiBgZXZlbnQ6JHtldmVudElkfToke2ZpZWxkfWA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Identifier for the compute instance (microVM) this module was loaded into.
|
|
3
3
|
*
|
|
4
|
-
* Vercel exposes no native per-instance
|
|
4
|
+
* Vercel exposes no native per-instance ID under Fluid compute (`AWS_LAMBDA_*`
|
|
5
5
|
* is blocked), so we synthesize one at module load: a prefixed ULID
|
|
6
6
|
* (`cinst_<ulid>`, per the `wrun_`/`step_` convention) whose timestamp is the
|
|
7
7
|
* instance's birth time. Stable for the instance's life and shared by every
|
|
8
|
-
* invocation it handles
|
|
9
|
-
* cold starts mint fresh
|
|
8
|
+
* invocation it handles, including the concurrent ones Fluid packs onto it;
|
|
9
|
+
* cold starts mint fresh IDs. Emitted as the OpenTelemetry `faas.instance`
|
|
10
|
+
* attribute.
|
|
10
11
|
*/
|
|
11
12
|
export declare const COMPUTE_INSTANCE_ID: string;
|
|
12
13
|
//# sourceMappingURL=compute-instance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compute-instance.d.ts","sourceRoot":"","sources":["../../src/runtime/compute-instance.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"compute-instance.d.ts","sourceRoot":"","sources":["../../src/runtime/compute-instance.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,QAAoB,CAAC"}
|
|
@@ -2,12 +2,13 @@ import { ulid } from 'ulid';
|
|
|
2
2
|
/**
|
|
3
3
|
* Identifier for the compute instance (microVM) this module was loaded into.
|
|
4
4
|
*
|
|
5
|
-
* Vercel exposes no native per-instance
|
|
5
|
+
* Vercel exposes no native per-instance ID under Fluid compute (`AWS_LAMBDA_*`
|
|
6
6
|
* is blocked), so we synthesize one at module load: a prefixed ULID
|
|
7
7
|
* (`cinst_<ulid>`, per the `wrun_`/`step_` convention) whose timestamp is the
|
|
8
8
|
* instance's birth time. Stable for the instance's life and shared by every
|
|
9
|
-
* invocation it handles
|
|
10
|
-
* cold starts mint fresh
|
|
9
|
+
* invocation it handles, including the concurrent ones Fluid packs onto it;
|
|
10
|
+
* cold starts mint fresh IDs. Emitted as the OpenTelemetry `faas.instance`
|
|
11
|
+
* attribute.
|
|
11
12
|
*/
|
|
12
13
|
export const COMPUTE_INSTANCE_ID = `cinst_${ulid()}`;
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS1pbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lL2NvbXB1dGUtaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1Qjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdWxpZCB9IGZyb20gJ3VsaWQnO1xuXG4vKipcbiAqIElkZW50aWZpZXIgZm9yIHRoZSBjb21wdXRlIGluc3RhbmNlIChtaWNyb1ZNKSB0aGlzIG1vZHVsZSB3YXMgbG9hZGVkIGludG8uXG4gKlxuICogVmVyY2VsIGV4cG9zZXMgbm8gbmF0aXZlIHBlci1pbnN0YW5jZSBJRCB1bmRlciBGbHVpZCBjb21wdXRlIChgQVdTX0xBTUJEQV8qYFxuICogaXMgYmxvY2tlZCksIHNvIHdlIHN5bnRoZXNpemUgb25lIGF0IG1vZHVsZSBsb2FkOiBhIHByZWZpeGVkIFVMSURcbiAqIChgY2luc3RfPHVsaWQ+YCwgcGVyIHRoZSBgd3J1bl9gL2BzdGVwX2AgY29udmVudGlvbikgd2hvc2UgdGltZXN0YW1wIGlzIHRoZVxuICogaW5zdGFuY2UncyBiaXJ0aCB0aW1lLiBTdGFibGUgZm9yIHRoZSBpbnN0YW5jZSdzIGxpZmUgYW5kIHNoYXJlZCBieSBldmVyeVxuICogaW52b2NhdGlvbiBpdCBoYW5kbGVzLCBpbmNsdWRpbmcgdGhlIGNvbmN1cnJlbnQgb25lcyBGbHVpZCBwYWNrcyBvbnRvIGl0O1xuICogY29sZCBzdGFydHMgbWludCBmcmVzaCBJRHMuIEVtaXR0ZWQgYXMgdGhlIE9wZW5UZWxlbWV0cnkgYGZhYXMuaW5zdGFuY2VgXG4gKiBhdHRyaWJ1dGUuXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QVVRFX0lOU1RBTkNFX0lEID0gYGNpbnN0XyR7dWxpZCgpfWA7XG4iXX0=
|
|
@@ -6,7 +6,7 @@ export declare function getMaxQueueDeliveries(): number;
|
|
|
6
6
|
/**
|
|
7
7
|
* Default maximum time allowed for the *replay* portion of a single workflow
|
|
8
8
|
* handler invocation (in ms). This budget only covers deterministic-replay
|
|
9
|
-
* and workflow-VM execution between step boundaries
|
|
9
|
+
* and workflow-VM execution between step boundaries. Inline step bodies
|
|
10
10
|
* (`"use step"` functions invoked via `executeStep`) do NOT count against
|
|
11
11
|
* it. Step bodies are bounded separately by the platform's function
|
|
12
12
|
* `maxDuration` (e.g. 800s on Vercel Pro Fluid) and `NO_INLINE_REPLAY_AFTER_MS`.
|
|
@@ -17,7 +17,7 @@ export declare function getMaxQueueDeliveries(): number;
|
|
|
17
17
|
* `RUN_ERROR_CODES.REPLAY_TIMEOUT`.
|
|
18
18
|
*
|
|
19
19
|
* Note that on Vercel Hobby (standard functions), the platform `maxDuration`
|
|
20
|
-
* is 60s
|
|
20
|
+
* is 60s, well below this budget, so the platform SIGTERM will fire first
|
|
21
21
|
* and the queue will re-deliver until the visibility window expires. With
|
|
22
22
|
* Fluid Compute on Hobby the per-function ceiling rises to 300s, still
|
|
23
23
|
* under the default budget.
|
|
@@ -39,13 +39,13 @@ export declare const MAX_REPLAY_TIMEOUT_MS = 780000;
|
|
|
39
39
|
*
|
|
40
40
|
* Reads `process.env.WORKFLOW_REPLAY_TIMEOUT_MS` lazily so tests and
|
|
41
41
|
* deployments can override per invocation. Invalid / out-of-range values
|
|
42
|
-
* fall back to a safe value (no throw
|
|
42
|
+
* fall back to a safe value (no throw: the env var is an escape hatch,
|
|
43
43
|
* not a hard requirement) and emit a one-time warning so misconfiguration
|
|
44
44
|
* is observable.
|
|
45
45
|
*/
|
|
46
46
|
export declare function getReplayTimeoutMs(): number;
|
|
47
47
|
/**
|
|
48
|
-
* Reset the warn-once cache. Test-only
|
|
48
|
+
* Reset the warn-once cache. Test-only: exported so unit tests can
|
|
49
49
|
* exercise the warn path repeatedly without sharing state.
|
|
50
50
|
*
|
|
51
51
|
* @internal
|
|
@@ -60,8 +60,8 @@ export declare function getReplayTimeoutMaxRetries(): number;
|
|
|
60
60
|
/**
|
|
61
61
|
* Default maximum number of steps the owned-inline path runs inline (in
|
|
62
62
|
* parallel) per suspension. The rest are queued to background handlers. Each
|
|
63
|
-
* inline step is created lazily
|
|
64
|
-
* `step_started` that `executeStep` sends
|
|
63
|
+
* inline step is created lazily (its `step_created` is folded into the
|
|
64
|
+
* `step_started` that `executeStep` sends), so inlining N steps saves N queue
|
|
65
65
|
* round-trips for a `Promise.all`-style fan-out. `1` reproduces the
|
|
66
66
|
* single-inline-step behavior exactly (useful kill-switch).
|
|
67
67
|
*
|
|
@@ -81,7 +81,7 @@ export declare const MAX_MAX_INLINE_STEPS = 16;
|
|
|
81
81
|
*
|
|
82
82
|
* Reads `process.env.WORKFLOW_MAX_INLINE_STEPS` lazily so tests and
|
|
83
83
|
* deployments can override per invocation. Invalid / out-of-range values fall
|
|
84
|
-
* back to a safe value (no throw
|
|
84
|
+
* back to a safe value (no throw: the env var is an escape hatch) and emit a
|
|
85
85
|
* one-time warning so misconfiguration is observable.
|
|
86
86
|
*/
|
|
87
87
|
export declare function getMaxInlineSteps(): number;
|
|
@@ -112,7 +112,7 @@ export declare const MAX_RESILIENT_STEP_INPUT_BYTES: number;
|
|
|
112
112
|
* **Off by default.** Enable via `WORKFLOW_RESILIENT_STEP_DISPATCH=1`.
|
|
113
113
|
*
|
|
114
114
|
* The queue publish races the create's verdict, and a create can come back
|
|
115
|
-
* refused
|
|
115
|
+
* refused: as a duplicate this replay should stop pursuing, or as a stale
|
|
116
116
|
* write on a World that refuses rather than reports. Either way the message
|
|
117
117
|
* carrying the payload is already out, so the consumer can materialize a step
|
|
118
118
|
* whose create was refused, and nothing orders the verdict before the
|
|
@@ -127,11 +127,11 @@ export declare function isResilientStepDispatchEnabled(): boolean;
|
|
|
127
127
|
* instead of one write per event. Only engages when the World implements the
|
|
128
128
|
* optional `events.createBatch` AND the run is on slot identity
|
|
129
129
|
* (specVersion >= 6) AND the suspension carries no attribute/hook writes and
|
|
130
|
-
* no resilient step dispatch
|
|
130
|
+
* no resilient step dispatch. Everything else keeps the single-event path
|
|
131
131
|
* byte-for-byte.
|
|
132
132
|
*
|
|
133
133
|
* Reads `process.env.WORKFLOW_BATCH_TRANSITIONS` lazily. Default **ON**;
|
|
134
|
-
* disabled only by an explicit `'0'` / `'false'` (case-insensitive)
|
|
134
|
+
* disabled only by an explicit `'0'` / `'false'` (case-insensitive), the
|
|
135
135
|
* operator escape hatch that restores the exact prior one-write-per-event
|
|
136
136
|
* path, mirroring `WORKFLOW_TURBO`'s kill-switch shape.
|
|
137
137
|
*/
|
|
@@ -141,10 +141,10 @@ export declare function isBatchTransitionsEnabled(): boolean;
|
|
|
141
141
|
* Mirrors the server's transaction budgets with a comfortable margin: each
|
|
142
142
|
* fan-out event costs 2 transaction items server-side (entity + event row)
|
|
143
143
|
* against the 100-item DynamoDB cap, and inline payloads count against a
|
|
144
|
-
* 768 KB byte budget
|
|
145
|
-
* than this
|
|
144
|
+
* 768 KB byte budget, so 32 events stays well under both, and a fan-out larger
|
|
145
|
+
* than this commits in successive batches (split batches lose
|
|
146
146
|
* cross-batch atomicity, which is exactly today's per-event-write crash
|
|
147
|
-
* surface
|
|
147
|
+
* surface, and every batch still converges on retry via per-event 409s).
|
|
148
148
|
*/
|
|
149
149
|
export declare const MAX_BATCH_FANOUT_EVENTS = 32;
|
|
150
150
|
/**
|
|
@@ -155,7 +155,7 @@ export declare const MAX_BATCH_FANOUT_EVENTS = 32;
|
|
|
155
155
|
*
|
|
156
156
|
* Reads `process.env.WORKFLOW_MAX_EVENTS_OVERRIDE` lazily so tests and
|
|
157
157
|
* deployments can override per invocation. Invalid values fall back to unset
|
|
158
|
-
* (no throw
|
|
158
|
+
* (no throw: the env var is an escape hatch) and emit a one-time warning.
|
|
159
159
|
*/
|
|
160
160
|
export declare function getMaxEventsOverride(): number | undefined;
|
|
161
161
|
/**
|
|
@@ -165,7 +165,7 @@ export declare function getMaxEventsOverride(): number | undefined;
|
|
|
165
165
|
* `step_started` only before the terminal write.
|
|
166
166
|
*
|
|
167
167
|
* This can run a step body more than once when handlers race for the same
|
|
168
|
-
* step's create-claim
|
|
168
|
+
* step's create-claim: both run the body before one wins. That is unsafe for
|
|
169
169
|
* steps with non-idempotent side effects; in particular, two concurrent runs
|
|
170
170
|
* of a step that writes to the workflow stream (e.g. an AI agent streaming
|
|
171
171
|
* tokens) can interleave and corrupt the stream data. So the optimization is
|
|
@@ -190,7 +190,7 @@ export declare function isOptimisticInlineStartExplicitlyDisabled(): boolean;
|
|
|
190
190
|
* the first invocation* of a run (detected by the entrypoint via `runInput`
|
|
191
191
|
* presence + `metadata.attempt === 1`): it backgrounds the `run_started` event
|
|
192
192
|
* creation, skips the initial event-log load (nothing has been written yet),
|
|
193
|
-
* and forces optimistic inline step start for that invocation
|
|
193
|
+
* and forces optimistic inline step start for that invocation, independent of
|
|
194
194
|
* `WORKFLOW_OPTIMISTIC_INLINE_START`.
|
|
195
195
|
*
|
|
196
196
|
* Forcing optimistic start is safe here because the first delivery has no
|
|
@@ -208,7 +208,7 @@ export declare function isTurboEnabled(): boolean;
|
|
|
208
208
|
* enabled (default ON). When on, the engine hydrates a VM with the
|
|
209
209
|
* workflow bundle once per function instance, snapshots it, and starts
|
|
210
210
|
* every invocation by restoring the snapshot instead of re-evaluating
|
|
211
|
-
* the bundle
|
|
211
|
+
* the bundle, skipping the dominant share of VM startup (measured
|
|
212
212
|
* ~77ms → ~3ms to first suspension for a 1.3MB bundle). Bundles whose
|
|
213
213
|
* module scope consumes randomness, reads the clock, or replaces a
|
|
214
214
|
* serialization intrinsic are detected at hydrate time and
|
|
@@ -233,12 +233,12 @@ export declare function isVmRetentionEnabled(): boolean;
|
|
|
233
233
|
* Whether inline step ownership is enabled (default ON). When on, the lazy
|
|
234
234
|
* `step_started` that creates an inline step records the owning queue
|
|
235
235
|
* message ID, and wake replays that observe an actively-owned step enqueue a
|
|
236
|
-
* *delayed backstop* message instead of immediately requeueing it
|
|
236
|
+
* *delayed backstop* message instead of immediately requeueing it, fixing
|
|
237
237
|
* duplicate inline step execution when a hook/wait wakes a run mid-step
|
|
238
238
|
* (vercel/workflow#2780).
|
|
239
239
|
*
|
|
240
240
|
* `WORKFLOW_INLINE_OWNERSHIP=0` (or `false`) is the kill switch: dispatch
|
|
241
|
-
* reverts to the unconditional immediate requeue. Stamping is unaffected
|
|
241
|
+
* reverts to the unconditional immediate requeue. Stamping is unaffected:
|
|
242
242
|
* the recorded ownerMessageId is inert data when the switch is off.
|
|
243
243
|
*/
|
|
244
244
|
export declare function isInlineOwnershipEnabled(): boolean;
|
|
@@ -250,16 +250,16 @@ export declare function isInlineOwnershipEnabled(): boolean;
|
|
|
250
250
|
* immediately; past it, they enqueue immediately (today's behavior).
|
|
251
251
|
*
|
|
252
252
|
* Why a fixed 860 and not a value derived from the function's `maxDuration`:
|
|
253
|
-
* neither runtime nor build time can see the resolved value
|
|
253
|
+
* neither runtime nor build time can see the resolved value: builders emit
|
|
254
254
|
* `maxDuration: 'max'`, which the platform resolves per-plan at deploy, and
|
|
255
255
|
* no env var or request-context deadline API exposes the result. The bound
|
|
256
256
|
* comes from a platform rule instead: durations above 800s require explicit
|
|
257
257
|
* per-function numeric config, so a builder-emitted `'max'` resolves to at
|
|
258
|
-
* most 800s
|
|
258
|
+
* most 800s, and 860s therefore dominates any workflow route's invocation
|
|
259
259
|
* lifetime plus scheduling slack. Revisit when that ceiling moves (the
|
|
260
260
|
* 30-minute duration beta becoming reachable via `'max'` would invalidate
|
|
261
261
|
* the bound). Worlds without an invocation kill bound (world-local,
|
|
262
|
-
* self-hosted) get no death proof from any constant
|
|
262
|
+
* self-hosted) get no death proof from any constant. There the in-process
|
|
263
263
|
* single-flight layer (step-single-flight.ts) is what makes a backstop
|
|
264
264
|
* firing mid-step harmless.
|
|
265
265
|
*
|
|
@@ -272,13 +272,13 @@ export declare function isInlineOwnershipEnabled(): boolean;
|
|
|
272
272
|
export declare const INLINE_OWNERSHIP_LEASE_SECONDS = 860;
|
|
273
273
|
/**
|
|
274
274
|
* Upper bound for the lease env override. 900s is the queue's maximum
|
|
275
|
-
* per-message delay (SQS cap)
|
|
275
|
+
* per-message delay (SQS cap). A longer lease would need delay chaining
|
|
276
276
|
* like long waits use; clamp instead so one delayed message always suffices.
|
|
277
277
|
*/
|
|
278
278
|
export declare const MAX_INLINE_OWNERSHIP_LEASE_SECONDS = 900;
|
|
279
279
|
/**
|
|
280
280
|
* Effective inline-ownership lease. Override via
|
|
281
|
-
* `WORKFLOW_INLINE_OWNERSHIP_LEASE_SECONDS
|
|
281
|
+
* `WORKFLOW_INLINE_OWNERSHIP_LEASE_SECONDS`, e.g. raise it on self-hosted
|
|
282
282
|
* multi-instance worlds with long-running steps to widen the window in which
|
|
283
283
|
* a live owner is protected from a concurrent backstop execution.
|
|
284
284
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/runtime/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/runtime/constants.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAW9C;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,iBAAiB,SAAU,CAAC;AAEzC,2DAA2D;AAC3D,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAwB7C;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CA6B3C;AAED;;;;;GAKG;AACH,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D;AAMD,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAMnD;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CA2B1C;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,8BAA8B,QAAa,CAAC;AAEzD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,8BAA8B,IAAI,OAAO,CAExD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAInD;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAezD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,8BAA8B,IAAI,OAAO,CAIxD;AAED;;;;;;;;GAQG;AACH,wBAAgB,yCAAyC,IAAI,OAAO,CAInE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAIxC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gCAAgC,IAAI,OAAO,CAI1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAI9C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAIlD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD;;;;;GAKG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CAMvD;AAKD,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,CAMtD;AAQD,eAAO,MAAM,mCAAmC,IAAI,CAAC;AAErD;;;GAGG;AACH,wBAAgB,mCAAmC,IAAI,MAAM,CAM5D;AASD,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,+BAA+B,IAAI,MAAM,CAMxD;AAMD,eAAO,MAAM,mCAAmC,IAAI,CAAC;AAErD;;;GAGG;AACH,wBAAgB,mCAAmC,IAAI,MAAM,CAM5D;AAKD,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,MAAM,CAMxD"}
|