@temelj/workflow 0.0.0-alpha.3 → 0.0.0-alpha.4
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/README.md +394 -2
- package/dist/attributes.d.mts +11 -9
- package/dist/attributes.mjs +23 -5
- package/dist/bundle.d.mts +5 -23
- package/dist/bundle.mjs +2 -18
- package/dist/client/create.d.mts +26 -23
- package/dist/client/create.mjs +26 -32
- package/dist/client/facades.d.mts +12 -18
- package/dist/client/facades.mjs +102 -93
- package/dist/client/mod.mjs +1 -2
- package/dist/client/run-handle.d.mts +17 -54
- package/dist/client/run-handle.mjs +35 -105
- package/dist/client/worker-options.d.mts +8 -8
- package/dist/client/worker-options.mjs +11 -11
- package/dist/cloudflare/cloudflare.d.mts +4 -5
- package/dist/cloudflare/codec.d.mts +28 -13
- package/dist/cloudflare/codec.mjs +40 -17
- package/dist/cloudflare/entrypoint.d.mts +3 -4
- package/dist/cloudflare/entrypoint.mjs +4 -3
- package/dist/cloudflare/execution.d.mts +3 -4
- package/dist/cloudflare/execution.mjs +20 -13
- package/dist/cloudflare/host.d.mts +6 -7
- package/dist/cloudflare/host.mjs +7 -6
- package/dist/cloudflare/mod.d.mts +4 -4
- package/dist/cloudflare/mod.mjs +2 -2
- package/dist/cloudflare/name.d.mts +3 -4
- package/dist/cloudflare/name.mjs +3 -3
- package/dist/cloudflare/registry.d.mts +3 -23
- package/dist/cloudflare/registry.mjs +2 -20
- package/dist/cloudflare/runtime.d.mts +11 -18
- package/dist/cloudflare/runtime.mjs +52 -73
- package/dist/cloudflare/step.d.mts +6 -6
- package/dist/cloudflare/step.mjs +69 -57
- package/dist/cloudflare/types.d.mts +17 -36
- package/dist/collection.d.mts +8 -11
- package/dist/collection.mjs +10 -14
- package/dist/compiled-function.d.mts +14 -19
- package/dist/compiled-function.mjs +12 -24
- package/dist/compiled.d.mts +4 -0
- package/dist/compiled.mjs +4 -0
- package/dist/compiler/ast.d.mts +26 -0
- package/dist/{vite → compiler}/ast.mjs +24 -16
- package/dist/{vite → compiler}/error.d.mts +4 -6
- package/dist/{vite → compiler}/error.mjs +14 -16
- package/dist/compiler/manifest.d.mts +6 -0
- package/dist/{vite → compiler}/manifest.mjs +9 -7
- package/dist/compiler/plugin.d.mts +7 -0
- package/dist/{vite → compiler}/plugin.mjs +45 -46
- package/dist/compiler/safety.d.mts +12 -0
- package/dist/{vite → compiler}/safety.mjs +5 -11
- package/dist/{vite → compiler}/source-edit.d.mts +3 -4
- package/dist/{vite → compiler}/source-edit.mjs +1 -1
- package/dist/{vite → compiler}/source-map.d.mts +4 -3
- package/dist/{vite → compiler}/source-map.mjs +3 -3
- package/dist/compiler/source.d.mts +7 -0
- package/dist/{vite → compiler}/source.mjs +1 -1
- package/dist/compiler/transform.d.mts +12 -0
- package/dist/{vite → compiler}/transform.mjs +37 -38
- package/dist/definition.d.mts +17 -25
- package/dist/definition.mjs +19 -35
- package/dist/engine/child-workflow.d.mts +5 -9
- package/dist/engine/child-workflow.mjs +46 -67
- package/dist/engine/command-identity.d.mts +5 -6
- package/dist/engine/command-identity.mjs +9 -5
- package/dist/engine/context.d.mts +17 -0
- package/dist/engine/create.d.mts +36 -94
- package/dist/engine/create.mjs +55 -260
- package/dist/engine/deterministic.d.mts +6 -11
- package/dist/engine/deterministic.mjs +47 -68
- package/dist/engine/durable-command.d.mts +5 -5
- package/dist/engine/durable-command.mjs +2 -2
- package/dist/engine/execution-service.d.mts +20 -24
- package/dist/engine/execution-service.mjs +54 -52
- package/dist/engine/hooks.d.mts +17 -39
- package/dist/engine/hooks.mjs +73 -94
- package/dist/engine/inspection.d.mts +23 -15
- package/dist/engine/inspection.mjs +55 -29
- package/dist/engine/lifecycle.d.mts +6 -12
- package/dist/engine/lifecycle.mjs +5 -5
- package/dist/engine/lock-replay.d.mts +8 -15
- package/dist/engine/lock-replay.mjs +12 -25
- package/dist/engine/lock.d.mts +10 -15
- package/dist/engine/lock.mjs +65 -51
- package/dist/engine/message.d.mts +14 -34
- package/dist/engine/message.mjs +94 -127
- package/dist/engine/observation.d.mts +9 -11
- package/dist/engine/observation.mjs +18 -27
- package/dist/engine/replay.d.mts +18 -19
- package/dist/engine/replay.mjs +32 -56
- package/dist/engine/resume.d.mts +16 -0
- package/dist/engine/resume.mjs +24 -0
- package/dist/engine/retry.d.mts +15 -19
- package/dist/engine/retry.mjs +17 -17
- package/dist/engine/run-data.d.mts +4 -8
- package/dist/engine/run-data.mjs +24 -22
- package/dist/engine/run-service.d.mts +24 -33
- package/dist/engine/run-service.mjs +125 -93
- package/dist/engine/run-utils.d.mts +11 -13
- package/dist/engine/run-utils.mjs +23 -46
- package/dist/engine/schedule.d.mts +8 -22
- package/dist/engine/schedule.mjs +37 -34
- package/dist/engine/serialization.d.mts +9 -6
- package/dist/engine/serialization.mjs +30 -21
- package/dist/engine/signals.d.mts +23 -0
- package/dist/engine/signals.mjs +41 -0
- package/dist/engine/start.d.mts +18 -0
- package/dist/engine/start.mjs +88 -0
- package/dist/engine/state.d.mts +37 -67
- package/dist/engine/state.mjs +119 -280
- package/dist/engine/step-api.d.mts +5 -8
- package/dist/engine/step-api.mjs +16 -16
- package/dist/engine/stream-reader.d.mts +12 -0
- package/dist/engine/stream-reader.mjs +154 -0
- package/dist/engine/stream.d.mts +9 -54
- package/dist/engine/stream.mjs +54 -196
- package/dist/engine/summary/recovery.d.mts +35 -0
- package/dist/engine/summary/recovery.mjs +363 -0
- package/dist/engine/summary/runs.d.mts +43 -0
- package/dist/engine/summary/runs.mjs +294 -0
- package/dist/engine/summary/step-attempts.d.mts +5 -10
- package/dist/engine/summary/step-attempts.mjs +157 -36
- package/dist/engine/summary/tally.d.mts +44 -0
- package/dist/engine/summary/tally.mjs +142 -0
- package/dist/engine/task.d.mts +4 -5
- package/dist/engine/task.mjs +40 -48
- package/dist/errors/base.d.mts +17 -77
- package/dist/errors/base.mjs +26 -327
- package/dist/errors/capability.d.mts +3 -6
- package/dist/errors/capability.mjs +4 -8
- package/dist/errors/codes.d.mts +116 -0
- package/dist/{types/error-code.mjs → errors/codes.mjs} +2 -17
- package/dist/errors/definition.d.mts +3 -17
- package/dist/errors/definition.mjs +5 -42
- package/dist/errors/failures.d.mts +17 -51
- package/dist/errors/failures.mjs +35 -102
- package/dist/errors/hook.d.mts +5 -9
- package/dist/errors/hook.mjs +4 -16
- package/dist/errors/implementation.d.mts +3 -6
- package/dist/errors/implementation.mjs +7 -12
- package/dist/errors/lock.d.mts +7 -20
- package/dist/errors/lock.mjs +8 -44
- package/dist/errors/message.d.mts +14 -59
- package/dist/errors/message.mjs +13 -39
- package/dist/errors/mod.d.mts +4 -5
- package/dist/errors/mod.mjs +5 -7
- package/dist/errors/records.d.mts +10 -4
- package/dist/errors/records.mjs +256 -256
- package/dist/errors/run.d.mts +27 -68
- package/dist/errors/run.mjs +31 -85
- package/dist/errors/schedule.d.mts +7 -18
- package/dist/errors/schedule.mjs +7 -39
- package/dist/errors/step.d.mts +12 -45
- package/dist/errors/step.mjs +13 -34
- package/dist/errors/stream.d.mts +8 -16
- package/dist/errors/stream.mjs +7 -41
- package/dist/esbuild.d.mts +6 -4
- package/dist/esbuild.mjs +2 -1
- package/dist/events/descriptors.d.mts +12 -241
- package/dist/events/descriptors.mjs +12 -5
- package/dist/history/projection.d.mts +4 -6
- package/dist/history/projection.mjs +22 -26
- package/dist/history/replay-projection.d.mts +44 -48
- package/dist/history/replay-projection.mjs +41 -50
- package/dist/history/{mod.d.mts → replay.d.mts} +16 -21
- package/dist/history/{mod.mjs → replay.mjs} +21 -25
- package/dist/history/sequencer.d.mts +10 -11
- package/dist/history/sequencer.mjs +11 -7
- package/dist/history/step-attempts.d.mts +4 -7
- package/dist/history/step-attempts.mjs +8 -9
- package/dist/history/timeline.d.mts +4 -13
- package/dist/history/timeline.mjs +46 -265
- package/dist/history/validator.d.mts +5 -7
- package/dist/history/validator.mjs +9 -24
- package/dist/hook-token.d.mts +7 -0
- package/dist/hook-token.mjs +32 -0
- package/dist/ids.d.mts +8 -0
- package/dist/ids.mjs +21 -0
- package/dist/message-options.d.mts +11 -5
- package/dist/message-options.mjs +9 -7
- package/dist/mod.d.mts +32 -36
- package/dist/mod.mjs +9 -13
- package/dist/otel/metrics.d.mts +31 -0
- package/dist/otel/metrics.mjs +60 -0
- package/dist/otel/mod.d.mts +3 -0
- package/dist/otel/mod.mjs +3 -0
- package/dist/otel/spans.d.mts +24 -0
- package/dist/otel/spans.mjs +218 -0
- package/dist/otel/support.d.mts +15 -8
- package/dist/otel/support.mjs +18 -40
- package/dist/{otel.d.mts → otel/telemetry.d.mts} +5 -6
- package/dist/otel/telemetry.mjs +305 -0
- package/dist/pagination.d.mts +6 -12
- package/dist/pagination.mjs +10 -14
- package/dist/registry.d.mts +8 -5
- package/dist/registry.mjs +19 -10
- package/dist/rolldown.d.mts +6 -4
- package/dist/rolldown.mjs +2 -1
- package/dist/rollup.d.mts +6 -4
- package/dist/rollup.mjs +2 -1
- package/dist/rspack.d.mts +6 -4
- package/dist/rspack.mjs +2 -1
- package/dist/run-status.d.mts +29 -0
- package/dist/run-status.mjs +42 -0
- package/dist/schema/common.d.mts +22 -0
- package/dist/schema/common.mjs +54 -0
- package/dist/schema/error.d.mts +17 -0
- package/dist/schema/error.mjs +39 -0
- package/dist/schema/events.d.mts +446 -0
- package/dist/schema/events.mjs +235 -0
- package/dist/schema/pagination.d.mts +5 -0
- package/dist/schema/pagination.mjs +11 -0
- package/dist/schema/persisted-value.d.mts +8 -0
- package/dist/schema/persisted-value.mjs +94 -0
- package/dist/schema/run.d.mts +51 -0
- package/dist/schema/run.mjs +88 -0
- package/dist/schema/store.d.mts +94 -0
- package/dist/schema/store.mjs +116 -0
- package/dist/step-definition.d.mts +4 -9
- package/dist/step-definition.mjs +2 -2
- package/dist/store/capabilities.d.mts +8 -9
- package/dist/store/capabilities.mjs +7 -7
- package/dist/store/cleanup.d.mts +9 -14
- package/dist/store/cleanup.mjs +86 -85
- package/dist/store/create.d.mts +28 -29
- package/dist/store/create.mjs +10 -11
- package/dist/store/events.d.mts +48 -0
- package/dist/store/events.mjs +263 -0
- package/dist/store/indexes.d.mts +25 -0
- package/dist/store/indexes.mjs +282 -0
- package/dist/store/instrumentation.d.mts +2 -3
- package/dist/store/instrumentation.mjs +30 -30
- package/dist/store/lock.d.mts +4 -5
- package/dist/store/lock.mjs +5 -7
- package/dist/store/materialization.d.mts +10 -17
- package/dist/store/materialization.mjs +39 -33
- package/dist/store/mod.d.mts +3 -3
- package/dist/store/mod.mjs +2 -2
- package/dist/store/query.d.mts +13 -17
- package/dist/store/query.mjs +13 -13
- package/dist/store/run.d.mts +25 -34
- package/dist/store/run.mjs +67 -108
- package/dist/store/schedule.d.mts +6 -8
- package/dist/store/schedule.mjs +11 -11
- package/dist/store/step-attempt.d.mts +9 -12
- package/dist/store/step-attempt.mjs +9 -9
- package/dist/store/storage-value.d.mts +3 -3
- package/dist/store/storage-value.mjs +17 -1
- package/dist/store/validation.d.mts +17 -20
- package/dist/store/validation.mjs +30 -33
- package/dist/store-keys.d.mts +35 -47
- package/dist/store-keys.mjs +9 -17
- package/dist/telemetry.d.mts +16 -16
- package/dist/telemetry.mjs +3 -3
- package/dist/temporal.d.mts +11 -16
- package/dist/temporal.mjs +8 -9
- package/dist/timer.d.mts +12 -10
- package/dist/timer.mjs +11 -3
- package/dist/types/cleanup.d.mts +13 -50
- package/dist/types/cleanup.mjs +1 -22
- package/dist/types/client.d.mts +101 -162
- package/dist/types/{vite.d.mts → compiler.d.mts} +17 -24
- package/dist/types/compiler.mjs +1 -0
- package/dist/types/definition.d.mts +22 -34
- package/dist/types/engine-options.d.mts +10 -17
- package/dist/types/engine.d.mts +15 -274
- package/dist/types/error.d.mts +15 -217
- package/dist/types/error.mjs +1 -48
- package/dist/types/events.d.mts +59 -2730
- package/dist/types/events.mjs +1 -283
- package/dist/types/hook.d.mts +27 -85
- package/dist/types/hook.mjs +1 -66
- package/dist/types/ids.d.mts +9 -0
- package/dist/types/ids.mjs +1 -0
- package/dist/types/lock.d.mts +8 -26
- package/dist/types/lock.mjs +1 -18
- package/dist/types/message.d.mts +29 -43
- package/dist/types/observation.d.mts +43 -58
- package/dist/types/pagination.d.mts +6 -22
- package/dist/types/pagination.mjs +1 -13
- package/dist/types/result.d.mts +11 -43
- package/dist/types/retry.d.mts +7 -14
- package/dist/types/run-list.d.mts +9 -11
- package/dist/types/run-options.d.mts +25 -32
- package/dist/types/run.d.mts +35 -315
- package/dist/types/run.mjs +1 -207
- package/dist/types/runtime.d.mts +33 -145
- package/dist/types/runtime.mjs +1 -21
- package/dist/types/schedule.d.mts +13 -72
- package/dist/types/schedule.mjs +1 -48
- package/dist/types/step-attempts.d.mts +65 -261
- package/dist/types/step-attempts.mjs +1 -43
- package/dist/types/step.d.mts +66 -77
- package/dist/types/step.mjs +1 -5
- package/dist/types/store.d.mts +50 -182
- package/dist/types/stream.d.mts +19 -40
- package/dist/types/summary.d.mts +174 -278
- package/dist/types/telemetry.d.mts +23 -28
- package/dist/types/telemetry.mjs +1 -9
- package/dist/types/timeline.d.mts +46 -233
- package/dist/types/worker.d.mts +22 -29
- package/dist/values.d.mts +15 -0
- package/dist/values.mjs +57 -0
- package/dist/vite.d.mts +5 -6
- package/dist/vite.mjs +3 -4
- package/dist/webpack.d.mts +6 -4
- package/dist/webpack.mjs +2 -1
- package/dist/worker/error.d.mts +2 -9
- package/dist/worker/error.mjs +20 -32
- package/dist/worker/missing-implementation.d.mts +19 -0
- package/dist/worker/missing-implementation.mjs +62 -0
- package/dist/worker/worker.d.mts +18 -0
- package/dist/{worker.mjs → worker/worker.mjs} +64 -118
- package/package.json +28 -47
- package/dist/engine/execution-api.d.mts +0 -29
- package/dist/engine/execution-api.mjs +0 -33
- package/dist/engine/inspection-api.d.mts +0 -34
- package/dist/engine/inspection-api.mjs +0 -78
- package/dist/engine/mod.d.mts +0 -4
- package/dist/engine/mod.mjs +0 -2
- package/dist/engine/recovery.d.mts +0 -26
- package/dist/engine/recovery.mjs +0 -92
- package/dist/engine/retry-policy.d.mts +0 -4
- package/dist/engine/retry-policy.mjs +0 -4
- package/dist/engine/start-api.d.mts +0 -30
- package/dist/engine/start-api.mjs +0 -99
- package/dist/engine/summary/active-events.d.mts +0 -34
- package/dist/engine/summary/active-events.mjs +0 -69
- package/dist/engine/summary/child-workflow-runs.d.mts +0 -24
- package/dist/engine/summary/child-workflow-runs.mjs +0 -138
- package/dist/engine/summary/child-workflow-waits.d.mts +0 -21
- package/dist/engine/summary/child-workflow-waits.mjs +0 -67
- package/dist/engine/summary/recovery-child-workflow-waits.d.mts +0 -11
- package/dist/engine/summary/recovery-child-workflow-waits.mjs +0 -89
- package/dist/engine/summary/recovery-due-runs.d.mts +0 -16
- package/dist/engine/summary/recovery-due-runs.mjs +0 -52
- package/dist/engine/summary/recovery-failed-runs.d.mts +0 -14
- package/dist/engine/summary/recovery-failed-runs.mjs +0 -33
- package/dist/engine/summary/recovery-lease-runs.d.mts +0 -16
- package/dist/engine/summary/recovery-lease-runs.mjs +0 -69
- package/dist/engine/summary/recovery-locks.d.mts +0 -18
- package/dist/engine/summary/recovery-locks.mjs +0 -100
- package/dist/engine/summary/recovery-message-waits.d.mts +0 -11
- package/dist/engine/summary/recovery-message-waits.mjs +0 -74
- package/dist/engine/summary/recovery-retry-runs.d.mts +0 -17
- package/dist/engine/summary/recovery-retry-runs.mjs +0 -65
- package/dist/engine/summary/recovery-run-timestamps.d.mts +0 -13
- package/dist/engine/summary/recovery-run-timestamps.mjs +0 -18
- package/dist/engine/summary/recovery-runs.d.mts +0 -23
- package/dist/engine/summary/recovery-runs.mjs +0 -54
- package/dist/engine/summary/recovery-schedules.d.mts +0 -10
- package/dist/engine/summary/recovery-schedules.mjs +0 -46
- package/dist/engine/summary/recovery-sleep-waits.d.mts +0 -10
- package/dist/engine/summary/recovery-sleep-waits.mjs +0 -53
- package/dist/engine/summary/recovery-waits.d.mts +0 -21
- package/dist/engine/summary/recovery-waits.mjs +0 -29
- package/dist/engine/summary/run-availability.d.mts +0 -13
- package/dist/engine/summary/run-availability.mjs +0 -37
- package/dist/engine/summary/run-cleanup.d.mts +0 -14
- package/dist/engine/summary/run-cleanup.mjs +0 -44
- package/dist/engine/summary/run-failure.d.mts +0 -14
- package/dist/engine/summary/run-failure.mjs +0 -62
- package/dist/engine/summary/run-hooks.d.mts +0 -14
- package/dist/engine/summary/run-hooks.mjs +0 -63
- package/dist/engine/summary/run-lease.d.mts +0 -11
- package/dist/engine/summary/run-lease.mjs +0 -64
- package/dist/engine/summary/run-message-waits.d.mts +0 -15
- package/dist/engine/summary/run-message-waits.mjs +0 -62
- package/dist/engine/summary/run-metrics.d.mts +0 -31
- package/dist/engine/summary/run-metrics.mjs +0 -93
- package/dist/engine/summary/run-retry.d.mts +0 -9
- package/dist/engine/summary/run-retry.mjs +0 -69
- package/dist/engine/summary/run-sleeps.d.mts +0 -15
- package/dist/engine/summary/run-sleeps.mjs +0 -61
- package/dist/engine/summary/run-state.d.mts +0 -26
- package/dist/engine/summary/run-state.mjs +0 -48
- package/dist/engine/summary/run-status.d.mts +0 -16
- package/dist/engine/summary/run-status.mjs +0 -35
- package/dist/engine/summary/run-streams.d.mts +0 -14
- package/dist/engine/summary/run-streams.mjs +0 -46
- package/dist/engine/summary/run-transition.d.mts +0 -9
- package/dist/engine/summary/run-transition.mjs +0 -39
- package/dist/engine/summary/run-workflow.d.mts +0 -9
- package/dist/engine/summary/run-workflow.mjs +0 -47
- package/dist/engine/summary/step-attempt-active-child-workflows.d.mts +0 -13
- package/dist/engine/summary/step-attempt-active-child-workflows.mjs +0 -55
- package/dist/engine/summary/step-attempt-active-fields.d.mts +0 -23
- package/dist/engine/summary/step-attempt-active-fields.mjs +0 -14
- package/dist/engine/summary/step-attempt-active-message-waits.d.mts +0 -12
- package/dist/engine/summary/step-attempt-active-message-waits.mjs +0 -47
- package/dist/engine/summary/step-attempt-active-sleeps.d.mts +0 -19
- package/dist/engine/summary/step-attempt-active-sleeps.mjs +0 -44
- package/dist/engine/summary/step-attempt-buckets.d.mts +0 -22
- package/dist/engine/summary/step-attempt-buckets.mjs +0 -152
- package/dist/engine/summary/step-attempt-failure.d.mts +0 -12
- package/dist/engine/summary/step-attempt-failure.mjs +0 -61
- package/dist/engine/summary/step-attempt-lifecycle.d.mts +0 -13
- package/dist/engine/summary/step-attempt-lifecycle.mjs +0 -19
- package/dist/engine/summary.d.mts +0 -32
- package/dist/engine/summary.mjs +0 -37
- package/dist/errors/details.d.mts +0 -13
- package/dist/errors/details.mjs +0 -66
- package/dist/errors/record-view.d.mts +0 -11
- package/dist/errors/record-view.mjs +0 -24
- package/dist/errors/runtime.d.mts +0 -12
- package/dist/errors/runtime.mjs +0 -24
- package/dist/events/mod.d.mts +0 -3
- package/dist/events/mod.mjs +0 -2
- package/dist/history/attempt-key.d.mts +0 -6
- package/dist/history/attempt-key.mjs +0 -7
- package/dist/inspection/mod.d.mts +0 -5
- package/dist/inspection/mod.mjs +0 -3
- package/dist/otel.mjs +0 -590
- package/dist/runtime.d.mts +0 -35
- package/dist/runtime.mjs +0 -198
- package/dist/store/append-projection.d.mts +0 -15
- package/dist/store/append-projection.mjs +0 -26
- package/dist/store/compaction.d.mts +0 -5
- package/dist/store/compaction.mjs +0 -8
- package/dist/store/event-append-project.d.mts +0 -15
- package/dist/store/event-append-project.mjs +0 -77
- package/dist/store/event-append.d.mts +0 -37
- package/dist/store/event-append.mjs +0 -80
- package/dist/store/event-history.d.mts +0 -22
- package/dist/store/event-history.mjs +0 -75
- package/dist/store/event.d.mts +0 -10
- package/dist/store/event.mjs +0 -28
- package/dist/store/idempotency.d.mts +0 -10
- package/dist/store/idempotency.mjs +0 -167
- package/dist/store/message-index.d.mts +0 -21
- package/dist/store/message-index.mjs +0 -122
- package/dist/store/revision.d.mts +0 -4
- package/dist/store/revision.mjs +0 -7
- package/dist/store/schema.d.mts +0 -14
- package/dist/store/schema.mjs +0 -17
- package/dist/types/common.d.mts +0 -20
- package/dist/types/common.mjs +0 -16
- package/dist/types/error-code.d.mts +0 -256
- package/dist/types/message-id.d.mts +0 -7
- package/dist/types/message-id.mjs +0 -5
- package/dist/types/run-id.d.mts +0 -7
- package/dist/types/run-id.mjs +0 -5
- package/dist/types/step-id.d.mts +0 -7
- package/dist/types/step-id.mjs +0 -5
- package/dist/types/stream-id.d.mts +0 -7
- package/dist/types/stream-id.mjs +0 -5
- package/dist/types/worker-id.d.mts +0 -7
- package/dist/types/worker-id.mjs +0 -5
- package/dist/utility.d.mts +0 -49
- package/dist/utility.mjs +0 -122
- package/dist/vite/ast.d.mts +0 -23
- package/dist/vite/generated-name.d.mts +0 -7
- package/dist/vite/generated-name.mjs +0 -9
- package/dist/vite/manifest.d.mts +0 -7
- package/dist/vite/plugin.d.mts +0 -7
- package/dist/vite/safety.d.mts +0 -12
- package/dist/vite/source.d.mts +0 -7
- package/dist/vite/transform.d.mts +0 -7
- package/dist/webhook.d.mts +0 -16
- package/dist/webhook.mjs +0 -17
- package/dist/worker.d.mts +0 -19
- /package/dist/{types/vite.mjs → engine/context.mjs} +0 -0
|
@@ -1,61 +1,67 @@
|
|
|
1
|
+
import { durationBetween, durationTotal } from "../temporal.mjs";
|
|
1
2
|
import { WorkflowResultTimeoutError, WorkflowRunCanceledError, WorkflowRunNotFoundError } from "../errors/run.mjs";
|
|
2
|
-
import { durationTotal } from "../utility.mjs";
|
|
3
|
-
import "../errors/mod.mjs";
|
|
4
3
|
import { workflowErrorFromRecord } from "../errors/records.mjs";
|
|
5
|
-
import
|
|
4
|
+
import "../errors/mod.mjs";
|
|
5
|
+
import { getRunTimeline } from "../engine/inspection.mjs";
|
|
6
|
+
import { readRunResult } from "../engine/run-utils.mjs";
|
|
7
|
+
import { cancelWorkflowRun, setRunAttributes, updateWorkflowRunMetadata } from "../engine/run-service.mjs";
|
|
6
8
|
import { nonNegativeTimerDelay, sleep } from "../timer.mjs";
|
|
9
|
+
import { followStream, getStreamInfo, readStream, waitForStream, waitForStreamChunk, waitForStreamTerminal } from "../engine/stream-reader.mjs";
|
|
7
10
|
import "temporal-polyfill/global";
|
|
8
11
|
//#region src/client/run-handle.ts
|
|
9
12
|
const DEFAULT_RESULT_POLL_INTERVAL = Temporal.Duration.from({ milliseconds: 100 });
|
|
10
|
-
function
|
|
11
|
-
return new WorkflowRunHandle(engine,
|
|
13
|
+
function createRunHandle(engine, ref, now) {
|
|
14
|
+
return new WorkflowRunHandle(engine, ref, now);
|
|
12
15
|
}
|
|
13
16
|
var WorkflowRunHandle = class {
|
|
14
|
-
/** @inheritdoc */
|
|
15
17
|
runId;
|
|
16
|
-
/** @inheritdoc */
|
|
17
18
|
workflowName;
|
|
18
|
-
/** @inheritdoc */
|
|
19
19
|
workflowVersion;
|
|
20
20
|
#engine;
|
|
21
|
+
#ref;
|
|
21
22
|
#now;
|
|
22
|
-
|
|
23
|
+
streams;
|
|
24
|
+
constructor(engine, ref, now) {
|
|
23
25
|
this.#engine = engine;
|
|
26
|
+
this.#ref = ref;
|
|
24
27
|
this.#now = now;
|
|
25
|
-
this.runId = runId;
|
|
26
|
-
this.workflowName = definition.name;
|
|
27
|
-
|
|
28
|
+
this.runId = ref.runId;
|
|
29
|
+
this.workflowName = ref.definition.name;
|
|
30
|
+
const context = engine.context;
|
|
31
|
+
const runId = ref.runId;
|
|
32
|
+
this.streams = {
|
|
33
|
+
getInfo: (name) => getStreamInfo(context, runId, name),
|
|
34
|
+
follow: (name, options) => followStream(context, runId, name, options),
|
|
35
|
+
wait: (name, options) => waitForStream(context, runId, name, options),
|
|
36
|
+
waitForChunk: (name, afterIndex, options) => waitForStreamChunk(context, runId, name, afterIndex, options),
|
|
37
|
+
waitForTerminal: (name, options) => waitForStreamTerminal(context, runId, name, options),
|
|
38
|
+
read: (name, options) => readStream(context, runId, name, options)
|
|
39
|
+
};
|
|
40
|
+
if (ref.definition.version !== void 0) this.workflowVersion = ref.definition.version;
|
|
28
41
|
}
|
|
29
|
-
/** @inheritdoc */
|
|
30
42
|
async getRun() {
|
|
31
|
-
const run = await this.#engine.getRun(this.runId);
|
|
43
|
+
const run = await this.#engine.store.getRun(this.runId);
|
|
32
44
|
if (run === void 0) WorkflowRunNotFoundError.notFound(this.runId);
|
|
33
45
|
return run;
|
|
34
46
|
}
|
|
35
|
-
/** @inheritdoc */
|
|
36
47
|
async status() {
|
|
37
|
-
const run = await this.#engine.getRun(this.runId);
|
|
48
|
+
const run = await this.#engine.store.getRun(this.runId);
|
|
38
49
|
if (run === void 0) WorkflowRunNotFoundError.notFound(this.runId);
|
|
39
50
|
return run.status;
|
|
40
51
|
}
|
|
41
|
-
/** @inheritdoc */
|
|
42
52
|
async events() {
|
|
43
|
-
return await this.#engine.getEvents(this.runId);
|
|
53
|
+
return await this.#engine.store.getEvents(this.runId);
|
|
44
54
|
}
|
|
45
|
-
/** @inheritdoc */
|
|
46
55
|
async timeline() {
|
|
47
|
-
return await this.#engine.
|
|
56
|
+
return await getRunTimeline(this.#engine.context, this.runId);
|
|
48
57
|
}
|
|
49
|
-
/** @inheritdoc */
|
|
50
58
|
async result(options) {
|
|
51
59
|
const pollInterval = nonNegativeTimerDelay(options?.pollInterval ?? DEFAULT_RESULT_POLL_INTERVAL, "Workflow result pollInterval").clampedDelay;
|
|
52
60
|
const timeout = options?.timeout;
|
|
53
61
|
const deadlineAt = timeout === void 0 ? void 0 : this.#now().add(timeout);
|
|
54
62
|
while (true) {
|
|
55
|
-
const
|
|
56
|
-
if (run ===
|
|
57
|
-
if (run.status === "canceled") WorkflowRunCanceledError.canceled(this.runId);
|
|
58
|
-
const result = runToResult(run, this.runId, this.#now());
|
|
63
|
+
const result = await readRunResult(this.#engine.store, this.#ref.definition, this.runId, this.#now());
|
|
64
|
+
if (result.run.status === "canceled") WorkflowRunCanceledError.canceled(this.runId);
|
|
59
65
|
if (result.kind === "completed") return result.output;
|
|
60
66
|
if (result.kind === "failed") throw workflowErrorFromRecord(result.error);
|
|
61
67
|
let sleepDelay = pollInterval;
|
|
@@ -68,91 +74,15 @@ var WorkflowRunHandle = class {
|
|
|
68
74
|
await sleep(sleepDelay);
|
|
69
75
|
}
|
|
70
76
|
}
|
|
71
|
-
/** @inheritdoc */
|
|
72
|
-
async getStreamInfo(streamIdOrName) {
|
|
73
|
-
return await this.#engine.getStreamInfo(this.runId, streamIdOrName);
|
|
74
|
-
}
|
|
75
|
-
/** @inheritdoc */
|
|
76
|
-
followStream(streamIdOrName, followOptions) {
|
|
77
|
-
return this.#engine.followStream(this.runId, streamIdOrName, followOptions);
|
|
78
|
-
}
|
|
79
|
-
/** @inheritdoc */
|
|
80
|
-
async waitForStream(streamIdOrName, waitOptions) {
|
|
81
|
-
return await this.#engine.waitForStream(this.runId, streamIdOrName, waitOptions);
|
|
82
|
-
}
|
|
83
|
-
/** @inheritdoc */
|
|
84
|
-
async waitForStreamChunk(streamIdOrName, afterIndex, waitOptions) {
|
|
85
|
-
return await this.#engine.waitForStreamChunk(this.runId, streamIdOrName, afterIndex, waitOptions);
|
|
86
|
-
}
|
|
87
|
-
/** @inheritdoc */
|
|
88
|
-
async waitForStreamTerminal(streamIdOrName, waitOptions) {
|
|
89
|
-
return await this.#engine.waitForStreamTerminal(this.runId, streamIdOrName, waitOptions);
|
|
90
|
-
}
|
|
91
|
-
/** @inheritdoc */
|
|
92
|
-
async readStream(streamIdOrName, readOptions) {
|
|
93
|
-
return await this.#engine.readStream(this.runId, streamIdOrName, readOptions);
|
|
94
|
-
}
|
|
95
|
-
/** @inheritdoc */
|
|
96
|
-
async readStreamPage(streamIdOrName, readOptions) {
|
|
97
|
-
return await this.#engine.readStreamPage(this.runId, streamIdOrName, readOptions);
|
|
98
|
-
}
|
|
99
|
-
/** @inheritdoc */
|
|
100
|
-
async reschedule(options) {
|
|
101
|
-
return await this.#engine.rescheduleRun(this.runId, options);
|
|
102
|
-
}
|
|
103
|
-
/** @inheritdoc */
|
|
104
|
-
async releaseStaleLease(options) {
|
|
105
|
-
return await this.#engine.releaseStaleRunLease(this.runId, options);
|
|
106
|
-
}
|
|
107
|
-
/** @inheritdoc */
|
|
108
|
-
async retryFailed(options) {
|
|
109
|
-
return await this.#engine.retryFailedRun(this.runId, options);
|
|
110
|
-
}
|
|
111
|
-
/** @inheritdoc */
|
|
112
|
-
async markPermanentlyFailed(options) {
|
|
113
|
-
return await this.#engine.markRunPermanentlyFailed(this.runId, options);
|
|
114
|
-
}
|
|
115
|
-
/** @inheritdoc */
|
|
116
77
|
async setMetadata(metadata) {
|
|
117
|
-
return await this.#engine.
|
|
78
|
+
return await updateWorkflowRunMetadata(this.#engine.context, this.#engine.lifecycle, this.runId, metadata);
|
|
118
79
|
}
|
|
119
|
-
/** @inheritdoc */
|
|
120
80
|
async setAttributes(attributes) {
|
|
121
|
-
return await this.#engine.
|
|
81
|
+
return await setRunAttributes(this.#engine.context, this.runId, attributes);
|
|
122
82
|
}
|
|
123
|
-
/** @inheritdoc */
|
|
124
83
|
async cancel() {
|
|
125
|
-
return await this.#engine.
|
|
84
|
+
return await cancelWorkflowRun(this.#engine.context, this.#engine.lifecycle, this.runId);
|
|
126
85
|
}
|
|
127
86
|
};
|
|
128
|
-
function runToResult(run, runId, fallbackAvailableAt) {
|
|
129
|
-
if (run === void 0) WorkflowRunNotFoundError.notFound(runId);
|
|
130
|
-
if (run.status === "completed") return {
|
|
131
|
-
kind: "completed",
|
|
132
|
-
run,
|
|
133
|
-
output: run.output
|
|
134
|
-
};
|
|
135
|
-
if (run.status === "failed") return {
|
|
136
|
-
kind: "failed",
|
|
137
|
-
run,
|
|
138
|
-
error: run.error ?? {
|
|
139
|
-
name: "WorkflowError",
|
|
140
|
-
message: `Workflow run failed: ${run.id}`
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
if (run.status === "canceled") return {
|
|
144
|
-
kind: "failed",
|
|
145
|
-
run,
|
|
146
|
-
error: run.error ?? {
|
|
147
|
-
name: "WorkflowRunCanceledError",
|
|
148
|
-
message: `Workflow run was canceled: ${run.id}`
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
return {
|
|
152
|
-
kind: "waiting",
|
|
153
|
-
run,
|
|
154
|
-
availableAt: run.availableAt ?? fallbackAvailableAt
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
87
|
//#endregion
|
|
158
|
-
export { WorkflowRunHandle,
|
|
88
|
+
export { WorkflowRunHandle, createRunHandle };
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MissingImplementationRetryConfig } from "../types/retry.mjs";
|
|
2
2
|
import { RegistryLike } from "../types/definition.mjs";
|
|
3
|
-
import { WorkflowWorkerEngine } from "../types/engine.mjs";
|
|
4
3
|
import { CreateWorkflowWorkerOptions } from "../types/worker.mjs";
|
|
5
|
-
import {
|
|
4
|
+
import { WorkflowEngine } from "../engine/create.mjs";
|
|
5
|
+
import { ClientWorkerOptions } from "../types/client.mjs";
|
|
6
6
|
//#region src/client/worker-options.d.ts
|
|
7
|
-
interface
|
|
7
|
+
interface WorkerFacetOptions {
|
|
8
8
|
readonly workerId?: string;
|
|
9
9
|
readonly leaseDuration?: Temporal.Duration;
|
|
10
10
|
readonly heartbeatInterval?: Temporal.Duration;
|
|
11
11
|
readonly stopDrainTimeout?: Temporal.Duration;
|
|
12
|
-
readonly missingImplementationRetry?:
|
|
12
|
+
readonly missingImplementationRetry?: MissingImplementationRetryConfig;
|
|
13
13
|
}
|
|
14
|
-
declare function workerOptionsFromClientOptions(engine:
|
|
15
|
-
declare function workerOptionsFromWakeOptions(options:
|
|
14
|
+
export declare function workerOptionsFromClientOptions(engine: WorkflowEngine, registry: RegistryLike, now: () => Temporal.Instant, options: ClientWorkerOptions | undefined): CreateWorkflowWorkerOptions;
|
|
15
|
+
export declare function workerOptionsFromWakeOptions(options: WorkerFacetOptions | undefined): ClientWorkerOptions;
|
|
16
16
|
//#endregion
|
|
17
|
-
export {
|
|
17
|
+
export {};
|
|
@@ -4,21 +4,21 @@ function workerOptionsFromClientOptions(engine, registry, now, options) {
|
|
|
4
4
|
engine,
|
|
5
5
|
registry,
|
|
6
6
|
now,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
workerId: options?.workerId,
|
|
8
|
+
leaseDuration: options?.leaseDuration,
|
|
9
|
+
pollInterval: options?.pollInterval,
|
|
10
|
+
heartbeatInterval: options?.heartbeatInterval,
|
|
11
|
+
stopDrainTimeout: options?.stopDrainTimeout,
|
|
12
|
+
missingImplementationRetry: options?.missingImplementationRetry
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
function workerOptionsFromWakeOptions(options) {
|
|
16
16
|
return {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
workerId: options?.workerId,
|
|
18
|
+
leaseDuration: options?.leaseDuration,
|
|
19
|
+
heartbeatInterval: options?.heartbeatInterval,
|
|
20
|
+
stopDrainTimeout: options?.stopDrainTimeout,
|
|
21
|
+
missingImplementationRetry: options?.missingImplementationRetry
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
24
|
//#endregion
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
//#region src/cloudflare/cloudflare.d.ts
|
|
2
2
|
declare module "cloudflare:workers" {
|
|
3
|
-
export
|
|
4
|
-
protected readonly env: TEnv;
|
|
5
|
-
abstract run(event: unknown, step: unknown): Promise<unknown>;
|
|
6
|
-
}
|
|
3
|
+
export const WorkflowEntrypoint: typeof import("@cloudflare/workers-types").CloudflareWorkersModule.WorkflowEntrypoint;
|
|
7
4
|
}
|
|
8
5
|
declare module "cloudflare:workflows" {
|
|
9
6
|
export class NonRetryableError extends Error {
|
|
10
7
|
constructor(message: string, name?: string);
|
|
11
8
|
}
|
|
12
|
-
}
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export {};
|
|
@@ -1,16 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { WorkflowDefinition } from "../types/definition.mjs";
|
|
2
|
+
import { CloudflareWorkflowInstanceStatus } from "./types.mjs";
|
|
3
|
+
import { SchemaOutput } from "@temelj/standard-schema";
|
|
4
|
+
import { StorageValue } from "@temelj/storage";
|
|
2
5
|
//#region src/cloudflare/codec.d.ts
|
|
3
|
-
declare const
|
|
4
|
-
kind:
|
|
5
|
-
version:
|
|
6
|
-
workflowName:
|
|
7
|
-
workflowVersion:
|
|
8
|
-
input:
|
|
9
|
-
}
|
|
6
|
+
declare const cloudflareEnvelopeSchema: import("@temelj/standard-schema").Schema<unknown, import("@temelj/standard-schema").ObjectOutput<{
|
|
7
|
+
kind: import("@temelj/standard-schema").Schema<unknown, "temelj-workflow">;
|
|
8
|
+
version: import("@temelj/standard-schema").Schema<unknown, 1>;
|
|
9
|
+
workflowName: import("@temelj/standard-schema").Schema<unknown, string>;
|
|
10
|
+
workflowVersion: import("@temelj/standard-schema").Schema<unknown, string | undefined>;
|
|
11
|
+
input: import("@temelj/standard-schema").Schema<unknown, string>;
|
|
12
|
+
}>>;
|
|
10
13
|
/** Serialized payload dispatched through the generic Cloudflare entrypoint. */
|
|
11
|
-
type
|
|
12
|
-
declare function
|
|
13
|
-
declare function
|
|
14
|
-
declare function
|
|
14
|
+
export type CloudflareEnvelope = SchemaOutput<typeof cloudflareEnvelopeSchema>;
|
|
15
|
+
export declare function encodeCloudflareValue(value: unknown): string;
|
|
16
|
+
export declare function decodeCloudflareValue(value: unknown, label: string): StorageValue | undefined;
|
|
17
|
+
export declare function parseCloudflareEnvelope(value: unknown): CloudflareEnvelope;
|
|
18
|
+
declare const cloudflareResultEnvelopeSchema: import("@temelj/standard-schema").Schema<unknown, import("@temelj/standard-schema").ObjectOutput<{
|
|
19
|
+
kind: import("@temelj/standard-schema").Schema<unknown, "temelj-workflow-result">;
|
|
20
|
+
version: import("@temelj/standard-schema").Schema<unknown, 1>;
|
|
21
|
+
workflowName: import("@temelj/standard-schema").Schema<unknown, string>;
|
|
22
|
+
workflowVersion: import("@temelj/standard-schema").Schema<unknown, string | undefined>;
|
|
23
|
+
output: import("@temelj/standard-schema").Schema<unknown, string>;
|
|
24
|
+
}>>;
|
|
25
|
+
/** Serialized result coupled to the workflow contract that produced it. */
|
|
26
|
+
export type CloudflareResultEnvelope = SchemaOutput<typeof cloudflareResultEnvelopeSchema>;
|
|
27
|
+
/** Validates the provider result and its workflow identity before decoding the output. */
|
|
28
|
+
export declare function decodeCloudflareResult(state: CloudflareWorkflowInstanceStatus, definition: WorkflowDefinition): StorageValue | undefined;
|
|
29
|
+
export declare function durationMilliseconds(duration: Temporal.Duration, label: string): number;
|
|
15
30
|
//#endregion
|
|
16
|
-
export {
|
|
31
|
+
export {};
|
|
@@ -1,25 +1,48 @@
|
|
|
1
|
+
import { durationTotal } from "../temporal.mjs";
|
|
2
|
+
import { parse } from "../schema/common.mjs";
|
|
3
|
+
import { persistedValueSchema } from "../schema/persisted-value.mjs";
|
|
4
|
+
import { ss } from "@temelj/standard-schema";
|
|
1
5
|
import { createSuperJsonStorageCodec } from "@temelj/storage";
|
|
2
|
-
import { z } from "zod";
|
|
3
6
|
//#region src/cloudflare/codec.ts
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
const cloudflareCodec = createSuperJsonStorageCodec({ format: "string" });
|
|
8
|
+
const nonEmptyStringSchema = ss.nonEmptyString();
|
|
9
|
+
const cloudflareEnvelopeSchema = ss.object({
|
|
10
|
+
kind: ss.literal("temelj-workflow"),
|
|
11
|
+
version: ss.literal(1),
|
|
12
|
+
workflowName: nonEmptyStringSchema,
|
|
13
|
+
workflowVersion: ss.optional(nonEmptyStringSchema),
|
|
14
|
+
input: ss.string()
|
|
11
15
|
});
|
|
12
|
-
function
|
|
13
|
-
return
|
|
16
|
+
function encodeCloudflareValue(value) {
|
|
17
|
+
return cloudflareCodec.encode(parse(ss.optional(persistedValueSchema), value));
|
|
14
18
|
}
|
|
15
|
-
function
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
function decodeCloudflareValue(value, label) {
|
|
20
|
+
const encoded = ss.safeParseSync(ss.string(), value);
|
|
21
|
+
if (!encoded.success) throw new TypeError(`${label} must be an encoded string`);
|
|
22
|
+
return parse(ss.optional(persistedValueSchema), cloudflareCodec.decode(encoded.value));
|
|
18
23
|
}
|
|
19
|
-
function
|
|
20
|
-
const parsed =
|
|
24
|
+
function parseCloudflareEnvelope(value) {
|
|
25
|
+
const parsed = ss.safeParseSync(cloudflareEnvelopeSchema, value);
|
|
21
26
|
if (!parsed.success) throw new TypeError("Cloudflare Workflow payload is not a valid Temelj workflow envelope");
|
|
22
|
-
return parsed.
|
|
27
|
+
return parsed.value;
|
|
28
|
+
}
|
|
29
|
+
const cloudflareResultEnvelopeSchema = ss.object({
|
|
30
|
+
kind: ss.literal("temelj-workflow-result"),
|
|
31
|
+
version: ss.literal(1),
|
|
32
|
+
workflowName: nonEmptyStringSchema,
|
|
33
|
+
workflowVersion: ss.optional(nonEmptyStringSchema),
|
|
34
|
+
output: ss.string()
|
|
35
|
+
});
|
|
36
|
+
/** Validates the provider result and its workflow identity before decoding the output. */
|
|
37
|
+
function decodeCloudflareResult(state, definition) {
|
|
38
|
+
const envelope = parse(cloudflareResultEnvelopeSchema, JSON.parse(parse(ss.string(), state.output)));
|
|
39
|
+
if (envelope.workflowName !== definition.name || envelope.workflowVersion !== definition.version) throw new TypeError("Cloudflare Workflow result does not match the requested workflow name and version");
|
|
40
|
+
return decodeCloudflareValue(envelope.output, "Cloudflare Workflow result output");
|
|
41
|
+
}
|
|
42
|
+
function durationMilliseconds(duration, label) {
|
|
43
|
+
const milliseconds = durationTotal(duration);
|
|
44
|
+
if (!Number.isSafeInteger(milliseconds) || milliseconds < 0) throw new RangeError(`${label} must resolve to non-negative whole milliseconds`);
|
|
45
|
+
return milliseconds;
|
|
23
46
|
}
|
|
24
47
|
//#endregion
|
|
25
|
-
export {
|
|
48
|
+
export { decodeCloudflareResult, decodeCloudflareValue, durationMilliseconds, encodeCloudflareValue, parseCloudflareEnvelope };
|
|
@@ -2,11 +2,10 @@ import { RegistryLike } from "../types/definition.mjs";
|
|
|
2
2
|
import { Logger } from "@temelj/log";
|
|
3
3
|
import { WorkflowEntrypoint } from "cloudflare:workers";
|
|
4
4
|
//#region src/cloudflare/entrypoint.d.ts
|
|
5
|
-
interface CreateCloudflareWorkflowEntrypointOptions {
|
|
5
|
+
export interface CreateCloudflareWorkflowEntrypointOptions {
|
|
6
6
|
readonly registry: RegistryLike;
|
|
7
7
|
readonly logger?: Logger;
|
|
8
8
|
}
|
|
9
9
|
/** Creates a Cloudflare Workflow entrypoint class that dispatches through a Temelj registry. */
|
|
10
|
-
declare function createCloudflareWorkflowEntrypoint<TEnv = unknown>(options: CreateCloudflareWorkflowEntrypointOptions): typeof WorkflowEntrypoint<TEnv, unknown>;
|
|
11
|
-
//#endregion
|
|
12
|
-
export { CreateCloudflareWorkflowEntrypointOptions, createCloudflareWorkflowEntrypoint };
|
|
10
|
+
export declare function createCloudflareWorkflowEntrypoint<TEnv = unknown>(options: CreateCloudflareWorkflowEntrypointOptions): typeof WorkflowEntrypoint<TEnv, unknown>;
|
|
11
|
+
//#endregion
|
|
@@ -6,11 +6,12 @@ import { NonRetryableError } from "cloudflare:workflows";
|
|
|
6
6
|
function createCloudflareWorkflowEntrypoint(options) {
|
|
7
7
|
return class TemeljCloudflareWorkflowEntrypoint extends WorkflowEntrypoint {
|
|
8
8
|
async run(event, step) {
|
|
9
|
-
|
|
9
|
+
const runOptions = {
|
|
10
10
|
registry: options.registry,
|
|
11
|
-
|
|
11
|
+
logger: options.logger,
|
|
12
12
|
nonRetryableError: NonRetryableError
|
|
13
|
-
}
|
|
13
|
+
};
|
|
14
|
+
return await runCloudflareWorkflow(runOptions, event, step);
|
|
14
15
|
}
|
|
15
16
|
};
|
|
16
17
|
}
|
|
@@ -2,12 +2,11 @@ import { RegistryLike } from "../types/definition.mjs";
|
|
|
2
2
|
import { CloudflareNonRetryableErrorConstructor, CloudflareWorkflowEvent, CloudflareWorkflowStep } from "./types.mjs";
|
|
3
3
|
import { Logger } from "@temelj/log";
|
|
4
4
|
//#region src/cloudflare/execution.d.ts
|
|
5
|
-
interface RunCloudflareWorkflowOptions {
|
|
5
|
+
export interface RunCloudflareWorkflowOptions {
|
|
6
6
|
readonly registry: RegistryLike;
|
|
7
7
|
readonly logger?: Logger;
|
|
8
8
|
readonly nonRetryableError?: CloudflareNonRetryableErrorConstructor;
|
|
9
9
|
}
|
|
10
10
|
/** Dispatches one Cloudflare Workflow invocation to a registered Temelj implementation. */
|
|
11
|
-
declare function runCloudflareWorkflow(options: RunCloudflareWorkflowOptions, event: CloudflareWorkflowEvent, step: CloudflareWorkflowStep): Promise<string>;
|
|
12
|
-
//#endregion
|
|
13
|
-
export { RunCloudflareWorkflowOptions, runCloudflareWorkflow };
|
|
11
|
+
export declare function runCloudflareWorkflow(options: RunCloudflareWorkflowOptions, event: CloudflareWorkflowEvent, step: CloudflareWorkflowStep): Promise<string>;
|
|
12
|
+
//#endregion
|
|
@@ -1,28 +1,35 @@
|
|
|
1
1
|
import { WorkflowCapabilityError } from "../errors/capability.mjs";
|
|
2
2
|
import "../errors/mod.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { parseInput } from "../engine/serialization.mjs";
|
|
4
|
+
import { decodeCloudflareValue, encodeCloudflareValue, parseCloudflareEnvelope } from "./codec.mjs";
|
|
5
5
|
import { resolveCloudflareWorkflowImplementation } from "./registry.mjs";
|
|
6
|
-
import {
|
|
6
|
+
import { createCloudflareContext } from "./step.mjs";
|
|
7
7
|
//#region src/cloudflare/execution.ts
|
|
8
8
|
/** Dispatches one Cloudflare Workflow invocation to a registered Temelj implementation. */
|
|
9
9
|
async function runCloudflareWorkflow(options, event, step) {
|
|
10
|
-
const envelope =
|
|
10
|
+
const envelope = parseCloudflareEnvelope(event.payload);
|
|
11
11
|
const implementation = resolveCloudflareWorkflowImplementation(options.registry, envelope.workflowName, envelope.workflowVersion);
|
|
12
12
|
if (implementation.config.retry !== void 0) WorkflowCapabilityError.unsupported("Cloudflare workflow-level retry configuration");
|
|
13
|
-
const rawInput =
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
input,
|
|
13
|
+
const rawInput = decodeCloudflareValue(envelope.input, "Cloudflare Workflow input");
|
|
14
|
+
const contextOptions = {
|
|
15
|
+
input: await parseInput(implementation.definition, rawInput),
|
|
17
16
|
step,
|
|
18
17
|
runId: event.instanceId,
|
|
19
18
|
workflowName: implementation.name,
|
|
20
|
-
|
|
19
|
+
workflowVersion: implementation.version,
|
|
21
20
|
createdAt: Temporal.Instant.fromEpochMilliseconds(event.timestamp.getTime()),
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
21
|
+
logger: options.logger,
|
|
22
|
+
nonRetryableError: options.nonRetryableError
|
|
23
|
+
};
|
|
24
|
+
const context = createCloudflareContext(contextOptions);
|
|
25
|
+
const output = {
|
|
26
|
+
kind: "temelj-workflow-result",
|
|
27
|
+
version: 1,
|
|
28
|
+
workflowName: implementation.name,
|
|
29
|
+
output: encodeCloudflareValue(await implementation.handler(context)),
|
|
30
|
+
workflowVersion: implementation.version
|
|
31
|
+
};
|
|
32
|
+
return JSON.stringify(output);
|
|
26
33
|
}
|
|
27
34
|
//#endregion
|
|
28
35
|
export { runCloudflareWorkflow };
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { WorkflowBundle } from "../bundle.mjs";
|
|
2
|
-
import { createCloudflareWorkflowEntrypoint } from "./entrypoint.mjs";
|
|
3
2
|
import { CloudflareWorkflowBinding } from "./types.mjs";
|
|
3
|
+
import { createCloudflareWorkflowEntrypoint } from "./entrypoint.mjs";
|
|
4
4
|
import { CloudflareWorkflowRuntime, CreateCloudflareWorkflowRuntimeOptions } from "./runtime.mjs";
|
|
5
5
|
import { Logger } from "@temelj/log";
|
|
6
6
|
//#region src/cloudflare/host.d.ts
|
|
7
|
-
interface CreateCloudflareWorkflowHostOptions {
|
|
7
|
+
export interface CreateCloudflareWorkflowHostOptions {
|
|
8
8
|
readonly workflows: WorkflowBundle;
|
|
9
9
|
readonly logger?: Logger;
|
|
10
10
|
}
|
|
11
|
-
type CreateCloudflareWorkflowHostRuntimeOptions = Omit<CreateCloudflareWorkflowRuntimeOptions, "binding" | "registration" | "registry">;
|
|
12
|
-
interface CloudflareWorkflowHost<TEnv> {
|
|
11
|
+
export type CreateCloudflareWorkflowHostRuntimeOptions = Omit<CreateCloudflareWorkflowRuntimeOptions, "binding" | "registration" | "registry">;
|
|
12
|
+
export interface CloudflareWorkflowHost<TEnv> {
|
|
13
13
|
readonly Entrypoint: ReturnType<typeof createCloudflareWorkflowEntrypoint<TEnv>>;
|
|
14
14
|
createRuntime(binding: CloudflareWorkflowBinding, options?: CreateCloudflareWorkflowHostRuntimeOptions): CloudflareWorkflowRuntime;
|
|
15
15
|
}
|
|
16
16
|
/** Creates a Cloudflare host backed by one immutable workflow bundle. */
|
|
17
|
-
declare function createCloudflareWorkflowHost<TEnv = unknown>(options: CreateCloudflareWorkflowHostOptions): CloudflareWorkflowHost<TEnv>;
|
|
18
|
-
//#endregion
|
|
19
|
-
export { CloudflareWorkflowHost, CreateCloudflareWorkflowHostOptions, CreateCloudflareWorkflowHostRuntimeOptions, createCloudflareWorkflowHost };
|
|
17
|
+
export declare function createCloudflareWorkflowHost<TEnv = unknown>(options: CreateCloudflareWorkflowHostOptions): CloudflareWorkflowHost<TEnv>;
|
|
18
|
+
//#endregion
|
package/dist/cloudflare/host.mjs
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Registry } from "../registry.mjs";
|
|
2
2
|
import { createCloudflareWorkflowEntrypoint } from "./entrypoint.mjs";
|
|
3
3
|
import { createCloudflareWorkflowRuntime } from "./runtime.mjs";
|
|
4
4
|
//#region src/cloudflare/host.ts
|
|
5
5
|
/** Creates a Cloudflare host backed by one immutable workflow bundle. */
|
|
6
6
|
function createCloudflareWorkflowHost(options) {
|
|
7
|
-
const registry =
|
|
7
|
+
const registry = new Registry(options.workflows.workflows);
|
|
8
|
+
const entrypointOptions = {
|
|
9
|
+
registry,
|
|
10
|
+
logger: options.logger
|
|
11
|
+
};
|
|
8
12
|
return {
|
|
9
|
-
Entrypoint: createCloudflareWorkflowEntrypoint(
|
|
10
|
-
registry,
|
|
11
|
-
...options.logger === void 0 ? {} : { logger: options.logger }
|
|
12
|
-
}),
|
|
13
|
+
Entrypoint: createCloudflareWorkflowEntrypoint(entrypointOptions),
|
|
13
14
|
createRuntime(binding, runtimeOptions = {}) {
|
|
14
15
|
return createCloudflareWorkflowRuntime({
|
|
15
16
|
...runtimeOptions,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { CreateCloudflareWorkflowEntrypointOptions, createCloudflareWorkflowEntrypoint } from "./entrypoint.mjs";
|
|
2
1
|
import { CloudflareNonRetryableErrorConstructor, CloudflareWorkflowBinding, CloudflareWorkflowEvent, CloudflareWorkflowInstance, CloudflareWorkflowInstanceCreateOptions, CloudflareWorkflowInstanceStatus, CloudflareWorkflowStep, CloudflareWorkflowStepConfig, CloudflareWorkflowStepContext, CloudflareWorkflowStepEvent } from "./types.mjs";
|
|
2
|
+
import { CreateCloudflareWorkflowEntrypointOptions, createCloudflareWorkflowEntrypoint } from "./entrypoint.mjs";
|
|
3
3
|
import { RunCloudflareWorkflowOptions, runCloudflareWorkflow } from "./execution.mjs";
|
|
4
|
-
import {
|
|
4
|
+
import { CloudflareWorkflowRuntime, CloudflareWorkflowRuntimeRunsApi, CreateCloudflareWorkflowRuntimeOptions, createCloudflareWorkflowRuntime } from "./runtime.mjs";
|
|
5
5
|
import { CloudflareWorkflowHost, CreateCloudflareWorkflowHostOptions, CreateCloudflareWorkflowHostRuntimeOptions, createCloudflareWorkflowHost } from "./host.mjs";
|
|
6
|
-
import {
|
|
6
|
+
import { resolveCloudflareWorkflowImplementation } from "./registry.mjs";
|
|
7
7
|
import "temporal-polyfill/global";
|
|
8
|
-
export { type CloudflareNonRetryableErrorConstructor, type CloudflareWorkflowBinding, type CloudflareWorkflowEvent, CloudflareWorkflowHost, type CloudflareWorkflowInstance, type CloudflareWorkflowInstanceCreateOptions, type CloudflareWorkflowInstanceStatus,
|
|
8
|
+
export { type CloudflareNonRetryableErrorConstructor, type CloudflareWorkflowBinding, type CloudflareWorkflowEvent, CloudflareWorkflowHost, type CloudflareWorkflowInstance, type CloudflareWorkflowInstanceCreateOptions, type CloudflareWorkflowInstanceStatus, CloudflareWorkflowRuntime, CloudflareWorkflowRuntimeRunsApi, type CloudflareWorkflowStep, type CloudflareWorkflowStepConfig, type CloudflareWorkflowStepContext, type CloudflareWorkflowStepEvent, CreateCloudflareWorkflowEntrypointOptions, CreateCloudflareWorkflowHostOptions, CreateCloudflareWorkflowHostRuntimeOptions, CreateCloudflareWorkflowRuntimeOptions, RunCloudflareWorkflowOptions, createCloudflareWorkflowEntrypoint, createCloudflareWorkflowHost, createCloudflareWorkflowRuntime, resolveCloudflareWorkflowImplementation, runCloudflareWorkflow };
|
package/dist/cloudflare/mod.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolveCloudflareWorkflowImplementation } from "./registry.mjs";
|
|
2
2
|
import { runCloudflareWorkflow } from "./execution.mjs";
|
|
3
3
|
import { createCloudflareWorkflowEntrypoint } from "./entrypoint.mjs";
|
|
4
4
|
import { createCloudflareWorkflowRuntime } from "./runtime.mjs";
|
|
5
5
|
import { createCloudflareWorkflowHost } from "./host.mjs";
|
|
6
6
|
import "temporal-polyfill/global";
|
|
7
|
-
export { createCloudflareWorkflowEntrypoint, createCloudflareWorkflowHost,
|
|
7
|
+
export { createCloudflareWorkflowEntrypoint, createCloudflareWorkflowHost, createCloudflareWorkflowRuntime, resolveCloudflareWorkflowImplementation, runCloudflareWorkflow };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
//#region src/cloudflare/name.d.ts
|
|
2
|
-
declare function
|
|
3
|
-
declare function
|
|
4
|
-
//#endregion
|
|
5
|
-
export { makeCloudflareWorkflowEventType, makeCloudflareWorkflowStepName };
|
|
2
|
+
export declare function makeCloudflareStepName(value: string): string;
|
|
3
|
+
export declare function makeCloudflareEventType(value: string): string;
|
|
4
|
+
//#endregion
|
package/dist/cloudflare/name.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
//#region src/cloudflare/name.ts
|
|
2
2
|
const CLOUDFLARE_NAME_CHARACTERS = /[^a-zA-Z0-9_-]+/g;
|
|
3
|
-
function
|
|
3
|
+
function makeCloudflareStepName(value) {
|
|
4
4
|
return makeCloudflareName(value, 256, "step");
|
|
5
5
|
}
|
|
6
|
-
function
|
|
6
|
+
function makeCloudflareEventType(value) {
|
|
7
7
|
return makeCloudflareName(value, 100, "event");
|
|
8
8
|
}
|
|
9
9
|
function makeCloudflareName(value, maximumLength, fallback) {
|
|
@@ -19,4 +19,4 @@ function fnv1a(value) {
|
|
|
19
19
|
return hash.toString(36).padStart(13, "0");
|
|
20
20
|
}
|
|
21
21
|
//#endregion
|
|
22
|
-
export {
|
|
22
|
+
export { makeCloudflareEventType, makeCloudflareStepName };
|
|
@@ -1,24 +1,4 @@
|
|
|
1
|
-
import { RegistryLike,
|
|
2
|
-
import { CompiledWorkflowFunction } from "../types/client.mjs";
|
|
3
|
-
import { Registry } from "../registry.mjs";
|
|
4
|
-
import { Schema } from "@temelj/standard-schema";
|
|
1
|
+
import { RegistryLike, WorkflowImplementation } from "../types/definition.mjs";
|
|
5
2
|
//#region src/cloudflare/registry.d.ts
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
readonly definition: {
|
|
9
|
-
readonly kind: "definition";
|
|
10
|
-
readonly config: WorkflowDefinitionConfig<Schema | undefined>;
|
|
11
|
-
readonly name: string;
|
|
12
|
-
readonly version?: string;
|
|
13
|
-
};
|
|
14
|
-
readonly config: WorkflowDefinitionConfig<Schema | undefined>;
|
|
15
|
-
readonly name: string;
|
|
16
|
-
readonly version?: string;
|
|
17
|
-
readonly handler: (...args: never[]) => unknown;
|
|
18
|
-
}
|
|
19
|
-
type CloudflareWorkflowRegistryEntry = CloudflareWorkflowImplementationLike | CompiledWorkflowFunction<readonly unknown[], unknown>;
|
|
20
|
-
/** Creates a registry shared by the Cloudflare entrypoint and runtime facade. */
|
|
21
|
-
declare function createCloudflareWorkflowRegistry(entries?: readonly CloudflareWorkflowRegistryEntry[]): Registry;
|
|
22
|
-
declare function resolveCloudflareWorkflowImplementation(registry: RegistryLike, name: string, version?: string): WorkflowImplementation<unknown, unknown>;
|
|
23
|
-
//#endregion
|
|
24
|
-
export { createCloudflareWorkflowRegistry, resolveCloudflareWorkflowImplementation };
|
|
3
|
+
export declare function resolveCloudflareWorkflowImplementation(registry: RegistryLike, name: string, version?: string): WorkflowImplementation<unknown, unknown>;
|
|
4
|
+
//#endregion
|