@temelj/workflow 0.0.0-alpha.1
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/LICENSE +21 -0
- package/README.md +38 -0
- package/dist/attributes.d.mts +15 -0
- package/dist/attributes.mjs +30 -0
- package/dist/client/create.d.mts +31 -0
- package/dist/client/create.mjs +67 -0
- package/dist/client/facades.d.mts +21 -0
- package/dist/client/facades.mjs +142 -0
- package/dist/client/mod.d.mts +2 -0
- package/dist/client/mod.mjs +2 -0
- package/dist/client/run-handle.d.mts +66 -0
- package/dist/client/run-handle.mjs +156 -0
- package/dist/client/worker-options.d.mts +17 -0
- package/dist/client/worker-options.mjs +25 -0
- package/dist/collection.d.mts +15 -0
- package/dist/collection.mjs +33 -0
- package/dist/compiled-function.d.mts +27 -0
- package/dist/compiled-function.mjs +54 -0
- package/dist/definition.d.mts +37 -0
- package/dist/definition.mjs +83 -0
- package/dist/engine/child-workflow.d.mts +10 -0
- package/dist/engine/child-workflow.mjs +333 -0
- package/dist/engine/command-identity.d.mts +9 -0
- package/dist/engine/command-identity.mjs +14 -0
- package/dist/engine/create.d.mts +106 -0
- package/dist/engine/create.mjs +402 -0
- package/dist/engine/deterministic.d.mts +12 -0
- package/dist/engine/deterministic.mjs +102 -0
- package/dist/engine/durable-command.d.mts +10 -0
- package/dist/engine/durable-command.mjs +17 -0
- package/dist/engine/execution-api.d.mts +29 -0
- package/dist/engine/execution-api.mjs +33 -0
- package/dist/engine/execution-service.d.mts +41 -0
- package/dist/engine/execution-service.mjs +288 -0
- package/dist/engine/hooks.d.mts +56 -0
- package/dist/engine/hooks.mjs +237 -0
- package/dist/engine/inspection-api.d.mts +34 -0
- package/dist/engine/inspection-api.mjs +77 -0
- package/dist/engine/inspection.d.mts +18 -0
- package/dist/engine/inspection.mjs +149 -0
- package/dist/engine/lifecycle.d.mts +18 -0
- package/dist/engine/lifecycle.mjs +38 -0
- package/dist/engine/lock-replay.d.mts +30 -0
- package/dist/engine/lock-replay.mjs +38 -0
- package/dist/engine/lock.d.mts +21 -0
- package/dist/engine/lock.mjs +197 -0
- package/dist/engine/message.d.mts +47 -0
- package/dist/engine/message.mjs +357 -0
- package/dist/engine/mod.d.mts +4 -0
- package/dist/engine/mod.mjs +2 -0
- package/dist/engine/observation.d.mts +35 -0
- package/dist/engine/observation.mjs +201 -0
- package/dist/engine/recovery.d.mts +26 -0
- package/dist/engine/recovery.mjs +92 -0
- package/dist/engine/replay.d.mts +41 -0
- package/dist/engine/replay.mjs +122 -0
- package/dist/engine/retry-policy.d.mts +4 -0
- package/dist/engine/retry-policy.mjs +4 -0
- package/dist/engine/retry.d.mts +23 -0
- package/dist/engine/retry.mjs +75 -0
- package/dist/engine/run-data.d.mts +9 -0
- package/dist/engine/run-data.mjs +74 -0
- package/dist/engine/run-service.d.mts +38 -0
- package/dist/engine/run-service.mjs +133 -0
- package/dist/engine/run-utils.d.mts +16 -0
- package/dist/engine/run-utils.mjs +83 -0
- package/dist/engine/schedule.d.mts +25 -0
- package/dist/engine/schedule.mjs +207 -0
- package/dist/engine/serialization.d.mts +9 -0
- package/dist/engine/serialization.mjs +85 -0
- package/dist/engine/start-api.d.mts +30 -0
- package/dist/engine/start-api.mjs +98 -0
- package/dist/engine/state.d.mts +77 -0
- package/dist/engine/state.mjs +464 -0
- package/dist/engine/step-api.d.mts +9 -0
- package/dist/engine/step-api.mjs +25 -0
- package/dist/engine/stream.d.mts +55 -0
- package/dist/engine/stream.mjs +333 -0
- package/dist/engine/summary/active-events.d.mts +34 -0
- package/dist/engine/summary/active-events.mjs +69 -0
- package/dist/engine/summary/child-workflow-runs.d.mts +24 -0
- package/dist/engine/summary/child-workflow-runs.mjs +138 -0
- package/dist/engine/summary/child-workflow-waits.d.mts +21 -0
- package/dist/engine/summary/child-workflow-waits.mjs +67 -0
- package/dist/engine/summary/recovery-child-workflow-waits.d.mts +11 -0
- package/dist/engine/summary/recovery-child-workflow-waits.mjs +89 -0
- package/dist/engine/summary/recovery-due-runs.d.mts +16 -0
- package/dist/engine/summary/recovery-due-runs.mjs +52 -0
- package/dist/engine/summary/recovery-failed-runs.d.mts +14 -0
- package/dist/engine/summary/recovery-failed-runs.mjs +33 -0
- package/dist/engine/summary/recovery-lease-runs.d.mts +16 -0
- package/dist/engine/summary/recovery-lease-runs.mjs +69 -0
- package/dist/engine/summary/recovery-locks.d.mts +18 -0
- package/dist/engine/summary/recovery-locks.mjs +100 -0
- package/dist/engine/summary/recovery-message-waits.d.mts +11 -0
- package/dist/engine/summary/recovery-message-waits.mjs +74 -0
- package/dist/engine/summary/recovery-retry-runs.d.mts +17 -0
- package/dist/engine/summary/recovery-retry-runs.mjs +65 -0
- package/dist/engine/summary/recovery-run-timestamps.d.mts +13 -0
- package/dist/engine/summary/recovery-run-timestamps.mjs +18 -0
- package/dist/engine/summary/recovery-runs.d.mts +23 -0
- package/dist/engine/summary/recovery-runs.mjs +54 -0
- package/dist/engine/summary/recovery-schedules.d.mts +10 -0
- package/dist/engine/summary/recovery-schedules.mjs +46 -0
- package/dist/engine/summary/recovery-sleep-waits.d.mts +10 -0
- package/dist/engine/summary/recovery-sleep-waits.mjs +53 -0
- package/dist/engine/summary/recovery-waits.d.mts +21 -0
- package/dist/engine/summary/recovery-waits.mjs +29 -0
- package/dist/engine/summary/run-availability.d.mts +13 -0
- package/dist/engine/summary/run-availability.mjs +37 -0
- package/dist/engine/summary/run-cleanup.d.mts +14 -0
- package/dist/engine/summary/run-cleanup.mjs +44 -0
- package/dist/engine/summary/run-failure.d.mts +14 -0
- package/dist/engine/summary/run-failure.mjs +62 -0
- package/dist/engine/summary/run-hooks.d.mts +14 -0
- package/dist/engine/summary/run-hooks.mjs +63 -0
- package/dist/engine/summary/run-lease.d.mts +11 -0
- package/dist/engine/summary/run-lease.mjs +64 -0
- package/dist/engine/summary/run-message-waits.d.mts +15 -0
- package/dist/engine/summary/run-message-waits.mjs +62 -0
- package/dist/engine/summary/run-metrics.d.mts +31 -0
- package/dist/engine/summary/run-metrics.mjs +93 -0
- package/dist/engine/summary/run-retry.d.mts +9 -0
- package/dist/engine/summary/run-retry.mjs +69 -0
- package/dist/engine/summary/run-sleeps.d.mts +15 -0
- package/dist/engine/summary/run-sleeps.mjs +61 -0
- package/dist/engine/summary/run-state.d.mts +26 -0
- package/dist/engine/summary/run-state.mjs +48 -0
- package/dist/engine/summary/run-status.d.mts +16 -0
- package/dist/engine/summary/run-status.mjs +35 -0
- package/dist/engine/summary/run-streams.d.mts +14 -0
- package/dist/engine/summary/run-streams.mjs +46 -0
- package/dist/engine/summary/run-transition.d.mts +9 -0
- package/dist/engine/summary/run-transition.mjs +39 -0
- package/dist/engine/summary/run-workflow.d.mts +9 -0
- package/dist/engine/summary/run-workflow.mjs +47 -0
- package/dist/engine/summary/step-attempt-active-child-workflows.d.mts +13 -0
- package/dist/engine/summary/step-attempt-active-child-workflows.mjs +55 -0
- package/dist/engine/summary/step-attempt-active-fields.d.mts +23 -0
- package/dist/engine/summary/step-attempt-active-fields.mjs +14 -0
- package/dist/engine/summary/step-attempt-active-message-waits.d.mts +12 -0
- package/dist/engine/summary/step-attempt-active-message-waits.mjs +47 -0
- package/dist/engine/summary/step-attempt-active-sleeps.d.mts +19 -0
- package/dist/engine/summary/step-attempt-active-sleeps.mjs +44 -0
- package/dist/engine/summary/step-attempt-buckets.d.mts +22 -0
- package/dist/engine/summary/step-attempt-buckets.mjs +152 -0
- package/dist/engine/summary/step-attempt-failure.d.mts +12 -0
- package/dist/engine/summary/step-attempt-failure.mjs +61 -0
- package/dist/engine/summary/step-attempt-lifecycle.d.mts +13 -0
- package/dist/engine/summary/step-attempt-lifecycle.mjs +19 -0
- package/dist/engine/summary/step-attempts.d.mts +11 -0
- package/dist/engine/summary/step-attempts.mjs +43 -0
- package/dist/engine/summary.d.mts +32 -0
- package/dist/engine/summary.mjs +37 -0
- package/dist/engine/task.d.mts +6 -0
- package/dist/engine/task.mjs +207 -0
- package/dist/errors/base.d.mts +99 -0
- package/dist/errors/base.mjs +426 -0
- package/dist/errors/capability.d.mts +11 -0
- package/dist/errors/capability.mjs +23 -0
- package/dist/errors/definition.d.mts +21 -0
- package/dist/errors/definition.mjs +51 -0
- package/dist/errors/details.d.mts +13 -0
- package/dist/errors/details.mjs +65 -0
- package/dist/errors/failures.d.mts +81 -0
- package/dist/errors/failures.mjs +168 -0
- package/dist/errors/hook.d.mts +14 -0
- package/dist/errors/hook.mjs +30 -0
- package/dist/errors/implementation.d.mts +11 -0
- package/dist/errors/implementation.mjs +25 -0
- package/dist/errors/lock.d.mts +28 -0
- package/dist/errors/lock.mjs +70 -0
- package/dist/errors/message.d.mts +106 -0
- package/dist/errors/message.mjs +122 -0
- package/dist/errors/mod.d.mts +17 -0
- package/dist/errors/mod.mjs +17 -0
- package/dist/errors/record-view.d.mts +11 -0
- package/dist/errors/record-view.mjs +24 -0
- package/dist/errors/records.d.mts +7 -0
- package/dist/errors/records.mjs +280 -0
- package/dist/errors/run.d.mts +116 -0
- package/dist/errors/run.mjs +232 -0
- package/dist/errors/runtime.d.mts +12 -0
- package/dist/errors/runtime.mjs +24 -0
- package/dist/errors/schedule.d.mts +27 -0
- package/dist/errors/schedule.mjs +65 -0
- package/dist/errors/step.d.mts +76 -0
- package/dist/errors/step.mjs +113 -0
- package/dist/errors/stream.d.mts +24 -0
- package/dist/errors/stream.mjs +64 -0
- package/dist/esbuild.d.mts +7 -0
- package/dist/esbuild.mjs +6 -0
- package/dist/events/descriptors.d.mts +245 -0
- package/dist/events/descriptors.mjs +405 -0
- package/dist/events/mod.d.mts +3 -0
- package/dist/events/mod.mjs +2 -0
- package/dist/history/attempt-key.d.mts +6 -0
- package/dist/history/attempt-key.mjs +7 -0
- package/dist/history/mod.d.mts +71 -0
- package/dist/history/mod.mjs +195 -0
- package/dist/history/projection.d.mts +8 -0
- package/dist/history/projection.mjs +259 -0
- package/dist/history/replay-projection.d.mts +88 -0
- package/dist/history/replay-projection.mjs +369 -0
- package/dist/history/sequencer.d.mts +16 -0
- package/dist/history/sequencer.mjs +78 -0
- package/dist/history/step-attempts.d.mts +9 -0
- package/dist/history/step-attempts.mjs +50 -0
- package/dist/history/timeline.d.mts +16 -0
- package/dist/history/timeline.mjs +272 -0
- package/dist/history/validator.d.mts +9 -0
- package/dist/history/validator.mjs +110 -0
- package/dist/inspection/mod.d.mts +5 -0
- package/dist/inspection/mod.mjs +3 -0
- package/dist/message-options.d.mts +8 -0
- package/dist/message-options.mjs +25 -0
- package/dist/mod.d.mts +52 -0
- package/dist/mod.mjs +26 -0
- package/dist/otel/support.d.mts +18 -0
- package/dist/otel/support.mjs +102 -0
- package/dist/otel.d.mts +30 -0
- package/dist/otel.mjs +588 -0
- package/dist/pagination.d.mts +25 -0
- package/dist/pagination.mjs +73 -0
- package/dist/registry.d.mts +20 -0
- package/dist/registry.mjs +48 -0
- package/dist/rolldown.d.mts +7 -0
- package/dist/rolldown.mjs +6 -0
- package/dist/rollup.d.mts +7 -0
- package/dist/rollup.mjs +6 -0
- package/dist/rspack.d.mts +7 -0
- package/dist/rspack.mjs +6 -0
- package/dist/runtime.d.mts +34 -0
- package/dist/runtime.mjs +194 -0
- package/dist/step-definition.d.mts +10 -0
- package/dist/step-definition.mjs +15 -0
- package/dist/store/append-projection.d.mts +15 -0
- package/dist/store/append-projection.mjs +26 -0
- package/dist/store/capabilities.d.mts +14 -0
- package/dist/store/capabilities.mjs +42 -0
- package/dist/store/cleanup.d.mts +18 -0
- package/dist/store/cleanup.mjs +338 -0
- package/dist/store/compaction.d.mts +5 -0
- package/dist/store/compaction.mjs +8 -0
- package/dist/store/create.d.mts +52 -0
- package/dist/store/create.mjs +159 -0
- package/dist/store/event-append-project.d.mts +15 -0
- package/dist/store/event-append-project.mjs +77 -0
- package/dist/store/event-append.d.mts +37 -0
- package/dist/store/event-append.mjs +80 -0
- package/dist/store/event-history.d.mts +22 -0
- package/dist/store/event-history.mjs +75 -0
- package/dist/store/event.d.mts +10 -0
- package/dist/store/event.mjs +28 -0
- package/dist/store/idempotency.d.mts +10 -0
- package/dist/store/idempotency.mjs +167 -0
- package/dist/store/instrumentation.d.mts +7 -0
- package/dist/store/instrumentation.mjs +123 -0
- package/dist/store/lock.d.mts +8 -0
- package/dist/store/lock.mjs +28 -0
- package/dist/store/materialization.d.mts +30 -0
- package/dist/store/materialization.mjs +127 -0
- package/dist/store/message-index.d.mts +21 -0
- package/dist/store/message-index.mjs +121 -0
- package/dist/store/mod.d.mts +5 -0
- package/dist/store/mod.mjs +4 -0
- package/dist/store/query.d.mts +24 -0
- package/dist/store/query.mjs +82 -0
- package/dist/store/revision.d.mts +4 -0
- package/dist/store/revision.mjs +7 -0
- package/dist/store/run.d.mts +49 -0
- package/dist/store/run.mjs +236 -0
- package/dist/store/schedule.d.mts +12 -0
- package/dist/store/schedule.mjs +41 -0
- package/dist/store/schema.d.mts +14 -0
- package/dist/store/schema.mjs +17 -0
- package/dist/store/step-attempt.d.mts +14 -0
- package/dist/store/step-attempt.mjs +23 -0
- package/dist/store/storage-value.d.mts +5 -0
- package/dist/store/storage-value.mjs +6 -0
- package/dist/store/validation.d.mts +35 -0
- package/dist/store/validation.mjs +77 -0
- package/dist/store-keys.d.mts +49 -0
- package/dist/store-keys.mjs +63 -0
- package/dist/telemetry.d.mts +132 -0
- package/dist/telemetry.mjs +172 -0
- package/dist/temporal.d.mts +23 -0
- package/dist/temporal.mjs +59 -0
- package/dist/timer.d.mts +12 -0
- package/dist/timer.mjs +28 -0
- package/dist/types/cleanup.d.mts +112 -0
- package/dist/types/cleanup.mjs +22 -0
- package/dist/types/client.d.mts +270 -0
- package/dist/types/client.mjs +1 -0
- package/dist/types/common.d.mts +19 -0
- package/dist/types/common.mjs +15 -0
- package/dist/types/definition.d.mts +92 -0
- package/dist/types/definition.mjs +1 -0
- package/dist/types/engine-options.d.mts +76 -0
- package/dist/types/engine-options.mjs +1 -0
- package/dist/types/engine.d.mts +309 -0
- package/dist/types/engine.mjs +1 -0
- package/dist/types/error-code.d.mts +256 -0
- package/dist/types/error-code.mjs +131 -0
- package/dist/types/error.d.mts +236 -0
- package/dist/types/error.mjs +48 -0
- package/dist/types/events.d.mts +2869 -0
- package/dist/types/events.mjs +283 -0
- package/dist/types/hook.d.mts +149 -0
- package/dist/types/hook.mjs +66 -0
- package/dist/types/lock.d.mts +63 -0
- package/dist/types/lock.mjs +18 -0
- package/dist/types/message-id.d.mts +7 -0
- package/dist/types/message-id.mjs +5 -0
- package/dist/types/message.d.mts +87 -0
- package/dist/types/message.mjs +1 -0
- package/dist/types/observation.d.mts +146 -0
- package/dist/types/observation.mjs +1 -0
- package/dist/types/pagination.d.mts +32 -0
- package/dist/types/pagination.mjs +13 -0
- package/dist/types/result.d.mts +62 -0
- package/dist/types/result.mjs +1 -0
- package/dist/types/retry.d.mts +48 -0
- package/dist/types/retry.mjs +1 -0
- package/dist/types/run-id.d.mts +7 -0
- package/dist/types/run-id.mjs +5 -0
- package/dist/types/run-list.d.mts +43 -0
- package/dist/types/run-list.mjs +1 -0
- package/dist/types/run-options.d.mts +86 -0
- package/dist/types/run-options.mjs +1 -0
- package/dist/types/run.d.mts +355 -0
- package/dist/types/run.mjs +207 -0
- package/dist/types/runtime.d.mts +143 -0
- package/dist/types/runtime.mjs +21 -0
- package/dist/types/schedule.d.mts +127 -0
- package/dist/types/schedule.mjs +48 -0
- package/dist/types/step-attempts.d.mts +326 -0
- package/dist/types/step-attempts.mjs +43 -0
- package/dist/types/step-id.d.mts +7 -0
- package/dist/types/step-id.mjs +5 -0
- package/dist/types/step.d.mts +183 -0
- package/dist/types/step.mjs +5 -0
- package/dist/types/store.d.mts +254 -0
- package/dist/types/store.mjs +1 -0
- package/dist/types/stream-id.d.mts +7 -0
- package/dist/types/stream-id.mjs +5 -0
- package/dist/types/stream.d.mts +126 -0
- package/dist/types/stream.mjs +1 -0
- package/dist/types/summary.d.mts +318 -0
- package/dist/types/summary.mjs +1 -0
- package/dist/types/telemetry.d.mts +74 -0
- package/dist/types/telemetry.mjs +9 -0
- package/dist/types/timeline.d.mts +237 -0
- package/dist/types/timeline.mjs +1 -0
- package/dist/types/vite.d.mts +65 -0
- package/dist/types/vite.mjs +1 -0
- package/dist/types/worker-id.d.mts +7 -0
- package/dist/types/worker-id.mjs +5 -0
- package/dist/types/worker.d.mts +94 -0
- package/dist/types/worker.mjs +1 -0
- package/dist/utility.d.mts +49 -0
- package/dist/utility.mjs +122 -0
- package/dist/vite/ast.d.mts +23 -0
- package/dist/vite/ast.mjs +73 -0
- package/dist/vite/error.d.mts +19 -0
- package/dist/vite/error.mjs +47 -0
- package/dist/vite/generated-name.d.mts +7 -0
- package/dist/vite/generated-name.mjs +9 -0
- package/dist/vite/manifest.d.mts +7 -0
- package/dist/vite/manifest.mjs +106 -0
- package/dist/vite/plugin.d.mts +7 -0
- package/dist/vite/plugin.mjs +190 -0
- package/dist/vite/safety.d.mts +12 -0
- package/dist/vite/safety.mjs +96 -0
- package/dist/vite/source-edit.d.mts +12 -0
- package/dist/vite/source-edit.mjs +44 -0
- package/dist/vite/source-map.d.mts +11 -0
- package/dist/vite/source-map.mjs +53 -0
- package/dist/vite/source.d.mts +7 -0
- package/dist/vite/source.mjs +14 -0
- package/dist/vite/transform.d.mts +7 -0
- package/dist/vite/transform.mjs +405 -0
- package/dist/vite.d.mts +6 -0
- package/dist/vite.mjs +5 -0
- package/dist/webhook.d.mts +16 -0
- package/dist/webhook.mjs +17 -0
- package/dist/webpack.d.mts +7 -0
- package/dist/webpack.mjs +6 -0
- package/dist/worker/error.d.mts +11 -0
- package/dist/worker/error.mjs +40 -0
- package/dist/worker.d.mts +18 -0
- package/dist/worker.mjs +427 -0
- package/package.json +144 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { RunId } from "../types/run-id.mjs";
|
|
2
|
+
import { StepId } from "../types/step-id.mjs";
|
|
3
|
+
import "../types/step.mjs";
|
|
4
|
+
import "../types/run.mjs";
|
|
5
|
+
import { WorkflowNonRetryableErrorOptions, WorkflowRetryableErrorOptions } from "../types/error.mjs";
|
|
6
|
+
import { WorkflowError } from "./base.mjs";
|
|
7
|
+
//#region src/errors/failures.d.ts
|
|
8
|
+
/** Error thrown for duration failures. */
|
|
9
|
+
declare class WorkflowDurationError extends WorkflowError {
|
|
10
|
+
constructor(message: string, context?: Function);
|
|
11
|
+
static create(this: void, message: string): WorkflowDurationError;
|
|
12
|
+
static retryAtInstant(this: void, label: string): never;
|
|
13
|
+
static timerSafe(this: void, label: string): never;
|
|
14
|
+
static temporalDuration(this: void, label: string): never;
|
|
15
|
+
static finite(this: void, label: string): never;
|
|
16
|
+
static positiveSafeInteger(this: void, label: string): never;
|
|
17
|
+
static stepTimeoutPositive(this: void): never;
|
|
18
|
+
static signalTimeoutPositive(this: void): never;
|
|
19
|
+
static childPollIntervalTimerSafe(this: void): never;
|
|
20
|
+
static childTimeoutPositive(this: void): never;
|
|
21
|
+
}
|
|
22
|
+
/** Error thrown for serialization failures. */
|
|
23
|
+
declare class WorkflowSerializationError extends WorkflowError {
|
|
24
|
+
readonly path: string;
|
|
25
|
+
readonly reason: string;
|
|
26
|
+
constructor(path: string, reason: string, context?: Function);
|
|
27
|
+
static notSerializable(this: void, path: string, reason: string): never;
|
|
28
|
+
static create(this: void, path: string, reason: string): WorkflowSerializationError;
|
|
29
|
+
}
|
|
30
|
+
/** Error thrown when workflow code wants to fail without retry. */
|
|
31
|
+
declare class WorkflowNonRetryableError extends WorkflowError {
|
|
32
|
+
constructor(message: string, options?: WorkflowNonRetryableErrorOptions, context?: Function);
|
|
33
|
+
static failed(this: void, message: string, options?: WorkflowNonRetryableErrorOptions): never;
|
|
34
|
+
static create(this: void, message: string, options?: WorkflowNonRetryableErrorOptions): WorkflowNonRetryableError;
|
|
35
|
+
}
|
|
36
|
+
/** Error thrown when a run is intentionally marked permanently failed. */
|
|
37
|
+
declare class WorkflowPermanentFailureError extends WorkflowError {
|
|
38
|
+
readonly runId: RunId;
|
|
39
|
+
readonly reason: string;
|
|
40
|
+
constructor(options: {
|
|
41
|
+
readonly runId: RunId;
|
|
42
|
+
readonly reason: string;
|
|
43
|
+
}, context?: Function);
|
|
44
|
+
static failed(this: void, options: {
|
|
45
|
+
readonly runId: RunId;
|
|
46
|
+
readonly reason: string;
|
|
47
|
+
}): never;
|
|
48
|
+
static create(this: void, options: {
|
|
49
|
+
readonly runId: RunId;
|
|
50
|
+
readonly reason: string;
|
|
51
|
+
}): WorkflowPermanentFailureError;
|
|
52
|
+
}
|
|
53
|
+
/** Error thrown for retryable failures. */
|
|
54
|
+
declare class WorkflowRetryableError extends WorkflowError {
|
|
55
|
+
readonly retryAt: Temporal.Instant | undefined;
|
|
56
|
+
readonly retryDelay: Temporal.Duration | undefined;
|
|
57
|
+
constructor(message: string, options: WorkflowRetryableErrorOptions, context?: Function);
|
|
58
|
+
static lockAlreadyHeld(this: void, key: string, options: WorkflowRetryableErrorOptions): never;
|
|
59
|
+
static isLockAlreadyHeld(error: unknown, key?: string): boolean;
|
|
60
|
+
static failed(this: void, message: string, options: WorkflowRetryableErrorOptions): never;
|
|
61
|
+
static create(this: void, message: string, options: WorkflowRetryableErrorOptions): WorkflowRetryableError;
|
|
62
|
+
}
|
|
63
|
+
/** Error thrown for replay divergence failures. */
|
|
64
|
+
declare class WorkflowReplayDivergenceError extends WorkflowError {
|
|
65
|
+
readonly expectedStepId: StepId | undefined;
|
|
66
|
+
readonly actualStepId: StepId | undefined;
|
|
67
|
+
constructor(message: string, options: {
|
|
68
|
+
readonly expectedStepId?: string;
|
|
69
|
+
readonly actualStepId?: string;
|
|
70
|
+
}, context?: Function);
|
|
71
|
+
static diverged(this: void, message: string, options: {
|
|
72
|
+
readonly expectedStepId?: string;
|
|
73
|
+
readonly actualStepId?: string;
|
|
74
|
+
}): never;
|
|
75
|
+
static create(this: void, message: string, options: {
|
|
76
|
+
readonly expectedStepId?: string;
|
|
77
|
+
readonly actualStepId?: string;
|
|
78
|
+
}): WorkflowReplayDivergenceError;
|
|
79
|
+
}
|
|
80
|
+
//#endregion
|
|
81
|
+
export { WorkflowDurationError, WorkflowNonRetryableError, type WorkflowNonRetryableErrorOptions, WorkflowPermanentFailureError, WorkflowReplayDivergenceError, WorkflowRetryableError, type WorkflowRetryableErrorOptions, WorkflowSerializationError };
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { WorkflowErrorCode } from "../types/error-code.mjs";
|
|
2
|
+
import { WorkflowError, WorkflowOptionsError } from "./base.mjs";
|
|
3
|
+
import { workflowErrorRecordView } from "./record-view.mjs";
|
|
4
|
+
//#region src/errors/failures.ts
|
|
5
|
+
/** Error thrown for duration failures. */
|
|
6
|
+
var WorkflowDurationError = class WorkflowDurationError extends WorkflowError {
|
|
7
|
+
constructor(message, context) {
|
|
8
|
+
super(message, { code: WorkflowErrorCode.DURATION_INVALID }, context);
|
|
9
|
+
this.name = "WorkflowDurationError";
|
|
10
|
+
}
|
|
11
|
+
static create(message) {
|
|
12
|
+
return new WorkflowDurationError(message, WorkflowDurationError.create);
|
|
13
|
+
}
|
|
14
|
+
static retryAtInstant(label) {
|
|
15
|
+
throw new WorkflowDurationError(`${label} retryAt must be a Temporal.Instant`, WorkflowDurationError.retryAtInstant);
|
|
16
|
+
}
|
|
17
|
+
static timerSafe(label) {
|
|
18
|
+
throw new WorkflowDurationError(`${label} must be a timer-safe duration`, WorkflowDurationError.timerSafe);
|
|
19
|
+
}
|
|
20
|
+
static temporalDuration(label) {
|
|
21
|
+
throw new WorkflowDurationError(`${label} must be a Temporal.Duration`, WorkflowDurationError.temporalDuration);
|
|
22
|
+
}
|
|
23
|
+
static finite(label) {
|
|
24
|
+
throw new WorkflowDurationError(`${label} must be finite`, WorkflowDurationError.finite);
|
|
25
|
+
}
|
|
26
|
+
static positiveSafeInteger(label) {
|
|
27
|
+
throw new WorkflowDurationError(`${label} must be a positive safe integer`, WorkflowDurationError.positiveSafeInteger);
|
|
28
|
+
}
|
|
29
|
+
static stepTimeoutPositive() {
|
|
30
|
+
throw new WorkflowDurationError("Workflow step timeout must be greater than zero", WorkflowDurationError.stepTimeoutPositive);
|
|
31
|
+
}
|
|
32
|
+
static signalTimeoutPositive() {
|
|
33
|
+
throw new WorkflowDurationError("Workflow message timeout must be greater than zero", WorkflowDurationError.signalTimeoutPositive);
|
|
34
|
+
}
|
|
35
|
+
static childPollIntervalTimerSafe() {
|
|
36
|
+
throw new WorkflowDurationError("Workflow child pollInterval must be a timer-safe duration", WorkflowDurationError.childPollIntervalTimerSafe);
|
|
37
|
+
}
|
|
38
|
+
static childTimeoutPositive() {
|
|
39
|
+
throw new WorkflowDurationError("Workflow child timeout must be greater than zero", WorkflowDurationError.childTimeoutPositive);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
/** Error thrown for serialization failures. */
|
|
43
|
+
var WorkflowSerializationError = class WorkflowSerializationError extends WorkflowError {
|
|
44
|
+
path;
|
|
45
|
+
reason;
|
|
46
|
+
constructor(path, reason, context) {
|
|
47
|
+
super(`Workflow value is not serializable at ${path}: ${reason}`, {
|
|
48
|
+
code: WorkflowErrorCode.SERIALIZATION_FAILED,
|
|
49
|
+
details: {
|
|
50
|
+
path,
|
|
51
|
+
reason
|
|
52
|
+
}
|
|
53
|
+
}, context);
|
|
54
|
+
this.name = "WorkflowSerializationError";
|
|
55
|
+
this.path = path;
|
|
56
|
+
this.reason = reason;
|
|
57
|
+
}
|
|
58
|
+
static notSerializable(path, reason) {
|
|
59
|
+
throw new WorkflowSerializationError(path, reason, WorkflowSerializationError.notSerializable);
|
|
60
|
+
}
|
|
61
|
+
static create(path, reason) {
|
|
62
|
+
return new WorkflowSerializationError(path, reason, WorkflowSerializationError.create);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
/** Error thrown when workflow code wants to fail without retry. */
|
|
66
|
+
var WorkflowNonRetryableError = class WorkflowNonRetryableError extends WorkflowError {
|
|
67
|
+
constructor(message, options = {}, context) {
|
|
68
|
+
super(message, {
|
|
69
|
+
...options,
|
|
70
|
+
code: WorkflowErrorCode.NON_RETRYABLE_FAILURE
|
|
71
|
+
}, context);
|
|
72
|
+
this.name = "WorkflowNonRetryableError";
|
|
73
|
+
}
|
|
74
|
+
static failed(message, options = {}) {
|
|
75
|
+
throw new WorkflowNonRetryableError(message, options, WorkflowNonRetryableError.failed);
|
|
76
|
+
}
|
|
77
|
+
static create(message, options = {}) {
|
|
78
|
+
return new WorkflowNonRetryableError(message, options, WorkflowNonRetryableError.create);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
/** Error thrown when a run is intentionally marked permanently failed. */
|
|
82
|
+
var WorkflowPermanentFailureError = class WorkflowPermanentFailureError extends WorkflowError {
|
|
83
|
+
runId;
|
|
84
|
+
reason;
|
|
85
|
+
constructor(options, context) {
|
|
86
|
+
super(`Workflow run permanently failed: ${options.runId}: ${options.reason}`, {
|
|
87
|
+
code: WorkflowErrorCode.PERMANENT_FAILURE,
|
|
88
|
+
details: {
|
|
89
|
+
runId: options.runId,
|
|
90
|
+
reason: options.reason
|
|
91
|
+
}
|
|
92
|
+
}, context);
|
|
93
|
+
this.name = "WorkflowPermanentFailureError";
|
|
94
|
+
this.runId = options.runId;
|
|
95
|
+
this.reason = options.reason;
|
|
96
|
+
}
|
|
97
|
+
static failed(options) {
|
|
98
|
+
throw new WorkflowPermanentFailureError(options, WorkflowPermanentFailureError.failed);
|
|
99
|
+
}
|
|
100
|
+
static create(options) {
|
|
101
|
+
return new WorkflowPermanentFailureError(options, WorkflowPermanentFailureError.create);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
/** Error thrown for retryable failures. */
|
|
105
|
+
var WorkflowRetryableError = class WorkflowRetryableError extends WorkflowError {
|
|
106
|
+
retryAt;
|
|
107
|
+
retryDelay;
|
|
108
|
+
constructor(message, options, context) {
|
|
109
|
+
if (options.retryAt !== void 0 && options.retryDelay !== void 0) WorkflowOptionsError.retryableErrorDelayConflict();
|
|
110
|
+
super(message, {
|
|
111
|
+
...options,
|
|
112
|
+
code: options.code ?? WorkflowErrorCode.RETRYABLE_FAILURE,
|
|
113
|
+
details: {
|
|
114
|
+
...options.details,
|
|
115
|
+
...options.retryAt === void 0 ? {} : { retryAt: options.retryAt.toString() },
|
|
116
|
+
...options.retryDelay === void 0 ? {} : { retryDelay: options.retryDelay.toString() }
|
|
117
|
+
}
|
|
118
|
+
}, context);
|
|
119
|
+
this.name = "WorkflowRetryableError";
|
|
120
|
+
this.retryAt = options.retryAt;
|
|
121
|
+
this.retryDelay = options.retryDelay;
|
|
122
|
+
}
|
|
123
|
+
static lockAlreadyHeld(key, options) {
|
|
124
|
+
throw new WorkflowRetryableError(`Workflow lock is already held: ${key}`, {
|
|
125
|
+
...options,
|
|
126
|
+
code: WorkflowErrorCode.LOCK_ALREADY_HELD,
|
|
127
|
+
details: {
|
|
128
|
+
...options.details,
|
|
129
|
+
key
|
|
130
|
+
}
|
|
131
|
+
}, WorkflowRetryableError.lockAlreadyHeld);
|
|
132
|
+
}
|
|
133
|
+
static isLockAlreadyHeld(error, key) {
|
|
134
|
+
const record = workflowErrorRecordView(error);
|
|
135
|
+
return record?.code === WorkflowErrorCode.LOCK_ALREADY_HELD && (key === void 0 || record.details?.key === key);
|
|
136
|
+
}
|
|
137
|
+
static failed(message, options) {
|
|
138
|
+
throw new WorkflowRetryableError(message, options, WorkflowRetryableError.failed);
|
|
139
|
+
}
|
|
140
|
+
static create(message, options) {
|
|
141
|
+
return new WorkflowRetryableError(message, options, WorkflowRetryableError.create);
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
/** Error thrown for replay divergence failures. */
|
|
145
|
+
var WorkflowReplayDivergenceError = class WorkflowReplayDivergenceError extends WorkflowError {
|
|
146
|
+
expectedStepId;
|
|
147
|
+
actualStepId;
|
|
148
|
+
constructor(message, options, context) {
|
|
149
|
+
super(`Workflow replay diverged: ${message}`, {
|
|
150
|
+
code: WorkflowErrorCode.REPLAY_DIVERGED,
|
|
151
|
+
details: {
|
|
152
|
+
...options.expectedStepId === void 0 ? {} : { expectedStepId: options.expectedStepId },
|
|
153
|
+
...options.actualStepId === void 0 ? {} : { actualStepId: options.actualStepId }
|
|
154
|
+
}
|
|
155
|
+
}, context);
|
|
156
|
+
this.name = "WorkflowReplayDivergenceError";
|
|
157
|
+
this.expectedStepId = options.expectedStepId;
|
|
158
|
+
this.actualStepId = options.actualStepId;
|
|
159
|
+
}
|
|
160
|
+
static diverged(message, options) {
|
|
161
|
+
throw new WorkflowReplayDivergenceError(message, options, WorkflowReplayDivergenceError.diverged);
|
|
162
|
+
}
|
|
163
|
+
static create(message, options) {
|
|
164
|
+
return new WorkflowReplayDivergenceError(message, options, WorkflowReplayDivergenceError.create);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
//#endregion
|
|
168
|
+
export { WorkflowDurationError, WorkflowNonRetryableError, WorkflowPermanentFailureError, WorkflowReplayDivergenceError, WorkflowRetryableError, WorkflowSerializationError };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { WorkflowErrorCode } from "../types/error-code.mjs";
|
|
2
|
+
import { WorkflowErrorDetails } from "../types/error.mjs";
|
|
3
|
+
import { WorkflowOptionsError } from "./base.mjs";
|
|
4
|
+
//#region src/errors/hook.d.ts
|
|
5
|
+
/** Errors caused by invalid hook or webhook tokens and hook state. */
|
|
6
|
+
declare class WorkflowHookError extends WorkflowOptionsError {
|
|
7
|
+
constructor(message: string, code: WorkflowErrorCode, details?: WorkflowErrorDetails, context?: Function);
|
|
8
|
+
static tokenInvalid(this: void): never;
|
|
9
|
+
static webhookTokenInvalid(this: void): never;
|
|
10
|
+
static tokenNotUnique(this: void, kind: "hook" | "webhook", name: string): never;
|
|
11
|
+
static waitingStepMissing(this: void): never;
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { WorkflowHookError };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { WorkflowErrorCode } from "../types/error-code.mjs";
|
|
2
|
+
import { WorkflowOptionsError } from "./base.mjs";
|
|
3
|
+
//#region src/errors/hook.ts
|
|
4
|
+
/** Errors caused by invalid hook or webhook tokens and hook state. */
|
|
5
|
+
var WorkflowHookError = class WorkflowHookError extends WorkflowOptionsError {
|
|
6
|
+
constructor(message, code, details, context) {
|
|
7
|
+
super(message, context, {
|
|
8
|
+
code,
|
|
9
|
+
details
|
|
10
|
+
});
|
|
11
|
+
this.name = "WorkflowHookError";
|
|
12
|
+
}
|
|
13
|
+
static tokenInvalid() {
|
|
14
|
+
throw new WorkflowHookError("Workflow hook token is invalid", WorkflowErrorCode.HOOK_TOKEN_INVALID, void 0, WorkflowHookError.tokenInvalid);
|
|
15
|
+
}
|
|
16
|
+
static webhookTokenInvalid() {
|
|
17
|
+
throw new WorkflowHookError("Workflow webhook token is invalid", WorkflowErrorCode.WEBHOOK_TOKEN_INVALID, void 0, WorkflowHookError.webhookTokenInvalid);
|
|
18
|
+
}
|
|
19
|
+
static tokenNotUnique(kind, name) {
|
|
20
|
+
throw new WorkflowHookError(`Workflow ${kind} token must be unique within a run: ${name}`, WorkflowErrorCode.HOOK_TOKEN_NOT_UNIQUE, {
|
|
21
|
+
kind,
|
|
22
|
+
name
|
|
23
|
+
}, WorkflowHookError.tokenNotUnique);
|
|
24
|
+
}
|
|
25
|
+
static waitingStepMissing() {
|
|
26
|
+
throw new WorkflowHookError("Workflow hook inspection is missing a waiting step id", WorkflowErrorCode.HOOK_WAITING_STEP_MISSING, void 0, WorkflowHookError.waitingStepMissing);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
export { WorkflowHookError };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { WorkflowError } from "./base.mjs";
|
|
2
|
+
//#region src/errors/implementation.d.ts
|
|
3
|
+
/** Error thrown for implementation not found failures. */
|
|
4
|
+
declare class WorkflowImplementationNotFoundError extends WorkflowError {
|
|
5
|
+
readonly workflowName: string;
|
|
6
|
+
readonly workflowVersion: string | undefined;
|
|
7
|
+
constructor(workflowName: string, workflowVersion?: string, context?: Function);
|
|
8
|
+
static create(this: void, workflowName: string, workflowVersion?: string): WorkflowImplementationNotFoundError;
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { WorkflowImplementationNotFoundError };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { WorkflowErrorCode } from "../types/error-code.mjs";
|
|
2
|
+
import { WorkflowError } from "./base.mjs";
|
|
3
|
+
//#region src/errors/implementation.ts
|
|
4
|
+
/** Error thrown for implementation not found failures. */
|
|
5
|
+
var WorkflowImplementationNotFoundError = class WorkflowImplementationNotFoundError extends WorkflowError {
|
|
6
|
+
workflowName;
|
|
7
|
+
workflowVersion;
|
|
8
|
+
constructor(workflowName, workflowVersion, context) {
|
|
9
|
+
super(workflowVersion === void 0 ? `Workflow implementation not found: ${workflowName}` : `Workflow implementation not found: ${workflowName}@${workflowVersion}`, {
|
|
10
|
+
code: WorkflowErrorCode.IMPLEMENTATION_NOT_FOUND,
|
|
11
|
+
details: {
|
|
12
|
+
workflowName,
|
|
13
|
+
...workflowVersion === void 0 ? {} : { workflowVersion }
|
|
14
|
+
}
|
|
15
|
+
}, context);
|
|
16
|
+
this.name = "WorkflowImplementationNotFoundError";
|
|
17
|
+
this.workflowName = workflowName;
|
|
18
|
+
this.workflowVersion = workflowVersion;
|
|
19
|
+
}
|
|
20
|
+
static create(workflowName, workflowVersion) {
|
|
21
|
+
return new WorkflowImplementationNotFoundError(workflowName, workflowVersion, WorkflowImplementationNotFoundError.create);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
//#endregion
|
|
25
|
+
export { WorkflowImplementationNotFoundError };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { WorkflowErrorCode } from "../types/error-code.mjs";
|
|
2
|
+
import { WorkflowErrorDetails } from "../types/error.mjs";
|
|
3
|
+
import { WorkflowOptionsError, WorkflowStateError } from "./base.mjs";
|
|
4
|
+
//#region src/errors/lock.d.ts
|
|
5
|
+
/** Errors caused by invalid persisted lock state or exhausted lock updates. */
|
|
6
|
+
declare class WorkflowLockStateError extends WorkflowStateError {
|
|
7
|
+
constructor(message: string, code: WorkflowErrorCode, details?: WorkflowErrorDetails, context?: Function);
|
|
8
|
+
static namespaceMismatch(this: void, actual: string, expected: string): never;
|
|
9
|
+
static keyChangeRejected(this: void): never;
|
|
10
|
+
static currentRecordInvalid(this: void): never;
|
|
11
|
+
static nextRecordInvalid(this: void): never;
|
|
12
|
+
static acquireConflictExhausted(this: void, key: string): never;
|
|
13
|
+
static notFound(this: void, key: string): never;
|
|
14
|
+
static releaseConflictExhausted(this: void, key: string): never;
|
|
15
|
+
static staleReleaseConflictExhausted(this: void, key: string): never;
|
|
16
|
+
}
|
|
17
|
+
/** Errors caused by invalid lock operations or lock options. */
|
|
18
|
+
declare class WorkflowLockError extends WorkflowOptionsError {
|
|
19
|
+
constructor(message: string, code: WorkflowErrorCode, details?: WorkflowErrorDetails, context?: Function);
|
|
20
|
+
static alreadyHeld(this: void, key: string): never;
|
|
21
|
+
static holderMismatch(this: void, key: string): never;
|
|
22
|
+
static alreadyReleased(this: void, key: string): never;
|
|
23
|
+
static notStale(this: void, key: string): never;
|
|
24
|
+
static waitDeadlineConflict(this: void): never;
|
|
25
|
+
static timeoutRequiresWait(this: void): never;
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { WorkflowLockError, WorkflowLockStateError };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { WorkflowErrorCode } from "../types/error-code.mjs";
|
|
2
|
+
import { WorkflowOptionsError, WorkflowStateError } from "./base.mjs";
|
|
3
|
+
//#region src/errors/lock.ts
|
|
4
|
+
/** Errors caused by invalid persisted lock state or exhausted lock updates. */
|
|
5
|
+
var WorkflowLockStateError = class WorkflowLockStateError extends WorkflowStateError {
|
|
6
|
+
constructor(message, code, details, context) {
|
|
7
|
+
super(message, context, {
|
|
8
|
+
code,
|
|
9
|
+
details
|
|
10
|
+
});
|
|
11
|
+
this.name = "WorkflowLockStateError";
|
|
12
|
+
}
|
|
13
|
+
static namespaceMismatch(actual, expected) {
|
|
14
|
+
throw new WorkflowLockStateError(`Workflow lock namespace mismatch: ${actual} !== ${expected}`, WorkflowErrorCode.LOCK_NAMESPACE_MISMATCH, {
|
|
15
|
+
actual,
|
|
16
|
+
expected
|
|
17
|
+
}, WorkflowLockStateError.namespaceMismatch);
|
|
18
|
+
}
|
|
19
|
+
static keyChangeRejected() {
|
|
20
|
+
throw new WorkflowLockStateError("Workflow lock key cannot change", WorkflowErrorCode.LOCK_KEY_CHANGE_REJECTED, void 0, WorkflowLockStateError.keyChangeRejected);
|
|
21
|
+
}
|
|
22
|
+
static currentRecordInvalid() {
|
|
23
|
+
throw new WorkflowLockStateError("Current workflow lock record is invalid", WorkflowErrorCode.LOCK_CURRENT_RECORD_INVALID, void 0, WorkflowLockStateError.currentRecordInvalid);
|
|
24
|
+
}
|
|
25
|
+
static nextRecordInvalid() {
|
|
26
|
+
throw new WorkflowLockStateError("Next workflow lock record is invalid", WorkflowErrorCode.LOCK_NEXT_RECORD_INVALID, void 0, WorkflowLockStateError.nextRecordInvalid);
|
|
27
|
+
}
|
|
28
|
+
static acquireConflictExhausted(key) {
|
|
29
|
+
throw new WorkflowLockStateError(`Failed to acquire workflow lock ${key}`, WorkflowErrorCode.LOCK_ACQUIRE_CONFLICT_EXHAUSTED, { key }, WorkflowLockStateError.acquireConflictExhausted);
|
|
30
|
+
}
|
|
31
|
+
static notFound(key) {
|
|
32
|
+
throw new WorkflowLockStateError(`Workflow lock not found: ${key}`, WorkflowErrorCode.LOCK_NOT_FOUND, { key }, WorkflowLockStateError.notFound);
|
|
33
|
+
}
|
|
34
|
+
static releaseConflictExhausted(key) {
|
|
35
|
+
throw new WorkflowLockStateError(`Failed to release workflow lock ${key}`, WorkflowErrorCode.LOCK_RELEASE_CONFLICT_EXHAUSTED, { key }, WorkflowLockStateError.releaseConflictExhausted);
|
|
36
|
+
}
|
|
37
|
+
static staleReleaseConflictExhausted(key) {
|
|
38
|
+
throw new WorkflowLockStateError(`Failed to release stale workflow lock ${key}`, WorkflowErrorCode.LOCK_STALE_RELEASE_CONFLICT_EXHAUSTED, { key }, WorkflowLockStateError.staleReleaseConflictExhausted);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
/** Errors caused by invalid lock operations or lock options. */
|
|
42
|
+
var WorkflowLockError = class WorkflowLockError extends WorkflowOptionsError {
|
|
43
|
+
constructor(message, code, details, context) {
|
|
44
|
+
super(message, context, {
|
|
45
|
+
code,
|
|
46
|
+
details
|
|
47
|
+
});
|
|
48
|
+
this.name = "WorkflowLockError";
|
|
49
|
+
}
|
|
50
|
+
static alreadyHeld(key) {
|
|
51
|
+
throw new WorkflowLockError(`Workflow lock is already held: ${key}`, WorkflowErrorCode.LOCK_ALREADY_HELD_WITHOUT_WAIT, { key }, WorkflowLockError.alreadyHeld);
|
|
52
|
+
}
|
|
53
|
+
static holderMismatch(key) {
|
|
54
|
+
throw new WorkflowLockError(`Workflow lock holder mismatch: ${key}`, WorkflowErrorCode.LOCK_HOLDER_MISMATCH, { key }, WorkflowLockError.holderMismatch);
|
|
55
|
+
}
|
|
56
|
+
static alreadyReleased(key) {
|
|
57
|
+
throw new WorkflowLockError(`Workflow lock is already released: ${key}`, WorkflowErrorCode.LOCK_ALREADY_RELEASED, { key }, WorkflowLockError.alreadyReleased);
|
|
58
|
+
}
|
|
59
|
+
static notStale(key) {
|
|
60
|
+
throw new WorkflowLockError(`Workflow lock is not stale: ${key}`, WorkflowErrorCode.LOCK_NOT_STALE, { key }, WorkflowLockError.notStale);
|
|
61
|
+
}
|
|
62
|
+
static waitDeadlineConflict() {
|
|
63
|
+
throw new WorkflowLockError("Workflow lock options cannot include both waitTimeout and waitDeadlineAt", WorkflowErrorCode.LOCK_WAIT_DEADLINE_CONFLICT, void 0, WorkflowLockError.waitDeadlineConflict);
|
|
64
|
+
}
|
|
65
|
+
static timeoutRequiresWait() {
|
|
66
|
+
throw new WorkflowLockError("Workflow lock timeout options require wait: true", WorkflowErrorCode.LOCK_TIMEOUT_REQUIRES_WAIT, void 0, WorkflowLockError.timeoutRequiresWait);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
//#endregion
|
|
70
|
+
export { WorkflowLockError, WorkflowLockStateError };
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { MessageId } from "../types/message-id.mjs";
|
|
2
|
+
import { RunId } from "../types/run-id.mjs";
|
|
3
|
+
import { StepId } from "../types/step-id.mjs";
|
|
4
|
+
import "../types/step.mjs";
|
|
5
|
+
import { WorkflowTerminalRunStatus } from "../types/run.mjs";
|
|
6
|
+
import { WorkflowMessageError } from "./base.mjs";
|
|
7
|
+
//#region src/errors/message.d.ts
|
|
8
|
+
/** Error thrown for message wait timeout failures. */
|
|
9
|
+
declare class WorkflowMessageWaitTimeoutError extends WorkflowMessageError {
|
|
10
|
+
readonly runId: RunId;
|
|
11
|
+
readonly stepId: StepId;
|
|
12
|
+
readonly stepName: string;
|
|
13
|
+
readonly messageId: MessageId;
|
|
14
|
+
readonly timeoutAt: Temporal.Instant;
|
|
15
|
+
constructor(options: {
|
|
16
|
+
readonly runId: RunId;
|
|
17
|
+
readonly stepId: StepId;
|
|
18
|
+
readonly stepName: string;
|
|
19
|
+
readonly messageId: MessageId;
|
|
20
|
+
readonly timeoutAt: Temporal.Instant;
|
|
21
|
+
}, context?: Function);
|
|
22
|
+
static timedOut(this: void, options: {
|
|
23
|
+
readonly runId: RunId;
|
|
24
|
+
readonly stepId: StepId;
|
|
25
|
+
readonly stepName: string;
|
|
26
|
+
readonly messageId: MessageId;
|
|
27
|
+
readonly timeoutAt: Temporal.Instant;
|
|
28
|
+
}): never;
|
|
29
|
+
static create(this: void, options: {
|
|
30
|
+
readonly runId: RunId;
|
|
31
|
+
readonly stepId: StepId;
|
|
32
|
+
readonly stepName: string;
|
|
33
|
+
readonly messageId: MessageId;
|
|
34
|
+
readonly timeoutAt: Temporal.Instant;
|
|
35
|
+
}): WorkflowMessageWaitTimeoutError;
|
|
36
|
+
}
|
|
37
|
+
/** Error thrown for hook disposed failures. */
|
|
38
|
+
declare class WorkflowHookDisposedError extends WorkflowMessageError {
|
|
39
|
+
readonly runId: RunId;
|
|
40
|
+
readonly stepId: StepId;
|
|
41
|
+
readonly stepName: string;
|
|
42
|
+
readonly messageId: MessageId;
|
|
43
|
+
constructor(options: {
|
|
44
|
+
readonly runId: RunId;
|
|
45
|
+
readonly stepId: StepId;
|
|
46
|
+
readonly stepName: string;
|
|
47
|
+
readonly messageId: MessageId;
|
|
48
|
+
}, context?: Function);
|
|
49
|
+
static disposed(this: void, options: {
|
|
50
|
+
readonly runId: RunId;
|
|
51
|
+
readonly stepId: StepId;
|
|
52
|
+
readonly stepName: string;
|
|
53
|
+
readonly messageId: MessageId;
|
|
54
|
+
}): never;
|
|
55
|
+
static create(this: void, options: {
|
|
56
|
+
readonly runId: RunId;
|
|
57
|
+
readonly stepId: StepId;
|
|
58
|
+
readonly stepName: string;
|
|
59
|
+
readonly messageId: MessageId;
|
|
60
|
+
}): WorkflowHookDisposedError;
|
|
61
|
+
static isDisposed(error: unknown): boolean;
|
|
62
|
+
}
|
|
63
|
+
/** Error thrown for message delivery failures. */
|
|
64
|
+
declare class WorkflowMessageDeliveryError extends WorkflowMessageError {
|
|
65
|
+
readonly runId: RunId;
|
|
66
|
+
readonly status: WorkflowTerminalRunStatus;
|
|
67
|
+
readonly messageId: MessageId;
|
|
68
|
+
constructor(options: {
|
|
69
|
+
readonly runId: RunId;
|
|
70
|
+
readonly status: WorkflowTerminalRunStatus;
|
|
71
|
+
readonly messageId: MessageId;
|
|
72
|
+
}, context?: Function);
|
|
73
|
+
static cannotSend(this: void, options: {
|
|
74
|
+
readonly runId: RunId;
|
|
75
|
+
readonly status: WorkflowTerminalRunStatus;
|
|
76
|
+
readonly messageId: MessageId;
|
|
77
|
+
}): never;
|
|
78
|
+
static create(this: void, options: {
|
|
79
|
+
readonly runId: RunId;
|
|
80
|
+
readonly status: WorkflowTerminalRunStatus;
|
|
81
|
+
readonly messageId: MessageId;
|
|
82
|
+
}): WorkflowMessageDeliveryError;
|
|
83
|
+
}
|
|
84
|
+
/** Error thrown for message idempotency conflict failures. */
|
|
85
|
+
declare class WorkflowMessageIdempotencyConflictError extends WorkflowMessageError {
|
|
86
|
+
readonly runId: RunId;
|
|
87
|
+
readonly messageId: MessageId;
|
|
88
|
+
readonly idempotencyKey: string;
|
|
89
|
+
constructor(options: {
|
|
90
|
+
readonly runId: RunId;
|
|
91
|
+
readonly messageId: MessageId;
|
|
92
|
+
readonly idempotencyKey: string;
|
|
93
|
+
}, context?: Function);
|
|
94
|
+
static conflict(this: void, options: {
|
|
95
|
+
readonly runId: RunId;
|
|
96
|
+
readonly messageId: MessageId;
|
|
97
|
+
readonly idempotencyKey: string;
|
|
98
|
+
}): never;
|
|
99
|
+
static create(this: void, options: {
|
|
100
|
+
readonly runId: RunId;
|
|
101
|
+
readonly messageId: MessageId;
|
|
102
|
+
readonly idempotencyKey: string;
|
|
103
|
+
}): WorkflowMessageIdempotencyConflictError;
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
106
|
+
export { WorkflowHookDisposedError, WorkflowMessageDeliveryError, WorkflowMessageIdempotencyConflictError, WorkflowMessageWaitTimeoutError };
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { WorkflowErrorCode } from "../types/error-code.mjs";
|
|
2
|
+
import { WorkflowMessageError } from "./base.mjs";
|
|
3
|
+
import { workflowErrorRecordView } from "./record-view.mjs";
|
|
4
|
+
//#region src/errors/message.ts
|
|
5
|
+
/** Error thrown for message wait timeout failures. */
|
|
6
|
+
var WorkflowMessageWaitTimeoutError = class WorkflowMessageWaitTimeoutError extends WorkflowMessageError {
|
|
7
|
+
runId;
|
|
8
|
+
stepId;
|
|
9
|
+
stepName;
|
|
10
|
+
messageId;
|
|
11
|
+
timeoutAt;
|
|
12
|
+
constructor(options, context) {
|
|
13
|
+
super(`Workflow message wait timed out: ${options.messageId} for run ${options.runId} step ${options.stepId} at ${options.timeoutAt.toString()}`, {
|
|
14
|
+
code: WorkflowErrorCode.MESSAGE_WAIT_TIMEOUT,
|
|
15
|
+
details: {
|
|
16
|
+
runId: options.runId,
|
|
17
|
+
stepId: options.stepId,
|
|
18
|
+
stepName: options.stepName,
|
|
19
|
+
messageId: options.messageId,
|
|
20
|
+
timeoutAt: options.timeoutAt.toString()
|
|
21
|
+
}
|
|
22
|
+
}, context);
|
|
23
|
+
this.name = "WorkflowMessageWaitTimeoutError";
|
|
24
|
+
this.runId = options.runId;
|
|
25
|
+
this.stepId = options.stepId;
|
|
26
|
+
this.stepName = options.stepName;
|
|
27
|
+
this.messageId = options.messageId;
|
|
28
|
+
this.timeoutAt = options.timeoutAt;
|
|
29
|
+
}
|
|
30
|
+
static timedOut(options) {
|
|
31
|
+
throw new WorkflowMessageWaitTimeoutError(options, WorkflowMessageWaitTimeoutError.timedOut);
|
|
32
|
+
}
|
|
33
|
+
static create(options) {
|
|
34
|
+
return new WorkflowMessageWaitTimeoutError(options, WorkflowMessageWaitTimeoutError.create);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
/** Error thrown for hook disposed failures. */
|
|
38
|
+
var WorkflowHookDisposedError = class WorkflowHookDisposedError extends WorkflowMessageError {
|
|
39
|
+
runId;
|
|
40
|
+
stepId;
|
|
41
|
+
stepName;
|
|
42
|
+
messageId;
|
|
43
|
+
constructor(options, context) {
|
|
44
|
+
super(`Workflow hook disposed: ${options.messageId} for run ${options.runId} step ${options.stepId}`, {
|
|
45
|
+
code: WorkflowErrorCode.HOOK_DISPOSED,
|
|
46
|
+
details: {
|
|
47
|
+
runId: options.runId,
|
|
48
|
+
stepId: options.stepId,
|
|
49
|
+
stepName: options.stepName,
|
|
50
|
+
messageId: options.messageId
|
|
51
|
+
}
|
|
52
|
+
}, context);
|
|
53
|
+
this.name = "WorkflowHookDisposedError";
|
|
54
|
+
this.runId = options.runId;
|
|
55
|
+
this.stepId = options.stepId;
|
|
56
|
+
this.stepName = options.stepName;
|
|
57
|
+
this.messageId = options.messageId;
|
|
58
|
+
}
|
|
59
|
+
static disposed(options) {
|
|
60
|
+
throw new WorkflowHookDisposedError(options, WorkflowHookDisposedError.disposed);
|
|
61
|
+
}
|
|
62
|
+
static create(options) {
|
|
63
|
+
return new WorkflowHookDisposedError(options, WorkflowHookDisposedError.create);
|
|
64
|
+
}
|
|
65
|
+
static isDisposed(error) {
|
|
66
|
+
return workflowErrorRecordView(error)?.code === WorkflowErrorCode.HOOK_DISPOSED;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
/** Error thrown for message delivery failures. */
|
|
70
|
+
var WorkflowMessageDeliveryError = class WorkflowMessageDeliveryError extends WorkflowMessageError {
|
|
71
|
+
runId;
|
|
72
|
+
status;
|
|
73
|
+
messageId;
|
|
74
|
+
constructor(options, context) {
|
|
75
|
+
super(`Cannot send workflow message ${options.messageId} to ${options.status} run: ${options.runId}`, {
|
|
76
|
+
code: WorkflowErrorCode.MESSAGE_DELIVERY_REJECTED,
|
|
77
|
+
details: {
|
|
78
|
+
runId: options.runId,
|
|
79
|
+
status: options.status,
|
|
80
|
+
messageId: options.messageId
|
|
81
|
+
}
|
|
82
|
+
}, context);
|
|
83
|
+
this.name = "WorkflowMessageDeliveryError";
|
|
84
|
+
this.runId = options.runId;
|
|
85
|
+
this.status = options.status;
|
|
86
|
+
this.messageId = options.messageId;
|
|
87
|
+
}
|
|
88
|
+
static cannotSend(options) {
|
|
89
|
+
throw new WorkflowMessageDeliveryError(options, WorkflowMessageDeliveryError.cannotSend);
|
|
90
|
+
}
|
|
91
|
+
static create(options) {
|
|
92
|
+
return new WorkflowMessageDeliveryError(options, WorkflowMessageDeliveryError.create);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
/** Error thrown for message idempotency conflict failures. */
|
|
96
|
+
var WorkflowMessageIdempotencyConflictError = class WorkflowMessageIdempotencyConflictError extends WorkflowMessageError {
|
|
97
|
+
runId;
|
|
98
|
+
messageId;
|
|
99
|
+
idempotencyKey;
|
|
100
|
+
constructor(options, context) {
|
|
101
|
+
super(`Workflow message idempotency key conflict: ${options.idempotencyKey} for message ${options.messageId} on run ${options.runId}`, {
|
|
102
|
+
code: WorkflowErrorCode.MESSAGE_IDEMPOTENCY_CONFLICT,
|
|
103
|
+
details: {
|
|
104
|
+
runId: options.runId,
|
|
105
|
+
messageId: options.messageId,
|
|
106
|
+
idempotencyKey: options.idempotencyKey
|
|
107
|
+
}
|
|
108
|
+
}, context);
|
|
109
|
+
this.name = "WorkflowMessageIdempotencyConflictError";
|
|
110
|
+
this.runId = options.runId;
|
|
111
|
+
this.messageId = options.messageId;
|
|
112
|
+
this.idempotencyKey = options.idempotencyKey;
|
|
113
|
+
}
|
|
114
|
+
static conflict(options) {
|
|
115
|
+
throw new WorkflowMessageIdempotencyConflictError(options, WorkflowMessageIdempotencyConflictError.conflict);
|
|
116
|
+
}
|
|
117
|
+
static create(options) {
|
|
118
|
+
return new WorkflowMessageIdempotencyConflictError(options, WorkflowMessageIdempotencyConflictError.create);
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
//#endregion
|
|
122
|
+
export { WorkflowHookDisposedError, WorkflowMessageDeliveryError, WorkflowMessageIdempotencyConflictError, WorkflowMessageWaitTimeoutError };
|