@workflow/core 5.0.0-beta.42 → 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 +10 -6
- 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.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 +39 -64
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +294 -48
- 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 +46 -19
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +76 -38
- 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 +23 -10
- package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -1
- package/dist/runtime/quickjs-entrypoint.js +200 -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 +154 -35
- 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 +59 -11
- package/dist/runtime/step-executor.d.ts.map +1 -1
- package/dist/runtime/step-executor.js +116 -42
- package/dist/runtime/step-latency.d.ts +20 -14
- package/dist/runtime/step-latency.d.ts.map +1 -1
- package/dist/runtime/step-latency.js +13 -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 +99 -7
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +678 -57
- 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 +417 -213
- 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 +20 -12
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +141 -99
- 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 +9 -3
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +40 -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 +3 -3
- package/dist/workflow/get-workflow-metadata.js +2 -2
- package/dist/workflow/hook.js +18 -18
- 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 +36 -14
- 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 +37 -37
- 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 +68 -39
- 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 +84 -28
- 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
|
|
@@ -120,6 +120,33 @@ export declare const MAX_RESILIENT_STEP_INPUT_BYTES: number;
|
|
|
120
120
|
* latency the parallel publish saves.
|
|
121
121
|
*/
|
|
122
122
|
export declare function isResilientStepDispatchEnabled(): boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Whether batched event transitions are enabled: the suspension handler folds
|
|
125
|
+
* a clean fan-out's `step_created` + `wait_created` writes into one
|
|
126
|
+
* `world.events.createBatch` call (one durable write, per-event outcomes)
|
|
127
|
+
* instead of one write per event. Only engages when the World implements the
|
|
128
|
+
* optional `events.createBatch` AND the run is on slot identity
|
|
129
|
+
* (specVersion >= 6) AND the suspension carries no attribute/hook writes and
|
|
130
|
+
* no resilient step dispatch. Everything else keeps the single-event path
|
|
131
|
+
* byte-for-byte.
|
|
132
|
+
*
|
|
133
|
+
* Reads `process.env.WORKFLOW_BATCH_TRANSITIONS` lazily. Default **ON**;
|
|
134
|
+
* disabled only by an explicit `'0'` / `'false'` (case-insensitive), the
|
|
135
|
+
* operator escape hatch that restores the exact prior one-write-per-event
|
|
136
|
+
* path, mirroring `WORKFLOW_TURBO`'s kill-switch shape.
|
|
137
|
+
*/
|
|
138
|
+
export declare function isBatchTransitionsEnabled(): boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Ceiling on events per `createBatch` call from the batched fan-out fold.
|
|
141
|
+
* Mirrors the server's transaction budgets with a comfortable margin: each
|
|
142
|
+
* fan-out event costs 2 transaction items server-side (entity + event row)
|
|
143
|
+
* against the 100-item DynamoDB cap, and inline payloads count against a
|
|
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
|
+
* cross-batch atomicity, which is exactly today's per-event-write crash
|
|
147
|
+
* surface, and every batch still converges on retry via per-event 409s).
|
|
148
|
+
*/
|
|
149
|
+
export declare const MAX_BATCH_FANOUT_EVENTS = 32;
|
|
123
150
|
/**
|
|
124
151
|
* Optional client-side override for the server-supplied per-run event ceiling.
|
|
125
152
|
* When set to a positive integer, the runtime clamps the server's limit *down*
|
|
@@ -128,7 +155,7 @@ export declare function isResilientStepDispatchEnabled(): boolean;
|
|
|
128
155
|
*
|
|
129
156
|
* Reads `process.env.WORKFLOW_MAX_EVENTS_OVERRIDE` lazily so tests and
|
|
130
157
|
* deployments can override per invocation. Invalid values fall back to unset
|
|
131
|
-
* (no throw
|
|
158
|
+
* (no throw: the env var is an escape hatch) and emit a one-time warning.
|
|
132
159
|
*/
|
|
133
160
|
export declare function getMaxEventsOverride(): number | undefined;
|
|
134
161
|
/**
|
|
@@ -138,7 +165,7 @@ export declare function getMaxEventsOverride(): number | undefined;
|
|
|
138
165
|
* `step_started` only before the terminal write.
|
|
139
166
|
*
|
|
140
167
|
* This can run a step body more than once when handlers race for the same
|
|
141
|
-
* step's create-claim
|
|
168
|
+
* step's create-claim: both run the body before one wins. That is unsafe for
|
|
142
169
|
* steps with non-idempotent side effects; in particular, two concurrent runs
|
|
143
170
|
* of a step that writes to the workflow stream (e.g. an AI agent streaming
|
|
144
171
|
* tokens) can interleave and corrupt the stream data. So the optimization is
|
|
@@ -163,7 +190,7 @@ export declare function isOptimisticInlineStartExplicitlyDisabled(): boolean;
|
|
|
163
190
|
* the first invocation* of a run (detected by the entrypoint via `runInput`
|
|
164
191
|
* presence + `metadata.attempt === 1`): it backgrounds the `run_started` event
|
|
165
192
|
* creation, skips the initial event-log load (nothing has been written yet),
|
|
166
|
-
* and forces optimistic inline step start for that invocation
|
|
193
|
+
* and forces optimistic inline step start for that invocation, independent of
|
|
167
194
|
* `WORKFLOW_OPTIMISTIC_INLINE_START`.
|
|
168
195
|
*
|
|
169
196
|
* Forcing optimistic start is safe here because the first delivery has no
|
|
@@ -181,7 +208,7 @@ export declare function isTurboEnabled(): boolean;
|
|
|
181
208
|
* enabled (default ON). When on, the engine hydrates a VM with the
|
|
182
209
|
* workflow bundle once per function instance, snapshots it, and starts
|
|
183
210
|
* every invocation by restoring the snapshot instead of re-evaluating
|
|
184
|
-
* the bundle
|
|
211
|
+
* the bundle, skipping the dominant share of VM startup (measured
|
|
185
212
|
* ~77ms → ~3ms to first suspension for a 1.3MB bundle). Bundles whose
|
|
186
213
|
* module scope consumes randomness, reads the clock, or replaces a
|
|
187
214
|
* serialization intrinsic are detected at hydrate time and
|
|
@@ -206,12 +233,12 @@ export declare function isVmRetentionEnabled(): boolean;
|
|
|
206
233
|
* Whether inline step ownership is enabled (default ON). When on, the lazy
|
|
207
234
|
* `step_started` that creates an inline step records the owning queue
|
|
208
235
|
* message ID, and wake replays that observe an actively-owned step enqueue a
|
|
209
|
-
* *delayed backstop* message instead of immediately requeueing it
|
|
236
|
+
* *delayed backstop* message instead of immediately requeueing it, fixing
|
|
210
237
|
* duplicate inline step execution when a hook/wait wakes a run mid-step
|
|
211
238
|
* (vercel/workflow#2780).
|
|
212
239
|
*
|
|
213
240
|
* `WORKFLOW_INLINE_OWNERSHIP=0` (or `false`) is the kill switch: dispatch
|
|
214
|
-
* reverts to the unconditional immediate requeue. Stamping is unaffected
|
|
241
|
+
* reverts to the unconditional immediate requeue. Stamping is unaffected:
|
|
215
242
|
* the recorded ownerMessageId is inert data when the switch is off.
|
|
216
243
|
*/
|
|
217
244
|
export declare function isInlineOwnershipEnabled(): boolean;
|
|
@@ -223,16 +250,16 @@ export declare function isInlineOwnershipEnabled(): boolean;
|
|
|
223
250
|
* immediately; past it, they enqueue immediately (today's behavior).
|
|
224
251
|
*
|
|
225
252
|
* Why a fixed 860 and not a value derived from the function's `maxDuration`:
|
|
226
|
-
* neither runtime nor build time can see the resolved value
|
|
253
|
+
* neither runtime nor build time can see the resolved value: builders emit
|
|
227
254
|
* `maxDuration: 'max'`, which the platform resolves per-plan at deploy, and
|
|
228
255
|
* no env var or request-context deadline API exposes the result. The bound
|
|
229
256
|
* comes from a platform rule instead: durations above 800s require explicit
|
|
230
257
|
* per-function numeric config, so a builder-emitted `'max'` resolves to at
|
|
231
|
-
* most 800s
|
|
258
|
+
* most 800s, and 860s therefore dominates any workflow route's invocation
|
|
232
259
|
* lifetime plus scheduling slack. Revisit when that ceiling moves (the
|
|
233
260
|
* 30-minute duration beta becoming reachable via `'max'` would invalidate
|
|
234
261
|
* the bound). Worlds without an invocation kill bound (world-local,
|
|
235
|
-
* self-hosted) get no death proof from any constant
|
|
262
|
+
* self-hosted) get no death proof from any constant. There the in-process
|
|
236
263
|
* single-flight layer (step-single-flight.ts) is what makes a backstop
|
|
237
264
|
* firing mid-step harmless.
|
|
238
265
|
*
|
|
@@ -245,13 +272,13 @@ export declare function isInlineOwnershipEnabled(): boolean;
|
|
|
245
272
|
export declare const INLINE_OWNERSHIP_LEASE_SECONDS = 860;
|
|
246
273
|
/**
|
|
247
274
|
* Upper bound for the lease env override. 900s is the queue's maximum
|
|
248
|
-
* per-message delay (SQS cap)
|
|
275
|
+
* per-message delay (SQS cap). A longer lease would need delay chaining
|
|
249
276
|
* like long waits use; clamp instead so one delayed message always suffices.
|
|
250
277
|
*/
|
|
251
278
|
export declare const MAX_INLINE_OWNERSHIP_LEASE_SECONDS = 900;
|
|
252
279
|
/**
|
|
253
280
|
* Effective inline-ownership lease. Override via
|
|
254
|
-
* `WORKFLOW_INLINE_OWNERSHIP_LEASE_SECONDS
|
|
281
|
+
* `WORKFLOW_INLINE_OWNERSHIP_LEASE_SECONDS`, e.g. raise it on self-hosted
|
|
255
282
|
* multi-instance worlds with long-running steps to widen the window in which
|
|
256
283
|
* a live owner is protected from a concurrent backstop execution.
|
|
257
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"}
|