@workflow/core 5.0.0-beta.4 → 5.0.0-beta.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/attribute-changes.d.ts +7 -0
- package/dist/attribute-changes.d.ts.map +1 -0
- package/dist/attribute-changes.js +25 -0
- package/dist/capabilities.d.ts +33 -1
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +71 -4
- package/dist/capture-stack.d.ts +16 -0
- package/dist/capture-stack.d.ts.map +1 -0
- package/dist/capture-stack.js +21 -0
- package/dist/class-serialization.d.ts +32 -0
- package/dist/class-serialization.d.ts.map +1 -1
- package/dist/class-serialization.js +37 -1
- package/dist/classify-error.d.ts +26 -3
- package/dist/classify-error.d.ts.map +1 -1
- package/dist/classify-error.js +109 -6
- package/dist/context-errors.d.ts +27 -0
- package/dist/context-errors.d.ts.map +1 -0
- package/dist/context-errors.js +101 -0
- package/dist/context-violation-error.d.ts +97 -0
- package/dist/context-violation-error.d.ts.map +1 -0
- package/dist/context-violation-error.js +149 -0
- package/dist/create-hook.d.ts +62 -4
- package/dist/create-hook.d.ts.map +1 -1
- package/dist/create-hook.js +4 -3
- package/dist/define-hook.d.ts.map +1 -1
- package/dist/define-hook.js +20 -5
- package/dist/describe-error.d.ts +70 -0
- package/dist/describe-error.d.ts.map +1 -0
- package/dist/describe-error.js +189 -0
- package/dist/encryption.d.ts +37 -3
- package/dist/encryption.d.ts.map +1 -1
- package/dist/encryption.js +97 -31
- package/dist/events-consumer.d.ts +147 -1
- package/dist/events-consumer.d.ts.map +1 -1
- package/dist/events-consumer.js +444 -43
- package/dist/flushable-stream.d.ts +65 -10
- package/dist/flushable-stream.d.ts.map +1 -1
- package/dist/flushable-stream.js +131 -18
- package/dist/global.d.ts +37 -1
- package/dist/global.d.ts.map +1 -1
- package/dist/global.js +21 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/log-format.d.ts +25 -0
- package/dist/log-format.d.ts.map +1 -0
- package/dist/log-format.js +250 -0
- package/dist/logger.d.ts +29 -30
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +82 -32
- package/dist/private.d.ts +246 -8
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +345 -9
- package/dist/replay-payload-cache.d.ts +68 -0
- package/dist/replay-payload-cache.d.ts.map +1 -0
- package/dist/replay-payload-cache.js +160 -0
- package/dist/runtime/compute-instance.d.ts +12 -0
- package/dist/runtime/compute-instance.d.ts.map +1 -0
- package/dist/runtime/compute-instance.js +13 -0
- package/dist/runtime/constants.d.ts +251 -0
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +425 -16
- package/dist/runtime/count-step-started-events.d.ts +52 -0
- package/dist/runtime/count-step-started-events.d.ts.map +1 -0
- package/dist/runtime/count-step-started-events.js +72 -0
- package/dist/runtime/deployment-guard.d.ts +99 -0
- package/dist/runtime/deployment-guard.d.ts.map +1 -0
- package/dist/runtime/deployment-guard.js +154 -0
- package/dist/runtime/get-port-lazy.d.ts +25 -0
- package/dist/runtime/get-port-lazy.d.ts.map +1 -0
- package/dist/runtime/get-port-lazy.js +92 -0
- package/dist/runtime/get-world-lazy.d.ts +23 -0
- package/dist/runtime/get-world-lazy.d.ts.map +1 -0
- package/dist/runtime/get-world-lazy.js +46 -0
- package/dist/runtime/helpers.d.ts +327 -10
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +586 -40
- package/dist/runtime/quickjs-assets.generated.d.ts +14 -0
- package/dist/runtime/quickjs-assets.generated.d.ts.map +1 -0
- package/dist/runtime/quickjs-assets.generated.js +30 -0
- package/dist/runtime/quickjs-entrypoint.d.ts +124 -0
- package/dist/runtime/quickjs-entrypoint.d.ts.map +1 -0
- package/dist/runtime/quickjs-entrypoint.js +1437 -0
- package/dist/runtime/quickjs-runtime.d.ts +228 -0
- package/dist/runtime/quickjs-runtime.d.ts.map +1 -0
- package/dist/runtime/quickjs-runtime.js +2372 -0
- package/dist/runtime/quickjs-serde.d.ts +107 -0
- package/dist/runtime/quickjs-serde.d.ts.map +1 -0
- package/dist/runtime/quickjs-serde.js +2098 -0
- package/dist/runtime/replay-budget.d.ts +89 -0
- package/dist/runtime/replay-budget.d.ts.map +1 -0
- package/dist/runtime/replay-budget.js +139 -0
- package/dist/runtime/replay-recovery-reporter.d.ts +36 -0
- package/dist/runtime/replay-recovery-reporter.d.ts.map +1 -0
- package/dist/runtime/replay-recovery-reporter.js +64 -0
- package/dist/runtime/resume-hook.d.ts +27 -4
- package/dist/runtime/resume-hook.d.ts.map +1 -1
- package/dist/runtime/resume-hook.js +452 -76
- package/dist/runtime/run-id-time.d.ts +19 -0
- package/dist/runtime/run-id-time.d.ts.map +1 -0
- package/dist/runtime/run-id-time.js +42 -0
- package/dist/runtime/run.d.ts +8 -2
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +62 -15
- package/dist/runtime/runs.d.ts +54 -3
- package/dist/runtime/runs.d.ts.map +1 -1
- package/dist/runtime/runs.js +119 -13
- package/dist/runtime/start.d.ts +70 -1
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js +313 -60
- package/dist/runtime/step-executor.d.ts +177 -0
- package/dist/runtime/step-executor.d.ts.map +1 -0
- package/dist/runtime/step-executor.js +946 -0
- package/dist/runtime/step-latency.d.ts +197 -0
- package/dist/runtime/step-latency.d.ts.map +1 -0
- package/dist/runtime/step-latency.js +207 -0
- package/dist/runtime/step-ownership.d.ts +72 -0
- package/dist/runtime/step-ownership.d.ts.map +1 -0
- package/dist/runtime/step-ownership.js +114 -0
- package/dist/runtime/step-single-flight.d.ts +12 -0
- package/dist/runtime/step-single-flight.d.ts.map +1 -0
- package/dist/runtime/step-single-flight.js +69 -0
- package/dist/runtime/suspension-handler.d.ts +109 -7
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +486 -140
- package/dist/runtime/vm-mode.d.ts +44 -0
- package/dist/runtime/vm-mode.d.ts.map +1 -0
- package/dist/runtime/vm-mode.js +62 -0
- package/dist/runtime/vm-serde-bundle.generated.d.ts +14 -0
- package/dist/runtime/vm-serde-bundle.generated.d.ts.map +1 -0
- package/dist/runtime/vm-serde-bundle.generated.js +16 -0
- package/dist/runtime/wait-continuation.d.ts +84 -0
- package/dist/runtime/wait-continuation.d.ts.map +1 -0
- package/dist/runtime/wait-continuation.js +105 -0
- package/dist/runtime/wait-until.d.ts +18 -0
- package/dist/runtime/wait-until.d.ts.map +1 -0
- package/dist/runtime/wait-until.js +42 -0
- package/dist/runtime/world-compatibility.d.ts +20 -0
- package/dist/runtime/world-compatibility.d.ts.map +1 -0
- package/dist/runtime/world-compatibility.js +32 -0
- package/dist/runtime/world-init.d.ts +50 -0
- package/dist/runtime/world-init.d.ts.map +1 -0
- package/dist/runtime/world-init.js +50 -0
- package/dist/runtime/world.d.ts +14 -2
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +101 -26
- package/dist/runtime.d.ts +17 -12
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +3135 -328
- package/dist/schemas.d.ts +1 -1
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +1 -1
- package/dist/sealed-box.d.ts +167 -0
- package/dist/sealed-box.d.ts.map +1 -0
- package/dist/sealed-box.js +571 -0
- package/dist/serialization/client.d.ts +17 -0
- package/dist/serialization/client.d.ts.map +1 -0
- package/dist/serialization/client.js +48 -0
- package/dist/serialization/codec-devalue-vm.d.ts +16 -0
- package/dist/serialization/codec-devalue-vm.d.ts.map +1 -0
- package/dist/serialization/codec-devalue-vm.js +148 -0
- package/dist/serialization/codec-devalue.d.ts +14 -0
- package/dist/serialization/codec-devalue.d.ts.map +1 -0
- package/dist/serialization/codec-devalue.js +105 -0
- package/dist/serialization/codec.d.ts +125 -0
- package/dist/serialization/codec.d.ts.map +1 -0
- package/dist/serialization/codec.js +17 -0
- package/dist/serialization/compression.d.ts +104 -0
- package/dist/serialization/compression.d.ts.map +1 -0
- package/dist/serialization/compression.js +260 -0
- package/dist/serialization/encryption.d.ts +134 -0
- package/dist/serialization/encryption.d.ts.map +1 -0
- package/dist/serialization/encryption.js +186 -0
- package/dist/serialization/errors.d.ts +34 -0
- package/dist/serialization/errors.d.ts.map +1 -0
- package/dist/serialization/errors.js +59 -0
- package/dist/serialization/format.d.ts +60 -0
- package/dist/serialization/format.d.ts.map +1 -0
- package/dist/serialization/format.js +97 -0
- package/dist/serialization/hardened.d.ts +155 -0
- package/dist/serialization/hardened.d.ts.map +1 -0
- package/dist/serialization/hardened.js +523 -0
- package/dist/serialization/index.d.ts +20 -0
- package/dist/serialization/index.d.ts.map +1 -0
- package/dist/serialization/index.js +22 -0
- package/dist/serialization/reducers/class-vm.d.ts +20 -0
- package/dist/serialization/reducers/class-vm.d.ts.map +1 -0
- package/dist/serialization/reducers/class-vm.js +77 -0
- package/dist/serialization/reducers/class.d.ts +11 -0
- package/dist/serialization/reducers/class.d.ts.map +1 -0
- package/dist/serialization/reducers/class.js +73 -0
- package/dist/serialization/reducers/common-vm.d.ts +15 -0
- package/dist/serialization/reducers/common-vm.d.ts.map +1 -0
- package/dist/serialization/reducers/common-vm.js +579 -0
- package/dist/serialization/reducers/common.d.ts +16 -0
- package/dist/serialization/reducers/common.d.ts.map +1 -0
- package/dist/serialization/reducers/common.js +478 -0
- package/dist/serialization/reducers/step-function-vm.d.ts +44 -0
- package/dist/serialization/reducers/step-function-vm.d.ts.map +1 -0
- package/dist/serialization/reducers/step-function-vm.js +97 -0
- package/dist/serialization/reducers/step-function.d.ts +35 -0
- package/dist/serialization/reducers/step-function.d.ts.map +1 -0
- package/dist/serialization/reducers/step-function.js +104 -0
- package/dist/serialization/step.d.ts +17 -0
- package/dist/serialization/step.d.ts.map +1 -0
- package/dist/serialization/step.js +48 -0
- package/dist/serialization/types.d.ts +273 -0
- package/dist/serialization/types.d.ts.map +1 -0
- package/dist/serialization/types.js +35 -0
- package/dist/serialization/workflow-vm.d.ts +29 -0
- package/dist/serialization/workflow-vm.d.ts.map +1 -0
- package/dist/serialization/workflow-vm.js +71 -0
- package/dist/serialization/workflow.d.ts +29 -0
- package/dist/serialization/workflow.d.ts.map +1 -0
- package/dist/serialization/workflow.js +54 -0
- package/dist/serialization-format.d.ts +60 -4
- package/dist/serialization-format.d.ts.map +1 -1
- package/dist/serialization-format.js +276 -56
- package/dist/serialization.d.ts +374 -221
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +2300 -783
- package/dist/set-attributes.d.ts +13 -0
- package/dist/set-attributes.d.ts.map +1 -0
- package/dist/set-attributes.js +60 -0
- package/dist/sleep.d.ts.map +1 -1
- package/dist/sleep.js +3 -2
- package/dist/source-map.d.ts +25 -0
- package/dist/source-map.d.ts.map +1 -1
- package/dist/source-map.js +148 -10
- package/dist/step/context-storage.d.ts +61 -2
- package/dist/step/context-storage.d.ts.map +1 -1
- package/dist/step/context-storage.js +7 -5
- package/dist/step/get-closure-vars.d.ts.map +1 -1
- package/dist/step/get-closure-vars.js +3 -2
- package/dist/step/get-step-metadata.d.ts.map +1 -1
- package/dist/step/get-step-metadata.js +3 -2
- package/dist/step/get-workflow-metadata.d.ts.map +1 -1
- package/dist/step/get-workflow-metadata.js +3 -2
- package/dist/step/writable-stream.d.ts.map +1 -1
- package/dist/step/writable-stream.js +71 -7
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +225 -29
- package/dist/symbols.d.ts +54 -0
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +55 -1
- package/dist/telemetry/semantic-conventions.d.ts +265 -2
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +190 -1
- package/dist/telemetry.d.ts +73 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +153 -16
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +23 -1
- package/dist/util.d.ts +16 -6
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +25 -16
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +2 -2
- package/dist/vm/index.d.ts.map +1 -1
- package/dist/vm/index.js +85 -14
- 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 +312 -0
- package/dist/workflow/attribute-dispatcher.d.ts +6 -0
- package/dist/workflow/attribute-dispatcher.d.ts.map +1 -0
- package/dist/workflow/attribute-dispatcher.js +48 -0
- package/dist/workflow/create-hook.d.ts.map +1 -1
- package/dist/workflow/create-hook.js +25 -3
- package/dist/workflow/define-hook.d.ts +1 -1
- package/dist/workflow/define-hook.d.ts.map +1 -1
- package/dist/workflow/define-hook.js +8 -4
- package/dist/workflow/get-workflow-metadata.d.ts.map +1 -1
- package/dist/workflow/get-workflow-metadata.js +14 -3
- package/dist/workflow/hook.d.ts.map +1 -1
- package/dist/workflow/hook.js +302 -36
- package/dist/workflow/index.d.ts +1 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +5 -3
- package/dist/workflow/set-attributes.d.ts +68 -0
- package/dist/workflow/set-attributes.d.ts.map +1 -0
- package/dist/workflow/set-attributes.js +60 -0
- package/dist/workflow/sleep.d.ts.map +1 -1
- package/dist/workflow/sleep.js +57 -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 +79 -3
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +831 -553
- package/docs/api-reference/create-hook.mdx +79 -0
- package/docs/api-reference/create-webhook.mdx +1 -0
- package/docs/api-reference/define-hook.mdx +26 -24
- package/docs/api-reference/fatal-error.mdx +29 -7
- package/docs/api-reference/fetch.mdx +8 -4
- package/docs/api-reference/index.mdx +3 -0
- package/docs/api-reference/set-attributes.mdx +61 -0
- package/docs/api-reference/sleep.mdx +1 -1
- package/docs/foundations/cancellation.mdx +459 -0
- package/docs/foundations/errors-and-retries.mdx +7 -3
- package/docs/foundations/hooks.mdx +29 -0
- package/docs/foundations/idempotency.mdx +243 -11
- package/docs/foundations/index.mdx +1 -23
- package/docs/foundations/meta.json +3 -1
- package/docs/foundations/serialization.mdx +77 -41
- package/docs/foundations/starting-workflows.mdx +79 -2
- package/docs/foundations/streaming.mdx +14 -23
- package/docs/foundations/versioning.mdx +263 -0
- package/docs/how-it-works/cancellation.mdx +287 -0
- package/docs/how-it-works/code-transform.mdx +21 -17
- package/docs/how-it-works/encryption.mdx +5 -5
- package/docs/how-it-works/event-sourcing.mdx +17 -9
- package/docs/how-it-works/framework-integrations.mdx +96 -337
- package/docs/how-it-works/meta.json +2 -1
- package/package.json +31 -13
- package/dist/runtime/step-handler.d.ts +0 -2
- package/dist/runtime/step-handler.d.ts.map +0 -1
- package/dist/runtime/step-handler.js +0 -678
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ContextViolationError, type DocsUrl, NotInStepContextError, NotInWorkflowContextError, NotInWorkflowOrStepContextError } from './context-violation-error.js';
|
|
2
|
+
export { ContextViolationError, NotInStepContextError, NotInWorkflowContextError, NotInWorkflowOrStepContextError, };
|
|
3
|
+
/**
|
|
4
|
+
* Thrown when an API that MUST NOT run inside a workflow function is called
|
|
5
|
+
* from one (e.g. `resumeHook()`, which would cause determinism issues).
|
|
6
|
+
* The message names the specific workflow that made the offending call.
|
|
7
|
+
*/
|
|
8
|
+
export declare class UnavailableInWorkflowContextError extends ContextViolationError {
|
|
9
|
+
name: string;
|
|
10
|
+
constructor(functionName: string, docsUrl: DocsUrl);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Throw a {@link NotInWorkflowContextError} whose stack trace points at the
|
|
14
|
+
* user code that called `stackStartFn`, not at our framework internals.
|
|
15
|
+
*
|
|
16
|
+
* Prefer this over `throw new NotInWorkflowContextError(...)` so tooling
|
|
17
|
+
* (Next.js error overlay, VS Code terminal linkifier, Sentry, etc.) shows
|
|
18
|
+
* the user's call site as the relevant frame.
|
|
19
|
+
*/
|
|
20
|
+
export declare function throwNotInWorkflowContext(functionName: string, docsUrl: DocsUrl, stackStartFn: Function): never;
|
|
21
|
+
/** See {@link throwNotInWorkflowContext}. */
|
|
22
|
+
export declare function throwNotInStepContext(functionName: string, docsUrl: DocsUrl, stackStartFn: Function): never;
|
|
23
|
+
/** See {@link throwNotInWorkflowContext}. */
|
|
24
|
+
export declare function throwNotInWorkflowOrStepContext(functionName: string, docsUrl: DocsUrl, stackStartFn: Function): never;
|
|
25
|
+
/** See {@link throwNotInWorkflowContext}. */
|
|
26
|
+
export declare function throwUnavailableInWorkflowContext(functionName: string, docsUrl: DocsUrl, stackStartFn: Function): never;
|
|
27
|
+
//# sourceMappingURL=context-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-errors.d.ts","sourceRoot":"","sources":["../src/context-errors.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EAErB,KAAK,OAAO,EACZ,qBAAqB,EACrB,yBAAyB,EACzB,+BAA+B,EAChC,MAAM,8BAA8B,CAAC;AAUtC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,+BAA+B,GAChC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,iCAAkC,SAAQ,qBAAqB;IAC1E,IAAI,SAAuC;gBAE/B,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;CAgDnD;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,EAEhB,YAAY,EAAE,QAAQ,GACrB,KAAK,CAIP;AAED,6CAA6C;AAC7C,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,EAEhB,YAAY,EAAE,QAAQ,GACrB,KAAK,CAIP;AAED,6CAA6C;AAC7C,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,EAEhB,YAAY,EAAE,QAAQ,GACrB,KAAK,CAIP;AAED,6CAA6C;AAC7C,wBAAgB,iCAAiC,CAC/C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,EAEhB,YAAY,EAAE,QAAQ,GACrB,KAAK,CAIP"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { redirectStackToCaller } from './capture-stack.js';
|
|
2
|
+
import { ContextViolationError, NotInStepContextError, NotInWorkflowContextError, NotInWorkflowOrStepContextError, } from './context-violation-error.js';
|
|
3
|
+
import { WORKFLOW_CONTEXT_SYMBOL, } from './workflow/get-workflow-metadata.js';
|
|
4
|
+
// Re-export the structural base + subclasses so the public surface is a
|
|
5
|
+
// single import point. The base + simpler subclasses live in
|
|
6
|
+
// `context-violation-error.ts` because `get-workflow-metadata.ts` needs to
|
|
7
|
+
// throw one without creating an import cycle with this file.
|
|
8
|
+
export { ContextViolationError, NotInStepContextError, NotInWorkflowContextError, NotInWorkflowOrStepContextError, };
|
|
9
|
+
/**
|
|
10
|
+
* Thrown when an API that MUST NOT run inside a workflow function is called
|
|
11
|
+
* from one (e.g. `resumeHook()`, which would cause determinism issues).
|
|
12
|
+
* The message names the specific workflow that made the offending call.
|
|
13
|
+
*/
|
|
14
|
+
export class UnavailableInWorkflowContextError extends ContextViolationError {
|
|
15
|
+
name = 'UnavailableInWorkflowContextError';
|
|
16
|
+
constructor(functionName, docsUrl) {
|
|
17
|
+
const ctx = globalThis[WORKFLOW_CONTEXT_SYMBOL];
|
|
18
|
+
const workflowName = ctx?.workflowName;
|
|
19
|
+
// Apply dim styling to `workflow/` / `step/` prefixes in the qualified
|
|
20
|
+
// name so the part the user named stands out.
|
|
21
|
+
const nameSegs = (() => {
|
|
22
|
+
if (!workflowName)
|
|
23
|
+
return null;
|
|
24
|
+
const m = workflowName.match(/^(workflow\/|step\/)(.*)$/);
|
|
25
|
+
if (m)
|
|
26
|
+
return [{ dim: m[1] }, { text: m[2] }];
|
|
27
|
+
return [{ text: workflowName }];
|
|
28
|
+
})();
|
|
29
|
+
const contextLine = nameSegs
|
|
30
|
+
? {
|
|
31
|
+
type: 'plain',
|
|
32
|
+
segments: [
|
|
33
|
+
{ text: 'this call was made from the ' },
|
|
34
|
+
...nameSegs,
|
|
35
|
+
{ text: ' workflow context.' },
|
|
36
|
+
],
|
|
37
|
+
}
|
|
38
|
+
: {
|
|
39
|
+
type: 'plain',
|
|
40
|
+
segments: [{ text: 'this call was made from a workflow context.' }],
|
|
41
|
+
};
|
|
42
|
+
super({
|
|
43
|
+
title: [
|
|
44
|
+
{ code: functionName },
|
|
45
|
+
{ text: ' cannot be called from a workflow context.' },
|
|
46
|
+
],
|
|
47
|
+
details: [
|
|
48
|
+
{
|
|
49
|
+
type: 'plain',
|
|
50
|
+
segments: [
|
|
51
|
+
{
|
|
52
|
+
text: 'calling this in a workflow context can cause determinism issues.',
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
contextLine,
|
|
57
|
+
{ type: 'docs', url: docsUrl },
|
|
58
|
+
],
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Throw a {@link NotInWorkflowContextError} whose stack trace points at the
|
|
64
|
+
* user code that called `stackStartFn`, not at our framework internals.
|
|
65
|
+
*
|
|
66
|
+
* Prefer this over `throw new NotInWorkflowContextError(...)` so tooling
|
|
67
|
+
* (Next.js error overlay, VS Code terminal linkifier, Sentry, etc.) shows
|
|
68
|
+
* the user's call site as the relevant frame.
|
|
69
|
+
*/
|
|
70
|
+
export function throwNotInWorkflowContext(functionName, docsUrl,
|
|
71
|
+
// biome-ignore lint/complexity/noBannedTypes: matches Error.captureStackTrace
|
|
72
|
+
stackStartFn) {
|
|
73
|
+
const err = new NotInWorkflowContextError(functionName, docsUrl);
|
|
74
|
+
redirectStackToCaller(err, stackStartFn);
|
|
75
|
+
throw err;
|
|
76
|
+
}
|
|
77
|
+
/** See {@link throwNotInWorkflowContext}. */
|
|
78
|
+
export function throwNotInStepContext(functionName, docsUrl,
|
|
79
|
+
// biome-ignore lint/complexity/noBannedTypes: matches Error.captureStackTrace
|
|
80
|
+
stackStartFn) {
|
|
81
|
+
const err = new NotInStepContextError(functionName, docsUrl);
|
|
82
|
+
redirectStackToCaller(err, stackStartFn);
|
|
83
|
+
throw err;
|
|
84
|
+
}
|
|
85
|
+
/** See {@link throwNotInWorkflowContext}. */
|
|
86
|
+
export function throwNotInWorkflowOrStepContext(functionName, docsUrl,
|
|
87
|
+
// biome-ignore lint/complexity/noBannedTypes: matches Error.captureStackTrace
|
|
88
|
+
stackStartFn) {
|
|
89
|
+
const err = new NotInWorkflowOrStepContextError(functionName, docsUrl);
|
|
90
|
+
redirectStackToCaller(err, stackStartFn);
|
|
91
|
+
throw err;
|
|
92
|
+
}
|
|
93
|
+
/** See {@link throwNotInWorkflowContext}. */
|
|
94
|
+
export function throwUnavailableInWorkflowContext(functionName, docsUrl,
|
|
95
|
+
// biome-ignore lint/complexity/noBannedTypes: matches Error.captureStackTrace
|
|
96
|
+
stackStartFn) {
|
|
97
|
+
const err = new UnavailableInWorkflowContextError(functionName, docsUrl);
|
|
98
|
+
redirectStackToCaller(err, stackStartFn);
|
|
99
|
+
throw err;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1lcnJvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dC1lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUNMLHFCQUFxQixFQUdyQixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLCtCQUErQixHQUNoQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFDTCx1QkFBdUIsR0FFeEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3Qyx3RUFBd0U7QUFDeEUsNkRBQTZEO0FBQzdELDJFQUEyRTtBQUMzRSw2REFBNkQ7QUFDN0QsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLCtCQUErQixHQUNoQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSxxQkFBcUI7SUFDMUUsSUFBSSxHQUFHLG1DQUFtQyxDQUFDO0lBRTNDLFlBQVksWUFBb0IsRUFBRSxPQUFnQjtRQUNoRCxNQUFNLEdBQUcsR0FBSSxVQUFrQixDQUFDLHVCQUF1QixDQUUxQyxDQUFDO1FBQ2QsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFLFlBQVksQ0FBQztRQUV2Qyx1RUFBdUU7UUFDdkUsOENBQThDO1FBQzlDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxZQUFZO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUM7Z0JBQUUsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFVLENBQUM7WUFDdkQsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFVLENBQUM7UUFDM0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVMLE1BQU0sV0FBVyxHQUFXLFFBQVE7WUFDbEMsQ0FBQyxDQUFDO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLFFBQVEsRUFBRTtvQkFDUixFQUFFLElBQUksRUFBRSw4QkFBOEIsRUFBRTtvQkFDeEMsR0FBRyxRQUFRO29CQUNYLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFO2lCQUMvQjthQUNGO1lBQ0gsQ0FBQyxDQUFDO2dCQUNFLElBQUksRUFBRSxPQUFPO2dCQUNiLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLDZDQUE2QyxFQUFFLENBQUM7YUFDcEUsQ0FBQztRQUVOLEtBQUssQ0FBQztZQUNKLEtBQUssRUFBRTtnQkFDTCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7Z0JBQ3RCLEVBQUUsSUFBSSxFQUFFLDRDQUE0QyxFQUFFO2FBQ3ZEO1lBQ0QsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxPQUFPO29CQUNiLFFBQVEsRUFBRTt3QkFDUjs0QkFDRSxJQUFJLEVBQUUsa0VBQWtFO3lCQUN6RTtxQkFDRjtpQkFDRjtnQkFDRCxXQUFXO2dCQUNYLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFO2FBQy9CO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsWUFBb0IsRUFDcEIsT0FBZ0I7QUFDaEIsOEVBQThFO0FBQzlFLFlBQXNCO0lBRXRCLE1BQU0sR0FBRyxHQUFHLElBQUkseUJBQXlCLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN6QyxNQUFNLEdBQUcsQ0FBQztBQUNaLENBQUM7QUFFRCw2Q0FBNkM7QUFDN0MsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxZQUFvQixFQUNwQixPQUFnQjtBQUNoQiw4RUFBOEU7QUFDOUUsWUFBc0I7SUFFdEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0QscUJBQXFCLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sR0FBRyxDQUFDO0FBQ1osQ0FBQztBQUVELDZDQUE2QztBQUM3QyxNQUFNLFVBQVUsK0JBQStCLENBQzdDLFlBQW9CLEVBQ3BCLE9BQWdCO0FBQ2hCLDhFQUE4RTtBQUM5RSxZQUFzQjtJQUV0QixNQUFNLEdBQUcsR0FBRyxJQUFJLCtCQUErQixDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RSxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDekMsTUFBTSxHQUFHLENBQUM7QUFDWixDQUFDO0FBRUQsNkNBQTZDO0FBQzdDLE1BQU0sVUFBVSxpQ0FBaUMsQ0FDL0MsWUFBb0IsRUFDcEIsT0FBZ0I7QUFDaEIsOEVBQThFO0FBQzlFLFlBQXNCO0lBRXRCLE1BQU0sR0FBRyxHQUFHLElBQUksaUNBQWlDLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN6QyxNQUFNLEdBQUcsQ0FBQztBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWRpcmVjdFN0YWNrVG9DYWxsZXIgfSBmcm9tICcuL2NhcHR1cmUtc3RhY2suanMnO1xuaW1wb3J0IHtcbiAgQ29udGV4dFZpb2xhdGlvbkVycm9yLFxuICB0eXBlIERldGFpbCxcbiAgdHlwZSBEb2NzVXJsLFxuICBOb3RJblN0ZXBDb250ZXh0RXJyb3IsXG4gIE5vdEluV29ya2Zsb3dDb250ZXh0RXJyb3IsXG4gIE5vdEluV29ya2Zsb3dPclN0ZXBDb250ZXh0RXJyb3IsXG59IGZyb20gJy4vY29udGV4dC12aW9sYXRpb24tZXJyb3IuanMnO1xuaW1wb3J0IHtcbiAgV09SS0ZMT1dfQ09OVEVYVF9TWU1CT0wsXG4gIHR5cGUgV29ya2Zsb3dNZXRhZGF0YSxcbn0gZnJvbSAnLi93b3JrZmxvdy9nZXQtd29ya2Zsb3ctbWV0YWRhdGEuanMnO1xuXG4vLyBSZS1leHBvcnQgdGhlIHN0cnVjdHVyYWwgYmFzZSArIHN1YmNsYXNzZXMgc28gdGhlIHB1YmxpYyBzdXJmYWNlIGlzIGFcbi8vIHNpbmdsZSBpbXBvcnQgcG9pbnQuIFRoZSBiYXNlICsgc2ltcGxlciBzdWJjbGFzc2VzIGxpdmUgaW5cbi8vIGBjb250ZXh0LXZpb2xhdGlvbi1lcnJvci50c2AgYmVjYXVzZSBgZ2V0LXdvcmtmbG93LW1ldGFkYXRhLnRzYCBuZWVkcyB0b1xuLy8gdGhyb3cgb25lIHdpdGhvdXQgY3JlYXRpbmcgYW4gaW1wb3J0IGN5Y2xlIHdpdGggdGhpcyBmaWxlLlxuZXhwb3J0IHtcbiAgQ29udGV4dFZpb2xhdGlvbkVycm9yLFxuICBOb3RJblN0ZXBDb250ZXh0RXJyb3IsXG4gIE5vdEluV29ya2Zsb3dDb250ZXh0RXJyb3IsXG4gIE5vdEluV29ya2Zsb3dPclN0ZXBDb250ZXh0RXJyb3IsXG59O1xuXG4vKipcbiAqIFRocm93biB3aGVuIGFuIEFQSSB0aGF0IE1VU1QgTk9UIHJ1biBpbnNpZGUgYSB3b3JrZmxvdyBmdW5jdGlvbiBpcyBjYWxsZWRcbiAqIGZyb20gb25lIChlLmcuIGByZXN1bWVIb29rKClgLCB3aGljaCB3b3VsZCBjYXVzZSBkZXRlcm1pbmlzbSBpc3N1ZXMpLlxuICogVGhlIG1lc3NhZ2UgbmFtZXMgdGhlIHNwZWNpZmljIHdvcmtmbG93IHRoYXQgbWFkZSB0aGUgb2ZmZW5kaW5nIGNhbGwuXG4gKi9cbmV4cG9ydCBjbGFzcyBVbmF2YWlsYWJsZUluV29ya2Zsb3dDb250ZXh0RXJyb3IgZXh0ZW5kcyBDb250ZXh0VmlvbGF0aW9uRXJyb3Ige1xuICBuYW1lID0gJ1VuYXZhaWxhYmxlSW5Xb3JrZmxvd0NvbnRleHRFcnJvcic7XG5cbiAgY29uc3RydWN0b3IoZnVuY3Rpb25OYW1lOiBzdHJpbmcsIGRvY3NVcmw6IERvY3NVcmwpIHtcbiAgICBjb25zdCBjdHggPSAoZ2xvYmFsVGhpcyBhcyBhbnkpW1dPUktGTE9XX0NPTlRFWFRfU1lNQk9MXSBhc1xuICAgICAgfCBXb3JrZmxvd01ldGFkYXRhXG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCB3b3JrZmxvd05hbWUgPSBjdHg/LndvcmtmbG93TmFtZTtcblxuICAgIC8vIEFwcGx5IGRpbSBzdHlsaW5nIHRvIGB3b3JrZmxvdy9gIC8gYHN0ZXAvYCBwcmVmaXhlcyBpbiB0aGUgcXVhbGlmaWVkXG4gICAgLy8gbmFtZSBzbyB0aGUgcGFydCB0aGUgdXNlciBuYW1lZCBzdGFuZHMgb3V0LlxuICAgIGNvbnN0IG5hbWVTZWdzID0gKCgpID0+IHtcbiAgICAgIGlmICghd29ya2Zsb3dOYW1lKSByZXR1cm4gbnVsbDtcbiAgICAgIGNvbnN0IG0gPSB3b3JrZmxvd05hbWUubWF0Y2goL14od29ya2Zsb3dcXC98c3RlcFxcLykoLiopJC8pO1xuICAgICAgaWYgKG0pIHJldHVybiBbeyBkaW06IG1bMV0gfSwgeyB0ZXh0OiBtWzJdIH1dIGFzIGNvbnN0O1xuICAgICAgcmV0dXJuIFt7IHRleHQ6IHdvcmtmbG93TmFtZSB9XSBhcyBjb25zdDtcbiAgICB9KSgpO1xuXG4gICAgY29uc3QgY29udGV4dExpbmU6IERldGFpbCA9IG5hbWVTZWdzXG4gICAgICA/IHtcbiAgICAgICAgICB0eXBlOiAncGxhaW4nLFxuICAgICAgICAgIHNlZ21lbnRzOiBbXG4gICAgICAgICAgICB7IHRleHQ6ICd0aGlzIGNhbGwgd2FzIG1hZGUgZnJvbSB0aGUgJyB9LFxuICAgICAgICAgICAgLi4ubmFtZVNlZ3MsXG4gICAgICAgICAgICB7IHRleHQ6ICcgd29ya2Zsb3cgY29udGV4dC4nIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgdHlwZTogJ3BsYWluJyxcbiAgICAgICAgICBzZWdtZW50czogW3sgdGV4dDogJ3RoaXMgY2FsbCB3YXMgbWFkZSBmcm9tIGEgd29ya2Zsb3cgY29udGV4dC4nIH1dLFxuICAgICAgICB9O1xuXG4gICAgc3VwZXIoe1xuICAgICAgdGl0bGU6IFtcbiAgICAgICAgeyBjb2RlOiBmdW5jdGlvbk5hbWUgfSxcbiAgICAgICAgeyB0ZXh0OiAnIGNhbm5vdCBiZSBjYWxsZWQgZnJvbSBhIHdvcmtmbG93IGNvbnRleHQuJyB9LFxuICAgICAgXSxcbiAgICAgIGRldGFpbHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdwbGFpbicsXG4gICAgICAgICAgc2VnbWVudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGV4dDogJ2NhbGxpbmcgdGhpcyBpbiBhIHdvcmtmbG93IGNvbnRleHQgY2FuIGNhdXNlIGRldGVybWluaXNtIGlzc3Vlcy4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBjb250ZXh0TGluZSxcbiAgICAgICAgeyB0eXBlOiAnZG9jcycsIHVybDogZG9jc1VybCB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFRocm93IGEge0BsaW5rIE5vdEluV29ya2Zsb3dDb250ZXh0RXJyb3J9IHdob3NlIHN0YWNrIHRyYWNlIHBvaW50cyBhdCB0aGVcbiAqIHVzZXIgY29kZSB0aGF0IGNhbGxlZCBgc3RhY2tTdGFydEZuYCwgbm90IGF0IG91ciBmcmFtZXdvcmsgaW50ZXJuYWxzLlxuICpcbiAqIFByZWZlciB0aGlzIG92ZXIgYHRocm93IG5ldyBOb3RJbldvcmtmbG93Q29udGV4dEVycm9yKC4uLilgIHNvIHRvb2xpbmdcbiAqIChOZXh0LmpzIGVycm9yIG92ZXJsYXksIFZTIENvZGUgdGVybWluYWwgbGlua2lmaWVyLCBTZW50cnksIGV0Yy4pIHNob3dzXG4gKiB0aGUgdXNlcidzIGNhbGwgc2l0ZSBhcyB0aGUgcmVsZXZhbnQgZnJhbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd05vdEluV29ya2Zsb3dDb250ZXh0KFxuICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgZG9jc1VybDogRG9jc1VybCxcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS9ub0Jhbm5lZFR5cGVzOiBtYXRjaGVzIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlXG4gIHN0YWNrU3RhcnRGbjogRnVuY3Rpb25cbik6IG5ldmVyIHtcbiAgY29uc3QgZXJyID0gbmV3IE5vdEluV29ya2Zsb3dDb250ZXh0RXJyb3IoZnVuY3Rpb25OYW1lLCBkb2NzVXJsKTtcbiAgcmVkaXJlY3RTdGFja1RvQ2FsbGVyKGVyciwgc3RhY2tTdGFydEZuKTtcbiAgdGhyb3cgZXJyO1xufVxuXG4vKiogU2VlIHtAbGluayB0aHJvd05vdEluV29ya2Zsb3dDb250ZXh0fS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd05vdEluU3RlcENvbnRleHQoXG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICBkb2NzVXJsOiBEb2NzVXJsLFxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb21wbGV4aXR5L25vQmFubmVkVHlwZXM6IG1hdGNoZXMgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2VcbiAgc3RhY2tTdGFydEZuOiBGdW5jdGlvblxuKTogbmV2ZXIge1xuICBjb25zdCBlcnIgPSBuZXcgTm90SW5TdGVwQ29udGV4dEVycm9yKGZ1bmN0aW9uTmFtZSwgZG9jc1VybCk7XG4gIHJlZGlyZWN0U3RhY2tUb0NhbGxlcihlcnIsIHN0YWNrU3RhcnRGbik7XG4gIHRocm93IGVycjtcbn1cblxuLyoqIFNlZSB7QGxpbmsgdGhyb3dOb3RJbldvcmtmbG93Q29udGV4dH0uICovXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dOb3RJbldvcmtmbG93T3JTdGVwQ29udGV4dChcbiAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gIGRvY3NVcmw6IERvY3NVcmwsXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvbXBsZXhpdHkvbm9CYW5uZWRUeXBlczogbWF0Y2hlcyBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZVxuICBzdGFja1N0YXJ0Rm46IEZ1bmN0aW9uXG4pOiBuZXZlciB7XG4gIGNvbnN0IGVyciA9IG5ldyBOb3RJbldvcmtmbG93T3JTdGVwQ29udGV4dEVycm9yKGZ1bmN0aW9uTmFtZSwgZG9jc1VybCk7XG4gIHJlZGlyZWN0U3RhY2tUb0NhbGxlcihlcnIsIHN0YWNrU3RhcnRGbik7XG4gIHRocm93IGVycjtcbn1cblxuLyoqIFNlZSB7QGxpbmsgdGhyb3dOb3RJbldvcmtmbG93Q29udGV4dH0uICovXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dVbmF2YWlsYWJsZUluV29ya2Zsb3dDb250ZXh0KFxuICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgZG9jc1VybDogRG9jc1VybCxcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS9ub0Jhbm5lZFR5cGVzOiBtYXRjaGVzIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlXG4gIHN0YWNrU3RhcnRGbjogRnVuY3Rpb25cbik6IG5ldmVyIHtcbiAgY29uc3QgZXJyID0gbmV3IFVuYXZhaWxhYmxlSW5Xb3JrZmxvd0NvbnRleHRFcnJvcihmdW5jdGlvbk5hbWUsIGRvY3NVcmwpO1xuICByZWRpcmVjdFN0YWNrVG9DYWxsZXIoZXJyLCBzdGFja1N0YXJ0Rm4pO1xuICB0aHJvdyBlcnI7XG59XG4iXX0=
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A `docs:` line URL. The leading protocol is part of the type so call sites
|
|
3
|
+
* can't accidentally pass a protocol-relative or bare path.
|
|
4
|
+
*/
|
|
5
|
+
export type DocsUrl = `https://${string}`;
|
|
6
|
+
declare const INSPECT_CUSTOM: unique symbol;
|
|
7
|
+
/**
|
|
8
|
+
* Structured data for a framed error. The base class takes this and renders
|
|
9
|
+
* it to plain text (for `.message` / `.stack` / structured logs) or to an
|
|
10
|
+
* ANSI-framed string (for terminal display via `util.inspect` / `toString`).
|
|
11
|
+
*
|
|
12
|
+
* Keeping the pieces structured means we never have to strip ANSI back out
|
|
13
|
+
* once it's in the message — we just don't put it there in the first place.
|
|
14
|
+
*/
|
|
15
|
+
export interface FramedContent {
|
|
16
|
+
/** Headline. `{ code: 'foo()' }` segments render as backticked inline code. */
|
|
17
|
+
readonly title: readonly Segment[];
|
|
18
|
+
/** One framed branch per entry. The last uses `╰▶`, others use `├▶`. */
|
|
19
|
+
readonly details: readonly Detail[];
|
|
20
|
+
}
|
|
21
|
+
export type Segment = {
|
|
22
|
+
readonly text: string;
|
|
23
|
+
} | {
|
|
24
|
+
readonly code: string;
|
|
25
|
+
} | {
|
|
26
|
+
readonly dim: string;
|
|
27
|
+
};
|
|
28
|
+
export type Detail = {
|
|
29
|
+
readonly type: 'plain';
|
|
30
|
+
readonly segments: readonly Segment[];
|
|
31
|
+
} | {
|
|
32
|
+
readonly type: 'docs';
|
|
33
|
+
readonly url: DocsUrl;
|
|
34
|
+
};
|
|
35
|
+
export declare function renderPlain(c: FramedContent): string;
|
|
36
|
+
export declare function renderPretty(c: FramedContent): string;
|
|
37
|
+
/**
|
|
38
|
+
* Base class for structured context-violation errors.
|
|
39
|
+
*
|
|
40
|
+
* Design notes:
|
|
41
|
+
*
|
|
42
|
+
* - `.message` is **plain text** (no ANSI escape bytes). Structured logs,
|
|
43
|
+
* log drains, CBOR-serialized event data, and anything else that reads
|
|
44
|
+
* `err.message` / `err.stack` as a string gets clean output — no mojibake
|
|
45
|
+
* in JSON, no `\x1B[...m` noise in Vercel logs.
|
|
46
|
+
*
|
|
47
|
+
* - The ANSI-framed version is rendered **lazily** via `toString()` and
|
|
48
|
+
* `[util.inspect.custom]`. When the error is thrown and Node prints it
|
|
49
|
+
* via `util.inspect`, the user sees the colored, framed box. When it's
|
|
50
|
+
* attached to a structured log field, the consumer sees plain text.
|
|
51
|
+
*
|
|
52
|
+
* - `fatal = true` marks these as non-retryable. Calling `createHook()`
|
|
53
|
+
* from a step function will never succeed no matter how many retries —
|
|
54
|
+
* burning attempts just produces duplicated log output. The runtime's
|
|
55
|
+
* `FatalError.is(err)` gate recognizes any error with `fatal: true`.
|
|
56
|
+
*/
|
|
57
|
+
export declare abstract class ContextViolationError extends Error {
|
|
58
|
+
#private;
|
|
59
|
+
/** Non-retryable — see class doc. */
|
|
60
|
+
readonly fatal = true;
|
|
61
|
+
constructor(content: FramedContent);
|
|
62
|
+
/**
|
|
63
|
+
* `console.log(err)` and most Node internals route through `util.inspect`,
|
|
64
|
+
* which respects this symbol. Returning a custom string here means the
|
|
65
|
+
* thrown error prints as a pretty frame in the terminal while `.message`
|
|
66
|
+
* and `.stack` stay plain.
|
|
67
|
+
*/
|
|
68
|
+
[INSPECT_CUSTOM](): string;
|
|
69
|
+
toString(): string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Thrown when an API that must run inside a workflow function is called
|
|
73
|
+
* from outside a workflow context (e.g. from a step function or from
|
|
74
|
+
* regular application code).
|
|
75
|
+
*/
|
|
76
|
+
export declare class NotInWorkflowContextError extends ContextViolationError {
|
|
77
|
+
name: string;
|
|
78
|
+
constructor(functionName: string, docsUrl: DocsUrl);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Thrown when an API that must run inside a step function is called from
|
|
82
|
+
* outside a step context.
|
|
83
|
+
*/
|
|
84
|
+
export declare class NotInStepContextError extends ContextViolationError {
|
|
85
|
+
name: string;
|
|
86
|
+
constructor(functionName: string, docsUrl: DocsUrl);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Thrown when an API that must run inside either a workflow or step function
|
|
90
|
+
* is called from regular application code.
|
|
91
|
+
*/
|
|
92
|
+
export declare class NotInWorkflowOrStepContextError extends ContextViolationError {
|
|
93
|
+
name: string;
|
|
94
|
+
constructor(functionName: string, docsUrl: DocsUrl);
|
|
95
|
+
}
|
|
96
|
+
export {};
|
|
97
|
+
//# sourceMappingURL=context-violation-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-violation-error.d.ts","sourceRoot":"","sources":["../src/context-violation-error.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,WAAW,MAAM,EAAE,CAAC;AAE1C,QAAA,MAAM,cAAc,eAA2C,CAAC;AAEhE;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,MAAM,OAAO,GACf;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7B,MAAM,MAAM,MAAM,GACd;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;AAwBrD,wBAAgB,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAepD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAGrD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,8BAAsB,qBAAsB,SAAQ,KAAK;;IACvD,qCAAqC;IACrC,QAAQ,CAAC,KAAK,QAAQ;gBAIV,OAAO,EAAE,aAAa;IAKlC;;;;;OAKG;IACH,CAAC,cAAc,CAAC,IAAI,MAAM;IAgB1B,QAAQ,IAAI,MAAM;CAGnB;AAED;;;;GAIG;AACH,qBAAa,yBAA0B,SAAQ,qBAAqB;IAClE,IAAI,SAA+B;gBAEvB,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;CASnD;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,qBAAqB;IAC9D,IAAI,SAA2B;gBAEnB,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;CASnD;AAED;;;GAGG;AACH,qBAAa,+BAAgC,SAAQ,qBAAqB;IACxE,IAAI,SAAqC;gBAE7B,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;CASnD"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import * as Ansi from '@workflow/errors/ansi';
|
|
2
|
+
const INSPECT_CUSTOM = Symbol.for('nodejs.util.inspect.custom');
|
|
3
|
+
function renderSegmentPlain(s) {
|
|
4
|
+
if ('code' in s)
|
|
5
|
+
return `\`${s.code}\``;
|
|
6
|
+
if ('dim' in s)
|
|
7
|
+
return s.dim;
|
|
8
|
+
return s.text;
|
|
9
|
+
}
|
|
10
|
+
function renderSegmentPretty(s) {
|
|
11
|
+
if ('code' in s)
|
|
12
|
+
return Ansi.code(s.code);
|
|
13
|
+
if ('dim' in s)
|
|
14
|
+
return Ansi.dim(s.dim);
|
|
15
|
+
return s.text;
|
|
16
|
+
}
|
|
17
|
+
function renderDetailPlain(d) {
|
|
18
|
+
if (d.type === 'docs')
|
|
19
|
+
return `docs: ${d.url}`;
|
|
20
|
+
return d.segments.map(renderSegmentPlain).join('');
|
|
21
|
+
}
|
|
22
|
+
function renderDetailPretty(d) {
|
|
23
|
+
if (d.type === 'docs')
|
|
24
|
+
return Ansi.docs(d.url);
|
|
25
|
+
return d.segments.map(renderSegmentPretty).join('');
|
|
26
|
+
}
|
|
27
|
+
export function renderPlain(c) {
|
|
28
|
+
// Mimic `Ansi.frame` structure so `.message` is still readable in logs
|
|
29
|
+
// even without the color.
|
|
30
|
+
const title = c.title.map(renderSegmentPlain).join('');
|
|
31
|
+
const lines = [title];
|
|
32
|
+
c.details.forEach((detail, index) => {
|
|
33
|
+
const isLast = index === c.details.length - 1;
|
|
34
|
+
const first = isLast ? '╰▶ ' : '├▶ ';
|
|
35
|
+
const cont = isLast ? ' ' : '│ ';
|
|
36
|
+
const raw = renderDetailPlain(detail).split('\n');
|
|
37
|
+
raw.forEach((line, i) => {
|
|
38
|
+
lines.push(`${i === 0 ? first : cont}${line}`);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
return lines.join('\n');
|
|
42
|
+
}
|
|
43
|
+
export function renderPretty(c) {
|
|
44
|
+
const title = c.title.map(renderSegmentPretty).join('');
|
|
45
|
+
return Ansi.frame(title, c.details.map(renderDetailPretty));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Base class for structured context-violation errors.
|
|
49
|
+
*
|
|
50
|
+
* Design notes:
|
|
51
|
+
*
|
|
52
|
+
* - `.message` is **plain text** (no ANSI escape bytes). Structured logs,
|
|
53
|
+
* log drains, CBOR-serialized event data, and anything else that reads
|
|
54
|
+
* `err.message` / `err.stack` as a string gets clean output — no mojibake
|
|
55
|
+
* in JSON, no `\x1B[...m` noise in Vercel logs.
|
|
56
|
+
*
|
|
57
|
+
* - The ANSI-framed version is rendered **lazily** via `toString()` and
|
|
58
|
+
* `[util.inspect.custom]`. When the error is thrown and Node prints it
|
|
59
|
+
* via `util.inspect`, the user sees the colored, framed box. When it's
|
|
60
|
+
* attached to a structured log field, the consumer sees plain text.
|
|
61
|
+
*
|
|
62
|
+
* - `fatal = true` marks these as non-retryable. Calling `createHook()`
|
|
63
|
+
* from a step function will never succeed no matter how many retries —
|
|
64
|
+
* burning attempts just produces duplicated log output. The runtime's
|
|
65
|
+
* `FatalError.is(err)` gate recognizes any error with `fatal: true`.
|
|
66
|
+
*/
|
|
67
|
+
export class ContextViolationError extends Error {
|
|
68
|
+
/** Non-retryable — see class doc. */
|
|
69
|
+
fatal = true;
|
|
70
|
+
#content;
|
|
71
|
+
constructor(content) {
|
|
72
|
+
super(renderPlain(content));
|
|
73
|
+
this.#content = content;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* `console.log(err)` and most Node internals route through `util.inspect`,
|
|
77
|
+
* which respects this symbol. Returning a custom string here means the
|
|
78
|
+
* thrown error prints as a pretty frame in the terminal while `.message`
|
|
79
|
+
* and `.stack` stay plain.
|
|
80
|
+
*/
|
|
81
|
+
[INSPECT_CUSTOM]() {
|
|
82
|
+
const pretty = renderPretty(this.#content);
|
|
83
|
+
// `stack` starts with `${name}: ${message}\n at ...`. Our message is
|
|
84
|
+
// multi-line (`title\n╰▶ docs: …`), so slicing only the first line glues
|
|
85
|
+
// the framed-detail tail of the message onto the prepended pretty form
|
|
86
|
+
// and renders every detail line twice. Slice past *all* message lines.
|
|
87
|
+
const messageLineCount = this.message.split('\n').length;
|
|
88
|
+
const tail = (this.stack ?? '')
|
|
89
|
+
.split('\n')
|
|
90
|
+
.slice(messageLineCount)
|
|
91
|
+
.join('\n');
|
|
92
|
+
return tail
|
|
93
|
+
? `${this.name}: ${pretty}\n${tail}`
|
|
94
|
+
: `${this.name}: ${pretty}`;
|
|
95
|
+
}
|
|
96
|
+
toString() {
|
|
97
|
+
return `${this.name}: ${renderPretty(this.#content)}`;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Thrown when an API that must run inside a workflow function is called
|
|
102
|
+
* from outside a workflow context (e.g. from a step function or from
|
|
103
|
+
* regular application code).
|
|
104
|
+
*/
|
|
105
|
+
export class NotInWorkflowContextError extends ContextViolationError {
|
|
106
|
+
name = 'NotInWorkflowContextError';
|
|
107
|
+
constructor(functionName, docsUrl) {
|
|
108
|
+
super({
|
|
109
|
+
title: [
|
|
110
|
+
{ code: functionName },
|
|
111
|
+
{ text: ' can only be called inside a workflow function' },
|
|
112
|
+
],
|
|
113
|
+
details: [{ type: 'docs', url: docsUrl }],
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Thrown when an API that must run inside a step function is called from
|
|
119
|
+
* outside a step context.
|
|
120
|
+
*/
|
|
121
|
+
export class NotInStepContextError extends ContextViolationError {
|
|
122
|
+
name = 'NotInStepContextError';
|
|
123
|
+
constructor(functionName, docsUrl) {
|
|
124
|
+
super({
|
|
125
|
+
title: [
|
|
126
|
+
{ code: functionName },
|
|
127
|
+
{ text: ' can only be called inside a step function' },
|
|
128
|
+
],
|
|
129
|
+
details: [{ type: 'docs', url: docsUrl }],
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Thrown when an API that must run inside either a workflow or step function
|
|
135
|
+
* is called from regular application code.
|
|
136
|
+
*/
|
|
137
|
+
export class NotInWorkflowOrStepContextError extends ContextViolationError {
|
|
138
|
+
name = 'NotInWorkflowOrStepContextError';
|
|
139
|
+
constructor(functionName, docsUrl) {
|
|
140
|
+
super({
|
|
141
|
+
title: [
|
|
142
|
+
{ code: functionName },
|
|
143
|
+
{ text: ' can only be called inside a workflow or step function' },
|
|
144
|
+
],
|
|
145
|
+
details: [{ type: 'docs', url: docsUrl }],
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC12aW9sYXRpb24tZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dC12aW9sYXRpb24tZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSx1QkFBdUIsQ0FBQztBQVE5QyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUEwQmhFLFNBQVMsa0JBQWtCLENBQUMsQ0FBVTtJQUNwQyxJQUFJLE1BQU0sSUFBSSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN4QyxJQUFJLEtBQUssSUFBSSxDQUFDO1FBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxDQUFVO0lBQ3JDLElBQUksTUFBTSxJQUFJLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLElBQUksS0FBSyxJQUFJLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxDQUFTO0lBQ2xDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNO1FBQUUsT0FBTyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMvQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLENBQVM7SUFDbkMsSUFBSSxDQUFDLENBQUMs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LGlDQUFpQyxDQUFDO0lBRXpDLFlBQVksWUFBb0IsRUFBRSxPQUFnQjtRQUNoRCxLQUFLLENBQUM7WUFDSixLQUFLLEVBQUU7Z0JBQ0wsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO2dCQUN0QixFQUFFLElBQUksRUFBRSx3REFBd0QsRUFBRTthQUNuRTtZQUNELE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQW5zaSBmcm9tICdAd29ya2Zsb3cvZXJyb3JzL2Fuc2knO1xuXG4vKipcbiAqIEEgYGRvY3M6YCBsaW5lIFVSTC4gVGhlIGxlYWRpbmcgcHJvdG9jb2wgaXMgcGFydCBvZiB0aGUgdHlwZSBzbyBjYWxsIHNpdGVzXG4gKiBjYW4ndCBhY2NpZGVudGFsbHkgcGFzcyBhIHByb3RvY29sLXJlbGF0aXZlIG9yIGJhcmUgcGF0aC5cbiAqL1xuZXhwb3J0IHR5cGUgRG9jc1VybCA9IGBodHRwczovLyR7c3RyaW5nfWA7XG5cbmNvbnN0IElOU1BFQ1RfQ1VTVE9NID0gU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKTtcblxuLyoqXG4gKiBTdHJ1Y3R1cmVkIGRhdGEgZm9yIGEgZnJhbWVkIGVycm9yLiBUaGUgYmFzZSBjbGFzcyB0YWtlcyB0aGlzIGFuZCByZW5kZXJzXG4gKiBpdCB0byBwbGFpbiB0ZXh0IChmb3IgYC5tZXNzYWdlYCAvIGAuc3RhY2tgIC8gc3RydWN0dXJlZCBsb2dzKSBvciB0byBhblxuICogQU5TSS1mcmFtZWQgc3RyaW5nIChmb3IgdGVybWluYWwgZGlzcGxheSB2aWEgYHV0aWwuaW5zcGVjdGAgLyBgdG9TdHJpbmdgKS5cbiAqXG4gKiBLZWVwaW5nIHRoZSBwaWVjZXMgc3RydWN0dXJlZCBtZWFucyB3ZSBuZXZlciBoYXZlIHRvIHN0cmlwIEFOU0kgYmFjayBvdXRcbiAqIG9uY2UgaXQncyBpbiB0aGUgbWVzc2FnZSDigJQgd2UganVzdCBkb24ndCBwdXQgaXQgdGhlcmUgaW4gdGhlIGZpcnN0IHBsYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyYW1lZENvbnRlbnQge1xuICAvKiogSGVhZGxpbmUuIGB7IGNvZGU6ICdmb28oKScgfWAgc2VnbWVudHMgcmVuZGVyIGFzIGJhY2t0aWNrZWQgaW5saW5lIGNvZGUuICovXG4gIHJlYWRvbmx5IHRpdGxlOiByZWFkb25seSBTZWdtZW50W107XG4gIC8qKiBPbmUgZnJhbWVkIGJyYW5jaCBwZXIgZW50cnkuIFRoZSBsYXN0IHVzZXMgYOKVsOKWtmAsIG90aGVycyB1c2UgYOKUnOKWtmAuICovXG4gIHJlYWRvbmx5IGRldGFpbHM6IHJlYWRvbmx5IERldGFpbFtdO1xufVxuXG5leHBvcnQgdHlwZSBTZWdtZW50ID1cbiAgfCB7IHJlYWRvbmx5IHRleHQ6IHN0cmluZyB9XG4gIHwgeyByZWFkb25seSBjb2RlOiBzdHJpbmcgfVxuICB8IHsgcmVhZG9ubHkgZGltOiBzdHJpbmcgfTtcblxuZXhwb3J0IHR5cGUgRGV0YWlsID1cbiAgfCB7IHJlYWRvbmx5IHR5cGU6ICdwbGFpbic7IHJlYWRvbmx5IHNlZ21lbnRzOiByZWFkb25seSBTZWdtZW50W10gfVxuICB8IHsgcmVhZG9ubHkgdHlwZTogJ2RvY3MnOyByZWFkb25seSB1cmw6IERvY3NVcmwgfTtcblxuZnVuY3Rpb24gcmVuZGVyU2VnbWVudFBsYWluKHM6IFNlZ21lbnQpOiBzdHJpbmcge1xuICBpZiAoJ2NvZGUnIGluIHMpIHJldHVybiBgXFxgJHtzLmNvZGV9XFxgYDtcbiAgaWYgKCdkaW0nIGluIHMpIHJldHVybiBzLmRpbTtcbiAgcmV0dXJuIHMudGV4dDtcbn1cblxuZnVuY3Rpb24gcmVuZGVyU2VnbWVudFByZXR0eShzOiBTZWdtZW50KTogc3RyaW5nIHtcbiAgaWYgKCdjb2RlJyBpbiBzKSByZXR1cm4gQW5zaS5jb2RlKHMuY29kZSk7XG4gIGlmICgnZGltJyBpbiBzKSByZXR1cm4gQW5zaS5kaW0ocy5kaW0pO1xuICByZXR1cm4gcy50ZXh0O1xufVxuXG5mdW5jdGlvbiByZW5kZXJEZXRhaWxQbGFpbihkOiBEZXRhaWwpOiBzdHJpbmcge1xuICBpZiAoZC50eXBlID09PSAnZG9jcycpIHJldHVybiBgZG9jczogJHtkLnVybH1gO1xuICByZXR1cm4gZC5zZWdtZW50cy5tYXAocmVuZGVyU2VnbWVudFBsYWluKS5qb2luKCcnKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRGV0YWlsUHJldHR5KGQ6IERldGFpbCk6IHN0cmluZyB7XG4gIGlmIChkLnR5cGUgPT09ICdkb2NzJykgcmV0dXJuIEFuc2kuZG9jcyhkLnVybCk7XG4gIHJldHVybiBkLnNlZ21lbnRzLm1hcChyZW5kZXJTZWdtZW50UHJldHR5KS5qb2luKCcnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclBsYWluKGM6IEZyYW1lZENvbnRlbnQpOiBzdHJpbmcge1xuICAvLyBNaW1pYyBgQW5zaS5mcmFtZWAgc3RydWN0dXJlIHNvIGAubWVzc2FnZWAgaXMgc3RpbGwgcmVhZGFibGUgaW4gbG9nc1xuICAvLyBldmVuIHdpdGhvdXQgdGhlIGNvbG9yLlxuICBjb25zdCB0aXRsZSA9IGMudGl0bGUubWFwKHJlbmRlclNlZ21lbnRQbGFpbikuam9pbignJyk7XG4gIGNvbnN0IGxpbmVzID0gW3RpdGxlXTtcbiAgYy5kZXRhaWxzLmZvckVhY2goKGRldGFpbCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpc0xhc3QgPSBpbmRleCA9PT0gYy5kZXRhaWxzLmxlbmd0aCAtIDE7XG4gICAgY29uc3QgZmlyc3QgPSBpc0xhc3QgPyAn4pWw4pa2ICcgOiAn4pSc4pa2ICc7XG4gICAgY29uc3QgY29udCA9IGlzTGFzdCA/ICcgICAnIDogJ+KUgiAgJztcbiAgICBjb25zdCByYXcgPSByZW5kZXJEZXRhaWxQbGFpbihkZXRhaWwpLnNwbGl0KCdcXG4nKTtcbiAgICByYXcuZm9yRWFjaCgobGluZSwgaSkgPT4ge1xuICAgICAgbGluZXMucHVzaChgJHtpID09PSAwID8gZmlyc3QgOiBjb250fSR7bGluZX1gKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclByZXR0eShjOiBGcmFtZWRDb250ZW50KTogc3RyaW5nIHtcbiAgY29uc3QgdGl0bGUgPSBjLnRpdGxlLm1hcChyZW5kZXJTZWdtZW50UHJldHR5KS5qb2luKCcnKTtcbiAgcmV0dXJuIEFuc2kuZnJhbWUodGl0bGUsIGMuZGV0YWlscy5tYXAocmVuZGVyRGV0YWlsUHJldHR5KSk7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3Igc3RydWN0dXJlZCBjb250ZXh0LXZpb2xhdGlvbiBlcnJvcnMuXG4gKlxuICogRGVzaWduIG5vdGVzOlxuICpcbiAqIC0gYC5tZXNzYWdlYCBpcyAqKnBsYWluIHRleHQqKiAobm8gQU5TSSBlc2NhcGUgYnl0ZXMpLiBTdHJ1Y3R1cmVkIGxvZ3MsXG4gKiAgIGxvZyBkcmFpbnMsIENCT1Itc2VyaWFsaXplZCBldmVudCBkYXRhLCBhbmQgYW55dGhpbmcgZWxzZSB0aGF0IHJlYWRzXG4gKiAgIGBlcnIubWVzc2FnZWAgLyBgZXJyLnN0YWNrYCBhcyBhIHN0cmluZyBnZXRzIGNsZWFuIG91dHB1dCDigJQgbm8gbW9qaWJha2VcbiAqICAgaW4gSlNPTiwgbm8gYFxceDFCWy4uLm1gIG5vaXNlIGluIFZlcmNlbCBsb2dzLlxuICpcbiAqIC0gVGhlIEFOU0ktZnJhbWVkIHZlcnNpb24gaXMgcmVuZGVyZWQgKipsYXppbHkqKiB2aWEgYHRvU3RyaW5nKClgIGFuZFxuICogICBgW3V0aWwuaW5zcGVjdC5jdXN0b21dYC4gV2hlbiB0aGUgZXJyb3IgaXMgdGhyb3duIGFuZCBOb2RlIHByaW50cyBpdFxuICogICB2aWEgYHV0aWwuaW5zcGVjdGAsIHRoZSB1c2VyIHNlZXMgdGhlIGNvbG9yZWQsIGZyYW1lZCBib3guIFdoZW4gaXQnc1xuICogICBhdHRhY2hlZCB0byBhIHN0cnVjdHVyZWQgbG9nIGZpZWxkLCB0aGUgY29uc3VtZXIgc2VlcyBwbGFpbiB0ZXh0LlxuICpcbiAqIC0gYGZhdGFsID0gdHJ1ZWAgbWFya3MgdGhlc2UgYXMgbm9uLXJldHJ5YWJsZS4gQ2FsbGluZyBgY3JlYXRlSG9vaygpYFxuICogICBmcm9tIGEgc3RlcCBmdW5jdGlvbiB3aWxsIG5ldmVyIHN1Y2NlZWQgbm8gbWF0dGVyIGhvdyBtYW55IHJldHJpZXMg4oCUXG4gKiAgIGJ1cm5pbmcgYXR0ZW1wdHMganVzdCBwcm9kdWNlcyBkdXBsaWNhdGVkIGxvZyBvdXRwdXQuIFRoZSBydW50aW1lJ3NcbiAqICAgYEZhdGFsRXJyb3IuaXMoZXJyKWAgZ2F0ZSByZWNvZ25pemVzIGFueSBlcnJvciB3aXRoIGBmYXRhbDogdHJ1ZWAuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb250ZXh0VmlvbGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKiBOb24tcmV0cnlhYmxlIOKAlCBzZWUgY2xhc3MgZG9jLiAqL1xuICByZWFkb25seSBmYXRhbCA9IHRydWU7XG5cbiAgcmVhZG9ubHkgI2NvbnRlbnQ6IEZyYW1lZENvbnRlbnQ7XG5cbiAgY29uc3RydWN0b3IoY29udGVudDogRnJhbWVkQ29udGVudCkge1xuICAgIHN1cGVyKHJlbmRlclBsYWluKGNvbnRlbnQpKTtcbiAgICB0aGlzLiNjb250ZW50ID0gY29udGVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBgY29uc29sZS5sb2coZXJyKWAgYW5kIG1vc3QgTm9kZSBpbnRlcm5hbHMgcm91dGUgdGhyb3VnaCBgdXRpbC5pbnNwZWN0YCxcbiAgICogd2hpY2ggcmVzcGVjdHMgdGhpcyBzeW1ib2wuIFJldHVybmluZyBhIGN1c3RvbSBzdHJpbmcgaGVyZSBtZWFucyB0aGVcbiAgICogdGhyb3duIGVycm9yIHByaW50cyBhcyBhIHByZXR0eSBmcmFtZSBpbiB0aGUgdGVybWluYWwgd2hpbGUgYC5tZXNzYWdlYFxuICAgKiBhbmQgYC5zdGFja2Agc3RheSBwbGFpbi5cbiAgICovXG4gIFtJTlNQRUNUX0NVU1RPTV0oKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcmV0dHkgPSByZW5kZXJQcmV0dHkodGhpcy4jY29udGVudCk7XG4gICAgLy8gYHN0YWNrYCBzdGFydHMgd2l0aCBgJHtuYW1lfTogJHttZXNzYWdlfVxcbiAgICBhdCAuLi5gLiBPdXIgbWVzc2FnZSBpc1xuICAgIC8vIG11bHRpLWxpbmUgKGB0aXRsZVxcbuKVsOKWtiBkb2NzOiDigKZgKSwgc28gc2xpY2luZyBvbmx5IHRoZSBmaXJzdCBsaW5lIGdsdWVzXG4gICAgLy8gdGhlIGZyYW1lZC1kZXRhaWwgdGFpbCBvZiB0aGUgbWVzc2FnZSBvbnRvIHRoZSBwcmVwZW5kZWQgcHJldHR5IGZvcm1cbiAgICAvLyBhbmQgcmVuZGVycyBldmVyeSBkZXRhaWwgbGluZSB0d2ljZS4gU2xpY2UgcGFzdCAqYWxsKiBtZXNzYWdlIGxpbmVzLlxuICAgIGNvbnN0IG1lc3NhZ2VMaW5lQ291bnQgPSB0aGlzLm1lc3NhZ2Uuc3BsaXQoJ1xcbicpLmxlbmd0aDtcbiAgICBjb25zdCB0YWlsID0gKHRoaXMuc3RhY2sgPz8gJycpXG4gICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAuc2xpY2UobWVzc2FnZUxpbmVDb3VudClcbiAgICAgIC5qb2luKCdcXG4nKTtcbiAgICByZXR1cm4gdGFpbFxuICAgICAgPyBgJHt0aGlzLm5hbWV9OiAke3ByZXR0eX1cXG4ke3RhaWx9YFxuICAgICAgOiBgJHt0aGlzLm5hbWV9OiAke3ByZXR0eX1gO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5uYW1lfTogJHtyZW5kZXJQcmV0dHkodGhpcy4jY29udGVudCl9YDtcbiAgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIGFuIEFQSSB0aGF0IG11c3QgcnVuIGluc2lkZSBhIHdvcmtmbG93IGZ1bmN0aW9uIGlzIGNhbGxlZFxuICogZnJvbSBvdXRzaWRlIGEgd29ya2Zsb3cgY29udGV4dCAoZS5nLiBmcm9tIGEgc3RlcCBmdW5jdGlvbiBvciBmcm9tXG4gKiByZWd1bGFyIGFwcGxpY2F0aW9uIGNvZGUpLlxuICovXG5leHBvcnQgY2xhc3MgTm90SW5Xb3JrZmxvd0NvbnRleHRFcnJvciBleHRlbmRzIENvbnRleHRWaW9sYXRpb25FcnJvciB7XG4gIG5hbWUgPSAnTm90SW5Xb3JrZmxvd0NvbnRleHRFcnJvcic7XG5cbiAgY29uc3RydWN0b3IoZnVuY3Rpb25OYW1lOiBzdHJpbmcsIGRvY3NVcmw6IERvY3NVcmwpIHtcbiAgICBzdXBlcih7XG4gICAgICB0aXRsZTogW1xuICAgICAgICB7IGNvZGU6IGZ1bmN0aW9uTmFtZSB9LFxuICAgICAgICB7IHRleHQ6ICcgY2FuIG9ubHkgYmUgY2FsbGVkIGluc2lkZSBhIHdvcmtmbG93IGZ1bmN0aW9uJyB9LFxuICAgICAgXSxcbiAgICAgIGRldGFpbHM6IFt7IHR5cGU6ICdkb2NzJywgdXJsOiBkb2NzVXJsIH1dLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gYW4gQVBJIHRoYXQgbXVzdCBydW4gaW5zaWRlIGEgc3RlcCBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbVxuICogb3V0c2lkZSBhIHN0ZXAgY29udGV4dC5cbiAqL1xuZXhwb3J0IGNsYXNzIE5vdEluU3RlcENvbnRleHRFcnJvciBleHRlbmRzIENvbnRleHRWaW9sYXRpb25FcnJvciB7XG4gIG5hbWUgPSAnTm90SW5TdGVwQ29udGV4dEVycm9yJztcblxuICBjb25zdHJ1Y3RvcihmdW5jdGlvbk5hbWU6IHN0cmluZywgZG9jc1VybDogRG9jc1VybCkge1xuICAgIHN1cGVyKHtcbiAgICAgIHRpdGxlOiBbXG4gICAgICAgIHsgY29kZTogZnVuY3Rpb25OYW1lIH0sXG4gICAgICAgIHsgdGV4dDogJyBjYW4gb25seSBiZSBjYWxsZWQgaW5zaWRlIGEgc3RlcCBmdW5jdGlvbicgfSxcbiAgICAgIF0sXG4gICAgICBkZXRhaWxzOiBbeyB0eXBlOiAnZG9jcycsIHVybDogZG9jc1VybCB9XSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIGFuIEFQSSB0aGF0IG11c3QgcnVuIGluc2lkZSBlaXRoZXIgYSB3b3JrZmxvdyBvciBzdGVwIGZ1bmN0aW9uXG4gKiBpcyBjYWxsZWQgZnJvbSByZWd1bGFyIGFwcGxpY2F0aW9uIGNvZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBOb3RJbldvcmtmbG93T3JTdGVwQ29udGV4dEVycm9yIGV4dGVuZHMgQ29udGV4dFZpb2xhdGlvbkVycm9yIHtcbiAgbmFtZSA9ICdOb3RJbldvcmtmbG93T3JTdGVwQ29udGV4dEVycm9yJztcblxuICBjb25zdHJ1Y3RvcihmdW5jdGlvbk5hbWU6IHN0cmluZywgZG9jc1VybDogRG9jc1VybCkge1xuICAgIHN1cGVyKHtcbiAgICAgIHRpdGxlOiBbXG4gICAgICAgIHsgY29kZTogZnVuY3Rpb25OYW1lIH0sXG4gICAgICAgIHsgdGV4dDogJyBjYW4gb25seSBiZSBjYWxsZWQgaW5zaWRlIGEgd29ya2Zsb3cgb3Igc3RlcCBmdW5jdGlvbicgfSxcbiAgICAgIF0sXG4gICAgICBkZXRhaWxzOiBbeyB0eXBlOiAnZG9jcycsIHVybDogZG9jc1VybCB9XSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
package/dist/create-hook.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { StringValue } from 'ms';
|
|
2
|
+
import type { Run } from './runtime/run.js';
|
|
1
3
|
import type { Serializable } from './schemas.js';
|
|
2
4
|
/**
|
|
3
5
|
* An object that can be awaited to receive a value.
|
|
@@ -24,6 +26,30 @@ export interface Hook<T = any> extends AsyncIterable<T>, Thenable<T> {
|
|
|
24
26
|
* The token used to identify this hook.
|
|
25
27
|
*/
|
|
26
28
|
token: string;
|
|
29
|
+
/**
|
|
30
|
+
* Returns the {@link Run} already using this token, or `null` when this Hook
|
|
31
|
+
* registers successfully.
|
|
32
|
+
*
|
|
33
|
+
* Calling `createHook()` alone does not register the hook — registration
|
|
34
|
+
* only happens when the workflow suspends. Awaiting `getConflict()`
|
|
35
|
+
* suspends the workflow to commit the hook registration without waiting for
|
|
36
|
+
* payload data.
|
|
37
|
+
*
|
|
38
|
+
* If it returns a run, this Hook was not created. Awaiting the Hook instead
|
|
39
|
+
* rejects with `HookConflictError`.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* using hook = createHook({ token: `order:${orderId}` });
|
|
44
|
+
* const conflict = await hook.getConflict();
|
|
45
|
+
* if (conflict) {
|
|
46
|
+
* // another run already owns this token
|
|
47
|
+
* return { status: 'duplicate', runId: conflict.runId };
|
|
48
|
+
* }
|
|
49
|
+
* // this Hook registered without waiting for payload data
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
getConflict(): Promise<Run<unknown> | null>;
|
|
27
53
|
/**
|
|
28
54
|
* Disposes the hook, releasing its token for reuse by other workflows.
|
|
29
55
|
*
|
|
@@ -86,7 +112,9 @@ export interface HookOptions {
|
|
|
86
112
|
* tokens are always randomly generated to prevent unauthorized access
|
|
87
113
|
* to the public webhook endpoint.
|
|
88
114
|
*
|
|
89
|
-
* If
|
|
115
|
+
* If provided, the token must be a non-empty string; passing an empty
|
|
116
|
+
* string throws. If not provided (or `undefined`), a randomly generated
|
|
117
|
+
* token will be assigned.
|
|
90
118
|
*
|
|
91
119
|
* @example
|
|
92
120
|
*
|
|
@@ -98,6 +126,36 @@ export interface HookOptions {
|
|
|
98
126
|
* ```
|
|
99
127
|
*/
|
|
100
128
|
token?: string;
|
|
129
|
+
/**
|
|
130
|
+
* **Experimental.** Keeps this Hook's token unavailable for at least the
|
|
131
|
+
* configured time after `createHook()` runs.
|
|
132
|
+
*
|
|
133
|
+
* Accepts the same values as `sleep()`: a duration string, a number of
|
|
134
|
+
* milliseconds, or an absolute `Date`. Relative durations start when
|
|
135
|
+
* `createHook()` runs, not when the workflow ends.
|
|
136
|
+
*
|
|
137
|
+
* The Hook remains active until the workflow ends, even if the configured
|
|
138
|
+
* time passes first. Another Hook can use the token only after both the run
|
|
139
|
+
* has ended and the configured time has passed.
|
|
140
|
+
* After the run ends, the Hook can still be found with `getHookByToken()`
|
|
141
|
+
* until retention ends, but it cannot be resumed.
|
|
142
|
+
*
|
|
143
|
+
* Calling `dispose()` (including through `using`) releases the token
|
|
144
|
+
* immediately.
|
|
145
|
+
*
|
|
146
|
+
* `createHook()` throws if the configured World does not support this
|
|
147
|
+
* experimental option.
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
*
|
|
151
|
+
* ```ts
|
|
152
|
+
* const hook = createHook({
|
|
153
|
+
* token: `order:${orderId}`,
|
|
154
|
+
* experimental_minRetention: '30d',
|
|
155
|
+
* });
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
experimental_minRetention?: StringValue | Date | number;
|
|
101
159
|
/**
|
|
102
160
|
* Additional user-defined data to include with the hook payload.
|
|
103
161
|
*
|
|
@@ -117,8 +175,8 @@ export interface HookOptions {
|
|
|
117
175
|
* Whether this hook can be resumed via the public webhook endpoint.
|
|
118
176
|
*
|
|
119
177
|
* When `true`, the hook can be triggered by sending an HTTP request to the
|
|
120
|
-
* public
|
|
121
|
-
*
|
|
178
|
+
* public workflow webhook URL. This is automatically set when using
|
|
179
|
+
* `createWebhook()`.
|
|
122
180
|
*
|
|
123
181
|
* When `false` (the default), the hook can only be resumed server-side
|
|
124
182
|
* via `resumeHook()`.
|
|
@@ -127,7 +185,7 @@ export interface HookOptions {
|
|
|
127
185
|
*/
|
|
128
186
|
isWebhook?: boolean;
|
|
129
187
|
}
|
|
130
|
-
export interface WebhookOptions extends Omit<HookOptions, 'token' | 'isWebhook'> {
|
|
188
|
+
export interface WebhookOptions extends Omit<HookOptions, 'token' | 'isWebhook' | 'experimental_minRetention'> {
|
|
131
189
|
/**
|
|
132
190
|
* If set to a `Response` object, the webhook will automatically
|
|
133
191
|
* respond with the specified response.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-hook.d.ts","sourceRoot":"","sources":["../src/create-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD;;GAEG;AACH,UAAU,QAAQ,CAAC,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,OAAO;IAClD,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;;;;;;;;;;;OAYG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,IAAI,CAAC,CAAC,CAAC;IACzD;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B
|
|
1
|
+
{"version":3,"file":"create-hook.d.ts","sourceRoot":"","sources":["../src/create-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAEtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD;;GAEG;AACH,UAAU,QAAQ,CAAC,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,OAAO;IAClD,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAE5C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;;;;;;;;;;;OAYG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,IAAI,CAAC,CAAC,CAAC;IACzD;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,yBAAyB,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC;IAExD;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IAExB;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cACf,SAAQ,IAAI,CACV,WAAW,EACX,OAAO,GAAG,WAAW,GAAG,2BAA2B,CACpD;IACD;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,wBAAgB,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAMlE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,GAAG;IAAE,WAAW,EAAE,QAAQ,CAAA;CAAE,GAClD,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAChC,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC"}
|
package/dist/create-hook.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { throwNotInWorkflowContext } from './context-errors.js';
|
|
1
2
|
/**
|
|
2
3
|
* Creates a {@link Hook} that can be used to suspend and resume the workflow run with a payload.
|
|
3
4
|
*
|
|
@@ -22,11 +23,11 @@
|
|
|
22
23
|
*/
|
|
23
24
|
// @ts-expect-error `options` is here for types/docs
|
|
24
25
|
export function createHook(options) {
|
|
25
|
-
|
|
26
|
+
throwNotInWorkflowContext('createHook()', 'https://workflow-sdk.dev/docs/api-reference/workflow/create-hook', createHook);
|
|
26
27
|
}
|
|
27
28
|
export function createWebhook(
|
|
28
29
|
// @ts-expect-error `options` is here for types/docs
|
|
29
30
|
options) {
|
|
30
|
-
|
|
31
|
+
throwNotInWorkflowContext('createWebhook()', 'https://workflow-sdk.dev/docs/api-reference/workflow/create-webhook', createWebhook);
|
|
31
32
|
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY3JlYXRlLWhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkpBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxvREFBb0Q7QUFDcEQsTUFBTSxVQUFVLFVBQVUsQ0FBVSxPQUFxQjtJQUN2RCxNQUFNLElBQUksS0FBSyxDQUNiLDhEQUE4RCxDQUMvRCxDQUFDO0FBQ0osQ0FBQztBQWFELE1BQU0sVUFBVSxhQUFhO0FBQzNCLG9EQUFvRDtBQUNwRCxPQUF3QjtJQUV4QixNQUFNLElBQUksS0FBSyxDQUNiLGlFQUFpRSxDQUNsRSxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2VyaWFsaXphYmxlIH0gZnJvbSAnLi9zY2hlbWFzLmpzJztcblxuLyoqXG4gKiBBbiBvYmplY3QgdGhhdCBjYW4gYmUgYXdhaXRlZCB0byByZWNlaXZlIGEgdmFsdWUuXG4gKi9cbmludGVyZmFjZSBUaGVuYWJsZTxUPiB7XG4gIHRoZW46IFByb21pc2U8VD5bJ3RoZW4nXTtcbn1cblxuLyoqXG4gKiBBIGBSZXF1ZXN0YCB0aGF0IGNhbiBiZSByZXNwb25kZWQgdG8gd2l0aGluIGEgd29ya2Zsb3dcbiAqIHN0ZXAgZnVuY3Rpb24gYnkgY2FsbGluZyB0aGUgYHJlc3BvbmRXaXRoKClgIG1ldGhvZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0V2l0aFJlc3BvbnNlIGV4dGVuZHMgUmVxdWVzdCB7XG4gIHJlc3BvbmRXaXRoOiAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIEEgaG9vayB0aGF0IGNhbiBiZSBhd2FpdGVkIGFuZC9vciBpdGVyYXRlZCBvdmVyIHRvIHJlY2VpdmVcbiAqIGEgdmFsdWUgd2l0aGluIGEgd29ya2Zsb3cgZnJvbSBhbiBleHRlcm5hbCBzeXN0ZW0uXG4gKlxuICogSG9va3MgaW1wbGVtZW50IHRoZSBUQzM5IEV4cGxpY2l0IFJlc291cmNlIE1hbmFnZW1lbnQgcHJvcG9zYWwsXG4gKiBhbGxvd2luZyB0aGVtIHRvIGJlIHVzZWQgd2l0aCB0aGUgYHVzaW5nYCBrZXl3b3JkIGZvciBhdXRvbWF0aWMgZGlzcG9zYWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSG9vazxUID0gYW55PiBleHRlbmRzIEFzeW5jSXRlcmFibGU8VD4sIFRoZW5hYmxlPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSB0b2tlbiB1c2VkIHRvIGlkZW50aWZ5IHRoaXMgaG9vay5cbiAgICovXG4gIHRva2VuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERpc3Bvc2VzIHRoZSBob29rLCByZWxlYXNpbmcgaXRzIHRva2VuIGZvciByZXVzZSBieSBvdGhlciB3b3JrZmxvd3MuXG4gICAqXG4gICAqIEFmdGVyIGNhbGxpbmcgYGRpc3Bvc2UoKWAsIHRoZSBob29rIHdpbGwgbm8gbG9uZ2VyIHJlY2VpdmUgYW55IGV2ZW50cy5cbiAgICogVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBleHBsaWNpdGx5IHJlbGVhc2UgYSBob29rIHRva2VuIGJlZm9yZVxuICAgKiB0aGUgd29ya2Zsb3cgY29tcGxldGVzLCBhbGxvd2luZyBhbm90aGVyIHdvcmtmbG93IHRvIHJlZ2lzdGVyIGEgaG9va1xuICAgKiB3aXRoIHRoZSBzYW1lIHRva2VuLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBjb25zdCBob29rID0gY3JlYXRlSG9vazx7IG1lc3NhZ2U6IHN0cmluZyB9Pih7IHRva2VuOiAnbXktdG9rZW4nIH0pO1xuICAgKlxuICAgKiBmb3IgYXdhaXQgKGNvbnN0IHBheWxvYWQgb2YgaG9vaykge1xuICAgKiAgIGlmIChwYXlsb2FkLm1lc3NhZ2UgPT09ICdkb25lJykge1xuICAgKiAgICAgaG9vay5kaXNwb3NlKCk7IC8vIFJlbGVhc2UgdGhlIHRva2VuIGVhcmx5XG4gICAqICAgICBicmVhaztcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBkaXNwb3NlKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudHMgdGhlIFRDMzkgRXhwbGljaXQgUmVzb3VyY2UgTWFuYWdlbWVudCBwcm9wb3NhbC5cbiAgICogQ2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB1c2luZyB0aGUgYHVzaW5nYCBrZXl3b3JkLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB7XG4gICAqICAgdXNpbmcgaG9vayA9IGNyZWF0ZUhvb2s8eyBtZXNzYWdlOiBzdHJpbmcgfT4oeyB0b2tlbjogJ215LXRva2VuJyB9KTtcbiAgICogICBjb25zdCBwYXlsb2FkID0gYXdhaXQgaG9vaztcbiAgICogICAvLyBob29rIGlzIGF1dG9tYXRpY2FsbHkgZGlzcG9zZWQgd2hlbiB0aGUgYmxvY2sgZXhpdHNcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIFtTeW1ib2wuZGlzcG9zZV0oKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIHdlYmhvb2sgdGhhdCBjYW4gYmUgdXNlZCB0byBzdXNwZW5kIGFuZCByZXN1bWUgdGhlIHdvcmtmbG93IHJ1blxuICogdXBvbiByZWNlaXZpbmcgYW4gSFRUUCByZXF1ZXN0IHRvIHRoZSBzcGVjaWZpZWQgVVJMLlxuICpcbiAqIEBzZWUge0BsaW5rIGNyZWF0ZVdlYmhvb2t9XG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9SZXF1ZXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2ViaG9vazxUIGV4dGVuZHMgUmVxdWVzdD4gZXh0ZW5kcyBIb29rPFQ+IHtcbiAgLyoqXG4gICAqIFRoZSBVUkwgdGhhdCBleHRlcm5hbCBzeXN0ZW1zIGNhbiBjYWxsIHRvIHNlbmQgZGF0YSB0byB0aGUgd29ya2Zsb3cuXG4gICAqL1xuICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIb29rT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBVbmlxdWUgdG9rZW4gdGhhdCBpcyB1c2VkIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBob29rLlxuICAgKlxuICAgKiBXaGVuIHNwZWNpZnlpbmcgYW4gZXhwbGljaXQgdG9rZW4sIHRoZSB0b2tlbiBzaG91bGQgYmUgY29uc3RydWN0ZWRcbiAgICogd2l0aCBpbmZvcm1hdGlvbiB0aGF0IHRoZSBkaXNwYXRjaGluZyBzaWRlIGNhbiByZWxpYWJseSByZWNvbnN0cnVjdFxuICAgKiB0aGUgdG9rZW4gd2l0aCB0aGUgaW5mb3JtYXRpb24gaXQgaGFzIGF2YWlsYWJsZS5cbiAgICpcbiAgICogRGV0ZXJtaW5pc3RpYyB0b2tlbnMgYXJlIGludGVuZGVkIGZvciB1c2Ugd2l0aCBgY3JlYXRlSG9vaygpYCBhbmRcbiAgICogc2VydmVyLXNpZGUgYHJlc3VtZUhvb2soKWAgb25seS4gRm9yIHdlYmhvb2tzIChgY3JlYXRlV2ViaG9vaygpYCksXG4gICAqIHRva2VucyBhcmUgYWx3YXlzIHJhbmRvbWx5IGdlbmVyYXRlZCB0byBwcmV2ZW50IHVuYXV0aG9yaXplZCBhY2Nlc3NcbiAgICogdG8gdGhlIHB1YmxpYyB3ZWJob29rIGVuZHBvaW50LlxuICAgKlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIGEgcmFuZG9tbHkgZ2VuZXJhdGVkIHRva2VuIHdpbGwgYmUgYXNzaWduZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIC8vIEV4cGxpY2l0IHRva2VuIGZvciBhIFNsYWNrIGJvdCAob25lIHdvcmtmbG93IHJ1biBwZXIgY2hhbm5lbClcbiAgICogY29uc3QgaG9vayA9IGNyZWF0ZUhvb2s8U2xhY2tNZXNzYWdlPih7XG4gICAqICAgdG9rZW46IGBzbGFja193ZWJob29rOiR7Y2hhbm5lbElkfWAsXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIHRva2VuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHVzZXItZGVmaW5lZCBkYXRhIHRvIGluY2x1ZGUgd2l0aCB0aGUgaG9vayBwYXlsb2FkLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBjb25zdCBob29rID0gY3JlYXRlSG9vazx7IG5hbWU6IHN0cmluZyB9Pih7XG4gICAqICAgbWV0YWRhdGE6IHtcbiAgICogICAgIHR5cGU6IFwiY2F0XCIsXG4gICAqICAgICBjb2xvcjogXCJvcmFuZ2VcIixcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBtZXRhZGF0YT86IFNlcmlhbGl6YWJsZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGhvb2sgY2FuIGJlIHJlc3VtZWQgdmlhIHRoZSBwdWJsaWMgd2ViaG9vayBlbmRwb2ludC5cbiAgICpcbiAgICogV2hlbiBgdHJ1ZWAsIHRoZSBob29rIGNhbiBiZSB0cmlnZ2VyZWQgYnkgc2VuZGluZyBhbiBIVFRQIHJlcXVlc3QgdG8gdGhlXG4gICAqIHB1YmxpYyBgLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL3dlYmhvb2sve3Rva2VufWAgVVJMLiBUaGlzIGlzIGF1dG9tYXRpY2FsbHlcbiAgICogc2V0IHdoZW4gdXNpbmcgYGNyZWF0ZVdlYmhvb2soKWAuXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCAodGhlIGRlZmF1bHQpLCB0aGUgaG9vayBjYW4gb25seSBiZSByZXN1bWVkIHNlcnZlci1zaWRlXG4gICAqIHZpYSBgcmVzdW1lSG9vaygpYC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGlzV2ViaG9vaz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2ViaG9va09wdGlvbnNcbiAgZXh0ZW5kcyBPbWl0PEhvb2tPcHRpb25zLCAndG9rZW4nIHwgJ2lzV2ViaG9vayc+IHtcbiAgLyoqXG4gICAqIElmIHNldCB0byBhIGBSZXNwb25zZWAgb2JqZWN0LCB0aGUgd2ViaG9vayB3aWxsIGF1dG9tYXRpY2FsbHlcbiAgICogcmVzcG9uZCB3aXRoIHRoZSBzcGVjaWZpZWQgcmVzcG9uc2UuXG4gICAqXG4gICAqIElmIHNldCB0byBgXCJtYW51YWxcImAsIGVhY2ggaW5kaXZpZHVhbCByZXF1ZXN0IHdpbGwgbmVlZCB0b1xuICAgKiBiZSByZXNwb25kZWQgdG8gbWFudWFsbHkgZnJvbSB3aXRoaW4gdGhlIHdvcmtmbG93IGJ5IGNhbGxpbmcgdGhlXG4gICAqIGByZXNwb25kV2l0aCgpYCBtZXRob2QuXG4gICAqXG4gICAqIElmIG5vdCBzZXQgdGhlbiB0aGUgd2ViaG9vayB3aWxsIGF1dG9tYXRpY2FsbHkgcmVzcG9uZCB3aXRoXG4gICAqIGEgYDIwMiBBY2NlcHRlZGAgcmVzcG9uc2UuXG4gICAqL1xuICByZXNwb25kV2l0aD86IFJlc3BvbnNlIHwgJ21hbnVhbCc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHtAbGluayBIb29rfSB0aGF0IGNhbiBiZSB1c2VkIHRvIHN1c3BlbmQgYW5kIHJlc3VtZSB0aGUgd29ya2Zsb3cgcnVuIHdpdGggYSBwYXlsb2FkLlxuICpcbiAqIEhvb2tzIGFsbG93IGV4dGVybmFsIHN5c3RlbXMgdG8gc2VuZCBhcmJpdHJhcnkgc2VyaWFsaXphYmxlIGRhdGEgaW50byBhIHdvcmtmbG93LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgaG9vay5cbiAqIEByZXR1cm5zIEEgYEhvb2tgIHRoYXQgY2FuIGJlIGF3YWl0ZWQgdG8gcmVjZWl2ZSBvbmUgb3IgbW9yZSBwYXlsb2Fkcy5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYHRzXG4gKiBleHBvcnQgYXN5bmMgZnVuY3Rpb24gd29ya2Zsb3dXaXRoSG9vaygpIHtcbiAqICAgXCJ1c2Ugd29ya2Zsb3dcIjtcbiAqXG4gKiAgIGNvbnN0IGhvb2sgPSBjcmVhdGVIb29rPHsgbWVzc2FnZTogc3RyaW5nIH0+KCk7XG4gKiAgIGNvbnNvbGUubG9nKCdIb29rIHRva2VuOicsIGhvb2sudG9rZW4pO1xuICpcbiAqICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGhvb2s7XG4gKiAgIGNvbnNvbGUubG9nKCdSZWNlaXZlZDonLCBwYXlsb2FkLm1lc3NhZ2UpO1xuICogfVxuICogYGBgXG4gKi9cbi8vIEB0cy1leHBlY3QtZXJyb3IgYG9wdGlvbnNgIGlzIGhlcmUgZm9yIHR5cGVzL2RvY3NcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVIb29rPFQgPSBhbnk+KG9wdGlvbnM/OiBIb29rT3B0aW9ucyk6IEhvb2s8VD4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ2BjcmVhdGVIb29rKClgIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgYSB3b3JrZmxvdyBmdW5jdGlvbidcbiAgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEge0BsaW5rIFdlYmhvb2t9IHRoYXQgY2FuIGJlIHVzZWQgdG8gc3VzcGVuZCBhbmQgcmVzdW1lIHRoZSB3b3JrZmxvd1xuICogcnVuIHVwb24gcmVjZWl2aW5nIGFuIEhUVFAgcmVxdWVzdCB0byB0aGUgc3BlY2lmaWVkIFVSTC5cbiAqXG4gKiBXZWJob29rcyB3aWxsIHJlc3VsdCBpbiBhIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUmVxdWVzdCB8IFJlcXVlc3R9IG9iamVjdFxuICogdGhhdCBjYW4gYmUgaW50ZXJhY3RlZCB3aXRoIGluIHdvcmtmbG93IGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdlYmhvb2soXG4gIG9wdGlvbnM6IFdlYmhvb2tPcHRpb25zICYgeyByZXNwb25kV2l0aDogJ21hbnVhbCcgfVxuKTogV2ViaG9vazxSZXF1ZXN0V2l0aFJlc3BvbnNlPjtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXZWJob29rKG9wdGlvbnM/OiBXZWJob29rT3B0aW9ucyk6IFdlYmhvb2s8UmVxdWVzdD47XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV2ViaG9vayhcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBgb3B0aW9uc2AgaXMgaGVyZSBmb3IgdHlwZXMvZG9jc1xuICBvcHRpb25zPzogV2ViaG9va09wdGlvbnNcbik6IFdlYmhvb2s8UmVxdWVzdD4gfCBXZWJob29rPFJlcXVlc3RXaXRoUmVzcG9uc2U+IHtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgICdgY3JlYXRlV2ViaG9vaygpYCBjYW4gb25seSBiZSBjYWxsZWQgaW5zaWRlIGEgd29ya2Zsb3cgZnVuY3Rpb24nXG4gICk7XG59XG4iXX0=
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWhvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY3JlYXRlLWhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUEwTmhFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxvREFBb0Q7QUFDcEQsTUFBTSxVQUFVLFVBQVUsQ0FBVSxPQUFxQjtJQUN2RCx5QkFBeUIsQ0FDdkIsY0FBYyxFQUNkLGtFQUFrRSxFQUNsRSxVQUFVLENBQ1gsQ0FBQztBQUNKLENBQUM7QUFhRCxNQUFNLFVBQVUsYUFBYTtBQUMzQixvREFBb0Q7QUFDcEQsT0FBd0I7SUFFeEIseUJBQXlCLENBQ3ZCLGlCQUFpQixFQUNqQixxRUFBcUUsRUFDckUsYUFBYSxDQUNkLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdHJpbmdWYWx1ZSB9IGZyb20gJ21zJztcbmltcG9ydCB7IHRocm93Tm90SW5Xb3JrZmxvd0NvbnRleHQgfSBmcm9tICcuL2NvbnRleHQtZXJyb3JzLmpzJztcbmltcG9ydCB0eXBlIHsgUnVuIH0gZnJvbSAnLi9ydW50aW1lL3J1bi5qcyc7XG5pbXBvcnQgdHlwZSB7IFNlcmlhbGl6YWJsZSB9IGZyb20gJy4vc2NoZW1hcy5qcyc7XG5cbi8qKlxuICogQW4gb2JqZWN0IHRoYXQgY2FuIGJlIGF3YWl0ZWQgdG8gcmVjZWl2ZSBhIHZhbHVlLlxuICovXG5pbnRlcmZhY2UgVGhlbmFibGU8VD4ge1xuICB0aGVuOiBQcm9taXNlPFQ+Wyd0aGVuJ107XG59XG5cbi8qKlxuICogQSBgUmVxdWVzdGAgdGhhdCBjYW4gYmUgcmVzcG9uZGVkIHRvIHdpdGhpbiBhIHdvcmtmbG93XG4gKiBzdGVwIGZ1bmN0aW9uIGJ5IGNhbGxpbmcgdGhlIGByZXNwb25kV2l0aCgpYCBtZXRob2QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdFdpdGhSZXNwb25zZSBleHRlbmRzIFJlcXVlc3Qge1xuICByZXNwb25kV2l0aDogKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBBIGhvb2sgdGhhdCBjYW4gYmUgYXdhaXRlZCBhbmQvb3IgaXRlcmF0ZWQgb3ZlciB0byByZWNlaXZlXG4gKiBhIHZhbHVlIHdpdGhpbiBhIHdvcmtmbG93IGZyb20gYW4gZXh0ZXJuYWwgc3lzdGVtLlxuICpcbiAqIEhvb2tzIGltcGxlbWVudCB0aGUgVEMzOSBFeHBsaWNpdCBSZXNvdXJjZSBNYW5hZ2VtZW50IHByb3Bvc2FsLFxuICogYWxsb3dpbmcgdGhlbSB0byBiZSB1c2VkIHdpdGggdGhlIGB1c2luZ2Aga2V5d29yZCBmb3IgYXV0b21hdGljIGRpc3Bvc2FsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvb2s8VCA9IGFueT4gZXh0ZW5kcyBBc3luY0l0ZXJhYmxlPFQ+LCBUaGVuYWJsZTxUPiB7XG4gIC8qKlxuICAgKiBUaGUgdG9rZW4gdXNlZCB0byBpZGVudGlmeSB0aGlzIGhvb2suXG4gICAqL1xuICB0b2tlbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB7QGxpbmsgUnVufSBhbHJlYWR5IHVzaW5nIHRoaXMgdG9rZW4sIG9yIGBudWxsYCB3aGVuIHRoaXMgSG9va1xuICAgKiByZWdpc3RlcnMgc3VjY2Vzc2Z1bGx5LlxuICAgKlxuICAgKiBDYWxsaW5nIGBjcmVhdGVIb29rKClgIGFsb25lIGRvZXMgbm90IHJlZ2lzdGVyIHRoZSBob29rIOKAlCByZWdpc3RyYXRpb25cbiAgICogb25seSBoYXBwZW5zIHdoZW4gdGhlIHdvcmtmbG93IHN1c3BlbmRzLiBBd2FpdGluZyBgZ2V0Q29uZmxpY3QoKWBcbiAgICogc3VzcGVuZHMgdGhlIHdvcmtmbG93IHRvIGNvbW1pdCB0aGUgaG9vayByZWdpc3RyYXRpb24gd2l0aG91dCB3YWl0aW5nIGZvclxuICAgKiBwYXlsb2FkIGRhdGEuXG4gICAqXG4gICAqIElmIGl0IHJldHVybnMgYSBydW4sIHRoaXMgSG9vayB3YXMgbm90IGNyZWF0ZWQuIEF3YWl0aW5nIHRoZSBIb29rIGluc3RlYWRcbiAgICogcmVqZWN0cyB3aXRoIGBIb29rQ29uZmxpY3RFcnJvcmAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHVzaW5nIGhvb2sgPSBjcmVhdGVIb29rKHsgdG9rZW46IGBvcmRlcjoke29yZGVySWR9YCB9KTtcbiAgICogY29uc3QgY29uZmxpY3QgPSBhd2FpdCBob29rLmdldENvbmZsaWN0KCk7XG4gICAqIGlmIChjb25mbGljdCkge1xuICAgKiAgIC8vIGFub3RoZXIgcnVuIGFscmVhZHkgb3ducyB0aGlzIHRva2VuXG4gICAqICAgcmV0dXJuIHsgc3RhdHVzOiAnZHVwbGljYXRlJywgcnVuSWQ6IGNvbmZsaWN0LnJ1bklkIH07XG4gICAqIH1cbiAgICogLy8gdGhpcyBIb29rIHJlZ2lzdGVyZWQgd2l0aG91dCB3YWl0aW5nIGZvciBwYXlsb2FkIGRhdGFcbiAgICogYGBgXG4gICAqL1xuICBnZXRDb25mbGljdCgpOiBQcm9taXNlPFJ1bjx1bmtub3duPiB8IG51bGw+O1xuXG4gIC8qKlxuICAgKiBEaXNwb3NlcyB0aGUgaG9vaywgcmVsZWFzaW5nIGl0cyB0b2tlbiBmb3IgcmV1c2UgYnkgb3RoZXIgd29ya2Zsb3dzLlxuICAgKlxuICAgKiBBZnRlciBjYWxsaW5nIGBkaXNwb3NlKClgLCB0aGUgaG9vayB3aWxsIG5vIGxvbmdlciByZWNlaXZlIGFueSBldmVudHMuXG4gICAqIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IHdhbnQgdG8gZXhwbGljaXRseSByZWxlYXNlIGEgaG9vayB0b2tlbiBiZWZvcmVcbiAgICogdGhlIHdvcmtmbG93IGNvbXBsZXRlcywgYWxsb3dpbmcgYW5vdGhlciB3b3JrZmxvdyB0byByZWdpc3RlciBhIGhvb2tcbiAgICogd2l0aCB0aGUgc2FtZSB0b2tlbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogY29uc3QgaG9vayA9IGNyZWF0ZUhvb2s8eyBtZXNzYWdlOiBzdHJpbmcgfT4oeyB0b2tlbjogJ215LXRva2VuJyB9KTtcbiAgICpcbiAgICogZm9yIGF3YWl0IChjb25zdCBwYXlsb2FkIG9mIGhvb2spIHtcbiAgICogICBpZiAocGF5bG9hZC5tZXNzYWdlID09PSAnZG9uZScpIHtcbiAgICogICAgIGhvb2suZGlzcG9zZSgpOyAvLyBSZWxlYXNlIHRoZSB0b2tlbiBlYXJseVxuICAgKiAgICAgYnJlYWs7XG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZGlzcG9zZSgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIHRoZSBUQzM5IEV4cGxpY2l0IFJlc291cmNlIE1hbmFnZW1lbnQgcHJvcG9zYWwuXG4gICAqIENhbGxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdXNpbmcgdGhlIGB1c2luZ2Aga2V5d29yZC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICoge1xuICAgKiAgIHVzaW5nIGhvb2sgPSBjcmVhdGVIb29rPHsgbWVzc2FnZTogc3RyaW5nIH0+KHsgdG9rZW46ICdteS10b2tlbicgfSk7XG4gICAqICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGhvb2s7XG4gICAqICAgLy8gaG9vayBpcyBhdXRvbWF0aWNhbGx5IGRpc3Bvc2VkIHdoZW4gdGhlIGJsb2NrIGV4aXRzXG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBbU3ltYm9sLmRpc3Bvc2VdKCk6IHZvaWQ7XG59XG5cbi8qKlxuICogQSB3ZWJob29rIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3VzcGVuZCBhbmQgcmVzdW1lIHRoZSB3b3JrZmxvdyBydW5cbiAqIHVwb24gcmVjZWl2aW5nIGFuIEhUVFAgcmVxdWVzdCB0byB0aGUgc3BlY2lmaWVkIFVSTC5cbiAqXG4gKiBAc2VlIHtAbGluayBjcmVhdGVXZWJob29rfVxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUmVxdWVzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdlYmhvb2s8VCBleHRlbmRzIFJlcXVlc3Q+IGV4dGVuZHMgSG9vazxUPiB7XG4gIC8qKlxuICAgKiBUaGUgVVJMIHRoYXQgZXh0ZXJuYWwgc3lzdGVtcyBjYW4gY2FsbCB0byBzZW5kIGRhdGEgdG8gdGhlIHdvcmtmbG93LlxuICAgKi9cbiAgdXJsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG9va09wdGlvbnMge1xuICAvKipcbiAgICogVW5pcXVlIHRva2VuIHRoYXQgaXMgdXNlZCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgaG9vay5cbiAgICpcbiAgICogV2hlbiBzcGVjaWZ5aW5nIGFuIGV4cGxpY2l0IHRva2VuLCB0aGUgdG9rZW4gc2hvdWxkIGJlIGNvbnN0cnVjdGVkXG4gICAqIHdpdGggaW5mb3JtYXRpb24gdGhhdCB0aGUgZGlzcGF0Y2hpbmcgc2lkZSBjYW4gcmVsaWFibHkgcmVjb25zdHJ1Y3RcbiAgICogdGhlIHRva2VuIHdpdGggdGhlIGluZm9ybWF0aW9uIGl0IGhhcyBhdmFpbGFibGUuXG4gICAqXG4gICAqIERldGVybWluaXN0aWMgdG9rZW5zIGFyZSBpbnRlbmRlZCBmb3IgdXNlIHdpdGggYGNyZWF0ZUhvb2soKWAgYW5kXG4gICAqIHNlcnZlci1zaWRlIGByZXN1bWVIb29rKClgIG9ubHkuIEZvciB3ZWJob29rcyAoYGNyZWF0ZVdlYmhvb2soKWApLFxuICAgKiB0b2tlbnMgYXJlIGFsd2F5cyByYW5kb21seSBnZW5lcmF0ZWQgdG8gcHJldmVudCB1bmF1dGhvcml6ZWQgYWNjZXNzXG4gICAqIHRvIHRoZSBwdWJsaWMgd2ViaG9vayBlbmRwb2ludC5cbiAgICpcbiAgICogSWYgcHJvdmlkZWQsIHRoZSB0b2tlbiBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZzsgcGFzc2luZyBhbiBlbXB0eVxuICAgKiBzdHJpbmcgdGhyb3dzLiBJZiBub3QgcHJvdmlkZWQgKG9yIGB1bmRlZmluZWRgKSwgYSByYW5kb21seSBnZW5lcmF0ZWRcbiAgICogdG9rZW4gd2lsbCBiZSBhc3NpZ25lZC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogYGBgdHNcbiAgICogLy8gRXhwbGljaXQgdG9rZW4gZm9yIGEgU2xhY2sgYm90IChvbmUgd29ya2Zsb3cgcnVuIHBlciBjaGFubmVsKVxuICAgKiBjb25zdCBob29rID0gY3JlYXRlSG9vazxTbGFja01lc3NhZ2U+KHtcbiAgICogICB0b2tlbjogYHNsYWNrX3dlYmhvb2s6JHtjaGFubmVsSWR9YCxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqICoqRXhwZXJpbWVudGFsLioqIEtlZXBzIHRoaXMgSG9vaydzIHRva2VuIHVuYXZhaWxhYmxlIGZvciBhdCBsZWFzdCB0aGVcbiAgICogY29uZmlndXJlZCB0aW1lIGFmdGVyIGBjcmVhdGVIb29rKClgIHJ1bnMuXG4gICAqXG4gICAqIEFjY2VwdHMgdGhlIHNhbWUgdmFsdWVzIGFzIGBzbGVlcCgpYDogYSBkdXJhdGlvbiBzdHJpbmcsIGEgbnVtYmVyIG9mXG4gICAqIG1pbGxpc2Vjb25kcywgb3IgYW4gYWJzb2x1dGUgYERhdGVgLiBSZWxhdGl2ZSBkdXJhdGlvbnMgc3RhcnQgd2hlblxuICAgKiBgY3JlYXRlSG9vaygpYCBydW5zLCBub3Qgd2hlbiB0aGUgd29ya2Zsb3cgZW5kcy5cbiAgICpcbiAgICogVGhlIEhvb2sgcmVtYWlucyBhY3RpdmUgdW50aWwgdGhlIHdvcmtmbG93IGVuZHMsIGV2ZW4gaWYgdGhlIGNvbmZpZ3VyZWRcbiAgICogdGltZSBwYXNzZXMgZmlyc3QuIEFub3RoZXIgSG9vayBjYW4gdXNlIHRoZSB0b2tlbiBvbmx5IGFmdGVyIGJvdGggdGhlIHJ1blxuICAgKiBoYXMgZW5kZWQgYW5kIHRoZSBjb25maWd1cmVkIHRpbWUgaGFzIHBhc3NlZC5cbiAgICogQWZ0ZXIgdGhlIHJ1biBlbmRzLCB0aGUgSG9vayBjYW4gc3RpbGwgYmUgZm91bmQgd2l0aCBgZ2V0SG9va0J5VG9rZW4oKWBcbiAgICogdW50aWwgcmV0ZW50aW9uIGVuZHMsIGJ1dCBpdCBjYW5ub3QgYmUgcmVzdW1lZC5cbiAgICpcbiAgICogQ2FsbGluZyBgZGlzcG9zZSgpYCAoaW5jbHVkaW5nIHRocm91Z2ggYHVzaW5nYCkgcmVsZWFzZXMgdGhlIHRva2VuXG4gICAqIGltbWVkaWF0ZWx5LlxuICAgKlxuICAgKiBgY3JlYXRlSG9vaygpYCB0aHJvd3MgaWYgdGhlIGNvbmZpZ3VyZWQgV29ybGQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzXG4gICAqIGV4cGVyaW1lbnRhbCBvcHRpb24uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGNvbnN0IGhvb2sgPSBjcmVhdGVIb29rKHtcbiAgICogICB0b2tlbjogYG9yZGVyOiR7b3JkZXJJZH1gLFxuICAgKiAgIGV4cGVyaW1lbnRhbF9taW5SZXRlbnRpb246ICczMGQnLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBleHBlcmltZW50YWxfbWluUmV0ZW50aW9uPzogU3RyaW5nVmFsdWUgfCBEYXRlIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHVzZXItZGVmaW5lZCBkYXRhIHRvIGluY2x1ZGUgd2l0aCB0aGUgaG9vayBwYXlsb2FkLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBjb25zdCBob29rID0gY3JlYXRlSG9vazx7IG5hbWU6IHN0cmluZyB9Pih7XG4gICAqICAgbWV0YWRhdGE6IHtcbiAgICogICAgIHR5cGU6IFwiY2F0XCIsXG4gICAqICAgICBjb2xvcjogXCJvcmFuZ2VcIixcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBtZXRhZGF0YT86IFNlcmlhbGl6YWJsZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGhvb2sgY2FuIGJlIHJlc3VtZWQgdmlhIHRoZSBwdWJsaWMgd2ViaG9vayBlbmRwb2ludC5cbiAgICpcbiAgICogV2hlbiBgdHJ1ZWAsIHRoZSBob29rIGNhbiBiZSB0cmlnZ2VyZWQgYnkgc2VuZGluZyBhbiBIVFRQIHJlcXVlc3QgdG8gdGhlXG4gICAqIHB1YmxpYyB3b3JrZmxvdyB3ZWJob29rIFVSTC4gVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHNldCB3aGVuIHVzaW5nXG4gICAqIGBjcmVhdGVXZWJob29rKClgLlxuICAgKlxuICAgKiBXaGVuIGBmYWxzZWAgKHRoZSBkZWZhdWx0KSwgdGhlIGhvb2sgY2FuIG9ubHkgYmUgcmVzdW1lZCBzZXJ2ZXItc2lkZVxuICAgKiB2aWEgYHJlc3VtZUhvb2soKWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpc1dlYmhvb2s/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdlYmhvb2tPcHRpb25zXG4gIGV4dGVuZHMgT21pdDxcbiAgICBIb29rT3B0aW9ucyxcbiAgICAndG9rZW4nIHwgJ2lzV2ViaG9vaycgfCAnZXhwZXJpbWVudGFsX21pblJldGVudGlvbidcbiAgPiB7XG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gYSBgUmVzcG9uc2VgIG9iamVjdCwgdGhlIHdlYmhvb2sgd2lsbCBhdXRvbWF0aWNhbGx5XG4gICAqIHJlc3BvbmQgd2l0aCB0aGUgc3BlY2lmaWVkIHJlc3BvbnNlLlxuICAgKlxuICAgKiBJZiBzZXQgdG8gYFwibWFudWFsXCJgLCBlYWNoIGluZGl2aWR1YWwgcmVxdWVzdCB3aWxsIG5lZWQgdG9cbiAgICogYmUgcmVzcG9uZGVkIHRvIG1hbnVhbGx5IGZyb20gd2l0aGluIHRoZSB3b3JrZmxvdyBieSBjYWxsaW5nIHRoZVxuICAgKiBgcmVzcG9uZFdpdGgoKWAgbWV0aG9kLlxuICAgKlxuICAgKiBJZiBub3Qgc2V0IHRoZW4gdGhlIHdlYmhvb2sgd2lsbCBhdXRvbWF0aWNhbGx5IHJlc3BvbmQgd2l0aFxuICAgKiBhIGAyMDIgQWNjZXB0ZWRgIHJlc3BvbnNlLlxuICAgKi9cbiAgcmVzcG9uZFdpdGg/OiBSZXNwb25zZSB8ICdtYW51YWwnO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB7QGxpbmsgSG9va30gdGhhdCBjYW4gYmUgdXNlZCB0byBzdXNwZW5kIGFuZCByZXN1bWUgdGhlIHdvcmtmbG93IHJ1biB3aXRoIGEgcGF5bG9hZC5cbiAqXG4gKiBIb29rcyBhbGxvdyBleHRlcm5hbCBzeXN0ZW1zIHRvIHNlbmQgYXJiaXRyYXJ5IHNlcmlhbGl6YWJsZSBkYXRhIGludG8gYSB3b3JrZmxvdy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGhvb2suXG4gKiBAcmV0dXJucyBBIGBIb29rYCB0aGF0IGNhbiBiZSBhd2FpdGVkIHRvIHJlY2VpdmUgb25lIG9yIG1vcmUgcGF5bG9hZHMuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGB0c1xuICogZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdvcmtmbG93V2l0aEhvb2soKSB7XG4gKiAgIFwidXNlIHdvcmtmbG93XCI7XG4gKlxuICogICBjb25zdCBob29rID0gY3JlYXRlSG9vazx7IG1lc3NhZ2U6IHN0cmluZyB9PigpO1xuICogICBjb25zb2xlLmxvZygnSG9vayB0b2tlbjonLCBob29rLnRva2VuKTtcbiAqXG4gKiAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBob29rO1xuICogICBjb25zb2xlLmxvZygnUmVjZWl2ZWQ6JywgcGF5bG9hZC5tZXNzYWdlKTtcbiAqIH1cbiAqIGBgYFxuICovXG4vLyBAdHMtZXhwZWN0LWVycm9yIGBvcHRpb25zYCBpcyBoZXJlIGZvciB0eXBlcy9kb2NzXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSG9vazxUID0gYW55PihvcHRpb25zPzogSG9va09wdGlvbnMpOiBIb29rPFQ+IHtcbiAgdGhyb3dOb3RJbldvcmtmbG93Q29udGV4dChcbiAgICAnY3JlYXRlSG9vaygpJyxcbiAgICAnaHR0cHM6Ly93b3JrZmxvdy1zZGsuZGV2L2RvY3MvYXBpLXJlZmVyZW5jZS93b3JrZmxvdy9jcmVhdGUtaG9vaycsXG4gICAgY3JlYXRlSG9va1xuICApO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB7QGxpbmsgV2ViaG9va30gdGhhdCBjYW4gYmUgdXNlZCB0byBzdXNwZW5kIGFuZCByZXN1bWUgdGhlIHdvcmtmbG93XG4gKiBydW4gdXBvbiByZWNlaXZpbmcgYW4gSFRUUCByZXF1ZXN0IHRvIHRoZSBzcGVjaWZpZWQgVVJMLlxuICpcbiAqIFdlYmhvb2tzIHdpbGwgcmVzdWx0IGluIGEge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9SZXF1ZXN0IHwgUmVxdWVzdH0gb2JqZWN0XG4gKiB0aGF0IGNhbiBiZSBpbnRlcmFjdGVkIHdpdGggaW4gd29ya2Zsb3cgZnVuY3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV2ViaG9vayhcbiAgb3B0aW9uczogV2ViaG9va09wdGlvbnMgJiB7IHJlc3BvbmRXaXRoOiAnbWFudWFsJyB9XG4pOiBXZWJob29rPFJlcXVlc3RXaXRoUmVzcG9uc2U+O1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdlYmhvb2sob3B0aW9ucz86IFdlYmhvb2tPcHRpb25zKTogV2ViaG9vazxSZXF1ZXN0PjtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXZWJob29rKFxuICAvLyBAdHMtZXhwZWN0LWVycm9yIGBvcHRpb25zYCBpcyBoZXJlIGZvciB0eXBlcy9kb2NzXG4gIG9wdGlvbnM/OiBXZWJob29rT3B0aW9uc1xuKTogV2ViaG9vazxSZXF1ZXN0PiB8IFdlYmhvb2s8UmVxdWVzdFdpdGhSZXNwb25zZT4ge1xuICB0aHJvd05vdEluV29ya2Zsb3dDb250ZXh0KFxuICAgICdjcmVhdGVXZWJob29rKCknLFxuICAgICdodHRwczovL3dvcmtmbG93LXNkay5kZXYvZG9jcy9hcGktcmVmZXJlbmNlL3dvcmtmbG93L2NyZWF0ZS13ZWJob29rJyxcbiAgICBjcmVhdGVXZWJob29rXG4gICk7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-hook.d.ts","sourceRoot":"","sources":["../src/define-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"define-hook.d.ts","sourceRoot":"","sources":["../src/define-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG1D;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,MAAM,EAAE,OAAO;IACxC;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7D;AAED,yBAAiB,SAAS,CAAC;IACzB;;OAEG;IACH,KAAY,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,IAC7C,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,EACnD,MAAM,GACP,GAAE;IACD,MAAM,CAAC,EAAE,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CA8ClC"}
|