@workflow/core 5.0.0-beta.2 → 5.0.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attribute-changes.d.ts +7 -0
- package/dist/attribute-changes.d.ts.map +1 -0
- package/dist/attribute-changes.js +25 -0
- package/dist/capabilities.d.ts +22 -1
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +41 -4
- package/dist/capture-stack.d.ts +16 -0
- package/dist/capture-stack.d.ts.map +1 -0
- package/dist/capture-stack.js +21 -0
- package/dist/class-serialization.d.ts +32 -0
- package/dist/class-serialization.d.ts.map +1 -1
- package/dist/class-serialization.js +37 -1
- package/dist/classify-error.d.ts +11 -3
- package/dist/classify-error.d.ts.map +1 -1
- package/dist/classify-error.js +59 -6
- package/dist/context-errors.d.ts +27 -0
- package/dist/context-errors.d.ts.map +1 -0
- package/dist/context-errors.js +101 -0
- package/dist/context-violation-error.d.ts +97 -0
- package/dist/context-violation-error.d.ts.map +1 -0
- package/dist/context-violation-error.js +147 -0
- package/dist/create-hook.d.ts +40 -1
- package/dist/create-hook.d.ts.map +1 -1
- package/dist/create-hook.js +4 -3
- package/dist/define-hook.d.ts.map +1 -1
- package/dist/define-hook.js +20 -5
- package/dist/describe-error.d.ts +70 -0
- package/dist/describe-error.d.ts.map +1 -0
- package/dist/describe-error.js +165 -0
- package/dist/encryption.d.ts +22 -1
- package/dist/encryption.d.ts.map +1 -1
- package/dist/encryption.js +72 -27
- package/dist/events-consumer.d.ts +24 -0
- package/dist/events-consumer.d.ts.map +1 -1
- package/dist/events-consumer.js +79 -16
- package/dist/flushable-stream.d.ts +10 -10
- package/dist/flushable-stream.d.ts.map +1 -1
- package/dist/flushable-stream.js +18 -13
- package/dist/global.d.ts +15 -1
- package/dist/global.d.ts.map +1 -1
- package/dist/global.js +21 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/log-format.d.ts +25 -0
- package/dist/log-format.d.ts.map +1 -0
- package/dist/log-format.js +250 -0
- package/dist/logger.d.ts +28 -30
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +77 -31
- package/dist/private.d.ts +84 -0
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +80 -3
- package/dist/runtime/constants.d.ts +93 -0
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +168 -8
- package/dist/runtime/get-port-lazy.d.ts +25 -0
- package/dist/runtime/get-port-lazy.d.ts.map +1 -0
- package/dist/runtime/get-port-lazy.js +92 -0
- package/dist/runtime/get-world-lazy.d.ts +32 -0
- package/dist/runtime/get-world-lazy.d.ts.map +1 -0
- package/dist/runtime/get-world-lazy.js +56 -0
- package/dist/runtime/helpers.d.ts +50 -7
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +149 -31
- package/dist/runtime/replay-budget.d.ts +98 -0
- package/dist/runtime/replay-budget.d.ts.map +1 -0
- package/dist/runtime/replay-budget.js +191 -0
- package/dist/runtime/resume-hook.d.ts.map +1 -1
- package/dist/runtime/resume-hook.js +39 -23
- package/dist/runtime/run-id-time.d.ts +10 -0
- package/dist/runtime/run-id-time.d.ts.map +1 -0
- package/dist/runtime/run-id-time.js +31 -0
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +44 -9
- package/dist/runtime/runs.d.ts.map +1 -1
- package/dist/runtime/runs.js +4 -1
- package/dist/runtime/start.d.ts +30 -1
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js +138 -20
- package/dist/runtime/step-executor.d.ts +91 -0
- package/dist/runtime/step-executor.d.ts.map +1 -0
- package/dist/runtime/step-executor.js +659 -0
- package/dist/runtime/step-handler.d.ts.map +1 -1
- package/dist/runtime/step-handler.js +699 -556
- package/dist/runtime/suspension-handler.d.ts +55 -6
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +282 -115
- package/dist/runtime/wait-continuation.d.ts +84 -0
- package/dist/runtime/wait-continuation.d.ts.map +1 -0
- package/dist/runtime/wait-continuation.js +92 -0
- package/dist/runtime/wait-until.d.ts +18 -0
- package/dist/runtime/wait-until.d.ts.map +1 -0
- package/dist/runtime/wait-until.js +42 -0
- package/dist/runtime/world-init.d.ts +75 -0
- package/dist/runtime/world-init.d.ts.map +1 -0
- package/dist/runtime/world-init.js +75 -0
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +47 -18
- package/dist/runtime.d.ts +11 -8
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +1234 -334
- package/dist/schemas.d.ts +1 -1
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +1 -1
- package/dist/serialization/client.d.ts +17 -0
- package/dist/serialization/client.d.ts.map +1 -0
- package/dist/serialization/client.js +48 -0
- package/dist/serialization/codec-devalue.d.ts +14 -0
- package/dist/serialization/codec-devalue.d.ts.map +1 -0
- package/dist/serialization/codec-devalue.js +98 -0
- package/dist/serialization/codec.d.ts +106 -0
- package/dist/serialization/codec.d.ts.map +1 -0
- package/dist/serialization/codec.js +17 -0
- package/dist/serialization/compression.d.ts +104 -0
- package/dist/serialization/compression.d.ts.map +1 -0
- package/dist/serialization/compression.js +260 -0
- package/dist/serialization/encryption.d.ts +33 -0
- package/dist/serialization/encryption.d.ts.map +1 -0
- package/dist/serialization/encryption.js +70 -0
- package/dist/serialization/errors.d.ts +34 -0
- package/dist/serialization/errors.d.ts.map +1 -0
- package/dist/serialization/errors.js +59 -0
- package/dist/serialization/format.d.ts +60 -0
- package/dist/serialization/format.d.ts.map +1 -0
- package/dist/serialization/format.js +97 -0
- package/dist/serialization/index.d.ts +19 -0
- package/dist/serialization/index.d.ts.map +1 -0
- package/dist/serialization/index.js +22 -0
- package/dist/serialization/reducers/class.d.ts +11 -0
- package/dist/serialization/reducers/class.d.ts.map +1 -0
- package/dist/serialization/reducers/class.js +68 -0
- package/dist/serialization/reducers/common.d.ts +16 -0
- package/dist/serialization/reducers/common.d.ts.map +1 -0
- package/dist/serialization/reducers/common.js +417 -0
- package/dist/serialization/reducers/step-function.d.ts +35 -0
- package/dist/serialization/reducers/step-function.d.ts.map +1 -0
- package/dist/serialization/reducers/step-function.js +88 -0
- package/dist/serialization/step.d.ts +17 -0
- package/dist/serialization/step.d.ts.map +1 -0
- package/dist/serialization/step.js +48 -0
- package/dist/serialization/types.d.ts +253 -0
- package/dist/serialization/types.d.ts.map +1 -0
- package/dist/serialization/types.js +25 -0
- package/dist/serialization/workflow.d.ts +29 -0
- package/dist/serialization/workflow.d.ts.map +1 -0
- package/dist/serialization/workflow.js +54 -0
- package/dist/serialization-format.d.ts +15 -0
- package/dist/serialization-format.d.ts.map +1 -1
- package/dist/serialization-format.js +209 -11
- package/dist/serialization.d.ts +313 -214
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +1417 -658
- package/dist/set-attributes.d.ts +13 -0
- package/dist/set-attributes.d.ts.map +1 -0
- package/dist/set-attributes.js +42 -0
- package/dist/sleep.d.ts.map +1 -1
- package/dist/sleep.js +3 -2
- package/dist/source-map.d.ts +5 -0
- package/dist/source-map.d.ts.map +1 -1
- package/dist/source-map.js +102 -10
- package/dist/step/context-storage.d.ts +16 -0
- package/dist/step/context-storage.d.ts.map +1 -1
- package/dist/step/context-storage.js +1 -1
- package/dist/step/get-closure-vars.d.ts.map +1 -1
- package/dist/step/get-closure-vars.js +3 -2
- package/dist/step/get-step-metadata.d.ts.map +1 -1
- package/dist/step/get-step-metadata.js +3 -2
- package/dist/step/get-workflow-metadata.d.ts.map +1 -1
- package/dist/step/get-workflow-metadata.js +3 -2
- package/dist/step/writable-stream.d.ts.map +1 -1
- package/dist/step/writable-stream.js +49 -5
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +98 -20
- package/dist/symbols.d.ts +28 -0
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +29 -1
- package/dist/telemetry/semantic-conventions.d.ts +30 -2
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +21 -1
- package/dist/telemetry.d.ts +60 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +82 -4
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +23 -1
- package/dist/util.d.ts +16 -6
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +25 -16
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +2 -2
- package/dist/vm/index.d.ts.map +1 -1
- package/dist/vm/index.js +3 -2
- package/dist/vm/script-cache.d.ts +28 -0
- package/dist/vm/script-cache.d.ts.map +1 -0
- package/dist/vm/script-cache.js +140 -0
- package/dist/workflow/abort-controller.d.ts +65 -0
- package/dist/workflow/abort-controller.d.ts.map +1 -0
- package/dist/workflow/abort-controller.js +260 -0
- package/dist/workflow/attribute-dispatcher.d.ts +6 -0
- package/dist/workflow/attribute-dispatcher.d.ts.map +1 -0
- package/dist/workflow/attribute-dispatcher.js +48 -0
- package/dist/workflow/create-hook.d.ts.map +1 -1
- package/dist/workflow/create-hook.js +23 -2
- package/dist/workflow/define-hook.d.ts +1 -1
- package/dist/workflow/define-hook.d.ts.map +1 -1
- package/dist/workflow/define-hook.js +8 -4
- package/dist/workflow/get-workflow-metadata.d.ts.map +1 -1
- package/dist/workflow/get-workflow-metadata.js +14 -3
- package/dist/workflow/hook.d.ts.map +1 -1
- package/dist/workflow/hook.js +207 -33
- package/dist/workflow/index.d.ts +1 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +5 -3
- package/dist/workflow/set-attributes.d.ts +73 -0
- package/dist/workflow/set-attributes.d.ts.map +1 -0
- package/dist/workflow/set-attributes.js +65 -0
- package/dist/workflow/sleep.d.ts.map +1 -1
- package/dist/workflow/sleep.js +45 -8
- package/dist/workflow/world-init-stub.d.ts +15 -0
- package/dist/workflow/world-init-stub.d.ts.map +1 -0
- package/dist/workflow/world-init-stub.js +15 -0
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +148 -47
- package/docs/api-reference/create-hook.mdx +38 -0
- package/docs/api-reference/create-webhook.mdx +1 -0
- package/docs/api-reference/experimental-set-attributes.mdx +65 -0
- package/docs/api-reference/fetch.mdx +5 -0
- package/docs/api-reference/index.mdx +3 -0
- package/docs/foundations/cancellation.mdx +459 -0
- package/docs/foundations/errors-and-retries.mdx +7 -3
- package/docs/foundations/hooks.mdx +29 -0
- package/docs/foundations/idempotency.mdx +236 -11
- package/docs/foundations/index.mdx +3 -3
- package/docs/foundations/meta.json +3 -2
- package/docs/foundations/serialization.mdx +78 -42
- package/docs/foundations/starting-workflows.mdx +6 -2
- package/docs/foundations/streaming.mdx +14 -23
- package/docs/foundations/versioning.mdx +263 -0
- package/docs/how-it-works/cancellation.mdx +287 -0
- package/docs/how-it-works/code-transform.mdx +2 -2
- package/docs/how-it-works/encryption.mdx +2 -2
- package/docs/how-it-works/event-sourcing.mdx +2 -2
- package/docs/how-it-works/meta.json +2 -1
- package/package.json +22 -10
- package/docs/foundations/common-patterns.mdx +0 -265
package/dist/telemetry.d.ts
CHANGED
|
@@ -1,5 +1,58 @@
|
|
|
1
1
|
import type * as api from '@opentelemetry/api';
|
|
2
2
|
import type { Span, SpanKind, SpanOptions } from '@opentelemetry/api';
|
|
3
|
+
/**
|
|
4
|
+
* Controls how workflow/step queue-handler spans relate to the run-origin
|
|
5
|
+
* trace context carried in queue messages:
|
|
6
|
+
*
|
|
7
|
+
* - `'linked'` (default): each invocation starts a NEW root trace; the
|
|
8
|
+
* run-origin context (and the incoming delivery context) are attached as
|
|
9
|
+
* span links. This keeps traces bounded per invocation instead of
|
|
10
|
+
* stitching a long-lived run into one giant trace.
|
|
11
|
+
* - `'continuous'`: the restored run-origin context becomes the parent of
|
|
12
|
+
* the invocation span (legacy behavior), producing a single trace that
|
|
13
|
+
* spans the entire run.
|
|
14
|
+
*/
|
|
15
|
+
export type WorkflowTraceMode = 'linked' | 'continuous';
|
|
16
|
+
/**
|
|
17
|
+
* Resolves the active trace mode from the `WORKFLOW_TRACE_MODE` env var.
|
|
18
|
+
* Defaults to `'linked'`; any value other than `'continuous'` selects it.
|
|
19
|
+
* Unrecognized non-empty values (e.g. typos like `continous`) emit a
|
|
20
|
+
* one-time warning so silent fallback to `linked` is at least visible.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getWorkflowTraceMode(): WorkflowTraceMode;
|
|
23
|
+
/**
|
|
24
|
+
* Returns whether a serialized trace carrier is usable, i.e. present and
|
|
25
|
+
* non-empty. `serializeTraceCarrier()` returns `{}` when no OTEL SDK is
|
|
26
|
+
* registered or no span is active, and `start()` always attaches the
|
|
27
|
+
* carrier to the first queue message — so an empty carrier must be treated
|
|
28
|
+
* the same as an absent one wherever the trace-mode logic branches.
|
|
29
|
+
*/
|
|
30
|
+
export declare function isUsableTraceCarrier(carrier: Record<string, string> | undefined): carrier is Record<string, string>;
|
|
31
|
+
/**
|
|
32
|
+
* Returns the trace carrier to attach to messages the current invocation
|
|
33
|
+
* enqueues. In `linked` mode the ORIGINAL run-origin carrier is forwarded
|
|
34
|
+
* unchanged (when usable) so every future invocation links back to the same
|
|
35
|
+
* origin; otherwise — `continuous` mode, or no usable incoming carrier —
|
|
36
|
+
* the current (active) context is serialized, so the trace keeps chaining
|
|
37
|
+
* (continuous) or the first instrumented invocation becomes the de-facto
|
|
38
|
+
* origin (linked).
|
|
39
|
+
*/
|
|
40
|
+
export declare function getNextTraceCarrier(traceMode: WorkflowTraceMode, incomingCarrier: Record<string, string> | undefined): Promise<Record<string, string>>;
|
|
41
|
+
/**
|
|
42
|
+
* Builds the span links for a queue-delivered invocation span
|
|
43
|
+
* (`workflow.execute` / `step.execute`):
|
|
44
|
+
*
|
|
45
|
+
* - In `linked` mode the invocation span is a CHILD of the local delivery
|
|
46
|
+
* (flow-route) context, so the only link is to the run-origin context
|
|
47
|
+
* from the message's trace carrier — connecting this bounded per-invocation
|
|
48
|
+
* trace back to where the run was started. The run-origin context is a
|
|
49
|
+
* link, never a parent, and re-enqueues forward the original carrier
|
|
50
|
+
* unchanged, so the whole run is never stitched into one giant trace.
|
|
51
|
+
* The link is skipped when the carrier is absent, empty, or invalid.
|
|
52
|
+
* - In `continuous` mode the run-origin context is restored as the parent
|
|
53
|
+
* instead, and the link points at the incoming delivery context.
|
|
54
|
+
*/
|
|
55
|
+
export declare function buildInvocationSpanLinks(traceMode: WorkflowTraceMode, incomingCarrier: Record<string, string> | undefined): Promise<api.Link[] | undefined>;
|
|
3
56
|
/**
|
|
4
57
|
* Serializes the current trace context into a format that can be passed through queues
|
|
5
58
|
* @returns A record of strings representing the trace context
|
|
@@ -31,6 +84,13 @@ export declare function instrumentObject<T extends object>(prefix: string, o: T)
|
|
|
31
84
|
export declare function getSpanKind(field: keyof typeof SpanKind): Promise<api.SpanKind | undefined>;
|
|
32
85
|
export declare function withOtel<T>(fn: (otel: typeof api) => T): Promise<Awaited<T> | undefined>;
|
|
33
86
|
export declare function linkToCurrentContext(): Promise<[api.Link] | undefined>;
|
|
87
|
+
/**
|
|
88
|
+
* Builds a span link pointing at the span context embedded in a serialized
|
|
89
|
+
* trace carrier (e.g. the run-origin context flowing through queue
|
|
90
|
+
* messages). Returns `undefined` when OTEL is unavailable, the carrier is
|
|
91
|
+
* absent, or it does not contain a valid span context.
|
|
92
|
+
*/
|
|
93
|
+
export declare function linkToTraceCarrier(carrier: Record<string, string> | undefined): Promise<api.Link | undefined>;
|
|
34
94
|
/**
|
|
35
95
|
* Workflow context to propagate via baggage
|
|
36
96
|
*/
|
package/dist/telemetry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAUtE;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAO7E;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,oCAMrC;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAChD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAcZ;AAiBD,wBAAsB,KAAK,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,IAAI,EACH,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACjC,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACvD,OAAO,CAAC,CAAC,CAAC,CA4BZ;AAwBD,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,wCAQhC;AAED,wBAAsB,aAAa,kCAElC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAa1E;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,OAAO,QAAQ,qCAE7D;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC,GAC1B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAIjC;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAMtE;AAMD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,OAAO,EAAE,sBAAsB,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAiBZ;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CACjD,sBAAsB,GAAG,SAAS,CACnC,CAgBA"}
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAUtE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,YAAY,CAAC;AAKxD;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAUxD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC1C,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,iBAAiB,EAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAClD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAIjC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,iBAAiB,EAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAClD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAMjC;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAO7E;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,oCAMrC;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAChD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAcZ;AAiBD,wBAAsB,KAAK,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,IAAI,EACH,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACjC,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GACvD,OAAO,CAAC,CAAC,CAAC,CA4BZ;AAwBD,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,wCAQhC;AAED,wBAAsB,aAAa,kCAElC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAa1E;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,OAAO,QAAQ,qCAE7D;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC,GAC1B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAIjC;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAMtE;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,CAS/B;AAMD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,OAAO,EAAE,sBAAsB,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAiBZ;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CACjD,sBAAsB,GAAG,SAAS,CACnC,CAgBA"}
|
package/dist/telemetry.js
CHANGED
|
@@ -2,9 +2,68 @@ import { once } from '@workflow/utils';
|
|
|
2
2
|
import { WorkflowSuspension } from './global.js';
|
|
3
3
|
import { runtimeLogger } from './logger.js';
|
|
4
4
|
import * as Attr from './telemetry/semantic-conventions.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
/** Unrecognized `WORKFLOW_TRACE_MODE` values we already warned about. */
|
|
6
|
+
const warnedUnrecognizedTraceModes = new Set();
|
|
7
|
+
/**
|
|
8
|
+
* Resolves the active trace mode from the `WORKFLOW_TRACE_MODE` env var.
|
|
9
|
+
* Defaults to `'linked'`; any value other than `'continuous'` selects it.
|
|
10
|
+
* Unrecognized non-empty values (e.g. typos like `continous`) emit a
|
|
11
|
+
* one-time warning so silent fallback to `linked` is at least visible.
|
|
12
|
+
*/
|
|
13
|
+
export function getWorkflowTraceMode() {
|
|
14
|
+
const value = process.env.WORKFLOW_TRACE_MODE;
|
|
15
|
+
if (value === 'continuous')
|
|
16
|
+
return 'continuous';
|
|
17
|
+
if (value && value !== 'linked' && !warnedUnrecognizedTraceModes.has(value)) {
|
|
18
|
+
warnedUnrecognizedTraceModes.add(value);
|
|
19
|
+
runtimeLogger.warn(`Unrecognized WORKFLOW_TRACE_MODE value "${value}"; expected "linked" or "continuous". Falling back to "linked".`);
|
|
20
|
+
}
|
|
21
|
+
return 'linked';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Returns whether a serialized trace carrier is usable, i.e. present and
|
|
25
|
+
* non-empty. `serializeTraceCarrier()` returns `{}` when no OTEL SDK is
|
|
26
|
+
* registered or no span is active, and `start()` always attaches the
|
|
27
|
+
* carrier to the first queue message — so an empty carrier must be treated
|
|
28
|
+
* the same as an absent one wherever the trace-mode logic branches.
|
|
29
|
+
*/
|
|
30
|
+
export function isUsableTraceCarrier(carrier) {
|
|
31
|
+
return carrier !== undefined && Object.keys(carrier).length > 0;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Returns the trace carrier to attach to messages the current invocation
|
|
35
|
+
* enqueues. In `linked` mode the ORIGINAL run-origin carrier is forwarded
|
|
36
|
+
* unchanged (when usable) so every future invocation links back to the same
|
|
37
|
+
* origin; otherwise — `continuous` mode, or no usable incoming carrier —
|
|
38
|
+
* the current (active) context is serialized, so the trace keeps chaining
|
|
39
|
+
* (continuous) or the first instrumented invocation becomes the de-facto
|
|
40
|
+
* origin (linked).
|
|
41
|
+
*/
|
|
42
|
+
export function getNextTraceCarrier(traceMode, incomingCarrier) {
|
|
43
|
+
return traceMode === 'linked' && isUsableTraceCarrier(incomingCarrier)
|
|
44
|
+
? Promise.resolve(incomingCarrier)
|
|
45
|
+
: serializeTraceCarrier();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Builds the span links for a queue-delivered invocation span
|
|
49
|
+
* (`workflow.execute` / `step.execute`):
|
|
50
|
+
*
|
|
51
|
+
* - In `linked` mode the invocation span is a CHILD of the local delivery
|
|
52
|
+
* (flow-route) context, so the only link is to the run-origin context
|
|
53
|
+
* from the message's trace carrier — connecting this bounded per-invocation
|
|
54
|
+
* trace back to where the run was started. The run-origin context is a
|
|
55
|
+
* link, never a parent, and re-enqueues forward the original carrier
|
|
56
|
+
* unchanged, so the whole run is never stitched into one giant trace.
|
|
57
|
+
* The link is skipped when the carrier is absent, empty, or invalid.
|
|
58
|
+
* - In `continuous` mode the run-origin context is restored as the parent
|
|
59
|
+
* instead, and the link points at the incoming delivery context.
|
|
60
|
+
*/
|
|
61
|
+
export async function buildInvocationSpanLinks(traceMode, incomingCarrier) {
|
|
62
|
+
if (traceMode !== 'linked')
|
|
63
|
+
return linkToCurrentContext();
|
|
64
|
+
const originLink = await linkToTraceCarrier(isUsableTraceCarrier(incomingCarrier) ? incomingCarrier : undefined);
|
|
65
|
+
return originLink ? [originLink] : undefined;
|
|
66
|
+
}
|
|
8
67
|
/**
|
|
9
68
|
* Serializes the current trace context into a format that can be passed through queues
|
|
10
69
|
* @returns A record of strings representing the trace context
|
|
@@ -158,6 +217,25 @@ export function linkToCurrentContext() {
|
|
|
158
217
|
return [{ context }];
|
|
159
218
|
});
|
|
160
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* Builds a span link pointing at the span context embedded in a serialized
|
|
222
|
+
* trace carrier (e.g. the run-origin context flowing through queue
|
|
223
|
+
* messages). Returns `undefined` when OTEL is unavailable, the carrier is
|
|
224
|
+
* absent, or it does not contain a valid span context.
|
|
225
|
+
*/
|
|
226
|
+
export async function linkToTraceCarrier(carrier) {
|
|
227
|
+
if (!carrier)
|
|
228
|
+
return;
|
|
229
|
+
const [context, otel] = await Promise.all([
|
|
230
|
+
getSpanContextForTraceCarrier(carrier),
|
|
231
|
+
OtelApi.value,
|
|
232
|
+
]);
|
|
233
|
+
if (!context || !otel)
|
|
234
|
+
return;
|
|
235
|
+
if (!otel.trace.isSpanContextValid(context))
|
|
236
|
+
return;
|
|
237
|
+
return { context };
|
|
238
|
+
}
|
|
161
239
|
/**
|
|
162
240
|
* Sets workflow context as OTEL baggage for automatic propagation.
|
|
163
241
|
* Baggage is propagated across service boundaries via HTTP headers.
|
|
@@ -197,4 +275,4 @@ export async function getWorkflowBaggage() {
|
|
|
197
275
|
workflowName: name,
|
|
198
276
|
};
|
|
199
277
|
}
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlbGVtZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxLQUFLLElBQUksTUFBTSxxQ0FBcUMsQ0FBQztBQUU1RCwrREFBK0Q7QUFDL0Qsc0NBQXNDO0FBQ3RDLCtEQUErRDtBQUUvRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHFCQUFxQjtJQUN6QyxNQUFNLElBQUksR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDakMsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNyQixNQUFNLE9BQU8sR0FBMkIsRUFBRSxDQUFDO0lBQzNDLDhDQUE4QztJQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSx1QkFBdUIsQ0FDM0MsWUFBb0M7SUFFcEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTztJQUNsQix1Q0FBdUM7SUFDdkMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdC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SUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0I7SUFHdEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLElBQUksQ0FBQyxPQUFPO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFL0IsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUN6RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUV0RCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRXRDLE9BQU87UUFDTCxhQUFhLEVBQUUsS0FBSztRQUNwQixZQUFZLEVBQUUsSUFBSTtLQUNuQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgYXBpIGZyb20gJ0BvcGVudGVsZW1ldHJ5L2FwaSc7XG5pbXBvcnQgdHlwZSB7IFNwYW4sIFNwYW5LaW5kLCBTcGFuT3B0aW9ucyB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L2FwaSc7XG5pbXBvcnQgeyBvbmNlIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzJztcbmltcG9ydCB7IFdvcmtmbG93U3VzcGVuc2lvbiB9IGZyb20gJy4vZ2xvYmFsLmpzJztcbmltcG9ydCB7IHJ1bnRpbWVMb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5qcyc7XG5pbXBvcnQgKiBhcyBBdHRyIGZyb20gJy4vdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUcmFjZSBDb250ZXh0IFByb3BhZ2F0aW9uIFV0aWxpdGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgY3VycmVudCB0cmFjZSBjb250ZXh0IGludG8gYSBmb3JtYXQgdGhhdCBjYW4gYmUgcGFzc2VkIHRocm91Z2ggcXVldWVzXG4gKiBAcmV0dXJucyBBIHJlY29yZCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgdHJhY2UgY29udGV4dFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VyaWFsaXplVHJhY2VDYXJyaWVyKCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICBjb25zdCBvdGVsID0gYXdhaXQgT3RlbEFwaS52YWx1ZTtcbiAgaWYgKCFvdGVsKSByZXR1cm4ge307XG4gIGNvbnN0IGNhcnJpZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgLy8gSW5qZWN0IHRoZSBjdXJyZW50IGNvbnRleHQgaW50byB0aGUgY2FycmllclxuICBvdGVsLnByb3BhZ2F0aW9uLmluamVjdChvdGVsLmNvbnRleHQuYWN0aXZlKCksIGNhcnJpZXIpO1xuICByZXR1cm4gY2Fycmllcjtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgdHJhY2UgY29udGV4dCBhbmQgcmV0dXJucyBhIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBjb250aW51ZSB0aGUgdHJhY2VcbiAqIEBwYXJhbSB0cmFjZUNhcnJpZXIgVGhlIHNlcmlhbGl6ZWQgdHJhY2UgY29udGV4dFxuICogQHJldHVybnMgT3BlblRlbGVtZXRyeSBjb250ZXh0IHdpdGggdGhlIHJlc3RvcmVkIHRyYWNlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNlcmlhbGl6ZVRyYWNlQ2FycmllcihcbiAgdHJhY2VDYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4pIHtcbiAgY29uc3Qgb3RlbCA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghb3RlbCkgcmV0dXJuO1xuICAvLyBFeHRyYWN0IHRoZSBjb250ZXh0IGZyb20gdGhlIGNhcnJpZXJcbiAgcmV0dXJuIG90ZWwucHJvcGFnYXRpb24uZXh0cmFjdChvdGVsLmNvbnRleHQuYWN0aXZlKCksIHRyYWNlQ2Fycmllcik7XG59XG5cbi8qKlxuICogUnVucyBhIGZ1bmN0aW9uIHdpdGhpbiB0aGUgY29udGV4dCBvZiBhIGRlc2VyaWFsaXplZCB0cmFjZVxuICogQHBhcmFtIHRyYWNlQ2FycmllciBUaGUgc2VyaWFsaXplZCB0cmFjZSBjYXJyaWVyIChvcHRpb25hbClcbiAqIEBwYXJhbSBmbiBUaGUgZnVuY3Rpb24gdG8gcnVuIHdpdGhpbiB0aGUgdHJhY2UgY29udGV4dFxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhUcmFjZUNvbnRleHQ8VD4oXG4gIHRyYWNlQ2FycmllcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZCxcbiAgZm46ICgpID0+IFByb21pc2U8VD5cbik6IFByb21pc2U8VD4ge1xuICBpZiAoIXRyYWNlQ2Fycmllcikge1xuICAgIHJldHVybiBmbigpO1xuICB9XG5cbiAgY29uc3Qgb3RlbCA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghb3RlbCkgcmV0dXJuIGZuKCk7XG5cbiAgY29uc3QgZXh0cmFjdGVkQ29udGV4dCA9IGF3YWl0IGRlc2VyaWFsaXplVHJhY2VDYXJyaWVyKHRyYWNlQ2Fycmllcik7XG4gIGlmICghZXh0cmFjdGVkQ29udGV4dCkge1xuICAgIHJldHVybiBmbigpO1xuICB9XG5cbiAgcmV0dXJuIG90ZWwuY29udGV4dC53aXRoKGV4dHJhY3RlZENvbnRleHQsIGFzeW5jICgpID0+IGF3YWl0IGZuKCkpO1xufVxuXG5jb25zdCBPdGVsQXBpID0gb25jZShhc3luYyAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGltcG9ydCgnQG9wZW50ZWxlbWV0cnkvYXBpJyk7XG4gIH0gY2F0Y2gge1xuICAgIHJ1bnRpbWVMb2dnZXIuaW5mbygnT3BlblRlbGVtZXRyeSBub3QgYXZhaWxhYmxlLCB0cmFjaW5nIHdpbGwgYmUgZGlzYWJsZWQnKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufSk7XG5cbmNvbnN0IFRyYWNlciA9IG9uY2UoYXN5bmMgKCkgPT4ge1xuICBjb25zdCBhcGkgPSBhd2FpdCBPdGVsQXBpLnZhbHVlO1xuICBpZiAoIWFwaSkgcmV0dXJuIG51bGw7XG4gIHJldHVybiBhcGkudHJhY2UuZ2V0VHJhY2VyKCd3b3JrZmxvdycpO1xufSk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmFjZTxUPihcbiAgc3Bhbk5hbWU6IHN0cmluZyxcbiAgLi4uYXJnczpcbiAgICB8IFtmbjogKHNwYW4/OiBTcGFuKSA9PiBQcm9taXNlPFQ+XVxuICAgIHwgW29wdHM6IFNwYW5PcHRpb25zLCBmbjogKHNwYW4/OiBTcGFuKSA9PiBQcm9taXNlPFQ+XVxuKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IFt0cmFjZXIsIG90ZWxdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1RyYWNlci52YWx1ZSwgT3RlbEFwaS52YWx1ZV0pO1xuICBjb25zdCB7IGZuLCBvcHRzIH0gPVxuICAgIHR5cGVvZiBhcmdzWzBdID09PSAnZnVuY3Rpb24nXG4gICAgICA/IHsgZm46IGFyZ3NbMF0sIG9wdHM6IHt9IH1cbiAgICAgIDogeyBmbjogYXJnc1sxXSwgb3B0czogYXJnc1swXSB9O1xuICBpZiAoIWZuKSB0aHJvdyBuZXcgRXJyb3IoJ0Z1bmN0aW9uIHRvIHRyYWNlIG11c3QgYmUgcHJvdmlkZWQnKTtcblxuICBpZiAoIXRyYWNlciB8fCAhb3RlbCkge1xuICAgIHJldHVybiBhd2FpdCBmbigpO1xuICB9XG5cbiAgcmV0dXJuIHRyYWNlci5zdGFydEFjdGl2ZVNwYW4oc3Bhbk5hbWUsIG9wdHMsIGFzeW5jIChzcGFuKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKHNwYW4pO1xuICAgICAgc3Bhbi5zZXRTdGF0dXMoeyBjb2RlOiBvdGVsLlNwYW5TdGF0dXNDb2RlLk9LIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBzcGFuLnNldFN0YXR1cyh7XG4gICAgICAgIGNvZGU6IG90ZWwuU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6IChlIGFzIEVycm9yKS5tZXNzYWdlLFxuICAgICAgfSk7XG4gICAgICBhcHBseVdvcmtmbG93U3VzcGVuc2lvblRvU3BhbihlLCBvdGVsLCBzcGFuKTtcbiAgICAgIHRocm93IGU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNwYW4uZW5kKCk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIHdvcmtmbG93IHN1c3BlbnNpb24gYXR0cmlidXRlcyB0byB0aGUgZ2l2ZW4gc3BhbiBpZiB0aGUgZXJyb3IgaXMgYSBXb3JrZmxvd1N1c3BlbnNpb25cbiAqIHdoaWNoIGlzIHRlY2huaWNhbGx5IG5vdCBhbiBlcnJvciwgYnV0IGFuIGFsZ2VicmFpYyBlZmZlY3QgaW5kaWNhdGluZyBzdXNwZW5zaW9uLlxuICovXG5mdW5jdGlvbiBhcHBseVdvcmtmbG93U3VzcGVuc2lvblRvU3BhbihcbiAgZXJyb3I6IHVua25vd24sXG4gIG90ZWw6IHR5cGVvZiBhcGksXG4gIHNwYW46IGFwaS5TcGFuXG4pIHtcbiAgaWYgKCFlcnJvciB8fCAhV29ya2Zsb3dTdXNwZW5zaW9uLmlzKGVycm9yKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHNwYW4uc2V0U3RhdHVzKHsgY29kZTogb3RlbC5TcGFuU3RhdHVzQ29kZS5PSyB9KTtcbiAgc3Bhbi5zZXRBdHRyaWJ1dGVzKHtcbiAgICAuLi5BdHRyLldvcmtmbG93U3VzcGVuc2lvblN0YXRlKCdzdXNwZW5kZWQnKSxcbiAgICAuLi5BdHRyLldvcmtmbG93U3VzcGVuc2lvblN0ZXBDb3VudChlcnJvci5zdGVwQ291bnQpLFxuICAgIC4uLkF0dHIuV29ya2Zsb3dTdXNwZW5zaW9uSG9va0NvdW50KGVycm9yLmhvb2tDb3VudCksXG4gICAgLi4uQXR0ci5Xb3JrZmxvd1N1c3BlbnNpb25XYWl0Q291bnQoZXJyb3Iud2FpdENvdW50KSxcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTcGFuQ29udGV4dEZvclRyYWNlQ2FycmllcihcbiAgY2FycmllcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKSB7XG4gIGNvbnN0IFtkZXNlcmlhbGl6ZWQsIG90ZWxdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgIGRlc2VyaWFsaXplVHJhY2VDYXJyaWVyKGNhcnJpZXIpLFxuICAgIE90ZWxBcGkudmFsdWUsXG4gIF0pO1xuICBpZiAoIWRlc2VyaWFsaXplZCB8fCAhb3RlbCkgcmV0dXJuO1xuICByZXR1cm4gb3RlbC50cmFjZS5nZXRTcGFuQ29udGV4dChkZXNlcmlhbGl6ZWQpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QWN0aXZlU3BhbigpIHtcbiAgcmV0dXJuIGF3YWl0IHdpdGhPdGVsKChvdGVsKSA9PiBvdGVsLnRyYWNlLmdldEFjdGl2ZVNwYW4oKSk7XG59XG5cbi8qKlxuICogV3JhcHMgYWxsIG1ldGhvZHMgb2YgYW4gb2JqZWN0IHdpdGggdHJhY2luZyBzcGFucy5cbiAqIEBwYXJhbSBwcmVmaXggLSBQcmVmaXggZm9yIHNwYW4gbmFtZXMgKGUuZy4sIFwiV09STEQucnVuc1wiKVxuICogQHBhcmFtIG8gLSBPYmplY3Qgd2l0aCBtZXRob2RzIHRvIGluc3RydW1lbnRcbiAqIEByZXR1cm5zIEluc3RydW1lbnRlZCBvYmplY3Qgd2l0aCBzYW1lIGludGVyZmFjZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5zdHJ1bWVudE9iamVjdDxUIGV4dGVuZHMgb2JqZWN0PihwcmVmaXg6IHN0cmluZywgbzogVCk6IFQge1xuICBjb25zdCBoYW5kbGVycyA9IHt9IGFzIFQ7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG8pIGFzIChrZXlvZiBUKVtdKSB7XG4gICAgaWYgKHR5cGVvZiBvW2tleV0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGhhbmRsZXJzW2tleV0gPSBvW2tleV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGYgPSBvW2tleV07XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBoYW5kbGVyc1trZXldID0gYXN5bmMgKC4uLmFyZ3M6IGFueVtdKSA9PlxuICAgICAgICB0cmFjZShgJHtwcmVmaXh9LiR7U3RyaW5nKGtleSl9YCwge30sICgpID0+IGYoLi4uYXJncykpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaGFuZGxlcnM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTcGFuS2luZChmaWVsZDoga2V5b2YgdHlwZW9mIFNwYW5LaW5kKSB7XG4gIHJldHVybiB3aXRoT3RlbCgoeCkgPT4geC5TcGFuS2luZFtmaWVsZF0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aE90ZWw8VD4oXG4gIGZuOiAob3RlbDogdHlwZW9mIGFwaSkgPT4gVFxuKTogUHJvbWlzZTxBd2FpdGVkPFQ+IHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IG90ZWwgPSBhd2FpdCBPdGVsQXBpLnZhbHVlO1xuICBpZiAoIW90ZWwpIHJldHVybiB1bmRlZmluZWQ7XG4gIHJldHVybiBhd2FpdCBmbihvdGVsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtUb0N1cnJlbnRDb250ZXh0KCk6IFByb21pc2U8W2FwaS5MaW5rXSB8IHVuZGVmaW5lZD4ge1xuICByZXR1cm4gd2l0aE90ZWwoKG90ZWwpOiBbYXBpLkxpbmtdIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gb3RlbC50cmFjZS5nZXRBY3RpdmVTcGFuKCk/LnNwYW5Db250ZXh0KCk7XG4gICAgaWYgKCFjb250ZXh0KSByZXR1cm47XG4gICAgcmV0dXJuIFt7IGNvbnRleHQgfV07XG4gIH0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJhZ2dhZ2UgUHJvcGFnYXRpb24gVXRpbGl0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBXb3JrZmxvdyBjb250ZXh0IHRvIHByb3BhZ2F0ZSB2aWEgYmFnZ2FnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93QmFnZ2FnZUNvbnRleHQge1xuICB3b3JrZmxvd1J1bklkOiBzdHJpbmc7XG4gIHdvcmtmbG93TmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNldHMgd29ya2Zsb3cgY29udGV4dCBhcyBPVEVMIGJhZ2dhZ2UgZm9yIGF1dG9tYXRpYyBwcm9wYWdhdGlvbi5cbiAqIEJhZ2dhZ2UgaXMgcHJvcGFnYXRlZCBhY3Jvc3Mgc2VydmljZSBib3VuZGFyaWVzIHZpYSBIVFRQIGhlYWRlcnMuXG4gKiBAcGFyYW0gY29udGV4dCAtIFdvcmtmbG93IGNvbnRleHQgdG8gc2V0IGFzIGJhZ2dhZ2VcbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdG8gcnVuIHdpdGhpbiB0aGUgYmFnZ2FnZSBjb250ZXh0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3aXRoV29ya2Zsb3dCYWdnYWdlPFQ+KFxuICBjb250ZXh0OiBXb3JrZmxvd0JhZ2dhZ2VDb250ZXh0LFxuICBmbjogKCkgPT4gUHJvbWlzZTxUPlxuKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IG90ZWwgPSBhd2FpdCBPdGVsQXBpLnZhbHVlO1xuICBpZiAoIW90ZWwpIHJldHVybiBmbigpO1xuXG4gIC8vIENyZWF0ZSBiYWdnYWdlIHdpdGggd29ya2Zsb3cgY29udGV4dFxuICBjb25zdCBiYWdnYWdlID0gb3RlbC5wcm9wYWdhdGlvbi5jcmVhdGVCYWdnYWdlKHtcbiAgICAnd29ya2Zsb3cucnVuX2lkJzogeyB2YWx1ZTogY29udGV4dC53b3JrZmxvd1J1bklkIH0sXG4gICAgJ3dvcmtmbG93Lm5hbWUnOiB7IHZhbHVlOiBjb250ZXh0LndvcmtmbG93TmFtZSB9LFxuICB9KTtcblxuICAvLyBTZXQgYmFnZ2FnZSBpbiBjb250ZXh0IGFuZCBydW4gZnVuY3Rpb25cbiAgY29uc3QgY29udGV4dFdpdGhCYWdnYWdlID0gb3RlbC5wcm9wYWdhdGlvbi5zZXRCYWdnYWdlKFxuICAgIG90ZWwuY29udGV4dC5hY3RpdmUoKSxcbiAgICBiYWdnYWdlXG4gICk7XG5cbiAgcmV0dXJuIG90ZWwuY29udGV4dC53aXRoKGNvbnRleHRXaXRoQmFnZ2FnZSwgKCkgPT4gZm4oKSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHdvcmtmbG93IGNvbnRleHQgZnJvbSBPVEVMIGJhZ2dhZ2UuXG4gKiBAcmV0dXJucyBXb3JrZmxvdyBjb250ZXh0IGlmIHByZXNlbnQgaW4gYmFnZ2FnZSwgdW5kZWZpbmVkIG90aGVyd2lzZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V29ya2Zsb3dCYWdnYWdlKCk6IFByb21pc2U8XG4gIFdvcmtmbG93QmFnZ2FnZUNvbnRleHQgfCB1bmRlZmluZWRcbj4ge1xuICBjb25zdCBvdGVsID0gYXdhaXQgT3RlbEFwaS52YWx1ZTtcbiAgaWYgKCFvdGVsKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGJhZ2dhZ2UgPSBvdGVsLnByb3BhZ2F0aW9uLmdldEJhZ2dhZ2Uob3RlbC5jb250ZXh0LmFjdGl2ZSgpKTtcbiAgaWYgKCFiYWdnYWdlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHJ1bklkID0gYmFnZ2FnZS5nZXRFbnRyeSgnd29ya2Zsb3cucnVuX2lkJyk/LnZhbHVlO1xuICBjb25zdCBuYW1lID0gYmFnZ2FnZS5nZXRFbnRyeSgnd29ya2Zsb3cubmFtZScpPy52YWx1ZTtcblxuICBpZiAoIXJ1bklkIHx8ICFuYW1lKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgd29ya2Zsb3dSdW5JZDogcnVuSWQsXG4gICAgd29ya2Zsb3dOYW1lOiBuYW1lLFxuICB9O1xufVxuIl19
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlbGVtZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxLQUFLLElBQUksTUFBTSxxQ0FBcUMsQ0FBQztBQW9CNUQseUVBQXlFO0FBQ3pFLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztBQUV2RDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztJQUM5QyxJQUFJLEtBQUssS0FBSyxZQUFZO1FBQUUsT0FBTyxZQUFZLENBQUM7SUFDaEQsSUFBSSxLQUFLLElBQUksS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVFLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxhQUFhLENBQUMsSUFBSSxDQUNoQiwyQ0FBMkMsS0FBSyxpRUFBaUUsQ0FDbEgsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxPQUEyQztJQUUzQyxPQUFPLE9BQU8sS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsU0FBNEIsRUFDNUIsZUFB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QUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDekQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxLQUFLLENBQUM7SUFFdEQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUV0QyxPQUFPO1FBQ0wsYUFBYSxFQUFFLEtBQUs7UUFDcEIsWUFBWSxFQUFFLElBQUk7S0FDbkIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGFwaSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGknO1xuaW1wb3J0IHR5cGUgeyBTcGFuLCBTcGFuS2luZCwgU3Bhbk9wdGlvbnMgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGknO1xuaW1wb3J0IHsgb25jZSB9IGZyb20gJ0B3b3JrZmxvdy91dGlscyc7XG5pbXBvcnQgeyBXb3JrZmxvd1N1c3BlbnNpb24gfSBmcm9tICcuL2dsb2JhbC5qcyc7XG5pbXBvcnQgeyBydW50aW1lTG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXIuanMnO1xuaW1wb3J0ICogYXMgQXR0ciBmcm9tICcuL3RlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9ucy5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVHJhY2UgQ29udGV4dCBQcm9wYWdhdGlvbiBVdGlsaXRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENvbnRyb2xzIGhvdyB3b3JrZmxvdy9zdGVwIHF1ZXVlLWhhbmRsZXIgc3BhbnMgcmVsYXRlIHRvIHRoZSBydW4tb3JpZ2luXG4gKiB0cmFjZSBjb250ZXh0IGNhcnJpZWQgaW4gcXVldWUgbWVzc2FnZXM6XG4gKlxuICogLSBgJ2xpbmtlZCdgIChkZWZhdWx0KTogZWFjaCBpbnZvY2F0aW9uIHN0YXJ0cyBhIE5FVyByb290IHRyYWNlOyB0aGVcbiAqICAgcnVuLW9yaWdpbiBjb250ZXh0IChhbmQgdGhlIGluY29taW5nIGRlbGl2ZXJ5IGNvbnRleHQpIGFyZSBhdHRhY2hlZCBhc1xuICogICBzcGFuIGxpbmtzLiBUaGlzIGtlZXBzIHRyYWNlcyBib3VuZGVkIHBlciBpbnZvY2F0aW9uIGluc3RlYWQgb2ZcbiAqICAgc3RpdGNoaW5nIGEgbG9uZy1saXZlZCBydW4gaW50byBvbmUgZ2lhbnQgdHJhY2UuXG4gKiAtIGAnY29udGludW91cydgOiB0aGUgcmVzdG9yZWQgcnVuLW9yaWdpbiBjb250ZXh0IGJlY29tZXMgdGhlIHBhcmVudCBvZlxuICogICB0aGUgaW52b2NhdGlvbiBzcGFuIChsZWdhY3kgYmVoYXZpb3IpLCBwcm9kdWNpbmcgYSBzaW5nbGUgdHJhY2UgdGhhdFxuICogICBzcGFucyB0aGUgZW50aXJlIHJ1bi5cbiAqL1xuZXhwb3J0IHR5cGUgV29ya2Zsb3dUcmFjZU1vZGUgPSAnbGlua2VkJyB8ICdjb250aW51b3VzJztcblxuLyoqIFVucmVjb2duaXplZCBgV09SS0ZMT1dfVFJBQ0VfTU9ERWAgdmFsdWVzIHdlIGFscmVhZHkgd2FybmVkIGFib3V0LiAqL1xuY29uc3Qgd2FybmVkVW5yZWNvZ25pemVkVHJhY2VNb2RlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBhY3RpdmUgdHJhY2UgbW9kZSBmcm9tIHRoZSBgV09SS0ZMT1dfVFJBQ0VfTU9ERWAgZW52IHZhci5cbiAqIERlZmF1bHRzIHRvIGAnbGlua2VkJ2A7IGFueSB2YWx1ZSBvdGhlciB0aGFuIGAnY29udGludW91cydgIHNlbGVjdHMgaXQuXG4gKiBVbnJlY29nbml6ZWQgbm9uLWVtcHR5IHZhbHVlcyAoZS5nLiB0eXBvcyBsaWtlIGBjb250aW5vdXNgKSBlbWl0IGFcbiAqIG9uZS10aW1lIHdhcm5pbmcgc28gc2lsZW50IGZhbGxiYWNrIHRvIGBsaW5rZWRgIGlzIGF0IGxlYXN0IHZpc2libGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3JrZmxvd1RyYWNlTW9kZSgpOiBXb3JrZmxvd1RyYWNlTW9kZSB7XG4gIGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnYuV09SS0ZMT1dfVFJBQ0VfTU9ERTtcbiAgaWYgKHZhbHVlID09PSAnY29udGludW91cycpIHJldHVybiAnY29udGludW91cyc7XG4gIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPT0gJ2xpbmtlZCcgJiYgIXdhcm5lZFVucmVjb2duaXplZFRyYWNlTW9kZXMuaGFzKHZhbHVlKSkge1xuICAgIHdhcm5lZFVucmVjb2duaXplZFRyYWNlTW9kZXMuYWRkKHZhbHVlKTtcbiAgICBydW50aW1lTG9nZ2VyLndhcm4oXG4gICAgICBgVW5yZWNvZ25pemVkIFdPUktGTE9XX1RSQUNFX01PREUgdmFsdWUgXCIke3ZhbHVlfVwiOyBleHBlY3RlZCBcImxpbmtlZFwiIG9yIFwiY29udGludW91c1wiLiBGYWxsaW5nIGJhY2sgdG8gXCJsaW5rZWRcIi5gXG4gICAgKTtcbiAgfVxuICByZXR1cm4gJ2xpbmtlZCc7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIGEgc2VyaWFsaXplZCB0cmFjZSBjYXJyaWVyIGlzIHVzYWJsZSwgaS5lLiBwcmVzZW50IGFuZFxuICogbm9uLWVtcHR5LiBgc2VyaWFsaXplVHJhY2VDYXJyaWVyKClgIHJldHVybnMgYHt9YCB3aGVuIG5vIE9URUwgU0RLIGlzXG4gKiByZWdpc3RlcmVkIG9yIG5vIHNwYW4gaXMgYWN0aXZlLCBhbmQgYHN0YXJ0KClgIGFsd2F5cyBhdHRhY2hlcyB0aGVcbiAqIGNhcnJpZXIgdG8gdGhlIGZpcnN0IHF1ZXVlIG1lc3NhZ2Ug4oCUIHNvIGFuIGVtcHR5IGNhcnJpZXIgbXVzdCBiZSB0cmVhdGVkXG4gKiB0aGUgc2FtZSBhcyBhbiBhYnNlbnQgb25lIHdoZXJldmVyIHRoZSB0cmFjZS1tb2RlIGxvZ2ljIGJyYW5jaGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNVc2FibGVUcmFjZUNhcnJpZXIoXG4gIGNhcnJpZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWRcbik6IGNhcnJpZXIgaXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIHJldHVybiBjYXJyaWVyICE9PSB1bmRlZmluZWQgJiYgT2JqZWN0LmtleXMoY2FycmllcikubGVuZ3RoID4gMDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB0cmFjZSBjYXJyaWVyIHRvIGF0dGFjaCB0byBtZXNzYWdlcyB0aGUgY3VycmVudCBpbnZvY2F0aW9uXG4gKiBlbnF1ZXVlcy4gSW4gYGxpbmtlZGAgbW9kZSB0aGUgT1JJR0lOQUwgcnVuLW9yaWdpbiBjYXJyaWVyIGlzIGZvcndhcmRlZFxuICogdW5jaGFuZ2VkICh3aGVuIHVzYWJsZSkgc28gZXZlcnkgZnV0dXJlIGludm9jYXRpb24gbGlua3MgYmFjayB0byB0aGUgc2FtZVxuICogb3JpZ2luOyBvdGhlcndpc2Ug4oCUIGBjb250aW51b3VzYCBtb2RlLCBvciBubyB1c2FibGUgaW5jb21pbmcgY2FycmllciDigJRcbiAqIHRoZSBjdXJyZW50IChhY3RpdmUpIGNvbnRleHQgaXMgc2VyaWFsaXplZCwgc28gdGhlIHRyYWNlIGtlZXBzIGNoYWluaW5nXG4gKiAoY29udGludW91cykgb3IgdGhlIGZpcnN0IGluc3RydW1lbnRlZCBpbnZvY2F0aW9uIGJlY29tZXMgdGhlIGRlLWZhY3RvXG4gKiBvcmlnaW4gKGxpbmtlZCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXh0VHJhY2VDYXJyaWVyKFxuICB0cmFjZU1vZGU6IFdvcmtmbG93VHJhY2VNb2RlLFxuICBpbmNvbWluZ0NhcnJpZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWRcbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICByZXR1cm4gdHJhY2VNb2RlID09PSAnbGlua2VkJyAmJiBpc1VzYWJsZVRyYWNlQ2FycmllcihpbmNvbWluZ0NhcnJpZXIpXG4gICAgPyBQcm9taXNlLnJlc29sdmUoaW5jb21pbmdDYXJyaWVyKVxuICAgIDogc2VyaWFsaXplVHJhY2VDYXJyaWVyKCk7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBzcGFuIGxpbmtzIGZvciBhIHF1ZXVlLWRlbGl2ZXJlZCBpbnZvY2F0aW9uIHNwYW5cbiAqIChgd29ya2Zsb3cuZXhlY3V0ZWAgLyBgc3RlcC5leGVjdXRlYCk6XG4gKlxuICogLSBJbiBgbGlua2VkYCBtb2RlIHRoZSBpbnZvY2F0aW9uIHNwYW4gaXMgYSBDSElMRCBvZiB0aGUgbG9jYWwgZGVsaXZlcnlcbiAqICAgKGZsb3ctcm91dGUpIGNvbnRleHQsIHNvIHRoZSBvbmx5IGxpbmsgaXMgdG8gdGhlIHJ1bi1vcmlnaW4gY29udGV4dFxuICogICBmcm9tIHRoZSBtZXNzYWdlJ3MgdHJhY2UgY2FycmllciDigJQgY29ubmVjdGluZyB0aGlzIGJvdW5kZWQgcGVyLWludm9jYXRpb25cbiAqICAgdHJhY2UgYmFjayB0byB3aGVyZSB0aGUgcnVuIHdhcyBzdGFydGVkLiBUaGUgcnVuLW9yaWdpbiBjb250ZXh0IGlzIGFcbiAqICAgbGluaywgbmV2ZXIgYSBwYXJlbnQsIGFuZCByZS1lbnF1ZXVlcyBmb3J3YXJkIHRoZSBvcmlnaW5hbCBjYXJyaWVyXG4gKiAgIHVuY2hhbmdlZCwgc28gdGhlIHdob2xlIHJ1biBpcyBuZXZlciBzdGl0Y2hlZCBpbnRvIG9uZSBnaWFudCB0cmFjZS5cbiAqICAgVGhlIGxpbmsgaXMgc2tpcHBlZCB3aGVuIHRoZSBjYXJyaWVyIGlzIGFic2VudCwgZW1wdHksIG9yIGludmFsaWQuXG4gKiAtIEluIGBjb250aW51b3VzYCBtb2RlIHRoZSBydW4tb3JpZ2luIGNvbnRleHQgaXMgcmVzdG9yZWQgYXMgdGhlIHBhcmVudFxuICogICBpbnN0ZWFkLCBhbmQgdGhlIGxpbmsgcG9pbnRzIGF0IHRoZSBpbmNvbWluZyBkZWxpdmVyeSBjb250ZXh0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRJbnZvY2F0aW9uU3BhbkxpbmtzKFxuICB0cmFjZU1vZGU6IFdvcmtmbG93VHJhY2VNb2RlLFxuICBpbmNvbWluZ0NhcnJpZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWRcbik6IFByb21pc2U8YXBpLkxpbmtbXSB8IHVuZGVmaW5lZD4ge1xuICBpZiAodHJhY2VNb2RlICE9PSAnbGlua2VkJykgcmV0dXJuIGxpbmtUb0N1cnJlbnRDb250ZXh0KCk7XG4gIGNvbnN0IG9yaWdpbkxpbmsgPSBhd2FpdCBsaW5rVG9UcmFjZUNhcnJpZXIoXG4gICAgaXNVc2FibGVUcmFjZUNhcnJpZXIoaW5jb21pbmdDYXJyaWVyKSA/IGluY29taW5nQ2FycmllciA6IHVuZGVmaW5lZFxuICApO1xuICByZXR1cm4gb3JpZ2luTGluayA/IFtvcmlnaW5MaW5rXSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVzIHRoZSBjdXJyZW50IHRyYWNlIGNvbnRleHQgaW50byBhIGZvcm1hdCB0aGF0IGNhbiBiZSBwYXNzZWQgdGhyb3VnaCBxdWV1ZXNcbiAqIEByZXR1cm5zIEEgcmVjb3JkIG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSB0cmFjZSBjb250ZXh0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXJpYWxpemVUcmFjZUNhcnJpZXIoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIGNvbnN0IG90ZWwgPSBhd2FpdCBPdGVsQXBpLnZhbHVlO1xuICBpZiAoIW90ZWwpIHJldHVybiB7fTtcbiAgY29uc3QgY2FycmllcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAvLyBJbmplY3QgdGhlIGN1cnJlbnQgY29udGV4dCBpbnRvIHRoZSBjYXJyaWVyXG4gIG90ZWwucHJvcGFnYXRpb24uaW5qZWN0KG90ZWwuY29udGV4dC5hY3RpdmUoKSwgY2Fycmllcik7XG4gIHJldHVybiBjYXJyaWVyO1xufVxuXG4vKipcbiAqIERlc2VyaWFsaXplcyB0cmFjZSBjb250ZXh0IGFuZCByZXR1cm5zIGEgY29udGV4dCB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbnRpbnVlIHRoZSB0cmFjZVxuICogQHBhcmFtIHRyYWNlQ2FycmllciBUaGUgc2VyaWFsaXplZCB0cmFjZSBjb250ZXh0XG4gKiBAcmV0dXJucyBPcGVuVGVsZW1ldHJ5IGNvbnRleHQgd2l0aCB0aGUgcmVzdG9yZWQgdHJhY2VcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlc2VyaWFsaXplVHJhY2VDYXJyaWVyKFxuICB0cmFjZUNhcnJpZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbikge1xuICBjb25zdCBvdGVsID0gYXdhaXQgT3RlbEFwaS52YWx1ZTtcbiAgaWYgKCFvdGVsKSByZXR1cm47XG4gIC8vIEV4dHJhY3QgdGhlIGNvbnRleHQgZnJvbSB0aGUgY2FycmllclxuICByZXR1cm4gb3RlbC5wcm9wYWdhdGlvbi5leHRyYWN0KG90ZWwuY29udGV4dC5hY3RpdmUoKSwgdHJhY2VDYXJyaWVyKTtcbn1cblxuLyoqXG4gKiBSdW5zIGEgZnVuY3Rpb24gd2l0aGluIHRoZSBjb250ZXh0IG9mIGEgZGVzZXJpYWxpemVkIHRyYWNlXG4gKiBAcGFyYW0gdHJhY2VDYXJyaWVyIFRoZSBzZXJpYWxpemVkIHRyYWNlIGNhcnJpZXIgKG9wdGlvbmFsKVxuICogQHBhcmFtIGZuIFRoZSBmdW5jdGlvbiB0byBydW4gd2l0aGluIHRoZSB0cmFjZSBjb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aFRyYWNlQ29udGV4dDxUPihcbiAgdHJhY2VDYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkLFxuICBmbjogKCkgPT4gUHJvbWlzZTxUPlxuKTogUHJvbWlzZTxUPiB7XG4gIGlmICghdHJhY2VDYXJyaWVyKSB7XG4gICAgcmV0dXJuIGZuKCk7XG4gIH1cblxuICBjb25zdCBvdGVsID0gYXdhaXQgT3RlbEFwaS52YWx1ZTtcbiAgaWYgKCFvdGVsKSByZXR1cm4gZm4oKTtcblxuICBjb25zdCBleHRyYWN0ZWRDb250ZXh0ID0gYXdhaXQgZGVzZXJpYWxpemVUcmFjZUNhcnJpZXIodHJhY2VDYXJyaWVyKTtcbiAgaWYgKCFleHRyYWN0ZWRDb250ZXh0KSB7XG4gICAgcmV0dXJuIGZuKCk7XG4gIH1cblxuICByZXR1cm4gb3RlbC5jb250ZXh0LndpdGgoZXh0cmFjdGVkQ29udGV4dCwgYXN5bmMgKCkgPT4gYXdhaXQgZm4oKSk7XG59XG5cbmNvbnN0IE90ZWxBcGkgPSBvbmNlKGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgaW1wb3J0KCdAb3BlbnRlbGVtZXRyeS9hcGknKTtcbiAgfSBjYXRjaCB7XG4gICAgcnVudGltZUxvZ2dlci5pbmZvKCdPcGVuVGVsZW1ldHJ5IG5vdCBhdmFpbGFibGUsIHRyYWNpbmcgd2lsbCBiZSBkaXNhYmxlZCcpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59KTtcblxuY29uc3QgVHJhY2VyID0gb25jZShhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGFwaSA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghYXBpKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIGFwaS50cmFjZS5nZXRUcmFjZXIoJ3dvcmtmbG93Jyk7XG59KTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyYWNlPFQ+KFxuICBzcGFuTmFtZTogc3RyaW5nLFxuICAuLi5hcmdzOlxuICAgIHwgW2ZuOiAoc3Bhbj86IFNwYW4pID0+IFByb21pc2U8VD5dXG4gICAgfCBbb3B0czogU3Bhbk9wdGlvbnMsIGZuOiAoc3Bhbj86IFNwYW4pID0+IFByb21pc2U8VD5dXG4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgW3RyYWNlciwgb3RlbF0gPSBhd2FpdCBQcm9taXNlLmFsbChbVHJhY2VyLnZhbHVlLCBPdGVsQXBpLnZhbHVlXSk7XG4gIGNvbnN0IHsgZm4sIG9wdHMgfSA9XG4gICAgdHlwZW9mIGFyZ3NbMF0gPT09ICdmdW5jdGlvbidcbiAgICAgID8geyBmbjogYXJnc1swXSwgb3B0czoge30gfVxuICAgICAgOiB7IGZuOiBhcmdzWzFdLCBvcHRzOiBhcmdzWzBdIH07XG4gIGlmICghZm4pIHRocm93IG5ldyBFcnJvcignRnVuY3Rpb24gdG8gdHJhY2UgbXVzdCBiZSBwcm92aWRlZCcpO1xuXG4gIGlmICghdHJhY2VyIHx8ICFvdGVsKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZuKCk7XG4gIH1cblxuICByZXR1cm4gdHJhY2VyLnN0YXJ0QWN0aXZlU3BhbihzcGFuTmFtZSwgb3B0cywgYXN5bmMgKHNwYW4pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oc3Bhbik7XG4gICAgICBzcGFuLnNldFN0YXR1cyh7IGNvZGU6IG90ZWwuU3BhblN0YXR1c0NvZGUuT0sgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHNwYW4uc2V0U3RhdHVzKHtcbiAgICAgICAgY29kZTogb3RlbC5TcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgbWVzc2FnZTogKGUgYXMgRXJyb3IpLm1lc3NhZ2UsXG4gICAgICB9KTtcbiAgICAgIGFwcGx5V29ya2Zsb3dTdXNwZW5zaW9uVG9TcGFuKGUsIG90ZWwsIHNwYW4pO1xuICAgICAgdGhyb3cgZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc3Bhbi5lbmQoKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgd29ya2Zsb3cgc3VzcGVuc2lvbiBhdHRyaWJ1dGVzIHRvIHRoZSBnaXZlbiBzcGFuIGlmIHRoZSBlcnJvciBpcyBhIFdvcmtmbG93U3VzcGVuc2lvblxuICogd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGFuIGVycm9yLCBidXQgYW4gYWxnZWJyYWljIGVmZmVjdCBpbmRpY2F0aW5nIHN1c3BlbnNpb24uXG4gKi9cbmZ1bmN0aW9uIGFwcGx5V29ya2Zsb3dTdXNwZW5zaW9uVG9TcGFuKFxuICBlcnJvcjogdW5rbm93bixcbiAgb3RlbDogdHlwZW9mIGFwaSxcbiAgc3BhbjogYXBpLlNwYW5cbikge1xuICBpZiAoIWVycm9yIHx8ICFXb3JrZmxvd1N1c3BlbnNpb24uaXMoZXJyb3IpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3Bhbi5zZXRTdGF0dXMoeyBjb2RlOiBvdGVsLlNwYW5TdGF0dXNDb2RlLk9LIH0pO1xuICBzcGFuLnNldEF0dHJpYnV0ZXMoe1xuICAgIC4uLkF0dHIuV29ya2Zsb3dTdXNwZW5zaW9uU3RhdGUoJ3N1c3BlbmRlZCcpLFxuICAgIC4uLkF0dHIuV29ya2Zsb3dTdXNwZW5zaW9uU3RlcENvdW50KGVycm9yLnN0ZXBDb3VudCksXG4gICAgLi4uQXR0ci5Xb3JrZmxvd1N1c3BlbnNpb25Ib29rQ291bnQoZXJyb3IuaG9va0NvdW50KSxcbiAgICAuLi5BdHRyLldvcmtmbG93U3VzcGVuc2lvbldhaXRDb3VudChlcnJvci53YWl0Q291bnQpLFxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNwYW5Db250ZXh0Rm9yVHJhY2VDYXJyaWVyKFxuICBjYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4pIHtcbiAgY29uc3QgW2Rlc2VyaWFsaXplZCwgb3RlbF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgZGVzZXJpYWxpemVUcmFjZUNhcnJpZXIoY2FycmllciksXG4gICAgT3RlbEFwaS52YWx1ZSxcbiAgXSk7XG4gIGlmICghZGVzZXJpYWxpemVkIHx8ICFvdGVsKSByZXR1cm47XG4gIHJldHVybiBvdGVsLnRyYWNlLmdldFNwYW5Db250ZXh0KGRlc2VyaWFsaXplZCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBY3RpdmVTcGFuKCkge1xuICByZXR1cm4gYXdhaXQgd2l0aE90ZWwoKG90ZWwpID0+IG90ZWwudHJhY2UuZ2V0QWN0aXZlU3BhbigpKTtcbn1cblxuLyoqXG4gKiBXcmFwcyBhbGwgbWV0aG9kcyBvZiBhbiBvYmplY3Qgd2l0aCB0cmFjaW5nIHNwYW5zLlxuICogQHBhcmFtIHByZWZpeCAtIFByZWZpeCBmb3Igc3BhbiBuYW1lcyAoZS5nLiwgXCJXT1JMRC5ydW5zXCIpXG4gKiBAcGFyYW0gbyAtIE9iamVjdCB3aXRoIG1ldGhvZHMgdG8gaW5zdHJ1bWVudFxuICogQHJldHVybnMgSW5zdHJ1bWVudGVkIG9iamVjdCB3aXRoIHNhbWUgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0cnVtZW50T2JqZWN0PFQgZXh0ZW5kcyBvYmplY3Q+KHByZWZpeDogc3RyaW5nLCBvOiBUKTogVCB7XG4gIGNvbnN0IGhhbmRsZXJzID0ge30gYXMgVDtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobykgYXMgKGtleW9mIFQpW10pIHtcbiAgICBpZiAodHlwZW9mIG9ba2V5XSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaGFuZGxlcnNba2V5XSA9IG9ba2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZiA9IG9ba2V5XTtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIGhhbmRsZXJzW2tleV0gPSBhc3luYyAoLi4uYXJnczogYW55W10pID0+XG4gICAgICAgIHRyYWNlKGAke3ByZWZpeH0uJHtTdHJpbmcoa2V5KX1gLCB7fSwgKCkgPT4gZiguLi5hcmdzKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBoYW5kbGVycztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNwYW5LaW5kKGZpZWxkOiBrZXlvZiB0eXBlb2YgU3BhbktpbmQpIHtcbiAgcmV0dXJuIHdpdGhPdGVsKCh4KSA9PiB4LlNwYW5LaW5kW2ZpZWxkXSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3aXRoT3RlbDxUPihcbiAgZm46IChvdGVsOiB0eXBlb2YgYXBpKSA9PiBUXG4pOiBQcm9taXNlPEF3YWl0ZWQ8VD4gfCB1bmRlZmluZWQ+IHtcbiAgY29uc3Qgb3RlbCA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghb3RlbCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGF3YWl0IGZuKG90ZWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua1RvQ3VycmVudENvbnRleHQoKTogUHJvbWlzZTxbYXBpLkxpbmtdIHwgdW5kZWZpbmVkPiB7XG4gIHJldHVybiB3aXRoT3RlbCgob3RlbCk6IFthcGkuTGlua10gfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBvdGVsLnRyYWNlLmdldEFjdGl2ZVNwYW4oKT8uc3BhbkNvbnRleHQoKTtcbiAgICBpZiAoIWNvbnRleHQpIHJldHVybjtcbiAgICByZXR1cm4gW3sgY29udGV4dCB9XTtcbiAgfSk7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgc3BhbiBsaW5rIHBvaW50aW5nIGF0IHRoZSBzcGFuIGNvbnRleHQgZW1iZWRkZWQgaW4gYSBzZXJpYWxpemVkXG4gKiB0cmFjZSBjYXJyaWVyIChlLmcuIHRoZSBydW4tb3JpZ2luIGNvbnRleHQgZmxvd2luZyB0aHJvdWdoIHF1ZXVlXG4gKiBtZXNzYWdlcykuIFJldHVybnMgYHVuZGVmaW5lZGAgd2hlbiBPVEVMIGlzIHVuYXZhaWxhYmxlLCB0aGUgY2FycmllciBpc1xuICogYWJzZW50LCBvciBpdCBkb2VzIG5vdCBjb250YWluIGEgdmFsaWQgc3BhbiBjb250ZXh0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlua1RvVHJhY2VDYXJyaWVyKFxuICBjYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPGFwaS5MaW5rIHwgdW5kZWZpbmVkPiB7XG4gIGlmICghY2FycmllcikgcmV0dXJuO1xuICBjb25zdCBbY29udGV4dCwgb3RlbF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgZ2V0U3BhbkNvbnRleHRGb3JUcmFjZUNhcnJpZXIoY2FycmllciksXG4gICAgT3RlbEFwaS52YWx1ZSxcbiAgXSk7XG4gIGlmICghY29udGV4dCB8fCAhb3RlbCkgcmV0dXJuO1xuICBpZiAoIW90ZWwudHJhY2UuaXNTcGFuQ29udGV4dFZhbGlkKGNvbnRleHQpKSByZXR1cm47XG4gIHJldHVybiB7IGNvbnRleHQgfTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCYWdnYWdlIFByb3BhZ2F0aW9uIFV0aWxpdGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogV29ya2Zsb3cgY29udGV4dCB0byBwcm9wYWdhdGUgdmlhIGJhZ2dhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd0JhZ2dhZ2VDb250ZXh0IHtcbiAgd29ya2Zsb3dSdW5JZDogc3RyaW5nO1xuICB3b3JrZmxvd05hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTZXRzIHdvcmtmbG93IGNvbnRleHQgYXMgT1RFTCBiYWdnYWdlIGZvciBhdXRvbWF0aWMgcHJvcGFnYXRpb24uXG4gKiBCYWdnYWdlIGlzIHByb3BhZ2F0ZWQgYWNyb3NzIHNlcnZpY2UgYm91bmRhcmllcyB2aWEgSFRUUCBoZWFkZXJzLlxuICogQHBhcmFtIGNvbnRleHQgLSBXb3JrZmxvdyBjb250ZXh0IHRvIHNldCBhcyBiYWdnYWdlXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRvIHJ1biB3aXRoaW4gdGhlIGJhZ2dhZ2UgY29udGV4dFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aFdvcmtmbG93QmFnZ2FnZTxUPihcbiAgY29udGV4dDogV29ya2Zsb3dCYWdnYWdlQ29udGV4dCxcbiAgZm46ICgpID0+IFByb21pc2U8VD5cbik6IFByb21pc2U8VD4ge1xuICBjb25zdCBvdGVsID0gYXdhaXQgT3RlbEFwaS52YWx1ZTtcbiAgaWYgKCFvdGVsKSByZXR1cm4gZm4oKTtcblxuICAvLyBDcmVhdGUgYmFnZ2FnZSB3aXRoIHdvcmtmbG93IGNvbnRleHRcbiAgY29uc3QgYmFnZ2FnZSA9IG90ZWwucHJvcGFnYXRpb24uY3JlYXRlQmFnZ2FnZSh7XG4gICAgJ3dvcmtmbG93LnJ1bl9pZCc6IHsgdmFsdWU6IGNvbnRleHQud29ya2Zsb3dSdW5JZCB9LFxuICAgICd3b3JrZmxvdy5uYW1lJzogeyB2YWx1ZTogY29udGV4dC53b3JrZmxvd05hbWUgfSxcbiAgfSk7XG5cbiAgLy8gU2V0IGJhZ2dhZ2UgaW4gY29udGV4dCBhbmQgcnVuIGZ1bmN0aW9uXG4gIGNvbnN0IGNvbnRleHRXaXRoQmFnZ2FnZSA9IG90ZWwucHJvcGFnYXRpb24uc2V0QmFnZ2FnZShcbiAgICBvdGVsLmNvbnRleHQuYWN0aXZlKCksXG4gICAgYmFnZ2FnZVxuICApO1xuXG4gIHJldHVybiBvdGVsLmNvbnRleHQud2l0aChjb250ZXh0V2l0aEJhZ2dhZ2UsICgpID0+IGZuKCkpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB3b3JrZmxvdyBjb250ZXh0IGZyb20gT1RFTCBiYWdnYWdlLlxuICogQHJldHVybnMgV29ya2Zsb3cgY29udGV4dCBpZiBwcmVzZW50IGluIGJhZ2dhZ2UsIHVuZGVmaW5lZCBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFdvcmtmbG93QmFnZ2FnZSgpOiBQcm9taXNlPFxuICBXb3JrZmxvd0JhZ2dhZ2VDb250ZXh0IHwgdW5kZWZpbmVkXG4+IHtcbiAgY29uc3Qgb3RlbCA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghb3RlbCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBiYWdnYWdlID0gb3RlbC5wcm9wYWdhdGlvbi5nZXRCYWdnYWdlKG90ZWwuY29udGV4dC5hY3RpdmUoKSk7XG4gIGlmICghYmFnZ2FnZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBydW5JZCA9IGJhZ2dhZ2UuZ2V0RW50cnkoJ3dvcmtmbG93LnJ1bl9pZCcpPy52YWx1ZTtcbiAgY29uc3QgbmFtZSA9IGJhZ2dhZ2UuZ2V0RW50cnkoJ3dvcmtmbG93Lm5hbWUnKT8udmFsdWU7XG5cbiAgaWYgKCFydW5JZCB8fCAhbmFtZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICByZXR1cm4ge1xuICAgIHdvcmtmbG93UnVuSWQ6IHJ1bklkLFxuICAgIHdvcmtmbG93TmFtZTogbmFtZSxcbiAgfTtcbn1cbiJdfQ==
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
export declare function getErrorName(v: unknown): string;
|
|
2
2
|
export declare function getErrorStack(v: unknown): string;
|
|
3
|
+
export declare function isAbortError(value: unknown): value is {
|
|
4
|
+
name: 'AbortError';
|
|
5
|
+
message: string;
|
|
6
|
+
stack?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function promoteAbortErrorToFatal(value: unknown): unknown;
|
|
3
9
|
export interface NormalizedUnknownError {
|
|
4
10
|
name: string;
|
|
5
11
|
message: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAK/C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAKhD;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAYlE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAUhE;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AA2CD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,sBAAsB,CAAC,CAmBjC"}
|
package/dist/types.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { types } from 'node:util';
|
|
2
|
+
import { FatalError } from '@workflow/errors';
|
|
2
3
|
export function getErrorName(v) {
|
|
3
4
|
if (types.isNativeError(v)) {
|
|
4
5
|
return v.name;
|
|
@@ -11,6 +12,27 @@ export function getErrorStack(v) {
|
|
|
11
12
|
}
|
|
12
13
|
return '';
|
|
13
14
|
}
|
|
15
|
+
export function isAbortError(value) {
|
|
16
|
+
return (typeof value === 'object' &&
|
|
17
|
+
value !== null &&
|
|
18
|
+
'name' in value &&
|
|
19
|
+
value.name === 'AbortError' &&
|
|
20
|
+
'message' in value &&
|
|
21
|
+
typeof value.message === 'string' &&
|
|
22
|
+
(!('stack' in value) ||
|
|
23
|
+
value.stack === undefined ||
|
|
24
|
+
typeof value.stack === 'string'));
|
|
25
|
+
}
|
|
26
|
+
export function promoteAbortErrorToFatal(value) {
|
|
27
|
+
if (!isAbortError(value) || FatalError.is(value)) {
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
const fatalError = new FatalError(`Aborted: ${value.message}`);
|
|
31
|
+
if (value.stack) {
|
|
32
|
+
fatalError.stack = value.stack;
|
|
33
|
+
}
|
|
34
|
+
return fatalError;
|
|
35
|
+
}
|
|
14
36
|
function isThenable(value) {
|
|
15
37
|
return (typeof value === 'object' &&
|
|
16
38
|
value !== null &&
|
|
@@ -72,4 +94,4 @@ export async function normalizeUnknownError(value) {
|
|
|
72
94
|
}
|
|
73
95
|
return normalizeSyncError(value);
|
|
74
96
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsTUFBTSxVQUFVLFlBQVksQ0FBQyxDQUFVO0lBQ3JDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsQ0FBVTtJQUN0QyxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixLQUFjO0lBRWQsT0FBTyxDQUNMLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFDekIsS0FBSyxLQUFLLElBQUk7UUFDZCxNQUFNLElBQUksS0FBSztRQUNmLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWTtRQUMzQixTQUFTLElBQUksS0FBSztRQUNsQixPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUTtRQUNqQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDO1lBQ2xCLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUztZQUN6QixPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQ25DLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQWM7SUFDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsWUFBWSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvRCxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFRRCxTQUFTLFVBQVUsQ0FBQyxLQUFjO0lBQ2hDLE9BQU8sQ0FDTCxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLEtBQUssS0FBSyxJQUFJO1FBQ2QsTUFBTSxJQUFJLEtBQUs7UUFDZixPQUFRLEtBQTRCLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FDekQsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLENBQVU7SUFDcEMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0IsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNaLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztZQUNsQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1NBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMxQixPQUFPO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixPQUFPLEVBQUUsQ0FBQztZQUNWLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxPQUFPO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO0lBQ0osQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU87WUFDTCxJQUFJLEVBQUUsT0FBTztZQUNiLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUscUJBQXFCLENBQ3pDLEtBQWM7SUFFZCxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDO1lBQzdCLE1BQU0sVUFBVSxHQUFHLE1BQU0scUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekQsT0FBTztnQkFDTCxHQUFHLFVBQVU7Z0JBQ2IsT0FBTyxFQUFFLHNCQUFzQixVQUFVLENBQUMsT0FBTyxFQUFFO2FBQ3BELENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxTQUFTLEVBQUUsQ0FBQztZQUNuQixNQUFNLFVBQVUsR0FBRyxNQUFNLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFELE9BQU87Z0JBQ0wsR0FBRyxVQUFVO2dCQUNiLE9BQU8sRUFBRSxzQkFBc0IsVUFBVSxDQUFDLE9BQU8sRUFBRTthQUNwRCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlcyB9IGZyb20gJ25vZGU6dXRpbCc7XG5pbXBvcnQgeyBGYXRhbEVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvck5hbWUodjogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh0eXBlcy5pc05hdGl2ZUVycm9yKHYpKSB7XG4gICAgcmV0dXJuIHYubmFtZTtcbiAgfVxuICByZXR1cm4gJ0Vycm9yJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVycm9yU3RhY2sodjogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh0eXBlcy5pc05hdGl2ZUVycm9yKHYpKSB7XG4gICAgcmV0dXJuIHYuc3RhY2sgPz8gJyc7XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBYm9ydEVycm9yKFxuICB2YWx1ZTogdW5rbm93blxuKTogdmFsdWUgaXMgeyBuYW1lOiAnQWJvcnRFcnJvcic7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmcgfSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgJ25hbWUnIGluIHZhbHVlICYmXG4gICAgdmFsdWUubmFtZSA9PT0gJ0Fib3J0RXJyb3InICYmXG4gICAgJ21lc3NhZ2UnIGluIHZhbHVlICYmXG4gICAgdHlwZW9mIHZhbHVlLm1lc3NhZ2UgPT09ICdzdHJpbmcnICYmXG4gICAgKCEoJ3N0YWNrJyBpbiB2YWx1ZSkgfHxcbiAgICAgIHZhbHVlLnN0YWNrID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHR5cGVvZiB2YWx1ZS5zdGFjayA9PT0gJ3N0cmluZycpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9tb3RlQWJvcnRFcnJvclRvRmF0YWwodmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKCFpc0Fib3J0RXJyb3IodmFsdWUpIHx8IEZhdGFsRXJyb3IuaXModmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgY29uc3QgZmF0YWxFcnJvciA9IG5ldyBGYXRhbEVycm9yKGBBYm9ydGVkOiAke3ZhbHVlLm1lc3NhZ2V9YCk7XG4gIGlmICh2YWx1ZS5zdGFjaykge1xuICAgIGZhdGFsRXJyb3Iuc3RhY2sgPSB2YWx1ZS5zdGFjaztcbiAgfVxuICByZXR1cm4gZmF0YWxFcnJvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb3JtYWxpemVkVW5rbm93bkVycm9yIHtcbiAgbmFtZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHN0YWNrOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGlzVGhlbmFibGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQcm9taXNlPHVua25vd24+IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAndGhlbicgaW4gdmFsdWUgJiZcbiAgICB0eXBlb2YgKHZhbHVlIGFzIHsgdGhlbj86IHVua25vd24gfSkudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xuICApO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTeW5jRXJyb3IodjogdW5rbm93bik6IE5vcm1hbGl6ZWRVbmtub3duRXJyb3Ige1xuICBpZiAodHlwZXMuaXNOYXRpdmVFcnJvcih2KSkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB2Lm5hbWUsXG4gICAgICBtZXNzYWdlOiB2Lm1lc3NhZ2UsXG4gICAgICBzdGFjazogdi5zdGFjayA/PyAnJyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnRXJyb3InLFxuICAgICAgbWVzc2FnZTogdixcbiAgICAgIHN0YWNrOiAnJyxcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJ0Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6IEpTT04uc3RyaW5naWZ5KHYpLFxuICAgICAgc3RhY2s6ICcnLFxuICAgIH07XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnRXJyb3InLFxuICAgICAgbWVzc2FnZTogU3RyaW5nKHYpLFxuICAgICAgc3RhY2s6ICcnLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIHVua25vd24gdGhyb3duIHZhbHVlcyBpbnRvIGEgc3RhYmxlIGVycm9yIHNoYXBlLlxuICogVGhpcyBoYW5kbGVzIFByb21pc2UvdGhlbmFibGUgdGhyb3cgdmFsdWVzIHNvIGxvZ3MvZXZlbnRzIG5ldmVyIGVuZCB1cFxuICogd2l0aCB1bmhlbHBmdWwgXCJbb2JqZWN0IFByb21pc2VdXCIgbWVzc2FnZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBub3JtYWxpemVVbmtub3duRXJyb3IoXG4gIHZhbHVlOiB1bmtub3duXG4pOiBQcm9taXNlPE5vcm1hbGl6ZWRVbmtub3duRXJyb3I+IHtcbiAgaWYgKGlzVGhlbmFibGUodmFsdWUpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gYXdhaXQgdmFsdWU7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gYXdhaXQgbm9ybWFsaXplVW5rbm93bkVycm9yKHJlc29sdmVkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm5vcm1hbGl6ZWQsXG4gICAgICAgIG1lc3NhZ2U6IGBQcm9taXNlIHJlamVjdGlvbjogJHtub3JtYWxpemVkLm1lc3NhZ2V9YCxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAocmVqZWN0aW9uKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gYXdhaXQgbm9ybWFsaXplVW5rbm93bkVycm9yKHJlamVjdGlvbik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ub3JtYWxpemVkLFxuICAgICAgICBtZXNzYWdlOiBgUHJvbWlzZSByZWplY3Rpb246ICR7bm9ybWFsaXplZC5tZXNzYWdlfWAsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVTeW5jRXJyb3IodmFsdWUpO1xufVxuIl19
|
package/dist/util.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Builds a workflow suspension log message based on the counts of steps,
|
|
3
|
-
*
|
|
2
|
+
* Builds a workflow suspension log message based on the counts of steps,
|
|
3
|
+
* hooks, and waits. The structured logger attaches the run context, so the
|
|
4
|
+
* message itself only describes what's being enqueued.
|
|
4
5
|
* @param stepCount - Number of steps to be enqueued
|
|
5
6
|
* @param hookCount - Number of hooks to be enqueued
|
|
6
7
|
* @param waitCount - Number of waits to be enqueued
|
|
7
8
|
* @returns The formatted log message or null if all counts are 0
|
|
8
9
|
*/
|
|
9
|
-
export declare function buildWorkflowSuspensionMessage(
|
|
10
|
+
export declare function buildWorkflowSuspensionMessage(stepCount: number, hookCount: number, waitCount: number): string | null;
|
|
10
11
|
/**
|
|
11
12
|
* Generates a stream ID for a workflow run.
|
|
12
13
|
* User-defined streams include a "user" segment for isolation from future system-defined streams.
|
|
@@ -18,8 +19,17 @@ export declare function buildWorkflowSuspensionMessage(runId: string, stepCount:
|
|
|
18
19
|
*/
|
|
19
20
|
export declare function getWorkflowRunStreamId(runId: string, namespace?: string): string;
|
|
20
21
|
/**
|
|
21
|
-
*
|
|
22
|
-
* the
|
|
22
|
+
* Generate a stream ID for an abort signal's backing stream.
|
|
23
|
+
* Uses the "_system_abort" namespace to isolate from user-defined streams.
|
|
24
|
+
*
|
|
25
|
+
* @param id - A unique identifier (typically a ULID)
|
|
26
|
+
* @returns The stream ID in format: `strm_{id}_system_abort`
|
|
27
|
+
*/
|
|
28
|
+
export declare function getAbortStreamId(id: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Derive the abort stream name from a hook token.
|
|
31
|
+
* Hook tokens use the format `abrt_{id}`, and the corresponding stream is
|
|
32
|
+
* `strm_{id}_system_abort`.
|
|
23
33
|
*/
|
|
24
|
-
export declare function
|
|
34
|
+
export declare function getAbortStreamIdFromToken(hookToken: string): string;
|
|
25
35
|
//# sourceMappingURL=util.d.ts.map
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CA6Bf;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,UAUvE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,UAE1C;AAID;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOnE"}
|
package/dist/util.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { waitUntil } from '@vercel/functions';
|
|
2
1
|
import { pluralize } from '@workflow/utils';
|
|
3
2
|
/**
|
|
4
|
-
* Builds a workflow suspension log message based on the counts of steps,
|
|
5
|
-
*
|
|
3
|
+
* Builds a workflow suspension log message based on the counts of steps,
|
|
4
|
+
* hooks, and waits. The structured logger attaches the run context, so the
|
|
5
|
+
* message itself only describes what's being enqueued.
|
|
6
6
|
* @param stepCount - Number of steps to be enqueued
|
|
7
7
|
* @param hookCount - Number of hooks to be enqueued
|
|
8
8
|
* @param waitCount - Number of waits to be enqueued
|
|
9
9
|
* @returns The formatted log message or null if all counts are 0
|
|
10
10
|
*/
|
|
11
|
-
export function buildWorkflowSuspensionMessage(
|
|
11
|
+
export function buildWorkflowSuspensionMessage(stepCount, hookCount, waitCount) {
|
|
12
12
|
if (stepCount === 0 && hookCount === 0 && waitCount === 0) {
|
|
13
13
|
return null;
|
|
14
14
|
}
|
|
@@ -33,7 +33,7 @@ export function buildWorkflowSuspensionMessage(runId, stepCount, hookCount, wait
|
|
|
33
33
|
resumeMsgParts.push('timers have elapsed');
|
|
34
34
|
}
|
|
35
35
|
const resumeMsg = resumeMsgParts.join(' and ');
|
|
36
|
-
return
|
|
36
|
+
return `${parts.join(' and ')} to be enqueued\n Workflow will suspend and resume when ${resumeMsg}`;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Generates a stream ID for a workflow run.
|
|
@@ -54,16 +54,25 @@ export function getWorkflowRunStreamId(runId, namespace) {
|
|
|
54
54
|
return `${streamId}_${encodedNamespace}`;
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
|
-
*
|
|
58
|
-
* the
|
|
57
|
+
* Generate a stream ID for an abort signal's backing stream.
|
|
58
|
+
* Uses the "_system_abort" namespace to isolate from user-defined streams.
|
|
59
|
+
*
|
|
60
|
+
* @param id - A unique identifier (typically a ULID)
|
|
61
|
+
* @returns The stream ID in format: `strm_{id}_system_abort`
|
|
62
|
+
*/
|
|
63
|
+
export function getAbortStreamId(id) {
|
|
64
|
+
return `strm_${id}_system_abort`;
|
|
65
|
+
}
|
|
66
|
+
const ABORT_TOKEN_PREFIX = 'abrt_';
|
|
67
|
+
/**
|
|
68
|
+
* Derive the abort stream name from a hook token.
|
|
69
|
+
* Hook tokens use the format `abrt_{id}`, and the corresponding stream is
|
|
70
|
+
* `strm_{id}_system_abort`.
|
|
59
71
|
*/
|
|
60
|
-
export
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
// will handle the error.
|
|
66
|
-
}));
|
|
67
|
-
return result;
|
|
72
|
+
export function getAbortStreamIdFromToken(hookToken) {
|
|
73
|
+
if (!hookToken.startsWith(ABORT_TOKEN_PREFIX)) {
|
|
74
|
+
throw new Error(`Invalid abort hook token format: expected "abrt_" prefix, got "${hookToken}"`);
|
|
75
|
+
}
|
|
76
|
+
return getAbortStreamId(hookToken.slice(ABORT_TOKEN_PREFIX.length));
|
|
68
77
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSw4QkFBOEIsQ0FDNUMsU0FBaUIsRUFDakIsU0FBaUIsRUFDakIsU0FBaUI7SUFFakIsSUFBSSxTQUFTLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBYSxFQUFFLENBQUM7SUFDcEMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEIsY0FBYyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUvQyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsNERBQTRELFNBQVMsRUFBRSxDQUFDO0FBQ3ZHLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsU0FBa0I7SUFDdEUsTUFBTSxRQUFRLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxpR0FBaUc7SUFDakcsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQy9ELFdBQVcsQ0FDWixDQUFDO0lBQ0YsT0FBTyxHQUFHLFFBQVEsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0FBQzNDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBVTtJQUN6QyxPQUFPLFFBQVEsRUFBRSxlQUFlLENBQUM7QUFDbkMsQ0FBQztBQUVELE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDO0FBRW5DOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQUMsU0FBaUI7SUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQ2Isa0VBQWtFLFNBQVMsR0FBRyxDQUMvRSxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwbHVyYWxpemUgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuXG4vKipcbiAqIEJ1aWxkcyBhIHdvcmtmbG93IHN1c3BlbnNpb24gbG9nIG1lc3NhZ2UgYmFzZWQgb24gdGhlIGNvdW50cyBvZiBzdGVwcyxcbiAqIGhvb2tzLCBhbmQgd2FpdHMuIFRoZSBzdHJ1Y3R1cmVkIGxvZ2dlciBhdHRhY2hlcyB0aGUgcnVuIGNvbnRleHQsIHNvIHRoZVxuICogbWVzc2FnZSBpdHNlbGYgb25seSBkZXNjcmliZXMgd2hhdCdzIGJlaW5nIGVucXVldWVkLlxuICogQHBhcmFtIHN0ZXBDb3VudCAtIE51bWJlciBvZiBzdGVwcyB0byBiZSBlbnF1ZXVlZFxuICogQHBhcmFtIGhvb2tDb3VudCAtIE51bWJlciBvZiBob29rcyB0byBiZSBlbnF1ZXVlZFxuICogQHBhcmFtIHdhaXRDb3VudCAtIE51bWJlciBvZiB3YWl0cyB0byBiZSBlbnF1ZXVlZFxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBsb2cgbWVzc2FnZSBvciBudWxsIGlmIGFsbCBjb3VudHMgYXJlIDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkV29ya2Zsb3dTdXNwZW5zaW9uTWVzc2FnZShcbiAgc3RlcENvdW50OiBudW1iZXIsXG4gIGhvb2tDb3VudDogbnVtYmVyLFxuICB3YWl0Q291bnQ6IG51bWJlclxuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmIChzdGVwQ291bnQgPT09IDAgJiYgaG9va0NvdW50ID09PSAwICYmIHdhaXRDb3VudCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcGFydHMgPSBbXTtcbiAgaWYgKHN0ZXBDb3VudCA+IDApIHtcbiAgICBwYXJ0cy5wdXNoKGAke3N0ZXBDb3VudH0gJHtwbHVyYWxpemUoJ3N0ZXAnLCAnc3RlcHMnLCBzdGVwQ291bnQpfWApO1xuICB9XG4gIGlmIChob29rQ291bnQgPiAwKSB7XG4gICAgcGFydHMucHVzaChgJHtob29rQ291bnR9ICR7cGx1cmFsaXplKCdob29rJywgJ2hvb2tzJywgaG9va0NvdW50KX1gKTtcbiAgfVxuICBpZiAod2FpdENvdW50ID4gMCkge1xuICAgIHBhcnRzLnB1c2goYCR7d2FpdENvdW50fSAke3BsdXJhbGl6ZSgndGltZXInLCAndGltZXJzJywgd2FpdENvdW50KX1gKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VtZU1zZ1BhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAoc3RlcENvdW50ID4gMCkge1xuICAgIHJlc3VtZU1zZ1BhcnRzLnB1c2goJ3N0ZXBzIGFyZSBjb21wbGV0ZWQnKTtcbiAgfVxuICBpZiAoaG9va0NvdW50ID4gMCkge1xuICAgIHJlc3VtZU1zZ1BhcnRzLnB1c2goJ2hvb2tzIGFyZSByZWNlaXZlZCcpO1xuICB9XG4gIGlmICh3YWl0Q291bnQgPiAwKSB7XG4gICAgcmVzdW1lTXNnUGFydHMucHVzaCgndGltZXJzIGhhdmUgZWxhcHNlZCcpO1xuICB9XG4gIGNvbnN0IHJlc3VtZU1zZyA9IHJlc3VtZU1zZ1BhcnRzLmpvaW4oJyBhbmQgJyk7XG5cbiAgcmV0dXJuIGAke3BhcnRzLmpvaW4oJyBhbmQgJyl9IHRvIGJlIGVucXVldWVkXFxuICBXb3JrZmxvdyB3aWxsIHN1c3BlbmQgYW5kIHJlc3VtZSB3aGVuICR7cmVzdW1lTXNnfWA7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgc3RyZWFtIElEIGZvciBhIHdvcmtmbG93IHJ1bi5cbiAqIFVzZXItZGVmaW5lZCBzdHJlYW1zIGluY2x1ZGUgYSBcInVzZXJcIiBzZWdtZW50IGZvciBpc29sYXRpb24gZnJvbSBmdXR1cmUgc3lzdGVtLWRlZmluZWQgc3RyZWFtcy5cbiAqIE5hbWVzcGFjZXMgYXJlIGJhc2U2NC1lbmNvZGVkIHRvIGhhbmRsZSBjaGFyYWN0ZXJzIG5vdCBhbGxvd2VkIGluIFJlZGlzIGtleSBuYW1lcy5cbiAqXG4gKiBAcGFyYW0gcnVuSWQgLSBUaGUgd29ya2Zsb3cgcnVuIElEXG4gKiBAcGFyYW0gbmFtZXNwYWNlIC0gT3B0aW9uYWwgbmFtZXNwYWNlIGZvciB0aGUgc3RyZWFtXG4gKiBAcmV0dXJucyBUaGUgc3RyZWFtIElEIGluIGZvcm1hdDogYHN0cm1fe1VMSUR9X3VzZXJfe2Jhc2U2NChuYW1lc3BhY2UpP31gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3JrZmxvd1J1blN0cmVhbUlkKHJ1bklkOiBzdHJpbmcsIG5hbWVzcGFjZT86IHN0cmluZykge1xuICBjb25zdCBzdHJlYW1JZCA9IGAke3J1bklkLnJlcGxhY2UoJ3dydW5fJywgJ3N0cm1fJyl9X3VzZXJgO1xuICBpZiAoIW5hbWVzcGFjZSkge1xuICAgIHJldHVybiBzdHJlYW1JZDtcbiAgfVxuICAvLyBCYXNlNjQgZW5jb2RlIHRoZSBuYW1lc3BhY2UgdG8gaGFuZGxlIHNwZWNpYWwgY2hhcmFjdGVycyB0aGF0IG1heSBub3QgYmUgYWxsb3dlZCBpbiBSZWRpcyBrZXlzXG4gIGNvbnN0IGVuY29kZWROYW1lc3BhY2UgPSBCdWZmZXIuZnJvbShuYW1lc3BhY2UsICd1dGYtOCcpLnRvU3RyaW5nKFxuICAgICdiYXNlNjR1cmwnXG4gICk7XG4gIHJldHVybiBgJHtzdHJlYW1JZH1fJHtlbmNvZGVkTmFtZXNwYWNlfWA7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzdHJlYW0gSUQgZm9yIGFuIGFib3J0IHNpZ25hbCdzIGJhY2tpbmcgc3RyZWFtLlxuICogVXNlcyB0aGUgXCJfc3lzdGVtX2Fib3J0XCIgbmFtZXNwYWNlIHRvIGlzb2xhdGUgZnJvbSB1c2VyLWRlZmluZWQgc3RyZWFtcy5cbiAqXG4gKiBAcGFyYW0gaWQgLSBBIHVuaXF1ZSBpZGVudGlmaWVyICh0eXBpY2FsbHkgYSBVTElEKVxuICogQHJldHVybnMgVGhlIHN0cmVhbSBJRCBpbiBmb3JtYXQ6IGBzdHJtX3tpZH1fc3lzdGVtX2Fib3J0YFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWJvcnRTdHJlYW1JZChpZDogc3RyaW5nKSB7XG4gIHJldHVybiBgc3RybV8ke2lkfV9zeXN0ZW1fYWJvcnRgO1xufVxuXG5jb25zdCBBQk9SVF9UT0tFTl9QUkVGSVggPSAnYWJydF8nO1xuXG4vKipcbiAqIERlcml2ZSB0aGUgYWJvcnQgc3RyZWFtIG5hbWUgZnJvbSBhIGhvb2sgdG9rZW4uXG4gKiBIb29rIHRva2VucyB1c2UgdGhlIGZvcm1hdCBgYWJydF97aWR9YCwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHN0cmVhbSBpc1xuICogYHN0cm1fe2lkfV9zeXN0ZW1fYWJvcnRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWJvcnRTdHJlYW1JZEZyb21Ub2tlbihob29rVG9rZW46IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghaG9va1Rva2VuLnN0YXJ0c1dpdGgoQUJPUlRfVE9LRU5fUFJFRklYKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhbGlkIGFib3J0IGhvb2sgdG9rZW4gZm9ybWF0OiBleHBlY3RlZCBcImFicnRfXCIgcHJlZml4LCBnb3QgXCIke2hvb2tUb2tlbn1cImBcbiAgICApO1xuICB9XG4gIHJldHVybiBnZXRBYm9ydFN0cmVhbUlkKGhvb2tUb2tlbi5zbGljZShBQk9SVF9UT0tFTl9QUkVGSVgubGVuZ3RoKSk7XG59XG4iXX0=
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "5.0.0-beta.
|
|
1
|
+
export declare const version = "5.0.0-beta.20";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,kBAAkB,CAAA"}
|
package/dist/version.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Generated by genversion.
|
|
2
|
-
export const version = '5.0.0-beta.
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export const version = '5.0.0-beta.20';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGdlbnZlcnNpb24uXG5leHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1LjAuMC1iZXRhLjIwJ1xuIl19
|
package/dist/vm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vm/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vm/index.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IAEb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB;;;iCAsG1B,MAAM;EAItC"}
|
package/dist/vm/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { runInContext, createContext as vmCreateContext } from 'node:vm';
|
|
2
|
+
import { WorkflowRuntimeError } from '@workflow/errors';
|
|
2
3
|
import seedrandom from 'seedrandom';
|
|
3
4
|
import { installUint8ArrayBase64 } from './uint8array-base64.js';
|
|
4
5
|
import { createRandomUUID } from './uuid.js';
|
|
@@ -55,7 +56,7 @@ export function createContext(options) {
|
|
|
55
56
|
get(target, prop) {
|
|
56
57
|
if (prop === 'generateKey') {
|
|
57
58
|
return () => {
|
|
58
|
-
throw new
|
|
59
|
+
throw new WorkflowRuntimeError('`crypto.subtle.generateKey()` is not available inside a workflow function. Move key generation to a step function where full Node.js crypto is available.');
|
|
59
60
|
};
|
|
60
61
|
}
|
|
61
62
|
else if (prop === 'digest') {
|
|
@@ -99,4 +100,4 @@ export function createContext(options) {
|
|
|
99
100
|
},
|
|
100
101
|
};
|
|
101
102
|
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLElBQUksZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pFLE9BQU8sVUFBVSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFRN0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE2QjtJQUN6RCxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDekIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLE1BQU0sT0FBTyxHQUFHLGVBQWUsRUFBRSxDQUFDO0lBRWxDLE1BQU0sQ0FBQyxHQUFzQixZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpFLGdDQUFnQztJQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFFcEIsaUZBQWlGO0lBQ2pGLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckIsNkhBQTZIO0lBQzVILENBQVMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxJQUFJLENBQzdCLEdBQUcsSUFBK0M7UUFFbEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELDBEQUEwRDtRQUMxRCxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQyxD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L0MsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUV6QixvRUFBb0U7SUFDcEUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLGlFQUFpRTtJQUNoRSxDQUFDLENBQUMsTUFBYyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDLE1BQWMsQ0FBQyxZQUFZLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRXJFLHNDQUFzQztJQUN0QyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNkLENBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRTNDLE9BQU87UUFDTCxPQUFPO1FBQ1AsVUFBVSxFQUFFLENBQUM7UUFDYixlQUFlLEVBQUUsQ0FBQyxTQUFpQixFQUFFLEVBQUU7WUFDckMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUM3QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBydW5JbkNvbnRleHQsIGNyZWF0ZUNvbnRleHQgYXMgdm1DcmVhdGVDb250ZXh0IH0gZnJvbSAnbm9kZTp2bSc7XG5pbXBvcnQgc2VlZHJhbmRvbSBmcm9tICdzZWVkcmFuZG9tJztcbmltcG9ydCB7IGluc3RhbGxVaW50OEFycmF5QmFzZTY0IH0gZnJvbSAnLi91aW50OGFycmF5LWJhc2U2NC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVSYW5kb21VVUlEIH0gZnJvbSAnLi91dWlkLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDb250ZXh0T3B0aW9ucyB7XG4gIHNlZWQ6IHN0cmluZztcbiAgLy8gRml4ZWQgdGltZXN0YW1wIGZvciBkZXRlcm1pbmlzdGljIERhdGUgb3BlcmF0aW9uc1xuICBmaXhlZFRpbWVzdGFtcDogbnVtYmVyO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBOb2RlLmpzIGB2bS5Db250ZXh0YCBjb25maWd1cmVkIHRvIGJlIHVzYWJsZSBmb3JcbiAqIGV4ZWN1dGluZyB3b3JrZmxvdyBsb2dpYyBpbiBhIGRldGVybWluaXN0aWMgZW52aXJvbm1lbnQuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGNvbnRleHQuXG4gKiBAcmV0dXJucyBUaGUgY29udGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQob3B0aW9uczogQ3JlYXRlQ29udGV4dE9wdGlvbnMpIHtcbiAgbGV0IHsgZml4ZWRUaW1lc3RhbXAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHsgc2VlZCB9ID0gb3B0aW9ucztcbiAgY29uc3Qgcm5nID0gc2VlZHJhbmRvbShzZWVkKTtcbiAgY29uc3QgY29udGV4dCA9IHZtQ3JlYXRlQ29udGV4dCgpO1xuXG4gIGNvbnN0IGc6IHR5cGVvZiBnbG9iYWxUaGlzID0gcnVuSW5Db250ZXh0KCdnbG9iYWxUaGlzJywgY29udGV4dCk7XG5cbiAgLy8gRGV0ZXJtaW5pc3RpYyBgTWF0aC5yYW5kb20oKWBcbiAgZy5NYXRoLnJhbmRvbSA9IHJuZztcblxuICAvLyBPdmVycmlkZSBgRGF0ZWAgY29uc3RydWN0b3IgdG8gcmV0dXJuIGZpeGVkIHRpbWUgd2hlbiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHNcbiAgY29uc3QgRGF0ZV8gPSBnLkRhdGU7XG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9TaGFkb3dSZXN0cmljdGVkTmFtZXM6IFdlJ3JlIHNoYWRvd2luZyB0aGUgZ2xvYmFsIGBEYXRlYCBwcm9wZXJ0eSB0byBtYWtlIGl0IGRldGVybWluaXN0aWMuXG4gIChnIGFzIGFueSkuRGF0ZSA9IGZ1bmN0aW9uIERhdGUoXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczwodHlwZW9mIGdsb2JhbFRoaXMpWydEYXRlJ10+W11cbiAgKSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGVfKGZpeGVkVGltZXN0YW1wKTtcbiAgICB9XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIEFyZ3MgaXMgYERhdGVgIGNvbnN0cnVjdG9yIGFyZ3VtZW50c1xuICAgIHJldHVybiBuZXcgRGF0ZV8oLi4uYXJncyk7XG4gIH07XG4gIChnIGFzIGFueSkuRGF0ZS5wcm90b3R5cGUgPSBEYXRlXy5wcm90b3R5cGU7XG4gIC8vIFByZXNlcnZlIHN0YXRpYyBtZXRob2RzXG4gIE9iamVjdC5zZXRQcm90b3R5cGVPZihnLkRhdGUsIERhdGVfKTtcbiAgZy5EYXRlLm5vdyA9ICgpID0+IGZpeGVkVGltZXN0YW1wO1xuXG4gIC8vIERldGVybWluaXN0aWMgYGNyeXB0b2AgdXNpbmcgUHJveHkgdG8gYXZvaWQgbXV0YXRpbmcgZ2xvYmFsIG9iamVjdHNcbiAgY29uc3Qgb3JpZ2luYWxDcnlwdG8gPSBnbG9iYWxUaGlzLmNyeXB0bztcbiAgY29uc3Qgb3JpZ2luYWxTdWJ0bGUgPSBvcmlnaW5hbENyeXB0by5zdWJ0bGU7XG5cbiAgZnVuY3Rpb24gZ2V0UmFuZG9tVmFsdWVzKGFycmF5OiBVaW50OEFycmF5KSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgYXJyYXlbaV0gPSBNYXRoLmZsb29yKHJuZygpICogMjU2KTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgY29uc3QgcmFuZG9tVVVJRCA9IGNyZWF0ZVJhbmRvbVVVSUQocm5nKTtcblxuICBjb25zdCBib3VuZERpZ2VzdCA9IG9yaWdpbmFsU3VidGxlLmRpZ2VzdC5iaW5kKG9yaWdpbmFsU3VidGxlKTtcblxuICBnLmNyeXB0byA9IG5ldyBQcm94eShvcmlnaW5hbENyeXB0bywge1xuICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgIGlmIChwcm9wID09PSAnZ2V0UmFuZG9tVmFsdWVzJykge1xuICAgICAgICByZXR1cm4gZ2V0UmFuZG9tVmFsdWVzO1xuICAgICAgfVxuICAgICAgaWYgKHByb3AgPT09ICdyYW5kb21VVUlEJykge1xuICAgICAgICByZXR1cm4gcmFuZG9tVVVJRDtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wID09PSAnc3VidGxlJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KG9yaWdpbmFsU3VidGxlLCB7XG4gICAgICAgICAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgaWYgKHByb3AgPT09ICdnZW5lcmF0ZUtleScpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wID09PSAnZGlnZXN0Jykge1xuICAgICAgICAgICAgICByZXR1cm4gYm91bmREaWdlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3AgYXMga2V5b2YgdHlwZW9mIG9yaWdpbmFsU3VidGxlXTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRbcHJvcCBhcyBrZXlvZiB0eXBlb2Ygb3JpZ2luYWxDcnlwdG9dO1xuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFByb3BhZ2F0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgKGcgYXMgYW55KS5wcm9jZXNzID0ge1xuICAgIGVudjogT2JqZWN0LmZyZWV6ZSh7IC4uLnByb2Nlc3MuZW52IH0pLFxuICB9O1xuXG4gIC8vIFN0YXRlbGVzcyArIHN5bmNocm9ub3VzIFdlYiBBUElzIHRoYXQgYXJlIG1hZGUgYXZhaWxhYmxlIGluc2lkZSB0aGUgc2FuZGJveFxuICBnLkRPTUV4Y2VwdGlvbiA9IGdsb2JhbFRoaXMuRE9NRXhjZXB0aW9uO1xuICBnLkhlYWRlcnMgPSBnbG9iYWxUaGlzLkhlYWRlcnM7XG4gIGcuVGV4dEVuY29kZXIgPSBnbG9iYWxUaGlzLlRleHRFbmNvZGVyO1xuICBnLlRleHREZWNvZGVyID0gZ2xvYmFsVGhpcy5UZXh0RGVjb2RlcjtcbiAgZy5jb25zb2xlID0gZ2xvYmFsVGhpcy5jb25zb2xlO1xuICBnLlVSTCA9IGdsb2JhbFRoaXMuVVJMO1xuICBnLlVSTFNlYXJjaFBhcmFtcyA9IGdsb2JhbFRoaXMuVVJMU2VhcmNoUGFyYW1zO1xuICBnLnN0cnVjdHVyZWRDbG9uZSA9IGdsb2JhbFRoaXMuc3RydWN0dXJlZENsb25lO1xuICBnLmF0b2IgPSBnbG9iYWxUaGlzLmF0b2I7XG4gIGcuYnRvYSA9IGdsb2JhbFRoaXMuYnRvYTtcblxuICAvLyBUQzM5IFVpbnQ4QXJyYXkgYmFzZTY0L2hleCBwb2x5ZmlsbCAocHJvcG9zYWwtYXJyYXlidWZmZXItYmFzZTY0KVxuICBpbnN0YWxsVWludDhBcnJheUJhc2U2NChnLlVpbnQ4QXJyYXkpO1xuXG4gIC8vIFRDMzkgRXhwbGljaXQgUmVzb3VyY2UgTWFuYWdlbWVudCBwb2x5ZmlsbCBmb3IgYHVzaW5nYCBrZXl3b3JkXG4gIChnLlN5bWJvbCBhcyBhbnkpLmRpc3Bvc2UgPz89IFN5bWJvbC5mb3IoJ1N5bWJvbC5kaXNwb3NlJyk7XG4gIChnLlN5bWJvbCBhcyBhbnkpLmFzeW5jRGlzcG9zZSA/Pz0gU3ltYm9sLmZvcignU3ltYm9sLmFzeW5jRGlzcG9zZScpO1xuXG4gIC8vIEhBQ0s6IFNoaW0gYGV4cG9ydHNgIGZvciB0aGUgYnVuZGxlXG4gIGcuZXhwb3J0cyA9IHt9O1xuICAoZyBhcyBhbnkpLm1vZHVsZSA9IHsgZXhwb3J0czogZy5leHBvcnRzIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0LFxuICAgIGdsb2JhbFRoaXM6IGcsXG4gICAgdXBkYXRlVGltZXN0YW1wOiAodGltZXN0YW1wOiBudW1iZXIpID0+IHtcbiAgICAgIGZpeGVkVGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLElBQUksZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sVUFBVSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFRN0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUE2QjtJQUN6RCxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDekIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLE1BQU0sT0FBTyxHQUFHLGVBQWUsRUFBRSxDQUFDO0lBRWxDLE1BQU0sQ0FBQyxHQUFzQixZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpFLGdDQUFnQztJQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFFcEIsaUZBQWlGO0lBQ2pGLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckIsNkhBQTZIO0lBQzVILENBQVMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxJQUFJLENBQzdCLEdBQUcsSUFBK0M7UUFFbEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELDBEQUEwRDtRQUMxRCxPQUFPLElB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QUMvQyxDQUFDLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUM7SUFDL0MsQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUV6QixvRUFBb0U7SUFDcEUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXRDLGlFQUFpRTtJQUNoRSxDQUFDLENBQUMsTUFBYyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDLE1BQWMsQ0FBQyxZQUFZLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRXJFLHNDQUFzQztJQUN0QyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNkLENBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRTNDLE9BQU87UUFDTCxPQUFPO1FBQ1AsVUFBVSxFQUFFLENBQUM7UUFDYixlQUFlLEVBQUUsQ0FBQyxTQUFpQixFQUFFLEVBQUU7WUFDckMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUM3QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBydW5JbkNvbnRleHQsIGNyZWF0ZUNvbnRleHQgYXMgdm1DcmVhdGVDb250ZXh0IH0gZnJvbSAnbm9kZTp2bSc7XG5pbXBvcnQgeyBXb3JrZmxvd1J1bnRpbWVFcnJvciB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHNlZWRyYW5kb20gZnJvbSAnc2VlZHJhbmRvbSc7XG5pbXBvcnQgeyBpbnN0YWxsVWludDhBcnJheUJhc2U2NCB9IGZyb20gJy4vdWludDhhcnJheS1iYXNlNjQuanMnO1xuaW1wb3J0IHsgY3JlYXRlUmFuZG9tVVVJRCB9IGZyb20gJy4vdXVpZC5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ29udGV4dE9wdGlvbnMge1xuICBzZWVkOiBzdHJpbmc7XG4gIC8vIEZpeGVkIHRpbWVzdGFtcCBmb3IgZGV0ZXJtaW5pc3RpYyBEYXRlIG9wZXJhdGlvbnNcbiAgZml4ZWRUaW1lc3RhbXA6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgTm9kZS5qcyBgdm0uQ29udGV4dGAgY29uZmlndXJlZCB0byBiZSB1c2FibGUgZm9yXG4gKiBleGVjdXRpbmcgd29ya2Zsb3cgbG9naWMgaW4gYSBkZXRlcm1pbmlzdGljIGVudmlyb25tZW50LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBjb250ZXh0LlxuICogQHJldHVybnMgVGhlIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0KG9wdGlvbnM6IENyZWF0ZUNvbnRleHRPcHRpb25zKSB7XG4gIGxldCB7IGZpeGVkVGltZXN0YW1wIH0gPSBvcHRpb25zO1xuICBjb25zdCB7IHNlZWQgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJuZyA9IHNlZWRyYW5kb20oc2VlZCk7XG4gIGNvbnN0IGNvbnRleHQgPSB2bUNyZWF0ZUNvbnRleHQoKTtcblxuICBjb25zdCBnOiB0eXBlb2YgZ2xvYmFsVGhpcyA9IHJ1bkluQ29udGV4dCgnZ2xvYmFsVGhpcycsIGNvbnRleHQpO1xuXG4gIC8vIERldGVybWluaXN0aWMgYE1hdGgucmFuZG9tKClgXG4gIGcuTWF0aC5yYW5kb20gPSBybmc7XG5cbiAgLy8gT3ZlcnJpZGUgYERhdGVgIGNvbnN0cnVjdG9yIHRvIHJldHVybiBmaXhlZCB0aW1lIHdoZW4gY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzXG4gIGNvbnN0IERhdGVfID0gZy5EYXRlO1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vU2hhZG93UmVzdHJpY3RlZE5hbWVzOiBXZSdyZSBzaGFkb3dpbmcgdGhlIGdsb2JhbCBgRGF0ZWAgcHJvcGVydHkgdG8gbWFrZSBpdCBkZXRlcm1pbmlzdGljLlxuICAoZyBhcyBhbnkpLkRhdGUgPSBmdW5jdGlvbiBEYXRlKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8KHR5cGVvZiBnbG9iYWxUaGlzKVsnRGF0ZSddPltdXG4gICkge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlXyhmaXhlZFRpbWVzdGFtcCk7XG4gICAgfVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBBcmdzIGlzIGBEYXRlYCBjb25zdHJ1Y3RvciBhcmd1bWVudHNcbiAgICByZXR1cm4gbmV3IERhdGVfKC4uLmFyZ3MpO1xuICB9O1xuICAoZyBhcyBhbnkpLkRhdGUucHJvdG90eXBlID0gRGF0ZV8ucHJvdG90eXBlO1xuICAvLyBQcmVzZXJ2ZSBzdGF0aWMgbWV0aG9kc1xuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZy5EYXRlLCBEYXRlXyk7XG4gIGcuRGF0ZS5ub3cgPSAoKSA9PiBmaXhlZFRpbWVzdGFtcDtcblxuICAvLyBEZXRlcm1pbmlzdGljIGBjcnlwdG9gIHVzaW5nIFByb3h5IHRvIGF2b2lkIG11dGF0aW5nIGdsb2JhbCBvYmplY3RzXG4gIGNvbnN0IG9yaWdpbmFsQ3J5cHRvID0gZ2xvYmFsVGhpcy5jcnlwdG87XG4gIGNvbnN0IG9yaWdpbmFsU3VidGxlID0gb3JpZ2luYWxDcnlwdG8uc3VidGxlO1xuXG4gIGZ1bmN0aW9uIGdldFJhbmRvbVZhbHVlcyhhcnJheTogVWludDhBcnJheSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycmF5W2ldID0gTWF0aC5mbG9vcihybmcoKSAqIDI1Nik7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIGNvbnN0IHJhbmRvbVVVSUQgPSBjcmVhdGVSYW5kb21VVUlEKHJuZyk7XG5cbiAgY29uc3QgYm91bmREaWdlc3QgPSBvcmlnaW5hbFN1YnRsZS5kaWdlc3QuYmluZChvcmlnaW5hbFN1YnRsZSk7XG5cbiAgZy5jcnlwdG8gPSBuZXcgUHJveHkob3JpZ2luYWxDcnlwdG8sIHtcbiAgICBnZXQodGFyZ2V0LCBwcm9wKSB7XG4gICAgICBpZiAocHJvcCA9PT0gJ2dldFJhbmRvbVZhbHVlcycpIHtcbiAgICAgICAgcmV0dXJuIGdldFJhbmRvbVZhbHVlcztcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wID09PSAncmFuZG9tVVVJRCcpIHtcbiAgICAgICAgcmV0dXJuIHJhbmRvbVVVSUQ7XG4gICAgICB9XG4gICAgICBpZiAocHJvcCA9PT0gJ3N1YnRsZScpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm94eShvcmlnaW5hbFN1YnRsZSwge1xuICAgICAgICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgIGlmIChwcm9wID09PSAnZ2VuZXJhdGVLZXknKSB7XG4gICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdvcmtmbG93UnVudGltZUVycm9yKFxuICAgICAgICAgICAgICAgICAgJ2BjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KClgIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIGEgd29ya2Zsb3cgZnVuY3Rpb24uIE1vdmUga2V5IGdlbmVyYXRpb24gdG8gYSBzdGVwIGZ1bmN0aW9uIHdoZXJlIGZ1bGwgTm9kZS5qcyBjcnlwdG8gaXMgYXZhaWxhYmxlLidcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wID09PSAnZGlnZXN0Jykge1xuICAgICAgICAgICAgICByZXR1cm4gYm91bmREaWdlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3AgYXMga2V5b2YgdHlwZW9mIG9yaWdpbmFsU3VidGxlXTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRbcHJvcCBhcyBrZXlvZiB0eXBlb2Ygb3JpZ2luYWxDcnlwdG9dO1xuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFByb3BhZ2F0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgKGcgYXMgYW55KS5wcm9jZXNzID0ge1xuICAgIGVudjogT2JqZWN0LmZyZWV6ZSh7IC4uLnByb2Nlc3MuZW52IH0pLFxuICB9O1xuXG4gIC8vIFN0YXRlbGVzcyArIHN5bmNocm9ub3VzIFdlYiBBUElzIHRoYXQgYXJlIG1hZGUgYXZhaWxhYmxlIGluc2lkZSB0aGUgc2FuZGJveFxuICBnLkRPTUV4Y2VwdGlvbiA9IGdsb2JhbFRoaXMuRE9NRXhjZXB0aW9uO1xuICBnLkhlYWRlcnMgPSBnbG9iYWxUaGlzLkhlYWRlcnM7XG4gIGcuVGV4dEVuY29kZXIgPSBnbG9iYWxUaGlzLlRleHRFbmNvZGVyO1xuICBnLlRleHREZWNvZGVyID0gZ2xvYmFsVGhpcy5UZXh0RGVjb2RlcjtcbiAgZy5jb25zb2xlID0gZ2xvYmFsVGhpcy5jb25zb2xlO1xuICBnLlVSTCA9IGdsb2JhbFRoaXMuVVJMO1xuICBnLlVSTFNlYXJjaFBhcmFtcyA9IGdsb2JhbFRoaXMuVVJMU2VhcmNoUGFyYW1zO1xuICBnLnN0cnVjdHVyZWRDbG9uZSA9IGdsb2JhbFRoaXMuc3RydWN0dXJlZENsb25lO1xuICBnLmF0b2IgPSBnbG9iYWxUaGlzLmF0b2I7XG4gIGcuYnRvYSA9IGdsb2JhbFRoaXMuYnRvYTtcblxuICAvLyBUQzM5IFVpbnQ4QXJyYXkgYmFzZTY0L2hleCBwb2x5ZmlsbCAocHJvcG9zYWwtYXJyYXlidWZmZXItYmFzZTY0KVxuICBpbnN0YWxsVWludDhBcnJheUJhc2U2NChnLlVpbnQ4QXJyYXkpO1xuXG4gIC8vIFRDMzkgRXhwbGljaXQgUmVzb3VyY2UgTWFuYWdlbWVudCBwb2x5ZmlsbCBmb3IgYHVzaW5nYCBrZXl3b3JkXG4gIChnLlN5bWJvbCBhcyBhbnkpLmRpc3Bvc2UgPz89IFN5bWJvbC5mb3IoJ1N5bWJvbC5kaXNwb3NlJyk7XG4gIChnLlN5bWJvbCBhcyBhbnkpLmFzeW5jRGlzcG9zZSA/Pz0gU3ltYm9sLmZvcignU3ltYm9sLmFzeW5jRGlzcG9zZScpO1xuXG4gIC8vIEhBQ0s6IFNoaW0gYGV4cG9ydHNgIGZvciB0aGUgYnVuZGxlXG4gIGcuZXhwb3J0cyA9IHt9O1xuICAoZyBhcyBhbnkpLm1vZHVsZSA9IHsgZXhwb3J0czogZy5leHBvcnRzIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0LFxuICAgIGdsb2JhbFRoaXM6IGcsXG4gICAgdXBkYXRlVGltZXN0YW1wOiAodGltZXN0YW1wOiBudW1iZXIpID0+IHtcbiAgICAgIGZpeGVkVGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
|