@lostgradient/weft 0.3.0 → 0.4.0
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 +79 -24
- package/dist/cli/conformance.js +7 -1
- package/dist/cli/generated/operation-client.generated.d.ts +28 -13
- package/dist/cli/generated/operation-client.generated.js +1 -0
- package/dist/cli/help-text.d.ts +1 -1
- package/dist/cli/help-text.js +1 -0
- package/dist/cli/operation-catalog-snapshot.d.ts +8 -0
- package/dist/cli/operation-catalog-snapshot.js +11 -0
- package/dist/cli/parse-schedule-arguments.js +3 -1
- package/dist/cli/schedule.js +2 -1
- package/dist/cli/types.d.ts +1 -0
- package/dist/cli-main.js +79 -78
- package/dist/client/handle-delegation.d.ts +3 -2
- package/dist/client/handle-delegation.js +3 -1
- package/dist/client/http-client-requests.d.ts +2 -1
- package/dist/client/http-client-requests.js +7 -0
- package/dist/client/http-client.d.ts +9 -6
- package/dist/client/http-client.js +10 -1
- package/dist/client/http-request.d.ts +11 -1
- package/dist/client/http-request.js +17 -7
- package/dist/client/index.d.ts +1 -1
- package/dist/client/interface.d.ts +46 -5
- package/dist/client/local.d.ts +4 -1
- package/dist/client/local.js +12 -4
- package/dist/client/start-body.d.ts +4 -3
- package/dist/core/byte-arrays.d.ts +5 -0
- package/dist/core/byte-arrays.js +5 -0
- package/dist/core/checkpoint/lifecycle.d.ts +3 -0
- package/dist/core/checkpoint/lifecycle.js +9 -4
- package/dist/core/checkpoint/serialization.js +12 -5
- package/dist/core/codec/extension-codec.d.ts +16 -0
- package/dist/core/codec/extension-codec.js +100 -6
- package/dist/core/context/activity-retry-state.d.ts +38 -0
- package/dist/core/context/activity-retry-state.js +89 -0
- package/dist/core/context/activity-schedule-to-close.d.ts +159 -0
- package/dist/core/context/activity-schedule-to-close.js +69 -0
- package/dist/core/context/child-workflow-pipe.d.ts +5 -5
- package/dist/core/context/child-workflow-pipe.js +15 -2
- package/dist/core/context/context-presence.d.ts +19 -0
- package/dist/core/context/context-presence.js +13 -0
- package/dist/core/context/durable-operations.d.ts +25 -0
- package/dist/core/context/durable-operations.js +64 -0
- package/dist/core/context/index.d.ts +9 -5
- package/dist/core/context/index.js +17 -12
- package/dist/core/context/internals.d.ts +20 -0
- package/dist/core/context/internals.js +3 -1
- package/dist/core/context/operation-request.d.ts +35 -0
- package/dist/core/context/parallel-cache-entry.d.ts +14 -5
- package/dist/core/context/run-operation.d.ts +6 -1
- package/dist/core/context/run-operation.js +41 -87
- package/dist/core/context/session-state.js +7 -8
- package/dist/core/context/speculative-child.js +2 -0
- package/dist/core/context/types.d.ts +15 -0
- package/dist/core/context/version-patching.d.ts +8 -0
- package/dist/core/context/version-patching.js +40 -0
- package/dist/core/context/workflow-logger.d.ts +98 -0
- package/dist/core/context/workflow-logger.js +68 -0
- package/dist/core/engine/activity-heartbeat-tracking.d.ts +64 -0
- package/dist/core/engine/activity-heartbeat-tracking.js +42 -0
- package/dist/core/engine/activity-per-attempt-timeout.d.ts +41 -0
- package/dist/core/engine/activity-per-attempt-timeout.js +36 -0
- package/dist/core/engine/activity-reconciliation.d.ts +1 -0
- package/dist/core/engine/activity-reconciliation.js +12 -1
- package/dist/core/engine/activity-resolution.d.ts +23 -0
- package/dist/core/engine/activity-resolution.js +37 -0
- package/dist/core/engine/aggregate.js +66 -30
- package/dist/core/engine/async-activity-completion.d.ts +23 -6
- package/dist/core/engine/async-activity-completion.js +53 -12
- package/dist/core/engine/attributes-tags.js +9 -4
- package/dist/core/engine/bulk-operations-purge.d.ts +26 -0
- package/dist/core/engine/bulk-operations-purge.js +38 -3
- package/dist/core/engine/bulk-operations-shared.d.ts +2 -0
- package/dist/core/engine/bulk-operations-shared.js +8 -2
- package/dist/core/engine/bulk-operations.d.ts +4 -1
- package/dist/core/engine/bulk-operations.js +235 -24
- package/dist/core/engine/callback-creators-bundles.d.ts +9 -0
- package/dist/core/engine/callback-creators-bundles.js +30 -2
- package/dist/core/engine/callback-creators-core.js +6 -4
- package/dist/core/engine/callback-creators-router.js +10 -0
- package/dist/core/engine/callback-creators-schedule.d.ts +2 -2
- package/dist/core/engine/callback-creators-schedule.js +12 -8
- package/dist/core/engine/candidate-read-batching.d.ts +6 -0
- package/dist/core/engine/candidate-read-batching.js +1 -0
- package/dist/core/engine/checkpoint-io.js +61 -25
- package/dist/core/engine/checkpoint-reads.js +3 -2
- package/dist/core/engine/checkpoint-replay.d.ts +20 -0
- package/dist/core/engine/checkpoint-replay.js +242 -0
- package/dist/core/engine/checkpoint-side-effects.d.ts +23 -0
- package/dist/core/engine/checkpoint-side-effects.js +35 -0
- package/dist/core/engine/child-workflow-cancellation.d.ts +10 -0
- package/dist/core/engine/child-workflow-cancellation.js +40 -0
- package/dist/core/engine/child-workflow.js +27 -4
- package/dist/core/engine/condition-waiters.d.ts +14 -0
- package/dist/core/engine/condition-waiters.js +5 -0
- package/dist/core/engine/construction.d.ts +3 -0
- package/dist/core/engine/construction.js +21 -8
- package/dist/core/engine/coordination-branch-executors.d.ts +70 -0
- package/dist/core/engine/coordination-branch-executors.js +107 -0
- package/dist/core/engine/deferred-consume-envelope.d.ts +59 -0
- package/dist/core/engine/deferred-consume-envelope.js +14 -0
- package/dist/core/engine/disposal.js +13 -0
- package/dist/core/engine/engine-create-types.d.ts +14 -4
- package/dist/core/engine/engine-internal-types.d.ts +26 -3
- package/dist/core/engine/errors.d.ts +47 -0
- package/dist/core/engine/errors.js +20 -0
- package/dist/core/engine/event-log-compaction.d.ts +8 -0
- package/dist/core/engine/event-log-compaction.js +20 -2
- package/dist/core/engine/fenced-write.d.ts +65 -0
- package/dist/core/engine/fenced-write.js +71 -0
- package/dist/core/engine/finalizer-state.d.ts +28 -0
- package/dist/core/engine/finalizer-state.js +16 -0
- package/dist/core/engine/handles.d.ts +8 -0
- package/dist/core/engine/index.d.ts +34 -16
- package/dist/core/engine/index.js +133 -8
- package/dist/core/engine/inline-parking.js +3 -2
- package/dist/core/engine/internals.d.ts +107 -3
- package/dist/core/engine/lease-codec.d.ts +35 -0
- package/dist/core/engine/lease-codec.js +32 -0
- package/dist/core/engine/lease-deposition.d.ts +66 -0
- package/dist/core/engine/lease-deposition.js +10 -0
- package/dist/core/engine/lease-errors.d.ts +99 -0
- package/dist/core/engine/lease-errors.js +30 -0
- package/dist/core/engine/lease-manager.d.ts +114 -0
- package/dist/core/engine/lease-manager.js +135 -0
- package/dist/core/engine/lifecycle/persist.js +10 -32
- package/dist/core/engine/lifecycle/recovered-services.d.ts +8 -6
- package/dist/core/engine/lifecycle/recovered-services.js +18 -3
- package/dist/core/engine/lifecycle/resume.js +16 -9
- package/dist/core/engine/lifecycle/shared.d.ts +8 -1
- package/dist/core/engine/lifecycle/start-batch.d.ts +1 -1
- package/dist/core/engine/lifecycle/start-batch.js +2 -1
- package/dist/core/engine/lifecycle/start-commit.d.ts +9 -0
- package/dist/core/engine/lifecycle/start-commit.js +50 -8
- package/dist/core/engine/lifecycle/start-or-signal-create.d.ts +58 -0
- package/dist/core/engine/lifecycle/start-or-signal-create.js +95 -0
- package/dist/core/engine/lifecycle/start-or-signal.d.ts +3 -2
- package/dist/core/engine/lifecycle/start-or-signal.js +11 -81
- package/dist/core/engine/lifecycle/start-terminal-conflict-purge.d.ts +39 -0
- package/dist/core/engine/lifecycle/start-terminal-conflict-purge.js +28 -0
- package/dist/core/engine/lifecycle/start.d.ts +4 -4
- package/dist/core/engine/lifecycle/start.js +17 -9
- package/dist/core/engine/lifecycle/transition.js +17 -5
- package/dist/core/engine/lifecycle.d.ts +1 -1
- package/dist/core/engine/list-candidate-resolution.js +2 -2
- package/dist/core/engine/listing.js +9 -5
- package/dist/core/engine/operations-activity.d.ts +4 -11
- package/dist/core/engine/operations-activity.js +22 -49
- package/dist/core/engine/operations-coordination.d.ts +10 -0
- package/dist/core/engine/operations-coordination.js +43 -8
- package/dist/core/engine/operations-router.d.ts +6 -0
- package/dist/core/engine/operations-router.js +2 -0
- package/dist/core/engine/operations-speculate.js +6 -2
- package/dist/core/engine/operations-stream.js +12 -2
- package/dist/core/engine/operations-time.d.ts +4 -2
- package/dist/core/engine/operations-time.js +14 -2
- package/dist/core/engine/operations-wait-condition.d.ts +23 -0
- package/dist/core/engine/operations-wait-condition.js +62 -0
- package/dist/core/engine/ownership-options.d.ts +23 -0
- package/dist/core/engine/ownership-options.js +26 -0
- package/dist/core/engine/payload-size-policy.d.ts +3 -0
- package/dist/core/engine/payload-size-policy.js +4 -0
- package/dist/core/engine/pending-updates.d.ts +17 -0
- package/dist/core/engine/pending-updates.js +33 -11
- package/dist/core/engine/queries.js +1 -1
- package/dist/core/engine/registration.d.ts +1 -0
- package/dist/core/engine/registration.js +18 -3
- package/dist/core/engine/schedule-jitter.d.ts +5 -0
- package/dist/core/engine/schedule-jitter.js +10 -0
- package/dist/core/engine/schedule-run.d.ts +17 -0
- package/dist/core/engine/schedule-run.js +38 -0
- package/dist/core/engine/schedule-timer.js +81 -17
- package/dist/core/engine/schedules.d.ts +7 -4
- package/dist/core/engine/schedules.js +37 -16
- package/dist/core/engine/search-attribute-records.d.ts +4 -0
- package/dist/core/engine/search-attribute-records.js +17 -0
- package/dist/core/engine/signals.d.ts +18 -2
- package/dist/core/engine/signals.js +42 -21
- package/dist/core/engine/state-utilities.d.ts +49 -2
- package/dist/core/engine/state-utilities.js +114 -3
- package/dist/core/engine/storage-io.d.ts +16 -2
- package/dist/core/engine/storage-io.js +26 -5
- package/dist/core/engine/stream-chunk-loading.d.ts +2 -0
- package/dist/core/engine/stream-chunk-loading.js +24 -1
- package/dist/core/engine/sub-operation.js +22 -3
- package/dist/core/engine/termination/cleanup.d.ts +3 -1
- package/dist/core/engine/termination/cleanup.js +25 -1
- package/dist/core/engine/termination/complete.js +44 -6
- package/dist/core/engine/termination/finalizer-activity.d.ts +53 -0
- package/dist/core/engine/termination/finalizer-activity.js +30 -0
- package/dist/core/engine/termination/finalizer-claim.d.ts +110 -0
- package/dist/core/engine/termination/finalizer-claim.js +80 -0
- package/dist/core/engine/termination/finalizer.d.ts +48 -0
- package/dist/core/engine/termination/finalizer.js +159 -0
- package/dist/core/engine/termination/suspend.d.ts +3 -1
- package/dist/core/engine/termination.d.ts +1 -0
- package/dist/core/engine/termination.js +4 -0
- package/dist/core/engine/updates.js +5 -25
- package/dist/core/engine/validation/schedule.d.ts +2 -1
- package/dist/core/engine/validation/schedule.js +51 -2
- package/dist/core/engine/validation.js +32 -5
- package/dist/core/engine/waiting-update-response.d.ts +8 -0
- package/dist/core/engine/waiting-update-response.js +22 -0
- package/dist/core/engine/workflow-concurrency.d.ts +10 -0
- package/dist/core/engine/workflow-concurrency.js +136 -0
- package/dist/core/engine/workflow-feed.d.ts +4 -5
- package/dist/core/engine/workflow-feed.js +4 -1
- package/dist/core/engine/workflow-indexes.d.ts +9 -0
- package/dist/core/engine/workflow-indexes.js +10 -0
- package/dist/core/engine/workflow-state-stream.js +33 -13
- package/dist/core/engine/workflow-visibility-queries.d.ts +2 -2
- package/dist/core/engine-helpers.js +1 -0
- package/dist/core/events/activity-events.d.ts +43 -12
- package/dist/core/events/activity-events.js +28 -0
- package/dist/core/events/attribute-events.d.ts +2 -3
- package/dist/core/events/event-map.d.ts +18 -12
- package/dist/core/events/index.d.ts +1 -0
- package/dist/core/events/index.js +1 -0
- package/dist/core/events/schedule-events.d.ts +71 -0
- package/dist/core/events/schedule-events.js +29 -0
- package/dist/core/events/signal-events.d.ts +4 -6
- package/dist/core/events/system-events.d.ts +29 -19
- package/dist/core/events/system-events.js +26 -0
- package/dist/core/events/update-events.d.ts +6 -8
- package/dist/core/events/workflow-events.d.ts +88 -23
- package/dist/core/events/workflow-events.js +26 -0
- package/dist/core/failure-categories.js +5 -17
- package/dist/core/fault-code.d.ts +9 -3
- package/dist/core/fault-code.js +1 -0
- package/dist/core/inline-execution-strategy.context-options.d.ts +69 -0
- package/dist/core/inline-execution-strategy.context-options.js +56 -0
- package/dist/core/inline-execution-strategy.d.ts +31 -36
- package/dist/core/inline-execution-strategy.js +16 -27
- package/dist/core/list-filter-validation.d.ts +1 -1
- package/dist/core/payload-size.d.ts +1 -1
- package/dist/core/persisted-data-incompatible-error.d.ts +9 -7
- package/dist/core/review/events.d.ts +6 -8
- package/dist/core/scheduler/scheduler-class.d.ts +10 -1
- package/dist/core/scheduler/scheduler-class.js +38 -11
- package/dist/core/scheduler/timer-batch.js +9 -1
- package/dist/core/scheduler/timer-sources.d.ts +1 -0
- package/dist/core/scheduler/timer-sources.js +11 -5
- package/dist/core/session-state.d.ts +0 -1
- package/dist/core/session-state.js +2 -2
- package/dist/core/start-workflow-validation.d.ts +34 -0
- package/dist/core/start-workflow-validation.js +19 -0
- package/dist/core/types/activity-verification.d.ts +67 -0
- package/dist/core/types/activity-verification.js +0 -0
- package/dist/core/types/activity.d.ts +80 -61
- package/dist/core/types/bulk.d.ts +50 -9
- package/dist/core/types/checkpoint.d.ts +44 -8
- package/dist/core/types/list-options.d.ts +146 -0
- package/dist/core/types/list-options.js +0 -0
- package/dist/core/types/options.d.ts +121 -165
- package/dist/core/types/schedules.d.ts +39 -3
- package/dist/core/types/services-resolution.d.ts +2 -2
- package/dist/core/types/workflow-builder-runtime.d.ts +12 -3
- package/dist/core/types/workflow-builder-runtime.js +11 -2
- package/dist/core/types/workflow-builder.d.ts +42 -11
- package/dist/core/types/workflow-concurrency.d.ts +39 -0
- package/dist/core/types/workflow-concurrency.js +0 -0
- package/dist/core/types/workflow-context.d.ts +157 -14
- package/dist/core/types/workflow-definition.d.ts +53 -10
- package/dist/core/types/workflow-function.d.ts +84 -9
- package/dist/core/types/workflow-log.d.ts +98 -0
- package/dist/core/types/workflow-log.js +0 -0
- package/dist/core/types/workflow-registries.d.ts +14 -3
- package/dist/core/types/workflow-registry.d.ts +3 -0
- package/dist/core/types.d.ts +4 -0
- package/dist/core/types.js +4 -0
- package/dist/core/versioning.d.ts +9 -39
- package/dist/core/versioning.js +2 -12
- package/dist/core/weft-error.d.ts +44 -1
- package/dist/core/weft-error.js +16 -0
- package/dist/core/worker-execution-strategy-options.d.ts +26 -0
- package/dist/core/worker-execution-strategy.js +40 -36
- package/dist/core/worker-inbound-message.d.ts +38 -0
- package/dist/core/worker-inbound-message.js +37 -0
- package/dist/core/worker-log-abuse-counter.d.ts +175 -0
- package/dist/core/worker-log-abuse-counter.js +107 -0
- package/dist/core/worker-message-helpers.d.ts +47 -0
- package/dist/core/worker-message-helpers.js +26 -0
- package/dist/core/worker-protocol-guard.js +1 -1
- package/dist/core/worker-protocol-log.d.ts +56 -0
- package/dist/core/worker-protocol-log.js +18 -0
- package/dist/core/worker-protocol.d.ts +23 -0
- package/dist/core/worker-protocol.js +12 -2
- package/dist/core/workflow-version-tuple.d.ts +3 -9
- package/dist/core/workflow-version-tuple.js +2 -3
- package/dist/diagnostics/format.js +1 -6
- package/dist/diagnostics/types.d.ts +4 -5
- package/dist/diagnostics/validate.d.ts +0 -1
- package/dist/diagnostics/version-check.d.ts +1 -1
- package/dist/diagnostics/version-check.js +4 -9
- package/dist/index.d.ts +12 -10
- package/dist/index.js +29 -3
- package/dist/json-schema.js +3 -3
- package/dist/mcp/cli.js +27 -27
- package/dist/mcp/dispatcher.js +1 -1
- package/dist/mcp/http.js +16 -6
- package/dist/mcp/protocol.d.ts +2 -0
- package/dist/mcp/protocol.js +1 -1
- package/dist/mcp/session.d.ts +16 -0
- package/dist/mcp/session.js +59 -6
- package/dist/mcp/tools.js +73 -6
- package/dist/observability/index.js +2 -2
- package/dist/server/asyncapi-channels.js +5 -2
- package/dist/server/attribute-filters.d.ts +8 -3
- package/dist/server/attribute-filters.js +6 -1
- package/dist/server/authentication/api-key.d.ts +2 -1
- package/dist/server/authentication/api-key.js +5 -2
- package/dist/server/authentication/constant-time-api-key.d.ts +15 -0
- package/dist/server/authentication/constant-time-api-key.js +24 -0
- package/dist/server/authentication/index.d.ts +1 -1
- package/dist/server/authentication/index.js +7 -4
- package/dist/server/authentication/rotating-api-key-store.d.ts +5 -3
- package/dist/server/authentication/rotating-api-key-store.js +19 -11
- package/dist/server/engine-event-feed-backend.d.ts +4 -5
- package/dist/server/fault-to-http.js +8 -1
- package/dist/server/fault-to-json-rpc.js +1 -0
- package/dist/server/fleet-event-feed.d.ts +31 -0
- package/dist/server/fleet-event-feed.js +157 -0
- package/dist/server/handler/index.js +1 -1
- package/dist/server/handler/response-helpers.js +2 -1
- package/dist/server/handler/route-dispatch.d.ts +6 -3
- package/dist/server/handler/route-dispatch.js +2 -2
- package/dist/server/handler.js +23 -23
- package/dist/server/index.d.ts +32 -2
- package/dist/server/index.js +26 -26
- package/dist/server/json-rpc-transport-helpers.d.ts +1 -0
- package/dist/server/json-rpc-transport-helpers.js +2 -1
- package/dist/server/json-rpc-websocket-runtime.d.ts +11 -2
- package/dist/server/json-rpc-websocket-runtime.js +1 -0
- package/dist/server/json-rpc-websocket-subscriptions.d.ts +10 -0
- package/dist/server/json-rpc-websocket-subscriptions.js +29 -0
- package/dist/server/json-rpc-websocket-types.d.ts +22 -0
- package/dist/server/json-rpc-websocket-types.js +0 -0
- package/dist/server/json-rpc-websocket-validation.js +20 -4
- package/dist/server/json-rpc-websocket.d.ts +2 -43
- package/dist/server/json-rpc-websocket.js +57 -74
- package/dist/server/openapi.d.ts +2 -1
- package/dist/server/openapi.js +1 -3
- package/dist/server/openrpc-document-schema.d.ts +78 -0
- package/dist/server/openrpc-document-schema.js +27 -1
- package/dist/server/openrpc-errors.d.ts +3 -0
- package/dist/server/openrpc-errors.js +2 -1
- package/dist/server/openrpc.js +32 -0
- package/dist/server/operation-catalog/index.d.ts +1 -1
- package/dist/server/operation-catalog/pipeline-helpers.js +1 -0
- package/dist/server/operation-catalog/pipeline-stages.js +26 -12
- package/dist/server/operation-catalog/pipeline.js +8 -1
- package/dist/server/operation-catalog/registry.js +13 -0
- package/dist/server/operation-catalog/types.d.ts +20 -9
- package/dist/server/operation-fault.d.ts +10 -0
- package/dist/server/operation-fault.js +2 -0
- package/dist/server/operation-registry.d.ts +12 -11
- package/dist/server/operation-registry.js +12 -3
- package/dist/server/operations/aggregate-workflows.d.ts +15 -15
- package/dist/server/operations/async-activity.d.ts +2 -2
- package/dist/server/operations/async-activity.js +12 -7
- package/dist/server/operations/bulk-cancel-workflows.d.ts +1 -1
- package/dist/server/operations/bulk-cancel-workflows.js +2 -2
- package/dist/server/operations/bulk-delete-workflows.d.ts +1 -1
- package/dist/server/operations/bulk-delete-workflows.js +2 -2
- package/dist/server/operations/bulk-filter-helpers.d.ts +8 -6
- package/dist/server/operations/bulk-filter-helpers.js +54 -24
- package/dist/server/operations/bulk-mutate-workflow-tags.d.ts +11 -9
- package/dist/server/operations/bulk-mutate-workflow-tags.js +2 -2
- package/dist/server/operations/bulk-operation-helpers.d.ts +2 -2
- package/dist/server/operations/bulk-retry-failed-workflows.d.ts +7 -0
- package/dist/server/operations/bulk-retry-failed-workflows.js +64 -0
- package/dist/server/operations/bulk-signal-workflows.d.ts +11 -9
- package/dist/server/operations/bulk-signal-workflows.js +2 -2
- package/dist/server/operations/cancel-schedule.d.ts +1 -1
- package/dist/server/operations/create-schedule.d.ts +3 -1
- package/dist/server/operations/create-schedule.js +29 -11
- package/dist/server/operations/fleet-events-subscription.d.ts +54 -0
- package/dist/server/operations/fleet-events-subscription.js +99 -0
- package/dist/server/operations/fork-workflow.d.ts +1 -1
- package/dist/server/operations/fork-workflow.js +3 -2
- package/dist/server/operations/get-checkpoint-at.d.ts +1 -1
- package/dist/server/operations/get-registry.d.ts +1 -1
- package/dist/server/operations/get-retention-overview.d.ts +1 -1
- package/dist/server/operations/get-review.d.ts +1 -1
- package/dist/server/operations/get-schedule.d.ts +1 -1
- package/dist/server/operations/get-stream-chunks.d.ts +1 -1
- package/dist/server/operations/get-system-metrics.d.ts +2 -2
- package/dist/server/operations/get-task-diagnostics.d.ts +45 -6
- package/dist/server/operations/get-task-diagnostics.js +101 -7
- package/dist/server/operations/get-update-result.d.ts +1 -1
- package/dist/server/operations/get-workflow-attributes.d.ts +1 -1
- package/dist/server/operations/get-workflow-events.d.ts +1 -1
- package/dist/server/operations/get-workflow-result.d.ts +1 -1
- package/dist/server/operations/get-workflow-timeline.d.ts +1 -1
- package/dist/server/operations/get-workflow.d.ts +1 -1
- package/dist/server/operations/list-checkpoints.d.ts +1 -1
- package/dist/server/operations/list-reviews.d.ts +1 -1
- package/dist/server/operations/list-schedules.d.ts +1 -1
- package/dist/server/operations/list-task-queues.d.ts +2 -2
- package/dist/server/operations/list-workers.d.ts +2 -2
- package/dist/server/operations/list-workflows.d.ts +1 -1
- package/dist/server/operations/operation-helpers.d.ts +16 -1
- package/dist/server/operations/operation-helpers.js +15 -3
- package/dist/server/operations/pause-schedule.d.ts +1 -1
- package/dist/server/operations/purge-workflows.d.ts +5 -5
- package/dist/server/operations/purge-workflows.js +2 -2
- package/dist/server/operations/query-workflow.d.ts +1 -1
- package/dist/server/operations/query-workflow.js +3 -2
- package/dist/server/operations/recover-all.d.ts +1 -1
- package/dist/server/operations/replay-workflow.d.ts +1 -1
- package/dist/server/operations/resume-schedule.d.ts +1 -1
- package/dist/server/operations/set-workflow-attributes.d.ts +1 -1
- package/dist/server/operations/set-workflow-attributes.js +6 -3
- package/dist/server/operations/signal-workflow.js +8 -3
- package/dist/server/operations/single-workflow-tag-mutation.js +13 -3
- package/dist/server/operations/start-or-signal-workflow.d.ts +6 -1
- package/dist/server/operations/start-or-signal-workflow.js +14 -24
- package/dist/server/operations/start-workflow-options.d.ts +6 -0
- package/dist/server/operations/start-workflow-rest-input.d.ts +14 -0
- package/dist/server/operations/start-workflow-rest-input.js +31 -0
- package/dist/server/operations/start-workflow.d.ts +1 -1
- package/dist/server/operations/start-workflow.js +8 -23
- package/dist/server/operations/storage.d.ts +6 -6
- package/dist/server/operations/storage.js +24 -14
- package/dist/server/operations/stream-workflow-sse.d.ts +1 -1
- package/dist/server/operations/submit-review-decision.d.ts +1 -1
- package/dist/server/operations/submit-review-decision.js +6 -3
- package/dist/server/operations/update-schedule.d.ts +1 -1
- package/dist/server/operations/update-schedule.js +7 -4
- package/dist/server/operations/update-workflow.d.ts +1 -1
- package/dist/server/operations/update-workflow.js +7 -3
- package/dist/server/operations/worker-drain.d.ts +8 -8
- package/dist/server/operations/worker-drain.js +11 -8
- package/dist/server/operations/workflow-events-subscription.d.ts +7 -8
- package/dist/server/operations/workflow-events-subscription.js +43 -8
- package/dist/server/rest-binding.d.ts +3 -1
- package/dist/server/rest-bindings.js +12 -0
- package/dist/server/rest-body.d.ts +10 -0
- package/dist/server/rest-body.js +80 -0
- package/dist/server/runtime/authentication-bridge.d.ts +1 -0
- package/dist/server/runtime/authentication-bridge.js +33 -6
- package/dist/server/runtime/client-visible-events.d.ts +3 -0
- package/dist/server/runtime/client-visible-events.js +65 -0
- package/dist/server/runtime/context.d.ts +7 -0
- package/dist/server/runtime/event-broadcasting.d.ts +6 -0
- package/dist/server/runtime/event-broadcasting.js +72 -38
- package/dist/server/runtime/retry.d.ts +1 -0
- package/dist/server/runtime/retry.js +14 -0
- package/dist/server/runtime/shutdown.d.ts +7 -6
- package/dist/server/runtime/shutdown.js +6 -1
- package/dist/server/runtime/task-polling.js +61 -20
- package/dist/server/runtime/task-reconciliation.js +9 -1
- package/dist/server/runtime/task-result-resolution.d.ts +15 -0
- package/dist/server/runtime/task-result-resolution.js +81 -0
- package/dist/server/runtime/websocket-stream.d.ts +20 -1
- package/dist/server/runtime/websocket-stream.js +173 -7
- package/dist/server/runtime/websocket-upgrade.js +22 -3
- package/dist/server/runtime/websocket-worker.d.ts +1 -1
- package/dist/server/runtime/websocket-worker.js +38 -30
- package/dist/server/serve-internals.d.ts +3 -1
- package/dist/server/serve-internals.js +18 -2
- package/dist/server/task-state.d.ts +30 -0
- package/dist/server/task-state.js +28 -0
- package/dist/server/workflow-event-feed.d.ts +36 -115
- package/dist/server/workflow-event-feed.js +92 -27
- package/dist/service-worker/index.js +30 -30
- package/dist/storage/auto.js +1 -1
- package/dist/storage/bun-sql.js +24 -0
- package/dist/storage/compressed-storage.js +1 -1
- package/dist/storage/default-scope.d.ts +7 -4
- package/dist/storage/http.js +2 -2
- package/dist/storage/index.d.ts +76 -4
- package/dist/storage/indexeddb.js +1 -1
- package/dist/storage/interface.d.ts +163 -0
- package/dist/storage/interface.js +1 -1
- package/dist/storage/key-prefixes.d.ts +1 -1
- package/dist/storage/key-prefixes.js +10 -0
- package/dist/storage/lmdb.d.ts +4 -3
- package/dist/storage/lmdb.js +1 -1
- package/dist/storage/memory.js +1 -1
- package/dist/storage/neon-batch.d.ts +30 -0
- package/dist/storage/neon-batch.js +30 -0
- package/dist/storage/neon-value-mapping.d.ts +30 -3
- package/dist/storage/neon-value-mapping.js +12 -0
- package/dist/storage/neon.d.ts +16 -0
- package/dist/storage/neon.js +9 -4
- package/dist/storage/node-sqlite.js +23 -0
- package/dist/storage/postgres-key-value-queries.d.ts +69 -44
- package/dist/storage/postgres-key-value-queries.js +62 -24
- package/dist/storage/resolve.js +1 -1
- package/dist/storage/scoped-storage.js +1 -1
- package/dist/storage/testing.d.ts +168 -0
- package/dist/storage/testing.js +2 -0
- package/dist/storage/turso.d.ts +8 -0
- package/dist/storage/turso.js +2 -2
- package/dist/storage/typed-storage.js +1 -1
- package/dist/storage/web-extension.js +1 -1
- package/dist/testing/index.js +28 -28
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker/protocol.js +1 -1
- package/dist/workers/worker-replay-state.d.ts +32 -0
- package/dist/workers/worker-replay-state.js +35 -0
- package/dist/workers/worker-state-namespace.d.ts +21 -0
- package/dist/workers/worker-state-namespace.js +13 -0
- package/dist/workers/workflow-runner.d.ts +19 -15
- package/dist/workers/workflow-runner.js +72 -60
- package/dist/workers/workflow-worker-entry.js +5 -2
- package/package.json +5 -1
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage adapter conformance helpers for third-party adapter authors.
|
|
3
|
+
*
|
|
4
|
+
* Imported via `@lostgradient/weft/storage/testing`. These helpers register
|
|
5
|
+
* `bun:test` suites against a caller-provided adapter factory, so this subpath
|
|
6
|
+
* is intended for Bun test files rather than production runtime bundles.
|
|
7
|
+
*
|
|
8
|
+
* @module @lostgradient/weft/storage/testing
|
|
9
|
+
*/
|
|
10
|
+
import type { Storage, StorageCapabilities } from './interface.ts';
|
|
11
|
+
/**
|
|
12
|
+
* Options for {@link runStorageCapabilityConformance}.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* import type { CapabilityConformanceOptions } from '@lostgradient/weft/storage/testing';
|
|
17
|
+
* import { MemoryStorage, type StorageCapabilities } from '@lostgradient/weft/storage';
|
|
18
|
+
*
|
|
19
|
+
* const expected = {
|
|
20
|
+
* persistence: 'ephemeral',
|
|
21
|
+
* readAfterWrite: 'linearizable',
|
|
22
|
+
* scanConsistency: 'snapshot',
|
|
23
|
+
* atomicBatch: true,
|
|
24
|
+
* conditionalBatch: true,
|
|
25
|
+
* boundedRangeDelete: true,
|
|
26
|
+
* } satisfies StorageCapabilities;
|
|
27
|
+
*
|
|
28
|
+
* const options: CapabilityConformanceOptions = {
|
|
29
|
+
* create: () => new MemoryStorage(),
|
|
30
|
+
* expected,
|
|
31
|
+
* };
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export type CapabilityConformanceOptions = {
|
|
35
|
+
/** Construct a fresh, empty adapter for each conformance case. */
|
|
36
|
+
readonly create: () => Storage | Promise<Storage>;
|
|
37
|
+
/** Expected capability row for this adapter, asserted exactly. */
|
|
38
|
+
readonly expected: StorageCapabilities;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Options for {@link runConcurrentConditionalBatchConformance}.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* import type { ConcurrentConditionalBatchConformanceOptions } from '@lostgradient/weft/storage/testing';
|
|
46
|
+
* import { BunSQLiteStorage } from '@lostgradient/weft/storage/sqlite/bun';
|
|
47
|
+
*
|
|
48
|
+
* const options: ConcurrentConditionalBatchConformanceOptions = {
|
|
49
|
+
* create: () => new BunSQLiteStorage(':memory:'),
|
|
50
|
+
* };
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export type ConcurrentConditionalBatchConformanceOptions = {
|
|
54
|
+
/** Construct a fresh, empty adapter that can stage concurrent write transactions. */
|
|
55
|
+
readonly create: () => Storage | Promise<Storage>;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Options for {@link runBinaryAndLargeScanStorageConformance}.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* import type { BinaryAndLargeScanConformanceOptions } from '@lostgradient/weft/storage/testing';
|
|
63
|
+
* import { MemoryStorage } from '@lostgradient/weft/storage';
|
|
64
|
+
*
|
|
65
|
+
* const options: BinaryAndLargeScanConformanceOptions = {
|
|
66
|
+
* create: () => new MemoryStorage(),
|
|
67
|
+
* };
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export type BinaryAndLargeScanConformanceOptions = {
|
|
71
|
+
/** Construct a fresh, empty adapter for each conformance case. */
|
|
72
|
+
readonly create: () => Storage | Promise<Storage>;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Construct a fresh, empty adapter for each basic-contract case.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* import type { BasicStorageContractOptions } from '@lostgradient/weft/storage/testing';
|
|
80
|
+
* import { MemoryStorage } from '@lostgradient/weft/storage';
|
|
81
|
+
*
|
|
82
|
+
* const options: BasicStorageContractOptions = {
|
|
83
|
+
* create: () => new MemoryStorage(),
|
|
84
|
+
* };
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export type BasicStorageContractOptions = {
|
|
88
|
+
readonly create: () => Storage | Promise<Storage>;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Register a shared `describe` block for binary byte round-trips and large
|
|
92
|
+
* sorted prefix scans. Use this alongside the basic contract for adapters whose
|
|
93
|
+
* production storage can exercise larger result sets locally.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```ts
|
|
97
|
+
* import { runBinaryAndLargeScanStorageConformance } from '@lostgradient/weft/storage/testing';
|
|
98
|
+
* import { MemoryStorage } from '@lostgradient/weft/storage';
|
|
99
|
+
*
|
|
100
|
+
* runBinaryAndLargeScanStorageConformance('MemoryStorage', {
|
|
101
|
+
* create: () => new MemoryStorage(),
|
|
102
|
+
* });
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
export declare function runBinaryAndLargeScanStorageConformance(name: string, options: BinaryAndLargeScanConformanceOptions): void;
|
|
106
|
+
/**
|
|
107
|
+
* Register a shared `describe` block that proves an adapter's declared
|
|
108
|
+
* {@link StorageCapabilities} against its actual behavior, not just its
|
|
109
|
+
* self-report. The suite asserts the exact capability row, then behaviorally
|
|
110
|
+
* verifies read-after-write, snapshot scans, and compare-and-swap contention
|
|
111
|
+
* when the adapter claims those stronger guarantees.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```ts
|
|
115
|
+
* import { runStorageCapabilityConformance } from '@lostgradient/weft/storage/testing';
|
|
116
|
+
* import { MemoryStorage, type StorageCapabilities } from '@lostgradient/weft/storage';
|
|
117
|
+
*
|
|
118
|
+
* const expected = {
|
|
119
|
+
* persistence: 'ephemeral',
|
|
120
|
+
* readAfterWrite: 'linearizable',
|
|
121
|
+
* scanConsistency: 'snapshot',
|
|
122
|
+
* atomicBatch: true,
|
|
123
|
+
* conditionalBatch: true,
|
|
124
|
+
* boundedRangeDelete: true,
|
|
125
|
+
* } satisfies StorageCapabilities;
|
|
126
|
+
*
|
|
127
|
+
* runStorageCapabilityConformance('MemoryStorage', {
|
|
128
|
+
* create: () => new MemoryStorage(),
|
|
129
|
+
* expected,
|
|
130
|
+
* });
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
export declare function runStorageCapabilityConformance(name: string, options: CapabilityConformanceOptions): void;
|
|
134
|
+
/**
|
|
135
|
+
* Register a shared `describe` block that exercises concurrent
|
|
136
|
+
* compare-and-swap writes against one adapter instance. Use this in addition to
|
|
137
|
+
* {@link runStorageCapabilityConformance} for storage backends that can stage
|
|
138
|
+
* overlapping write transactions locally. Synchronous in-memory adapters still
|
|
139
|
+
* run these calls in the same JavaScript turn, so pair this helper with an
|
|
140
|
+
* adapter-specific multi-connection test when true IO-level contention matters.
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```ts
|
|
144
|
+
* import { runConcurrentConditionalBatchConformance } from '@lostgradient/weft/storage/testing';
|
|
145
|
+
* import { BunSQLiteStorage } from '@lostgradient/weft/storage/sqlite/bun';
|
|
146
|
+
*
|
|
147
|
+
* runConcurrentConditionalBatchConformance('BunSQLiteStorage', {
|
|
148
|
+
* create: () => new BunSQLiteStorage(':memory:'),
|
|
149
|
+
* });
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
export declare function runConcurrentConditionalBatchConformance(name: string, options: ConcurrentConditionalBatchConformanceOptions): void;
|
|
153
|
+
/**
|
|
154
|
+
* Register the basic key/value and scan contract that every storage adapter
|
|
155
|
+
* must satisfy: get, put, overwrite, delete, prefix scans, limits, reverse
|
|
156
|
+
* ordering, range bounds, and empty-prefix scans.
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```ts
|
|
160
|
+
* import { runBasicStorageContract } from '@lostgradient/weft/storage/testing';
|
|
161
|
+
* import { MemoryStorage } from '@lostgradient/weft/storage';
|
|
162
|
+
*
|
|
163
|
+
* runBasicStorageContract('MemoryStorage', {
|
|
164
|
+
* create: () => new MemoryStorage(),
|
|
165
|
+
* });
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
export declare function runBasicStorageContract(name: string, options: BasicStorageContractOptions): void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
var c=Object.defineProperty;var f=(E)=>E;function g(E,_){this[E]=f.bind(null,_)}var s=(E,_)=>{for(var F in _)c(E,F,{get:_[F],enumerable:!0,configurable:!0,set:g.bind(_,F)})};var h=(E,_)=>()=>(E&&(_=E(E=0)),_);var K=(E,_,F)=>{if(_!=null){if(typeof _!=="object"&&typeof _!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let P;if(F)P=_[Symbol.asyncDispose];if(P===void 0)P=_[Symbol.dispose];if(typeof P!=="function")throw TypeError("Object not disposable");E.push([F,P,_])}else if(F)E.push([F]);return _},O=(E,_,F)=>{let P=(W)=>_=F?new SuppressedError(W,_,"An error was suppressed during disposal"):(F=!0,W),S=(W)=>{while(W=E.pop())try{var Y=W[1]&&W[1].call(W[2]);if(W[0])return Promise.resolve(Y).then(S,(U)=>(P(U),S()))}catch(U){P(U)}if(F)throw _};return S()};function N(E,_,F){if(!E.capabilities()[_])throw Error(`Feature "${F}" requires storage capability "${_}", but this storage backend does not provide it.`)}function p(E){let _=E.capabilities(),F=[];if(_.persistence!=="local"&&_.persistence!=="remote")F.push(`persistence must be "local" or "remote" (got "${_.persistence}")`);if(_.readAfterWrite!=="linearizable")F.push(`readAfterWrite must be "linearizable" (got "${_.readAfterWrite}")`);if(_.scanConsistency!=="snapshot")F.push(`scanConsistency must be "snapshot" (got "${_.scanConsistency}")`);if(!_.atomicBatch)F.push("atomicBatch must be true");if(!_.conditionalBatch)F.push("conditionalBatch must be true");if(F.length>0)throw Error(`Storage is not durable enough for recovery: ${F.join("; ")}.`)}var q="default";async function v(E,_){return await E.get(_)!==null}async function*j(E,_,F){for await(let[P]of E.scan(_,F))yield P}async function m(E,_){let F=0;for await(let P of j(E,_))F++;return F}async function u(E,_){let F=[];for await(let P of j(E,_))F.push({type:"delete",key:P});if(F.length===0)return 0;return await E.batch(F),F.length}async function o(E,_,F){let P=[];for await(let S of j(E,_,F))P.push({type:"delete",key:S});if(P.length===0)return 0;return await E.batch(P),P.length}var n;var b=h(()=>{n=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-has-services:","wf-headers:","wf-idx-","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-terminal:"]});function A(E,_){if(_>C)throw new y(E,_)}function WE(E){return E.length>0?E.slice(0,-1)+String.fromCharCode(E.charCodeAt(E.length-1)+1):"\xFF"}function SE(E,_={}){if(_.gt!==void 0&&E<=_.gt)return!1;if(_.gte!==void 0&&E<_.gte)return!1;if(_.lt!==void 0&&E>=_.lt)return!1;if(_.lte!==void 0&&E>_.lte)return!1;return!0}function YE(E,_){if(E===null||_===null)return E===_;if(E.byteLength!==_.byteLength)return!1;for(let F=0;F<E.byteLength;F++)if(E[F]!==_[F])return!1;return!0}async function UE(E,_){if(E.has)return E.has(_);return v(E,_)}function XE(E,_,F){if(E.keys)return E.keys(_,F);return j(E,_,F)}async function LE(E,_){if(E.count)return E.count(_);return m(E,_)}async function VE(E,_){if(E.deletePrefix)return E.deletePrefix(_);return u(E,_)}async function GE(E,_){A("batch operations",_.length),await E.batch(_)}async function z(E,_,F){if(A("conditionalBatch conditions",_.length),A("conditionalBatch operations",F.length),N(E,"conditionalBatch","storageConditionalBatch"),!E.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return E.conditionalBatch(_,F)}function R(E){return encodeURIComponent(E)}function JE(E){return decodeURIComponent(E)}function KE(E){try{return decodeURIComponent(E)}catch{return null}}var C=1e4,RE=1e4,y,Q=(E)=>String(E).padStart(16,"0"),k="0",l="1",x=(E,_,F,P)=>`sig:${R(E)}:${R(_)}:${P}:${R(F)}`,OE;var I=h(()=>{b();y=class y extends Error{code="StorageBatchOperationLimitExceededError";cap=C;count;target;constructor(E,_){super(`${E} count ${_} exceeds MAX_BATCH_OPERATIONS (${C}).`);this.name="StorageBatchOperationLimitExceededError",this.target=E,this.count=_}};OE={workflow:(E)=>`wf:${R(E)}`,checkpoint:(E)=>`wf:${R(E)}:ckpt`,checkpointHistory:(E,_)=>`wf:${R(E)}:ckpt:${String(_).padStart(10,"0")}`,timelinePrefix:(E)=>`wf:${R(E)}:timeline:`,timeline:(E,_)=>`wf:${R(E)}:timeline:${String(_).padStart(10,"0")}`,schedule:(E)=>`schedule:${R(E)}`,scheduleTick:(E,_)=>`schedule-due:${String(E).padStart(16,"0")}:${R(_)}`,scheduleRun:(E)=>`schedule-run:${R(E)}`,operation:(E,_,F)=>`op:${E}:${Q(_)}:${F}`,operationInflight:(E)=>`op:inflight:${E}`,operationQueued:(E)=>`op:queued:${E}`,operationResolved:(E)=>`op:resolved:${E}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(E)=>`op:dead-letter:${E}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(E,_,F)=>`audit:bulk:${Q(E)}:${R(_)}:${R(F)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(E,_)=>`op:resolved-by-time:${Q(E)}:${R(_)}`,asyncActivity:(E,_)=>`async-act:v1:${R(E)}:${R(_)}`,activityReconciliationPrefix:(E)=>`actrec:v1:${R(E)}:`,activityReconciliation:(E,_,F)=>`actrec:v1:${R(E)}:${R(_)}:${F}`,eventPrefix:(E)=>`ev:${R(E)}:`,event:(E,_)=>`ev:${R(E)}:${String(_).padStart(10,"0")}`,eventHead:(E)=>`ev:${R(E)}:head`,eventWatermark:(E)=>`ev:${R(E)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(E)=>`fleet-event:${String(E).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(E)=>`fleet-event-by-workflow:${R(E)}:`,fleetEventByWorkflow:(E,_)=>`fleet-event-by-workflow:${R(E)}:${String(_).padStart(10,"0")}`,signal:(E,_,F)=>x(E,_,F,l),startSignal:(E,_,F)=>x(E,_,F,k),signalSequence:(E)=>`sigseq:v1:${R(E)}`,signalAcceptedResponsePrefix:(E)=>`sigres:v1:${R(E)}:`,signalAcceptedResponse:(E,_,F)=>`sigres:v1:${R(E)}:${R(_)}:${R(F)}`,deadline:(E,_)=>`wf-deadline:${Q(E)}:${R(_)}`,terminalCleanup:(E,_)=>`wf-cleanup:${Q(E)}:${R(_)}`,teardownTimer:(E,_)=>`wf-teardown:${Q(E)}:${R(_)}`,delayedStart:(E,_)=>`wf-delayed:${Q(E)}:${R(_)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(E,_)=>`wf-terminal:${Q(E)}:${R(_)}`,attribute:(E)=>`attr:${R(E)}`,attributeIndex:(E,_,F)=>`idx:${E}:${_}:${R(F)}`,tagIndex:(E,_)=>`tag:${R(E)}:${R(_)}`,updatePrefix:(E)=>`upd:${R(E)}:`,update:(E,_)=>`upd:${R(E)}:${_}`,updateResponse:(E)=>`upr:${E}`,updateIdempotency:(E,_)=>`upk:${R(E)}:${_}`,startIdempotency:(E)=>`start-idem:${R(E)}`,startIdempotencySignalId:(E)=>`start-idem:${E}`,livenessPrefix:()=>"liveness:",liveness:(E)=>`liveness:${R(E)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(E,_,F)=>`budget:${E}:${_}:${F}`,review:(E,_)=>`review:${R(E)}:${_}`,workflowHeaders:(E)=>`wf-headers:${R(E)}`,childCancellationPrefix:(E)=>`child-cancel:${R(E)}:`,childCancellation:(E,_)=>`child-cancel:${R(E)}:${R(_)}`,terminalCleanupNeeded:(E)=>`wf-cleanup-needed:${R(E)}`,workflowConcurrency:(E,_)=>`wf-concurrency:${R(E)}:${R(_)}`,workflowConcurrencyHolder:(E)=>`wf-concurrency-holder:${R(E)}`,workflowHasServices:(E)=>`wf-has-services:${R(E)}`,finalizerState:(E)=>`wf-finalizer-state:${R(E)}`,teardownOwed:(E)=>`wf-teardown-needed:${R(E)}`,teardownDeadLetter:(E)=>`wf-teardown-deadletter:${R(E)}`,offload:(E,_)=>`offload:${R(E)}:${_}`,archive:(E,_)=>`archive:${R(E)}:${_}`,stateExecution:(E,_)=>`state:execution:${R(E)}:${R(_)}`,stateWorkflow:(E,_)=>`state:workflow-scope:${q}:${R(E)}:${R(_)}`,streamChunkPrefix:(E,_)=>`blob:${R(E)}:${_}:chunk:`,streamChunk:(E,_,F)=>`blob:${R(E)}:${_}:chunk:${String(F).padStart(10,"0")}`,streamTail:(E,_)=>`blob:${R(E)}:${_}:tail`,streamMetadata:(E,_)=>`blob:${R(E)}:${_}:meta`,budgetCharged:(E)=>`budget-charged:${E}`,toolEffect:(E,_,F)=>`tool-effect:${R(E)}:${_}:${F}`,workflowVisibilityStatus:(E,_)=>`wf-idx-status:${R(E)}:${R(_)}`,workflowVisibilityType:(E,_)=>`wf-idx-type:${R(E)}:${R(_)}`,workflowVisibilityCreated:(E,_)=>`wf-idx-created:${Q(E)}:${R(_)}`,workflowVisibilityUpdated:(E,_)=>`wf-idx-updated:${Q(E)}:${R(_)}`,workflowVisibilityDeadline:(E,_)=>`wf-idx-deadline:${Q(E)}:${R(_)}`,workflowVisibilityManifest:(E)=>`wf-idx-manifest:${R(E)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"}});I();import{describe as H,expect as V,it as J}from"bun:test";var w=new TextEncoder,d=new TextDecoder;function L(E){return w.encode(E)}function D(E){return d.decode(E)}async function Z(E){let _=[];for await(let F of E)_.push(F);return _}function a(E){let _=E.capabilities();V(["ephemeral","local","remote"]).toContain(_.persistence??""),V(["linearizable","session","eventual"]).toContain(_.readAfterWrite),V(["snapshot","best-effort"]).toContain(_.scanConsistency),V(typeof _.atomicBatch).toBe("boolean"),V(typeof _.conditionalBatch).toBe("boolean"),V(typeof _.boundedRangeDelete).toBe("boolean")}function HE(E,_){H(`${E} binary and large-scan conformance`,()=>{J("round-trips binary values correctly",async()=>{let F=await _.create();try{let P=new Uint8Array([0,1,127,128,255,42,0,13,10]);await F.put("binary",P);let S=await F.get("binary");V(S).toEqual(P)}finally{F[Symbol.dispose]()}}),J("returns 1000 scanned keys in sorted order",async()=>{let F=await _.create();try{let P=Array.from({length:1000},(W,Y)=>({type:"put",key:`item:${String(Y).padStart(4,"0")}`,value:L(String(Y))}));await F.batch(P);let S=await Z(F.scan("item:"));V(S).toHaveLength(1000);for(let W=0;W<S.length;W+=1)V(S[W][0]).toBe(`item:${String(W).padStart(4,"0")}`)}finally{F[Symbol.dispose]()}})})}function ME(E,_){let{create:F,expected:P}=_;H(`${E} capabilities() conformance`,()=>{if(J("reports a well-formed capability shape",async()=>{let W=[];try{const S=K(W,await F(),0);a(S)}catch(Y){var U=Y,X=1}finally{O(W,U,X)}}),J("reports the expected capability row",async()=>{let W=[];try{const S=K(W,await F(),0);V(S.capabilities()).toEqual(P)}catch(Y){var U=Y,X=1}finally{O(W,U,X)}}),J("satisfies its declared read-after-write level",async()=>{let Y=[];try{const S=K(Y,await F(),0);await S.put("raw:key",L("written"));let W=await S.get("raw:key");if(P.readAfterWrite!=="eventual")V(W).not.toBeNull(),V(D(W)).toBe("written")}catch(U){var X=U,G=1}finally{O(Y,X,G)}}),P.scanConsistency==="snapshot")J("does not observe a key inserted after the scan began (snapshot)",async()=>{let X=[];try{const S=K(X,await F(),0);await S.put("scan:a",L("1"));await S.put("scan:b",L("2"));let W=S.scan("scan:")[Symbol.asyncIterator]();let Y=await W.next();V(Y.done).toBe(!1);await S.put("scan:c",L("3"));let U=[];if(!Y.done)U.push(Y.value[0]);for(let B=await W.next();!B.done;B=await W.next())U.push(B.value[0]);V(U).not.toContain("scan:c");V(U).toContain("scan:a");V(U).toContain("scan:b")}catch(G){var M=G,T=1}finally{O(X,M,T)}});if(P.conditionalBatch)J("applies nothing when a conditionalBatch precondition mismatches",async()=>{let Y=[];try{const S=K(Y,await F(),0);await S.put("cas:key",L("initial"));let W=await z(S,[{key:"cas:key",expectedValue:L("wrong")}],[{type:"put",key:"cas:key",value:L("changed")}]);V(W).toBe(!1);V(D(await S.get("cas:key"))).toBe("initial")}catch(U){var X=U,G=1}finally{O(Y,X,G)}}),J("reports conditionalBatch before running compare-and-swap assertions",async()=>{let W=[];try{const S=K(W,await F(),0);V(S.capabilities().conditionalBatch).toBe(!0)}catch(Y){var U=Y,X=1}finally{O(W,U,X)}})})}function TE(E,_){let{create:F}=_;H(`${E} concurrent conditionalBatch conformance`,()=>{J("lets exactly one of two contending conditionalBatch calls win",async()=>{let X=[];try{const P=K(X,await F(),0);V(P.capabilities().conditionalBatch).toBe(!0);await P.put("cas:counter",L("start"));let S=[{key:"cas:counter",expectedValue:L("start")}];let[W,Y]=await Promise.all([z(P,S,[{type:"put",key:"cas:counter",value:L("first")}]),z(P,S,[{type:"put",key:"cas:counter",value:L("second")}])]);V([W,Y].filter(Boolean)).toHaveLength(1);let U=D(await P.get("cas:counter"));V(U).toBe(W?"first":"second")}catch(G){var M=G,T=1}finally{O(X,M,T)}})})}function BE(E,_){let{create:F}=_;H(`${E} basic storage contract`,()=>{J("get on empty storage returns null",async()=>{let W=[];try{const P=K(W,await F(),0);let S=await P.get("nonexistent");V(S).toBeNull()}catch(Y){var U=Y,X=1}finally{O(W,U,X)}}),J("put then get returns same bytes",async()=>{let Y=[];try{const P=K(Y,await F(),0);let S=L("hello");await P.put("key",S);let W=await P.get("key");V(W).toEqual(S)}catch(U){var X=U,G=1}finally{O(Y,X,G)}}),J("put with same key overwrites previous value",async()=>{let W=[];try{const P=K(W,await F(),0);await P.put("key",L("first"));await P.put("key",L("second"));let S=await P.get("key");V(D(S)).toBe("second")}catch(Y){var U=Y,X=1}finally{O(W,U,X)}}),J("delete removes key, subsequent get returns null",async()=>{let W=[];try{const P=K(W,await F(),0);await P.put("key",L("value"));await P.delete("key");let S=await P.get("key");V(S).toBeNull()}catch(Y){var U=Y,X=1}finally{O(W,U,X)}}),J("scan with prefix returns only matching keys, sorted lexicographically",async()=>{let W=[];try{const P=K(W,await F(),0);await P.put("wf:b",L("b"));await P.put("wf:a",L("a"));await P.put("wf:c",L("c"));await P.put("other:x",L("x"));let S=await Z(P.scan("wf:"));V(S.map(([G])=>G)).toEqual(["wf:a","wf:b","wf:c"])}catch(Y){var U=Y,X=1}finally{O(W,U,X)}}),J("scan with limit returns at most N entries",async()=>{let W=[];try{const P=K(W,await F(),0);await P.put("p:a",L("a"));await P.put("p:b",L("b"));await P.put("p:c",L("c"));let S=await Z(P.scan("p:",{limit:2}));V(S).toHaveLength(2);V(S.map(([G])=>G)).toEqual(["p:a","p:b"])}catch(Y){var U=Y,X=1}finally{O(W,U,X)}}),J("scan with reverse returns in reverse order",async()=>{let W=[];try{const P=K(W,await F(),0);await P.put("p:a",L("a"));await P.put("p:b",L("b"));await P.put("p:c",L("c"));let S=await Z(P.scan("p:",{reverse:!0}));V(S.map(([G])=>G)).toEqual(["p:c","p:b","p:a"])}catch(Y){var U=Y,X=1}finally{O(W,U,X)}}),J("scan with gt/lt bounds",async()=>{let W=[];try{const P=K(W,await F(),0);await P.put("p:a",L("a"));await P.put("p:b",L("b"));await P.put("p:c",L("c"));await P.put("p:d",L("d"));let S=await Z(P.scan("p:",{gt:"p:a",lt:"p:d"}));V(S.map(([G])=>G)).toEqual(["p:b","p:c"])}catch(Y){var U=Y,X=1}finally{O(W,U,X)}}),J("scan with empty prefix returns all keys",async()=>{let W=[];try{const P=K(W,await F(),0);await P.put("alpha",L("a"));await P.put("beta",L("b"));await P.put("gamma",L("c"));let S=await Z(P.scan(""));V(S.map(([G])=>G)).toEqual(["alpha","beta","gamma"])}catch(Y){var U=Y,X=1}finally{O(W,U,X)}})})}export{ME as runStorageCapabilityConformance,TE as runConcurrentConditionalBatchConformance,HE as runBinaryAndLargeScanStorageConformance,BE as runBasicStorageContract};
|
package/dist/storage/turso.d.ts
CHANGED
|
@@ -42,6 +42,14 @@ export type TursoStorageOptions = {
|
|
|
42
42
|
export declare class TursoStorage implements Storage {
|
|
43
43
|
#private;
|
|
44
44
|
constructor(options: TursoStorageOptions);
|
|
45
|
+
/**
|
|
46
|
+
* Reports the honest floor for every Turso/libSQL URL form.
|
|
47
|
+
*
|
|
48
|
+
* `readAfterWrite` is always `session`: one client observes its own writes,
|
|
49
|
+
* but another engine instance or replica-routed client may lag. That is why
|
|
50
|
+
* `assertDurableStorageForRecovery()` rejects `TursoStorage` for durable
|
|
51
|
+
* recovery even when `persistence` is `local` or `remote`.
|
|
52
|
+
*/
|
|
45
53
|
capabilities(): StorageCapabilities;
|
|
46
54
|
get(key: string): Promise<Uint8Array | null>;
|
|
47
55
|
put(key: string, value: Uint8Array): Promise<void>;
|
package/dist/storage/turso.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var FF=Object.defineProperty;var WF=(F)=>F;function XF(F,W){this[F]=WF.bind(null,W)}var AF=(F,W)=>{for(var X in W)FF(F,X,{get:W[X],enumerable:!0,configurable:!0,set:XF.bind(W,X)})};var U=(F,W)=>()=>(F&&(W=F(F=0)),W);function O(F,W,X){if(!F.capabilities()[W])throw Error(`Feature "${X}" requires storage capability "${W}", but this storage backend does not provide it.`)}function JF(F){let W=F.capabilities(),X=[];if(W.persistence!=="local"&&W.persistence!=="remote")X.push(`persistence must be "local" or "remote" (got "${W.persistence}")`);if(W.readAfterWrite!=="linearizable")X.push(`readAfterWrite must be "linearizable" (got "${W.readAfterWrite}")`);if(W.scanConsistency!=="snapshot")X.push(`scanConsistency must be "snapshot" (got "${W.scanConsistency}")`);if(!W.atomicBatch)X.push("atomicBatch must be true");if(!W.conditionalBatch)X.push("conditionalBatch must be true");if(X.length>0)throw Error(`Storage is not durable enough for recovery: ${X.join("; ")}.`)}var _="default";async function v(F,W){return await F.get(W)!==null}async function*N(F,W,X){for await(let[Z]of F.scan(W,X))yield Z}async function h(F,W){let X=0;for await(let Z of N(F,W))X++;return X}async function E(F,W){let X=[];for await(let Z of N(F,W))X.push({type:"delete",key:Z});if(X.length===0)return 0;return await F.batch(X),X.length}async function T(F,W,X){let Z=[];for await(let $ of N(F,W,X))Z.push({type:"delete",key:$});if(Z.length===0)return 0;return await F.batch(Z),Z.length}var ZF;var b=U(()=>{ZF=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","ev:","idx:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-deadline:","wf-delayed:","wf-has-services:","wf-headers:","wf-idx-","wf-terminal:"]});function C(F){return F.length>0?F.slice(0,-1)+String.fromCharCode(F.charCodeAt(F.length-1)+1):"\xFF"}function CF(F,W={}){if(W.gt!==void 0&&F<=W.gt)return!1;if(W.gte!==void 0&&F<W.gte)return!1;if(W.lt!==void 0&&F>=W.lt)return!1;if(W.lte!==void 0&&F>W.lte)return!1;return!0}function K(F,W){if(F===null||W===null)return F===W;if(F.byteLength!==W.byteLength)return!1;for(let X=0;X<F.byteLength;X++)if(F[X]!==W[X])return!1;return!0}async function u(F,W){if(F.has)return F.has(W);return v(F,W)}function x(F,W,X){if(F.keys)return F.keys(W,X);return N(F,W,X)}async function S(F,W){if(F.count)return F.count(W);return h(F,W)}async function I(F,W){if(F.deletePrefix)return F.deletePrefix(W);return E(F,W)}async function k(F,W,X){if(O(F,"conditionalBatch","storageConditionalBatch"),!F.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return F.conditionalBatch(W,X)}function J(F){return encodeURIComponent(F)}function KF(F){return decodeURIComponent(F)}function uF(F){try{return decodeURIComponent(F)}catch{return null}}var G=(F)=>String(F).padStart(16,"0"),xF;var D=U(()=>{b();xF={workflow:(F)=>`wf:${J(F)}`,checkpoint:(F)=>`wf:${J(F)}:ckpt`,checkpointHistory:(F,W)=>`wf:${J(F)}:ckpt:${String(W).padStart(10,"0")}`,timelinePrefix:(F)=>`wf:${J(F)}:timeline:`,timeline:(F,W)=>`wf:${J(F)}:timeline:${String(W).padStart(10,"0")}`,schedule:(F)=>`schedule:${J(F)}`,scheduleTick:(F,W)=>`schedule-due:${String(F).padStart(16,"0")}:${J(W)}`,scheduleRun:(F)=>`schedule-run:${J(F)}`,operation:(F,W,X)=>`op:${F}:${G(W)}:${X}`,operationInflight:(F)=>`op:inflight:${F}`,operationQueued:(F)=>`op:queued:${F}`,operationResolved:(F)=>`op:resolved:${F}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(F,W,X)=>`audit:bulk:${G(F)}:${J(W)}:${J(X)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(F,W)=>`op:resolved-by-time:${G(F)}:${J(W)}`,asyncActivity:(F,W)=>`async-act:v1:${J(F)}:${J(W)}`,activityReconciliationPrefix:(F)=>`actrec:v1:${J(F)}:`,activityReconciliation:(F,W,X)=>`actrec:v1:${J(F)}:${J(W)}:${X}`,eventPrefix:(F)=>`ev:${J(F)}:`,event:(F,W)=>`ev:${J(F)}:${String(W).padStart(10,"0")}`,eventHead:(F)=>`ev:${J(F)}:head`,eventWatermark:(F)=>`ev:${J(F)}:watermark`,signal:(F,W,X)=>`sig:${J(F)}:${W}:${J(X)}`,signalSequence:(F)=>`sigseq:v1:${J(F)}`,signalAcceptedResponsePrefix:(F)=>`sigres:v1:${J(F)}:`,signalAcceptedResponse:(F,W,X)=>`sigres:v1:${J(F)}:${J(W)}:${J(X)}`,deadline:(F,W)=>`wf-deadline:${G(F)}:${J(W)}`,terminalCleanup:(F,W)=>`wf-cleanup:${G(F)}:${J(W)}`,delayedStart:(F,W)=>`wf-delayed:${G(F)}:${J(W)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(F,W)=>`wf-terminal:${G(F)}:${J(W)}`,attribute:(F)=>`attr:${J(F)}`,attributeIndex:(F,W,X)=>`idx:${F}:${W}:${J(X)}`,tagIndex:(F,W)=>`tag:${J(F)}:${J(W)}`,updatePrefix:(F)=>`upd:${J(F)}:`,update:(F,W)=>`upd:${J(F)}:${W}`,updateResponse:(F)=>`upr:${F}`,updateIdempotency:(F,W)=>`upk:${J(F)}:${W}`,startIdempotency:(F)=>`start-idem:${J(F)}`,startIdempotencySignalId:(F)=>`start-idem:${F}`,livenessPrefix:()=>"liveness:",liveness:(F)=>`liveness:${J(F)}`,budget:(F,W,X)=>`budget:${F}:${W}:${X}`,review:(F,W)=>`review:${J(F)}:${W}`,workflowHeaders:(F)=>`wf-headers:${J(F)}`,terminalCleanupNeeded:(F)=>`wf-cleanup-needed:${J(F)}`,workflowHasServices:(F)=>`wf-has-services:${J(F)}`,offload:(F,W)=>`offload:${J(F)}:${W}`,archive:(F,W)=>`archive:${J(F)}:${W}`,stateExecution:(F,W)=>`state:execution:${J(F)}:${J(W)}`,stateWorkflow:(F,W)=>`state:workflow-scope:${_}:${J(F)}:${J(W)}`,streamChunkPrefix:(F,W)=>`blob:${J(F)}:${W}:chunk:`,streamChunk:(F,W,X)=>`blob:${J(F)}:${W}:chunk:${String(X).padStart(10,"0")}`,streamMetadata:(F,W)=>`blob:${J(F)}:${W}:meta`,budgetCharged:(F)=>`budget-charged:${F}`,toolEffect:(F,W,X)=>`tool-effect:${J(F)}:${W}:${X}`,workflowVisibilityStatus:(F,W)=>`wf-idx-status:${J(F)}:${J(W)}`,workflowVisibilityType:(F,W)=>`wf-idx-type:${J(F)}:${J(W)}`,workflowVisibilityCreated:(F,W)=>`wf-idx-created:${G(F)}:${J(W)}`,workflowVisibilityUpdated:(F,W)=>`wf-idx-updated:${G(F)}:${J(W)}`,workflowVisibilityDeadline:(F,W)=>`wf-idx-deadline:${G(F)}:${J(W)}`,workflowVisibilityManifest:(F)=>`wf-idx-manifest:${J(F)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"}});function $F(F){if(F===void 0)return;if(typeof F!=="number"||!Number.isInteger(F)||F<0)throw Error("deleteRange limit must be a finite non-negative integer");return F===0?0:F}function Y(F){let W={},X=!1;for(let $ of["gt","gte","lt","lte"]){let j=F[$];if(j===void 0)continue;if(typeof j!=="string")throw Error("deleteRange bounds must be strings");W[$]=j,X=!0}if(!X)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let Z=$F(F.limit);if(Z!==void 0)W.limit=Z;return W}async function w(F,W,X){let Z=Y(X);if(F.deleteRange)return F.deleteRange(W,Z);return T(F,W,Z)}var z=()=>{};function A(F){return F.replaceAll(/:+$/g,"")}function jF(F,W){let X=A(F),Z=A(W);if(X.length===0)return Z;if(Z.length===0)return X;return`${X}:${Z}`}function c(F,W){return new P(F,W)}var P;var y=U(()=>{z();D();P=class P{#F;#J;constructor(F,W){this.#F=F,this.#J=A(W)}#W(F){if(this.#J.length===0)return F;return F.length===0?`${this.#J}:`:`${this.#J}:${F}`}#X(F){if(this.#J.length===0)return F;return F.slice(this.#J.length+1)}#Z(F={}){let W={};if(F.limit!==void 0)W.limit=F.limit;if(F.reverse!==void 0)W.reverse=F.reverse;if(F.gt!==void 0)W.gt=this.#W(F.gt);if(F.gte!==void 0)W.gte=this.#W(F.gte);if(F.lt!==void 0)W.lt=this.#W(F.lt);if(F.lte!==void 0)W.lte=this.#W(F.lte);return W}#$(F){let W={};if(F.limit!==void 0)W.limit=F.limit;if(F.gt!==void 0)W.gt=this.#W(F.gt);if(F.gte!==void 0)W.gte=this.#W(F.gte);if(F.lt!==void 0)W.lt=this.#W(F.lt);if(F.lte!==void 0)W.lte=this.#W(F.lte);return W}capabilities(){return this.#F.capabilities()}scoped(F){return new P(this.#F,jF(this.#J,F))}async get(F){return this.#F.get(this.#W(F))}async put(F,W){await this.#F.put(this.#W(F),W)}async delete(F){await this.#F.delete(this.#W(F))}async*scan(F,W){for await(let[X,Z]of this.#F.scan(this.#W(F),this.#Z(W)))yield[this.#X(X),Z]}async batch(F){await this.#F.batch(F.map((W)=>{if(W.type==="put")return{type:"put",key:this.#W(W.key),value:W.value};return{type:"delete",key:this.#W(W.key)}}))}async conditionalBatch(F,W){return k(this.#F,F.map((X)=>({key:this.#W(X.key),expectedValue:X.expectedValue})),W.map((X)=>{if(X.type==="put")return{type:"put",key:this.#W(X.key),value:X.value};return{type:"delete",key:this.#W(X.key)}}))}async has(F){return u(this.#F,this.#W(F))}async deletePrefix(F){return I(this.#F,this.#W(F))}async deleteRange(F,W){let X=this.#$(Y(W));return w(this.#F,this.#W(F),X)}async*keys(F,W){for await(let X of x(this.#F,this.#W(F),this.#Z(W)))yield this.#X(X)}async count(F){return S(this.#F,this.#W(F))}[Symbol.dispose](){this.#F[Symbol.dispose]()}}});function UF(F){return F.trim().replace(/;+\s*$/u,"").trim()}function QF(F){return HF.test(F)}function m(F){let W=UF(F);if(W.length===0)throw Error("Storage query must not be empty.");if(W.includes(";"))throw Error("Storage query must contain exactly one read-only statement.");if(MF.test(W))return;if(GF.test(W)&&QF(W))return;throw Error("Storage query only supports read-only SELECT and PRAGMA statements.")}var GF,HF,MF;var f=U(()=>{GF=/^PRAGMA\b/iu,HF=/^PRAGMA\s+(?:[A-Z_][A-Z0-9_]*\.)?[A-Z_][A-Z0-9_]*\s*$/iu,MF=/^SELECT\b/iu});function B(F){return[F,C(F)]}function s(F,W){let{gt:X,gte:Z,lt:$,lte:j}=W,H=["key >= ? AND key < ?"],M=B(F);if(X!==void 0)H.push("key > ?"),M.push(X);if(Z!==void 0)H.push("key >= ?"),M.push(Z);if($!==void 0)H.push("key < ?"),M.push($);if(j!==void 0)H.push("key <= ?"),M.push(j);return{conditions:H,parameters:M}}function a(F,W={}){let{limit:X,reverse:Z}=W,{conditions:$,parameters:j}=s(F,W),H=Z?"DESC":"ASC",M=X!==void 0?" LIMIT ?":"";if(X!==void 0)j.push(X);return{parameters:j,sqlSuffix:`WHERE ${$.join(" AND ")} ORDER BY key ${H}${M}`}}function i(F,W){let{conditions:X,parameters:Z}=s(F,W),$=X.join(" AND ");if(W.limit===void 0)return{parameters:Z,sql:`DELETE FROM kv WHERE ${$}`};return Z.push(W.limit),{parameters:Z,sql:`DELETE FROM kv WHERE key IN (SELECT key FROM kv WHERE ${$} ORDER BY key ASC LIMIT ?)`}}function r(F,W={}){let{parameters:X,sqlSuffix:Z}=a(F,W);return{parameters:X,sql:`SELECT key, value FROM kv ${Z}`}}function n(F,W={}){let{parameters:X,sqlSuffix:Z}=a(F,W);return{parameters:X,sql:`SELECT key FROM kv ${Z}`}}var g=`CREATE TABLE IF NOT EXISTS kv (
|
|
2
|
+
var GF=Object.defineProperty;var jF=(F)=>F;function HF(F,W){this[F]=jF.bind(null,W)}var EF=(F,W)=>{for(var X in W)GF(F,X,{get:W[X],enumerable:!0,configurable:!0,set:HF.bind(W,X)})};var D=(F,W)=>()=>(F&&(W=F(F=0)),W);var SF=(F,W,X)=>{if(W!=null){if(typeof W!=="object"&&typeof W!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let Z;if(X)Z=W[Symbol.asyncDispose];if(Z===void 0)Z=W[Symbol.dispose];if(typeof Z!=="function")throw TypeError("Object not disposable");F.push([X,Z,W])}else if(X)F.push([X]);return W},TF=(F,W,X)=>{let Z=(G)=>W=X?new SuppressedError(G,W,"An error was suppressed during disposal"):(X=!0,G),$=(G)=>{while(G=F.pop())try{var H=G[1]&&G[1].call(G[2]);if(G[0])return Promise.resolve(H).then($,(j)=>(Z(j),$()))}catch(j){Z(j)}if(X)throw W};return $()};function v(F,W,X){if(!F.capabilities()[W])throw Error(`Feature "${X}" requires storage capability "${W}", but this storage backend does not provide it.`)}function MF(F){let W=F.capabilities(),X=[];if(W.persistence!=="local"&&W.persistence!=="remote")X.push(`persistence must be "local" or "remote" (got "${W.persistence}")`);if(W.readAfterWrite!=="linearizable")X.push(`readAfterWrite must be "linearizable" (got "${W.readAfterWrite}")`);if(W.scanConsistency!=="snapshot")X.push(`scanConsistency must be "snapshot" (got "${W.scanConsistency}")`);if(!W.atomicBatch)X.push("atomicBatch must be true");if(!W.conditionalBatch)X.push("conditionalBatch must be true");if(X.length>0)throw Error(`Storage is not durable enough for recovery: ${X.join("; ")}.`)}var h="default";async function q(F,W){return await F.get(W)!==null}async function*N(F,W,X){for await(let[Z]of F.scan(W,X))yield Z}async function K(F,W){let X=0;for await(let Z of N(F,W))X++;return X}async function E(F,W){let X=[];for await(let Z of N(F,W))X.push({type:"delete",key:Z});if(X.length===0)return 0;return await F.batch(X),X.length}async function S(F,W,X){let Z=[];for await(let $ of N(F,W,X))Z.push({type:"delete",key:$});if(Z.length===0)return 0;return await F.batch(Z),Z.length}var UF;var T=D(()=>{UF=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-has-services:","wf-headers:","wf-idx-","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-terminal:"]});function U(F,W){if(W>_)throw new m(F,W)}function c(F){return F.length>0?F.slice(0,-1)+String.fromCharCode(F.charCodeAt(F.length-1)+1):"\xFF"}function wF(F,W={}){if(W.gt!==void 0&&F<=W.gt)return!1;if(W.gte!==void 0&&F<W.gte)return!1;if(W.lt!==void 0&&F>=W.lt)return!1;if(W.lte!==void 0&&F>W.lte)return!1;return!0}function x(F,W){if(F===null||W===null)return F===W;if(F.byteLength!==W.byteLength)return!1;for(let X=0;X<F.byteLength;X++)if(F[X]!==W[X])return!1;return!0}async function u(F,W){if(F.has)return F.has(W);return q(F,W)}function y(F,W,X){if(F.keys)return F.keys(W,X);return N(F,W,X)}async function g(F,W){if(F.count)return F.count(W);return K(F,W)}async function I(F,W){if(F.deletePrefix)return F.deletePrefix(W);return E(F,W)}async function fF(F,W){U("batch operations",W.length),await F.batch(W)}async function k(F,W,X){if(U("conditionalBatch conditions",W.length),U("conditionalBatch operations",X.length),v(F,"conditionalBatch","storageConditionalBatch"),!F.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return F.conditionalBatch(W,X)}function J(F){return encodeURIComponent(F)}function dF(F){return decodeURIComponent(F)}function lF(F){try{return decodeURIComponent(F)}catch{return null}}var _=1e4,kF=1e4,m,M=(F)=>String(F).padStart(16,"0"),DF="0",QF="1",b=(F,W,X,Z)=>`sig:${J(F)}:${J(W)}:${Z}:${J(X)}`,pF;var R=D(()=>{T();m=class m extends Error{code="StorageBatchOperationLimitExceededError";cap=_;count;target;constructor(F,W){super(`${F} count ${W} exceeds MAX_BATCH_OPERATIONS (${_}).`);this.name="StorageBatchOperationLimitExceededError",this.target=F,this.count=W}};pF={workflow:(F)=>`wf:${J(F)}`,checkpoint:(F)=>`wf:${J(F)}:ckpt`,checkpointHistory:(F,W)=>`wf:${J(F)}:ckpt:${String(W).padStart(10,"0")}`,timelinePrefix:(F)=>`wf:${J(F)}:timeline:`,timeline:(F,W)=>`wf:${J(F)}:timeline:${String(W).padStart(10,"0")}`,schedule:(F)=>`schedule:${J(F)}`,scheduleTick:(F,W)=>`schedule-due:${String(F).padStart(16,"0")}:${J(W)}`,scheduleRun:(F)=>`schedule-run:${J(F)}`,operation:(F,W,X)=>`op:${F}:${M(W)}:${X}`,operationInflight:(F)=>`op:inflight:${F}`,operationQueued:(F)=>`op:queued:${F}`,operationResolved:(F)=>`op:resolved:${F}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(F)=>`op:dead-letter:${F}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(F,W,X)=>`audit:bulk:${M(F)}:${J(W)}:${J(X)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(F,W)=>`op:resolved-by-time:${M(F)}:${J(W)}`,asyncActivity:(F,W)=>`async-act:v1:${J(F)}:${J(W)}`,activityReconciliationPrefix:(F)=>`actrec:v1:${J(F)}:`,activityReconciliation:(F,W,X)=>`actrec:v1:${J(F)}:${J(W)}:${X}`,eventPrefix:(F)=>`ev:${J(F)}:`,event:(F,W)=>`ev:${J(F)}:${String(W).padStart(10,"0")}`,eventHead:(F)=>`ev:${J(F)}:head`,eventWatermark:(F)=>`ev:${J(F)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(F)=>`fleet-event:${String(F).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(F)=>`fleet-event-by-workflow:${J(F)}:`,fleetEventByWorkflow:(F,W)=>`fleet-event-by-workflow:${J(F)}:${String(W).padStart(10,"0")}`,signal:(F,W,X)=>b(F,W,X,QF),startSignal:(F,W,X)=>b(F,W,X,DF),signalSequence:(F)=>`sigseq:v1:${J(F)}`,signalAcceptedResponsePrefix:(F)=>`sigres:v1:${J(F)}:`,signalAcceptedResponse:(F,W,X)=>`sigres:v1:${J(F)}:${J(W)}:${J(X)}`,deadline:(F,W)=>`wf-deadline:${M(F)}:${J(W)}`,terminalCleanup:(F,W)=>`wf-cleanup:${M(F)}:${J(W)}`,teardownTimer:(F,W)=>`wf-teardown:${M(F)}:${J(W)}`,delayedStart:(F,W)=>`wf-delayed:${M(F)}:${J(W)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(F,W)=>`wf-terminal:${M(F)}:${J(W)}`,attribute:(F)=>`attr:${J(F)}`,attributeIndex:(F,W,X)=>`idx:${F}:${W}:${J(X)}`,tagIndex:(F,W)=>`tag:${J(F)}:${J(W)}`,updatePrefix:(F)=>`upd:${J(F)}:`,update:(F,W)=>`upd:${J(F)}:${W}`,updateResponse:(F)=>`upr:${F}`,updateIdempotency:(F,W)=>`upk:${J(F)}:${W}`,startIdempotency:(F)=>`start-idem:${J(F)}`,startIdempotencySignalId:(F)=>`start-idem:${F}`,livenessPrefix:()=>"liveness:",liveness:(F)=>`liveness:${J(F)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(F,W,X)=>`budget:${F}:${W}:${X}`,review:(F,W)=>`review:${J(F)}:${W}`,workflowHeaders:(F)=>`wf-headers:${J(F)}`,childCancellationPrefix:(F)=>`child-cancel:${J(F)}:`,childCancellation:(F,W)=>`child-cancel:${J(F)}:${J(W)}`,terminalCleanupNeeded:(F)=>`wf-cleanup-needed:${J(F)}`,workflowConcurrency:(F,W)=>`wf-concurrency:${J(F)}:${J(W)}`,workflowConcurrencyHolder:(F)=>`wf-concurrency-holder:${J(F)}`,workflowHasServices:(F)=>`wf-has-services:${J(F)}`,finalizerState:(F)=>`wf-finalizer-state:${J(F)}`,teardownOwed:(F)=>`wf-teardown-needed:${J(F)}`,teardownDeadLetter:(F)=>`wf-teardown-deadletter:${J(F)}`,offload:(F,W)=>`offload:${J(F)}:${W}`,archive:(F,W)=>`archive:${J(F)}:${W}`,stateExecution:(F,W)=>`state:execution:${J(F)}:${J(W)}`,stateWorkflow:(F,W)=>`state:workflow-scope:${h}:${J(F)}:${J(W)}`,streamChunkPrefix:(F,W)=>`blob:${J(F)}:${W}:chunk:`,streamChunk:(F,W,X)=>`blob:${J(F)}:${W}:chunk:${String(X).padStart(10,"0")}`,streamTail:(F,W)=>`blob:${J(F)}:${W}:tail`,streamMetadata:(F,W)=>`blob:${J(F)}:${W}:meta`,budgetCharged:(F)=>`budget-charged:${F}`,toolEffect:(F,W,X)=>`tool-effect:${J(F)}:${W}:${X}`,workflowVisibilityStatus:(F,W)=>`wf-idx-status:${J(F)}:${J(W)}`,workflowVisibilityType:(F,W)=>`wf-idx-type:${J(F)}:${J(W)}`,workflowVisibilityCreated:(F,W)=>`wf-idx-created:${M(F)}:${J(W)}`,workflowVisibilityUpdated:(F,W)=>`wf-idx-updated:${M(F)}:${J(W)}`,workflowVisibilityDeadline:(F,W)=>`wf-idx-deadline:${M(F)}:${J(W)}`,workflowVisibilityManifest:(F)=>`wf-idx-manifest:${J(F)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"}});function NF(F){if(F===void 0)return;if(typeof F!=="number"||!Number.isInteger(F)||F<0)throw Error("deleteRange limit must be a finite non-negative integer");return F===0?0:F}function V(F){let W={},X=!1;for(let $ of["gt","gte","lt","lte"]){let G=F[$];if(G===void 0)continue;if(typeof G!=="string")throw Error("deleteRange bounds must be strings");W[$]=G,X=!0}if(!X)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let Z=NF(F.limit);if(Z!==void 0)W.limit=Z;return W}async function w(F,W,X){let Z=V(X);if(F.deleteRange)return F.deleteRange(W,Z);return S(F,W,Z)}var z=()=>{};function P(F){return F.replaceAll(/:+$/g,"")}function VF(F,W){let X=P(F),Z=P(W);if(X.length===0)return Z;if(Z.length===0)return X;return`${X}:${Z}`}function f(F,W){return new A(F,W)}var A;var d=D(()=>{z();R();A=class A{#F;#J;constructor(F,W){this.#F=F,this.#J=P(W)}#W(F){if(this.#J.length===0)return F;return F.length===0?`${this.#J}:`:`${this.#J}:${F}`}#X(F){if(this.#J.length===0)return F;return F.slice(this.#J.length+1)}#Z(F={}){let W={};if(F.limit!==void 0)W.limit=F.limit;if(F.reverse!==void 0)W.reverse=F.reverse;if(F.gt!==void 0)W.gt=this.#W(F.gt);if(F.gte!==void 0)W.gte=this.#W(F.gte);if(F.lt!==void 0)W.lt=this.#W(F.lt);if(F.lte!==void 0)W.lte=this.#W(F.lte);return W}#$(F){let W={};if(F.limit!==void 0)W.limit=F.limit;if(F.gt!==void 0)W.gt=this.#W(F.gt);if(F.gte!==void 0)W.gte=this.#W(F.gte);if(F.lt!==void 0)W.lt=this.#W(F.lt);if(F.lte!==void 0)W.lte=this.#W(F.lte);return W}capabilities(){return this.#F.capabilities()}scoped(F){return new A(this.#F,VF(this.#J,F))}async get(F){return this.#F.get(this.#W(F))}async put(F,W){await this.#F.put(this.#W(F),W)}async delete(F){await this.#F.delete(this.#W(F))}async*scan(F,W){for await(let[X,Z]of this.#F.scan(this.#W(F),this.#Z(W)))yield[this.#X(X),Z]}async batch(F){U("batch operations",F.length),await this.#F.batch(F.map((W)=>{if(W.type==="put")return{type:"put",key:this.#W(W.key),value:W.value};return{type:"delete",key:this.#W(W.key)}}))}async conditionalBatch(F,W){return k(this.#F,F.map((X)=>({key:this.#W(X.key),expectedValue:X.expectedValue})),W.map((X)=>{if(X.type==="put")return{type:"put",key:this.#W(X.key),value:X.value};return{type:"delete",key:this.#W(X.key)}}))}async has(F){return u(this.#F,this.#W(F))}async deletePrefix(F){return I(this.#F,this.#W(F))}async deleteRange(F,W){let X=this.#$(V(W));return w(this.#F,this.#W(F),X)}async*keys(F,W){for await(let X of y(this.#F,this.#W(F),this.#Z(W)))yield this.#X(X)}async count(F){return g(this.#F,this.#W(F))}[Symbol.dispose](){this.#F[Symbol.dispose]()}}});function CF(F){return F.trim().replace(/;+\s*$/u,"").trim()}function OF(F){return RF.test(F)}function l(F){let W=CF(F);if(W.length===0)throw Error("Storage query must not be empty.");if(W.includes(";"))throw Error("Storage query must contain exactly one read-only statement.");if(BF.test(W))return;if(YF.test(W)&&OF(W))return;throw Error("Storage query only supports read-only SELECT and PRAGMA statements.")}var YF,RF,BF;var p=D(()=>{YF=/^PRAGMA\b/iu,RF=/^PRAGMA\s+(?:[A-Z_][A-Z0-9_]*\.)?[A-Z_][A-Z0-9_]*\s*$/iu,BF=/^SELECT\b/iu});function O(F){return[F,c(F)]}function i(F,W){let{gt:X,gte:Z,lt:$,lte:G}=W,H=["key >= ? AND key < ?"],j=O(F);if(X!==void 0)H.push("key > ?"),j.push(X);if(Z!==void 0)H.push("key >= ?"),j.push(Z);if($!==void 0)H.push("key < ?"),j.push($);if(G!==void 0)H.push("key <= ?"),j.push(G);return{conditions:H,parameters:j}}function t(F,W={}){let{limit:X,reverse:Z}=W,{conditions:$,parameters:G}=i(F,W),H=Z?"DESC":"ASC",j=X!==void 0?" LIMIT ?":"";if(X!==void 0)G.push(X);return{parameters:G,sqlSuffix:`WHERE ${$.join(" AND ")} ORDER BY key ${H}${j}`}}function e(F,W){let{conditions:X,parameters:Z}=i(F,W),$=X.join(" AND ");if(W.limit===void 0)return{parameters:Z,sql:`DELETE FROM kv WHERE ${$}`};return Z.push(W.limit),{parameters:Z,sql:`DELETE FROM kv WHERE key IN (SELECT key FROM kv WHERE ${$} ORDER BY key ASC LIMIT ?)`}}function o(F,W={}){let{parameters:X,sqlSuffix:Z}=t(F,W);return{parameters:X,sql:`SELECT key, value FROM kv ${Z}`}}function FF(F,W={}){let{parameters:X,sqlSuffix:Z}=t(F,W);return{parameters:X,sql:`SELECT key FROM kv ${Z}`}}var a=`CREATE TABLE IF NOT EXISTS kv (
|
|
3
3
|
key TEXT PRIMARY KEY,
|
|
4
4
|
value BLOB NOT NULL
|
|
5
|
-
) WITHOUT ROWID`,L="SELECT value FROM kv WHERE key = ?",
|
|
5
|
+
) WITHOUT ROWID`,L="SELECT value FROM kv WHERE key = ?",B="INSERT INTO kv (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",C="DELETE FROM kv WHERE key = ?",s="SELECT 1 AS present FROM kv WHERE key = ? LIMIT 1",n="SELECT COUNT(*) AS count FROM kv WHERE key >= ? AND key < ?",r="DELETE FROM kv WHERE key >= ? AND key < ?";var WF=D(()=>{R()});z();R();p();d();WF();import{createClient as vF}from"@libsql/client";var XF=`${a};`,Y=10,hF=new Set(["SQLITE_BUSY","SQLITE_LOCKED"]);function JF(F){return typeof F==="object"&&F!==null&&"code"in F&&typeof F.code==="string"&&hF.has(F.code)}async function _F(F){return F.transaction("write")}async function zF(F){try{await F.rollback()}catch{}}async function ZF(F){await new Promise((W)=>{setTimeout(W,Math.min(F*5,50))})}async function PF(F,W){for(let X=1;X<=Y;X++)try{await F.batch(W,"write");return}catch(Z){if(!JF(Z)||X===Y)throw Z;await ZF(X)}}async function AF(F,W){for(let X of W){let $=(await F.execute({sql:L,args:[X.key]})).rows[0]?.value,G=$===null||$===void 0?null:new Uint8Array($);if(!x(G,X.expectedValue))return!1}return!0}async function LF(F,W){for(let X of W)if(X.type==="put")await F.execute({sql:B,args:[X.key,X.value]});else await F.execute({sql:C,args:[X.key]})}function qF(F){if(F==="file::memory:"||F===":memory:")return"ephemeral";if(F.startsWith("file:"))return"local";return"remote"}class KF{#F;#J;#W=!1;constructor(F){this.#J=qF(F.url),this.#F=vF(F.authToken?{url:F.url,authToken:F.authToken}:{url:F.url})}capabilities(){return{persistence:this.#J,readAfterWrite:"session",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}async#X(){if(this.#W)return;await this.#F.executeMultiple(XF),this.#W=!0}async get(F){await this.#X();let W=await this.#F.execute({sql:L,args:[F]});if(W.rows.length===0)return null;let X=W.rows[0].value;if(X===null||X===void 0)return null;return new Uint8Array(X)}async put(F,W){await this.#X(),await this.#F.execute({sql:B,args:[F,W]})}async delete(F){await this.#X(),await this.#F.execute({sql:C,args:[F]})}async has(F){return await this.#X(),(await this.#F.execute({sql:s,args:[F]})).rows.length>0}async deletePrefix(F){await this.#X();let[W,X]=O(F);return(await this.#F.execute({sql:r,args:[W,X]})).rowsAffected}async deleteRange(F,W){await this.#X();let X=V(W),{parameters:Z,sql:$}=e(F,X);return(await this.#F.execute({sql:$,args:Z})).rowsAffected}async*scan(F,W={}){await this.#X();let{parameters:X,sql:Z}=o(F,W),$=await this.#F.execute({sql:Z,args:X});for(let G of $.rows){let{key:H,value:j}=G,$F=new Uint8Array(j);yield[H,$F]}}async*keys(F,W={}){await this.#X();let{parameters:X,sql:Z}=FF(F,W),$=await this.#F.execute({sql:Z,args:X});for(let G of $.rows)yield G.key}async count(F){await this.#X();let[W,X]=O(F),Z=await this.#F.execute({sql:n,args:[W,X]});return Number(Z.rows[0]?.count??0)}scoped(F){return f(this,F)}async batch(F){if(U("batch operations",F.length),F.length===0)return;await this.#X();let W=F.map((X)=>{if(X.type==="put")return{sql:B,args:[X.key,X.value]};return{sql:C,args:[X.key]}});await PF(this.#F,W)}async conditionalBatch(F,W){U("conditionalBatch conditions",F.length),U("conditionalBatch operations",W.length),await this.#X();let X;for(let Z=1;Z<=Y;Z++){let $;try{if($=await _F(this.#F),await $.executeMultiple(XF),!await AF($,F))return await $.rollback(),!1;return await LF($,W),await $.commit(),!0}catch(G){if($!==void 0)await zF($);if(!JF(G))throw G;if(X=G,Z<Y)await ZF(Z)}}throw Error(`conditionalBatch exhausted ${Y} attempts after SQLite contention failures`,{cause:X})}async query(F,W){return await this.#X(),l(F),(await this.#F.execute({sql:F,args:W??[]})).rows}[Symbol.dispose](){this.#F.close()}}export{KF as TursoStorage};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var gW=Object.defineProperty;var vW=(W)=>W;function bW(W,$){this[W]=vW.bind(null,$)}var c0=(W,$)=>{for(var Z in $)gW(W,Z,{get:$[Z],enumerable:!0,configurable:!0,set:bW.bind($,Z)})};var X=(W,$)=>()=>(W&&($=W(W=0)),$);function b(W,$,Z){if(!W.capabilities()[$])throw Error(`Feature "${Z}" requires storage capability "${$}", but this storage backend does not provide it.`)}function fW(W){let $=W.capabilities(),Z=[];if($.persistence!=="local"&&$.persistence!=="remote")Z.push(`persistence must be "local" or "remote" (got "${$.persistence}")`);if($.readAfterWrite!=="linearizable")Z.push(`readAfterWrite must be "linearizable" (got "${$.readAfterWrite}")`);if($.scanConsistency!=="snapshot")Z.push(`scanConsistency must be "snapshot" (got "${$.scanConsistency}")`);if(!$.atomicBatch)Z.push("atomicBatch must be true");if(!$.conditionalBatch)Z.push("conditionalBatch must be true");if(Z.length>0)throw Error(`Storage is not durable enough for recovery: ${Z.join("; ")}.`)}var f="default";async function s(W,$){return await W.get($)!==null}async function*z(W,$,Z){for await(let[G]of W.scan($,Z))yield G}async function a(W,$){let Z=0;for await(let G of z(W,$))Z++;return Z}async function o(W,$){let Z=[];for await(let G of z(W,$))Z.push({type:"delete",key:G});if(Z.length===0)return 0;return await W.batch(Z),Z.length}async function t(W,$,Z){let G=[];for await(let Q of z(W,$,Z))G.push({type:"delete",key:Q});if(G.length===0)return 0;return await W.batch(G),G.length}var yW;var e=X(()=>{yW=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","ev:","idx:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-deadline:","wf-delayed:","wf-has-services:","wf-headers:","wf-idx-","wf-terminal:"]});function e0(W){return W.length>0?W.slice(0,-1)+String.fromCharCode(W.charCodeAt(W.length-1)+1):"\xFF"}function W$(W,$={}){if($.gt!==void 0&&W<=$.gt)return!1;if($.gte!==void 0&&W<$.gte)return!1;if($.lt!==void 0&&W>=$.lt)return!1;if($.lte!==void 0&&W>$.lte)return!1;return!0}function $$(W,$){if(W===null||$===null)return W===$;if(W.byteLength!==$.byteLength)return!1;for(let Z=0;Z<W.byteLength;Z++)if(W[Z]!==$[Z])return!1;return!0}async function WW(W,$){if(W.has)return W.has($);return s(W,$)}function $W(W,$,Z){if(W.keys)return W.keys($,Z);return z(W,$,Z)}async function ZW(W,$){if(W.count)return W.count($);return a(W,$)}async function GW(W,$){if(W.deletePrefix)return W.deletePrefix($);return o(W,$)}async function QW(W,$,Z){if(b(W,"conditionalBatch","storageConditionalBatch"),!W.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return W.conditionalBatch($,Z)}function J(W){return encodeURIComponent(W)}function Z$(W){return decodeURIComponent(W)}function G$(W){try{return decodeURIComponent(W)}catch{return null}}var N=(W)=>String(W).padStart(16,"0"),Q$;var JW=X(()=>{e();Q$={workflow:(W)=>`wf:${J(W)}`,checkpoint:(W)=>`wf:${J(W)}:ckpt`,checkpointHistory:(W,$)=>`wf:${J(W)}:ckpt:${String($).padStart(10,"0")}`,timelinePrefix:(W)=>`wf:${J(W)}:timeline:`,timeline:(W,$)=>`wf:${J(W)}:timeline:${String($).padStart(10,"0")}`,schedule:(W)=>`schedule:${J(W)}`,scheduleTick:(W,$)=>`schedule-due:${String(W).padStart(16,"0")}:${J($)}`,scheduleRun:(W)=>`schedule-run:${J(W)}`,operation:(W,$,Z)=>`op:${W}:${N($)}:${Z}`,operationInflight:(W)=>`op:inflight:${W}`,operationQueued:(W)=>`op:queued:${W}`,operationResolved:(W)=>`op:resolved:${W}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(W,$,Z)=>`audit:bulk:${N(W)}:${J($)}:${J(Z)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(W,$)=>`op:resolved-by-time:${N(W)}:${J($)}`,asyncActivity:(W,$)=>`async-act:v1:${J(W)}:${J($)}`,activityReconciliationPrefix:(W)=>`actrec:v1:${J(W)}:`,activityReconciliation:(W,$,Z)=>`actrec:v1:${J(W)}:${J($)}:${Z}`,eventPrefix:(W)=>`ev:${J(W)}:`,event:(W,$)=>`ev:${J(W)}:${String($).padStart(10,"0")}`,eventHead:(W)=>`ev:${J(W)}:head`,eventWatermark:(W)=>`ev:${J(W)}:watermark`,signal:(W,$,Z)=>`sig:${J(W)}:${$}:${J(Z)}`,signalSequence:(W)=>`sigseq:v1:${J(W)}`,signalAcceptedResponsePrefix:(W)=>`sigres:v1:${J(W)}:`,signalAcceptedResponse:(W,$,Z)=>`sigres:v1:${J(W)}:${J($)}:${J(Z)}`,deadline:(W,$)=>`wf-deadline:${N(W)}:${J($)}`,terminalCleanup:(W,$)=>`wf-cleanup:${N(W)}:${J($)}`,delayedStart:(W,$)=>`wf-delayed:${N(W)}:${J($)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(W,$)=>`wf-terminal:${N(W)}:${J($)}`,attribute:(W)=>`attr:${J(W)}`,attributeIndex:(W,$,Z)=>`idx:${W}:${$}:${J(Z)}`,tagIndex:(W,$)=>`tag:${J(W)}:${J($)}`,updatePrefix:(W)=>`upd:${J(W)}:`,update:(W,$)=>`upd:${J(W)}:${$}`,updateResponse:(W)=>`upr:${W}`,updateIdempotency:(W,$)=>`upk:${J(W)}:${$}`,startIdempotency:(W)=>`start-idem:${J(W)}`,startIdempotencySignalId:(W)=>`start-idem:${W}`,livenessPrefix:()=>"liveness:",liveness:(W)=>`liveness:${J(W)}`,budget:(W,$,Z)=>`budget:${W}:${$}:${Z}`,review:(W,$)=>`review:${J(W)}:${$}`,workflowHeaders:(W)=>`wf-headers:${J(W)}`,terminalCleanupNeeded:(W)=>`wf-cleanup-needed:${J(W)}`,workflowHasServices:(W)=>`wf-has-services:${J(W)}`,offload:(W,$)=>`offload:${J(W)}:${$}`,archive:(W,$)=>`archive:${J(W)}:${$}`,stateExecution:(W,$)=>`state:execution:${J(W)}:${J($)}`,stateWorkflow:(W,$)=>`state:workflow-scope:${f}:${J(W)}:${J($)}`,streamChunkPrefix:(W,$)=>`blob:${J(W)}:${$}:chunk:`,streamChunk:(W,$,Z)=>`blob:${J(W)}:${$}:chunk:${String(Z).padStart(10,"0")}`,streamMetadata:(W,$)=>`blob:${J(W)}:${$}:meta`,budgetCharged:(W)=>`budget-charged:${W}`,toolEffect:(W,$,Z)=>`tool-effect:${J(W)}:${$}:${Z}`,workflowVisibilityStatus:(W,$)=>`wf-idx-status:${J(W)}:${J($)}`,workflowVisibilityType:(W,$)=>`wf-idx-type:${J(W)}:${J($)}`,workflowVisibilityCreated:(W,$)=>`wf-idx-created:${N(W)}:${J($)}`,workflowVisibilityUpdated:(W,$)=>`wf-idx-updated:${N(W)}:${J($)}`,workflowVisibilityDeadline:(W,$)=>`wf-idx-deadline:${N(W)}:${J($)}`,workflowVisibilityManifest:(W)=>`wf-idx-manifest:${J(W)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"}});function qW(W){let $=W.length,Z=0,G=0;while(G<$){let Q=W.charCodeAt(G++);if((Q&4294967168)===0){Z++;continue}else if((Q&4294965248)===0)Z+=2;else{if(Q>=55296&&Q<=56319){if(G<$){let q=W.charCodeAt(G);if((q&64512)===56320)++G,Q=((Q&1023)<<10)+(q&1023)+65536}}if((Q&4294901760)===0)Z+=3;else Z+=4}}return Z}function lW(W,$,Z){let G=W.length,Q=Z,q=0;while(q<G){let F=W.charCodeAt(q++);if((F&4294967168)===0){$[Q++]=F;continue}else if((F&4294965248)===0)$[Q++]=F>>6&31|192;else{if(F>=55296&&F<=56319){if(q<G){let Y=W.charCodeAt(q);if((Y&64512)===56320)++q,F=((F&1023)<<10)+(Y&1023)+65536}}if((F&4294901760)===0)$[Q++]=F>>12&15|224,$[Q++]=F>>6&63|128;else $[Q++]=F>>18&7|240,$[Q++]=F>>12&63|128,$[Q++]=F>>6&63|128}$[Q++]=F&63|128}}function cW(W,$,Z){pW.encodeInto(W,$.subarray(Z))}function FW(W,$,Z){if(W.length>uW)cW(W,$,Z);else lW(W,$,Z)}function y(W,$,Z){let G=$,Q=G+Z,q=[],F="";while(G<Q){let Y=W[G++];if((Y&128)===0)q.push(Y);else if((Y&224)===192){let A=W[G++]&63;q.push((Y&31)<<6|A)}else if((Y&240)===224){let A=W[G++]&63,v=W[G++]&63;q.push((Y&31)<<12|A<<6|v)}else if((Y&248)===240){let A=W[G++]&63,v=W[G++]&63,mW=W[G++]&63,K=(Y&7)<<18|A<<12|v<<6|mW;if(K>65535)K-=65536,q.push(K>>>10&1023|55296),K=56320|K&1023;q.push(K)}else q.push(Y);if(q.length>=dW)F+=String.fromCharCode(...q),q.length=0}if(q.length>0)F+=String.fromCharCode(...q);return F}function rW(W,$,Z){let G=W.subarray($,$+Z);return nW.decode(G)}function XW(W,$,Z){if(Z>iW)return rW(W,$,Z);else return y(W,$,Z)}var pW,uW=50,dW=4096,nW,iW=200;var x=X(()=>{pW=new TextEncoder;nW=new TextDecoder});class O{type;data;constructor(W,$){this.type=W,this.data=$}}var V;var l=X(()=>{V=class V extends Error{constructor(W){super(W);let $=Object.create(V.prototype);Object.setPrototypeOf(this,$),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:V.name})}}});function HW(W,$,Z){let G=Z/4294967296,Q=Z;W.setUint32($,G),W.setUint32($+4,Q)}function C(W,$,Z){let G=Math.floor(Z/4294967296),Q=Z;W.setUint32($,G),W.setUint32($+4,Q)}function S(W,$){let Z=W.getInt32($),G=W.getUint32($+4);return Z*4294967296+G}function YW(W,$){let Z=W.getUint32($),G=W.getUint32($+4);return Z*4294967296+G}var B=4294967295;function tW({sec:W,nsec:$}){if(W>=0&&$>=0&&W<=oW)if($===0&&W<=aW){let Z=new Uint8Array(4);return new DataView(Z.buffer).setUint32(0,W),Z}else{let Z=W/4294967296,G=W&4294967295,Q=new Uint8Array(8),q=new DataView(Q.buffer);return q.setUint32(0,$<<2|Z&3),q.setUint32(4,G),Q}else{let Z=new Uint8Array(12),G=new DataView(Z.buffer);return G.setUint32(0,$),C(G,4,W),Z}}function eW(W){let $=W.getTime(),Z=Math.floor($/1000),G=($-Z*1000)*1e6,Q=Math.floor(G/1e9);return{sec:Z+Q,nsec:G-Q*1e9}}function W0(W){if(W instanceof Date){let $=eW(W);return tW($)}else return null}function $0(W){let $=new DataView(W.buffer,W.byteOffset,W.byteLength);switch(W.byteLength){case 4:{let Z=$.getUint32(0),G=0;return{sec:Z,nsec:0}}case 8:{let Z=$.getUint32(0),G=$.getUint32(4),Q=(Z&3)*4294967296+G,q=Z>>>2;return{sec:Q,nsec:q}}case 12:{let Z=S($,4),G=$.getUint32(0);return{sec:Z,nsec:G}}default:throw new V(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${W.length}`)}}function Z0(W){let $=$0(W);return new Date($.sec*1000+$.nsec/1e6)}var sW=-1,aW=4294967295,oW=17179869183,VW;var PW=X(()=>{l();VW={type:sW,encode:W0,decode:Z0}});var U;var E=X(()=>{PW();U=class U{static defaultCodec=new U;__brand;builtInEncoders=[];builtInDecoders=[];encoders=[];decoders=[];constructor(){this.register(VW)}register({type:W,encode:$,decode:Z}){if(W>=0)this.encoders[W]=$,this.decoders[W]=Z;else{let G=-1-W;this.builtInEncoders[G]=$,this.builtInDecoders[G]=Z}}tryToEncode(W,$){for(let Z=0;Z<this.builtInEncoders.length;Z++){let G=this.builtInEncoders[Z];if(G!=null){let Q=G(W,$);if(Q!=null){let q=-1-Z;return new O(q,Q)}}}for(let Z=0;Z<this.encoders.length;Z++){let G=this.encoders[Z];if(G!=null){let Q=G(W,$);if(Q!=null)return new O(Z,Q)}}if(W instanceof O)return W;return null}decode(W,$,Z){let G=$<0?this.builtInDecoders[-1-$]:this.decoders[$];if(G)return G(W,$,Z);else return new O($,W)}}});function G0(W){return W instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&W instanceof SharedArrayBuffer}function D(W){if(W instanceof Uint8Array)return W;else if(ArrayBuffer.isView(W))return new Uint8Array(W.buffer,W.byteOffset,W.byteLength);else if(G0(W))return new Uint8Array(W);else return Uint8Array.from(W)}class k{extensionCodec;context;useBigInt64;maxDepth;initialBufferSize;sortKeys;forceFloat32;ignoreUndefined;forceIntegerToFloat;pos;view;bytes;entered=!1;constructor(W){this.extensionCodec=W?.extensionCodec??U.defaultCodec,this.context=W?.context,this.useBigInt64=W?.useBigInt64??!1,this.maxDepth=W?.maxDepth??Q0,this.initialBufferSize=W?.initialBufferSize??J0,this.sortKeys=W?.sortKeys??!1,this.forceFloat32=W?.forceFloat32??!1,this.ignoreUndefined=W?.ignoreUndefined??!1,this.forceIntegerToFloat=W?.forceIntegerToFloat??!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}clone(){return new k({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,maxDepth:this.maxDepth,initialBufferSize:this.initialBufferSize,sortKeys:this.sortKeys,forceFloat32:this.forceFloat32,ignoreUndefined:this.ignoreUndefined,forceIntegerToFloat:this.forceIntegerToFloat})}reinitializeState(){this.pos=0}encodeSharedRef(W){if(this.entered)return this.clone().encodeSharedRef(W);try{return this.entered=!0,this.reinitializeState(),this.doEncode(W,1),this.bytes.subarray(0,this.pos)}finally{this.entered=!1}}encode(W){if(this.entered)return this.clone().encode(W);try{return this.entered=!0,this.reinitializeState(),this.doEncode(W,1),this.bytes.slice(0,this.pos)}finally{this.entered=!1}}doEncode(W,$){if($>this.maxDepth)throw Error(`Too deep objects in depth ${$}`);if(W==null)this.encodeNil();else if(typeof W==="boolean")this.encodeBoolean(W);else if(typeof W==="number")if(!this.forceIntegerToFloat)this.encodeNumber(W);else this.encodeNumberAsFloat(W);else if(typeof W==="string")this.encodeString(W);else if(this.useBigInt64&&typeof W==="bigint")this.encodeBigInt64(W);else this.encodeObject(W,$)}ensureBufferSizeToWrite(W){let $=this.pos+W;if(this.view.byteLength<$)this.resizeBuffer($*2)}resizeBuffer(W){let $=new ArrayBuffer(W),Z=new Uint8Array($),G=new DataView($);Z.set(this.bytes),this.view=G,this.bytes=Z}encodeNil(){this.writeU8(192)}encodeBoolean(W){if(W===!1)this.writeU8(194);else this.writeU8(195)}encodeNumber(W){if(!this.forceIntegerToFloat&&Number.isSafeInteger(W))if(W>=0)if(W<128)this.writeU8(W);else if(W<256)this.writeU8(204),this.writeU8(W);else if(W<65536)this.writeU8(205),this.writeU16(W);else if(W<4294967296)this.writeU8(206),this.writeU32(W);else if(!this.useBigInt64)this.writeU8(207),this.writeU64(W);else this.encodeNumberAsFloat(W);else if(W>=-32)this.writeU8(224|W+32);else if(W>=-128)this.writeU8(208),this.writeI8(W);else if(W>=-32768)this.writeU8(209),this.writeI16(W);else if(W>=-2147483648)this.writeU8(210),this.writeI32(W);else if(!this.useBigInt64)this.writeU8(211),this.writeI64(W);else this.encodeNumberAsFloat(W);else this.encodeNumberAsFloat(W)}encodeNumberAsFloat(W){if(this.forceFloat32)this.writeU8(202),this.writeF32(W);else this.writeU8(203),this.writeF64(W)}encodeBigInt64(W){if(W>=BigInt(0))this.writeU8(207),this.writeBigUint64(W);else this.writeU8(211),this.writeBigInt64(W)}writeStringHeader(W){if(W<32)this.writeU8(160+W);else if(W<256)this.writeU8(217),this.writeU8(W);else if(W<65536)this.writeU8(218),this.writeU16(W);else if(W<4294967296)this.writeU8(219),this.writeU32(W);else throw Error(`Too long string: ${W} bytes in UTF-8`)}encodeString(W){let Z=qW(W);this.ensureBufferSizeToWrite(5+Z),this.writeStringHeader(Z),FW(W,this.bytes,this.pos),this.pos+=Z}encodeObject(W,$){let Z=this.extensionCodec.tryToEncode(W,this.context);if(Z!=null)this.encodeExtension(Z);else if(Array.isArray(W))this.encodeArray(W,$);else if(ArrayBuffer.isView(W))this.encodeBinary(W);else if(typeof W==="object")this.encodeMap(W,$);else throw Error(`Unrecognized object: ${Object.prototype.toString.apply(W)}`)}encodeBinary(W){let $=W.byteLength;if($<256)this.writeU8(196),this.writeU8($);else if($<65536)this.writeU8(197),this.writeU16($);else if($<4294967296)this.writeU8(198),this.writeU32($);else throw Error(`Too large binary: ${$}`);let Z=D(W);this.writeU8a(Z)}encodeArray(W,$){let Z=W.length;if(Z<16)this.writeU8(144+Z);else if(Z<65536)this.writeU8(220),this.writeU16(Z);else if(Z<4294967296)this.writeU8(221),this.writeU32(Z);else throw Error(`Too large array: ${Z}`);for(let G of W)this.doEncode(G,$+1)}countWithoutUndefined(W,$){let Z=0;for(let G of $)if(W[G]!==void 0)Z++;return Z}encodeMap(W,$){let Z=Object.keys(W);if(this.sortKeys)Z.sort();let G=this.ignoreUndefined?this.countWithoutUndefined(W,Z):Z.length;if(G<16)this.writeU8(128+G);else if(G<65536)this.writeU8(222),this.writeU16(G);else if(G<4294967296)this.writeU8(223),this.writeU32(G);else throw Error(`Too large map object: ${G}`);for(let Q of Z){let q=W[Q];if(!(this.ignoreUndefined&&q===void 0))this.encodeString(Q),this.doEncode(q,$+1)}}encodeExtension(W){if(typeof W.data==="function"){let Z=W.data(this.pos+6),G=Z.length;if(G>=4294967296)throw Error(`Too large extension object: ${G}`);this.writeU8(201),this.writeU32(G),this.writeI8(W.type),this.writeU8a(Z);return}let $=W.data.length;if($===1)this.writeU8(212);else if($===2)this.writeU8(213);else if($===4)this.writeU8(214);else if($===8)this.writeU8(215);else if($===16)this.writeU8(216);else if($<256)this.writeU8(199),this.writeU8($);else if($<65536)this.writeU8(200),this.writeU16($);else if($<4294967296)this.writeU8(201),this.writeU32($);else throw Error(`Too large extension object: ${$}`);this.writeI8(W.type),this.writeU8a(W.data)}writeU8(W){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,W),this.pos++}writeU8a(W){let $=W.length;this.ensureBufferSizeToWrite($),this.bytes.set(W,this.pos),this.pos+=$}writeI8(W){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,W),this.pos++}writeU16(W){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,W),this.pos+=2}writeI16(W){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,W),this.pos+=2}writeU32(W){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,W),this.pos+=4}writeI32(W){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,W),this.pos+=4}writeF32(W){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,W),this.pos+=4}writeF64(W){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,W),this.pos+=8}writeU64(W){this.ensureBufferSizeToWrite(8),HW(this.view,this.pos,W),this.pos+=8}writeI64(W){this.ensureBufferSizeToWrite(8),C(this.view,this.pos,W),this.pos+=8}writeBigUint64(W){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,W),this.pos+=8}writeBigInt64(W){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,W),this.pos+=8}}var Q0=100,J0=2048;var NW=X(()=>{x();E()});function R(W,$){return new k($).encodeSharedRef(W)}var RW=X(()=>{NW()});function w(W){return`${W<0?"-":""}0x${Math.abs(W).toString(16).padStart(2,"0")}`}class p{hit=0;miss=0;caches;maxKeyLength;maxLengthPerKey;constructor(W=q0,$=F0){this.maxKeyLength=W,this.maxLengthPerKey=$,this.caches=[];for(let Z=0;Z<this.maxKeyLength;Z++)this.caches.push([])}canBeCached(W){return W>0&&W<=this.maxKeyLength}find(W,$,Z){let G=this.caches[Z-1];W:for(let Q of G){let q=Q.bytes;for(let F=0;F<Z;F++)if(q[F]!==W[$+F])continue W;return Q.str}return null}store(W,$){let Z=this.caches[W.length-1],G={bytes:W,str:$};if(Z.length>=this.maxLengthPerKey)Z[Math.random()*Z.length|0]=G;else Z.push(G)}decode(W,$,Z){let G=this.find(W,$,Z);if(G!=null)return this.hit++,G;this.miss++;let Q=y(W,$,Z),q=Uint8Array.prototype.slice.call(W,$,$+Z);return this.store(q,Q),Q}}var q0=16,F0=16;var MW=X(()=>{x()});class KW{stack=[];stackHeadPosition=-1;get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(W){let $=this.getUninitializedStateFromPool();$.type=u,$.position=0,$.size=W,$.array=Array(W)}pushMapState(W){let $=this.getUninitializedStateFromPool();$.type=T,$.readCount=0,$.size=W,$.map={}}getUninitializedStateFromPool(){if(this.stackHeadPosition++,this.stackHeadPosition===this.stack.length){let W={type:void 0,size:0,array:void 0,position:0,readCount:0,map:void 0,key:null};this.stack.push(W)}return this.stack[this.stackHeadPosition]}release(W){if(this.stack[this.stackHeadPosition]!==W)throw Error("Invalid stack state. Released state is not on top of the stack.");if(W.type===u){let Z=W;Z.size=0,Z.array=void 0,Z.position=0,Z.type=void 0}if(W.type===T||W.type===_W){let Z=W;Z.size=0,Z.map=void 0,Z.readCount=0,Z.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}}class j{extensionCodec;context;useBigInt64;rawStrings;maxStrLength;maxBinLength;maxArrayLength;maxMapLength;maxExtLength;keyDecoder;mapKeyConverter;totalPos=0;pos=0;view=c;bytes=H0;headByte=L;stack=new KW;entered=!1;constructor(W){this.extensionCodec=W?.extensionCodec??U.defaultCodec,this.context=W?.context,this.useBigInt64=W?.useBigInt64??!1,this.rawStrings=W?.rawStrings??!1,this.maxStrLength=W?.maxStrLength??B,this.maxBinLength=W?.maxBinLength??B,this.maxArrayLength=W?.maxArrayLength??B,this.maxMapLength=W?.maxMapLength??B,this.maxExtLength=W?.maxExtLength??B,this.keyDecoder=W?.keyDecoder!==void 0?W.keyDecoder:Y0,this.mapKeyConverter=W?.mapKeyConverter??X0}clone(){return new j({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,rawStrings:this.rawStrings,maxStrLength:this.maxStrLength,maxBinLength:this.maxBinLength,maxArrayLength:this.maxArrayLength,maxMapLength:this.maxMapLength,maxExtLength:this.maxExtLength,keyDecoder:this.keyDecoder})}reinitializeState(){this.totalPos=0,this.headByte=L,this.stack.reset()}setBuffer(W){let $=D(W);this.bytes=$,this.view=new DataView($.buffer,$.byteOffset,$.byteLength),this.pos=0}appendBuffer(W){if(this.headByte===L&&!this.hasRemaining(1))this.setBuffer(W);else{let $=this.bytes.subarray(this.pos),Z=D(W),G=new Uint8Array($.length+Z.length);G.set($),G.set(Z,$.length),this.setBuffer(G)}}hasRemaining(W){return this.view.byteLength-this.pos>=W}createExtraByteError(W){let{view:$,pos:Z}=this;return RangeError(`Extra ${$.byteLength-Z} of ${$.byteLength} byte(s) found at buffer[${W}]`)}decode(W){if(this.entered)return this.clone().decode(W);try{this.entered=!0,this.reinitializeState(),this.setBuffer(W);let $=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return $}finally{this.entered=!1}}*decodeMulti(W){if(this.entered){yield*this.clone().decodeMulti(W);return}try{this.entered=!0,this.reinitializeState(),this.setBuffer(W);while(this.hasRemaining(1))yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync(W){if(this.entered)return this.clone().decodeAsync(W);try{this.entered=!0;let $=!1,Z;for await(let F of W){if($)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(F);try{Z=this.doDecodeSync(),$=!0}catch(Y){if(!(Y instanceof RangeError))throw Y}this.totalPos+=this.pos}if($){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return Z}let{headByte:G,pos:Q,totalPos:q}=this;throw RangeError(`Insufficient data in parsing ${w(G)} at ${q} (${Q} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream(W){return this.decodeMultiAsync(W,!0)}decodeStream(W){return this.decodeMultiAsync(W,!1)}async*decodeMultiAsync(W,$){if(this.entered){yield*this.clone().decodeMultiAsync(W,$);return}try{this.entered=!0;let Z=$,G=-1;for await(let Q of W){if($&&G===0)throw this.createExtraByteError(this.totalPos);if(this.appendBuffer(Q),Z)G=this.readArraySize(),Z=!1,this.complete();try{while(!0)if(yield this.doDecodeSync(),--G===0)break}catch(q){if(!(q instanceof RangeError))throw q}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){W:while(!0){let W=this.readHeadByte(),$;if(W>=224)$=W-256;else if(W<192)if(W<128)$=W;else if(W<144){let G=W-128;if(G!==0){this.pushMapState(G),this.complete();continue W}else $={}}else if(W<160){let G=W-144;if(G!==0){this.pushArrayState(G),this.complete();continue W}else $=[]}else{let G=W-160;$=this.decodeString(G,0)}else if(W===192)$=null;else if(W===194)$=!1;else if(W===195)$=!0;else if(W===202)$=this.readF32();else if(W===203)$=this.readF64();else if(W===204)$=this.readU8();else if(W===205)$=this.readU16();else if(W===206)$=this.readU32();else if(W===207)if(this.useBigInt64)$=this.readU64AsBigInt();else $=this.readU64();else if(W===208)$=this.readI8();else if(W===209)$=this.readI16();else if(W===210)$=this.readI32();else if(W===211)if(this.useBigInt64)$=this.readI64AsBigInt();else $=this.readI64();else if(W===217){let G=this.lookU8();$=this.decodeString(G,1)}else if(W===218){let G=this.lookU16();$=this.decodeString(G,2)}else if(W===219){let G=this.lookU32();$=this.decodeString(G,4)}else if(W===220){let G=this.readU16();if(G!==0){this.pushArrayState(G),this.complete();continue W}else $=[]}else if(W===221){let G=this.readU32();if(G!==0){this.pushArrayState(G),this.complete();continue W}else $=[]}else if(W===222){let G=this.readU16();if(G!==0){this.pushMapState(G),this.complete();continue W}else $={}}else if(W===223){let G=this.readU32();if(G!==0){this.pushMapState(G),this.complete();continue W}else $={}}else if(W===196){let G=this.lookU8();$=this.decodeBinary(G,1)}else if(W===197){let G=this.lookU16();$=this.decodeBinary(G,2)}else if(W===198){let G=this.lookU32();$=this.decodeBinary(G,4)}else if(W===212)$=this.decodeExtension(1,0);else if(W===213)$=this.decodeExtension(2,0);else if(W===214)$=this.decodeExtension(4,0);else if(W===215)$=this.decodeExtension(8,0);else if(W===216)$=this.decodeExtension(16,0);else if(W===199){let G=this.lookU8();$=this.decodeExtension(G,1)}else if(W===200){let G=this.lookU16();$=this.decodeExtension(G,2)}else if(W===201){let G=this.lookU32();$=this.decodeExtension(G,4)}else throw new V(`Unrecognized type byte: ${w(W)}`);this.complete();let Z=this.stack;while(Z.length>0){let G=Z.top();if(G.type===u)if(G.array[G.position]=$,G.position++,G.position===G.size)$=G.array,Z.release(G);else continue W;else if(G.type===T){if($==="__proto__")throw new V("The key __proto__ is not allowed");G.key=this.mapKeyConverter($),G.type=_W;continue W}else if(G.map[G.key]=$,G.readCount++,G.readCount===G.size)$=G.map,Z.release(G);else{G.key=null,G.type=T;continue W}}return $}}readHeadByte(){if(this.headByte===L)this.headByte=this.readU8();return this.headByte}complete(){this.headByte=L}readArraySize(){let W=this.readHeadByte();switch(W){case 220:return this.readU16();case 221:return this.readU32();default:if(W<160)return W-144;else throw new V(`Unrecognized array type byte: ${w(W)}`)}}pushMapState(W){if(W>this.maxMapLength)throw new V(`Max length exceeded: map length (${W}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(W)}pushArrayState(W){if(W>this.maxArrayLength)throw new V(`Max length exceeded: array length (${W}) > maxArrayLength (${this.maxArrayLength})`);this.stack.pushArrayState(W)}decodeString(W,$){if(!this.rawStrings||this.stateIsMapKey())return this.decodeUtf8String(W,$);return this.decodeBinary(W,$)}decodeUtf8String(W,$){if(W>this.maxStrLength)throw new V(`Max length exceeded: UTF-8 byte length (${W}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+$+W)throw UW;let Z=this.pos+$,G;if(this.stateIsMapKey()&&this.keyDecoder?.canBeCached(W))G=this.keyDecoder.decode(this.bytes,Z,W);else G=XW(this.bytes,Z,W);return this.pos+=$+W,G}stateIsMapKey(){if(this.stack.length>0)return this.stack.top().type===T;return!1}decodeBinary(W,$){if(W>this.maxBinLength)throw new V(`Max length exceeded: bin length (${W}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(W+$))throw UW;let Z=this.pos+$,G=this.bytes.subarray(Z,Z+W);return this.pos+=$+W,G}decodeExtension(W,$){if(W>this.maxExtLength)throw new V(`Max length exceeded: ext length (${W}) > maxExtLength (${this.maxExtLength})`);let Z=this.view.getInt8(this.pos+$),G=this.decodeBinary(W,$+1);return this.extensionCodec.decode(G,Z,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let W=this.view.getUint8(this.pos);return this.pos++,W}readI8(){let W=this.view.getInt8(this.pos);return this.pos++,W}readU16(){let W=this.view.getUint16(this.pos);return this.pos+=2,W}readI16(){let W=this.view.getInt16(this.pos);return this.pos+=2,W}readU32(){let W=this.view.getUint32(this.pos);return this.pos+=4,W}readI32(){let W=this.view.getInt32(this.pos);return this.pos+=4,W}readU64(){let W=YW(this.view,this.pos);return this.pos+=8,W}readI64(){let W=S(this.view,this.pos);return this.pos+=8,W}readU64AsBigInt(){let W=this.view.getBigUint64(this.pos);return this.pos+=8,W}readI64AsBigInt(){let W=this.view.getBigInt64(this.pos);return this.pos+=8,W}readF32(){let W=this.view.getFloat32(this.pos);return this.pos+=4,W}readF64(){let W=this.view.getFloat64(this.pos);return this.pos+=8,W}}var u="array",T="map_key",_W="map_value",X0=(W)=>{if(typeof W==="string"||typeof W==="number")return W;throw new V("The type of key must be string or number but "+typeof W)},L=-1,c,H0,UW,Y0;var OW=X(()=>{E();x();MW();l();c=new DataView(new ArrayBuffer(0)),H0=new Uint8Array(c.buffer);try{c.getInt8(0)}catch(W){if(!(W instanceof RangeError))throw Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}UW=RangeError("Insufficient data"),Y0=new p});function M(W,$){return new j($).decode(W)}var BW=X(()=>{OW()});var h=X(()=>{RW();BW();E()});function d(W){if(typeof W==="object"&&W!==null&&!Array.isArray(W))return W;return{}}function m(W){return Array.isArray(W)?W:[]}function AW(W){if(!(W instanceof Date))return null;let $=new ArrayBuffer(8);return new DataView($).setFloat64(0,W.getTime()),new Uint8Array($)}function zW(W){let $=new DataView(W.buffer,W.byteOffset,W.byteLength).getFloat64(0);return new Date($)}function n(W){return DW.has(W.constructor)}function LW(W,$){W.register({type:V0,encode(Z){if(typeof Z!=="object"||Z===null)return null;let G=DW.get(Z.constructor);if(G===void 0)return null;let Q=$(G.handlers.toJSON(Z),new Set);return R({tag:G.tag,data:Q},{extensionCodec:W})},decode(Z){let G=M(Z,{extensionCodec:W});if(typeof G!=="object"||G===null||!("tag"in G))throw Error("Corrupt custom-serializer payload: missing tag.");let{tag:Q,data:q}=G;if(typeof Q!=="string")throw Error("Corrupt custom-serializer payload: tag is not a string.");let F=P0.get(Q);if(F===void 0)throw Error(`No serializer registered for tag "${Q}". Register it (with the same tag) before decoding a checkpoint that used it.`);return F.handlers.fromJSON(q)}})}var V0=100,DW,P0;var TW=X(()=>{h();DW=new Map,P0=new Map});function B0(W){return typeof W==="object"&&W!==null&&"__tag"in W&&W.__tag===IW}function _(W,$){if(W===void 0)return O0;if(W===null||typeof W!=="object")return W;if($.has(W))return W;$.add(W);try{return A0(W,$)}finally{$.delete(W)}}function A0(W,$){if(Array.isArray(W))return z0(W,$);if(W instanceof Map)return D0(W,$);if(W instanceof Set)return L0(W,$);if(T0(W))return W;return I0(W,$)}function z0(W,$){let Z=Array.from({length:W.length});for(let G=0;G<W.length;G++)Z[G]=_(W[G],$);return Z}function D0(W,$){let Z=new Map;for(let[G,Q]of W)Z.set(_(G,$),_(Q,$));return Z}function L0(W,$){let Z=new Set;for(let G of W)Z.add(_(G,$));return Z}function T0(W){return W instanceof Date||W instanceof RegExp||W instanceof Error||W instanceof Uint8Array||W instanceof ArrayBuffer||n(W)}function I0(W,$){let Z=W,G={};for(let Q of Object.keys(Z))G[Q]=_(Z[Q],$);return G}var N0=1,R0=2,M0=3,U0=4,_0=5,K0=6,P,IW,O0;var xW=X(()=>{h();TW();P=new U;LW(P,_);P.register({type:N0,encode:AW,decode:zW});P.register({type:R0,encode(W){if(W instanceof RegExp)return R({source:W.source,flags:W.flags});return null},decode(W){let $=d(M(W)),Z=typeof $.source==="string"?$.source:"",G=typeof $.flags==="string"?$.flags:"";return new RegExp(Z,G)}});P.register({type:M0,encode(W){if(W instanceof Map){let $=[...W.entries()];return R($,{extensionCodec:P})}return null},decode(W){let Z=m(M(W,{extensionCodec:P})).map((G)=>{let Q=m(G);return[Q[0],Q[1]]});return new Map(Z)}});P.register({type:U0,encode(W){if(W instanceof Set){let $=[...W.values()];return R($,{extensionCodec:P})}return null},decode(W){let $=m(M(W,{extensionCodec:P}));return new Set($)}});IW=Symbol("UndefinedSentinel"),O0=Object.freeze({__tag:IW});P.register({type:_0,encode(W){if(B0(W))return new Uint8Array(0);return null},decode(){return}});P.register({type:K0,encode(W){if(W instanceof Error&&!n(W))return R({name:W.name,message:W.message,stack:W.stack});return null},decode(W){let $=d(M(W)),Z=typeof $.name==="string"?$.name:"Error",G=typeof $.message==="string"?$.message:"",Q=typeof $.stack==="string"?$.stack:void 0,q=Error(G);if(q.name=Z,Q!==void 0)q.stack=Q;return q}})});function i(W){let $=_(W,new Set);return R($,{extensionCodec:P})}function r(W){return M(W,{extensionCodec:P})}var CW=X(()=>{h();xW()});function g(W,$=""){let Z=[];return I(W,$,Z,new Set),{valid:Z.length===0,errors:Z}}function x0(W){let $=Object.getPrototypeOf(W);return C0($)&&!S0(W)&&E0($)}function C0(W){return W!==Object.prototype&&W!==null}function S0(W){return Array.isArray(W)||W instanceof Date||W instanceof RegExp||W instanceof Map||W instanceof Set||W instanceof Error||W instanceof Uint8Array||W instanceof ArrayBuffer}function E0(W){if(typeof W!=="object"||W===null)return!1;return Object.getOwnPropertyNames(W).some((Z)=>{if(Z==="constructor")return!1;let G=Object.getOwnPropertyDescriptor(W,Z);return G!==void 0&&typeof G.value==="function"})}function SW(W,$,Z,G){W.push({path:$,value:Z,reason:G.reason,suggestion:G.suggestion})}function k0(W){if(typeof W==="function")return{reason:"Functions cannot be serialized.",suggestion:"Move this into ctx.run() or reconstruct it on resume."};if(typeof W==="symbol")return{reason:"Symbols cannot be serialized.",suggestion:"Use a string identifier instead of a Symbol."};return null}function w0(W,$){if(W instanceof WeakRef)return{reason:"WeakRef cannot be serialized.",suggestion:"Store the referenced value directly instead of using a WeakRef."};if(W instanceof WeakMap)return{reason:"WeakMap cannot be serialized.",suggestion:"Use a Map instead of a WeakMap."};if(W instanceof WeakSet)return{reason:"WeakSet cannot be serialized.",suggestion:"Use a Set instead of a WeakSet."};if($.has(W))return{reason:"Circular reference detected.",suggestion:"Remove the circular reference or restructure the data."};if(x0(W))return{reason:"Class instances with methods cannot be serialized.",suggestion:"Store only the data and reconstruct the instance."};return null}function j0(W){return W instanceof Date||W instanceof RegExp||W instanceof Error||W instanceof Uint8Array||W instanceof ArrayBuffer}function h0(W,$,Z,G){for(let[Q,q]of W){let F=String(Q);I(q,$?`${$}.${F}`:F,Z,G)}}function m0(W,$,Z,G){let Q=0;for(let q of W){let F=$?`${$}[${Q}]`:`[${Q}]`;I(q,F,Z,G),Q++}}function g0(W,$,Z,G){for(let Q=0;Q<W.length;Q++){let q=$?`${$}[${Q}]`:`[${Q}]`;I(W[Q],q,Z,G)}}function v0(W,$,Z,G){for(let Q of Object.keys(W)){let q=$?`${$}.${Q}`:Q;I(W[Q],q,Z,G)}}function I(W,$,Z,G){if(W===null||W===void 0)return;let Q=k0(W);if(Q){SW(Z,$,W,Q);return}if(typeof W!=="object")return;let q=w0(W,G);if(q){SW(Z,$,W,q);return}G.add(W);try{if(j0(W))return;if(W instanceof Map){h0(W,$,Z,G);return}if(W instanceof Set){m0(W,$,Z,G);return}if(Array.isArray(W)){g0(W,$,Z,G);return}v0(W,$,Z,G)}finally{G.delete(W)}}var EW=X(()=>{CW()});var kW=X(()=>{EW()});function b0(W){if(W===void 0)return;if(typeof W!=="number"||!Number.isInteger(W)||W<0)throw Error("deleteRange limit must be a finite non-negative integer");return W===0?0:W}function f0(W){let $={},Z=!1;for(let Q of["gt","gte","lt","lte"]){let q=W[Q];if(q===void 0)continue;if(typeof q!=="string")throw Error("deleteRange bounds must be strings");$[Q]=q,Z=!0}if(!Z)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let G=b0(W.limit);if(G!==void 0)$.limit=G;return $}async function wW(W,$,Z){let G=f0(Z);if(W.deleteRange)return W.deleteRange($,G);return t(W,$,G)}var jW=()=>{};kW();jW();JW();class hW{#W;#$;#Z;constructor(W,$,Z={}){this.#W=W,this.#$=$,this.#Z=Z.disposeUnderlyingStorage??!0}async get(W){let $=await this.#W.get(W);return $===null?null:this.#$.decode($)}async put(W,$){await this.#W.put(W,this.#$.encode($))}async delete(W){await this.#W.delete(W)}async*scan(W,$){for await(let[Z,G]of this.#W.scan(W,$))yield[Z,this.#$.decode(G)]}async batch(W){await this.#W.batch(this.#G(W))}#G(W){return W.map((Z)=>{if(Z.type==="put")return{type:"put",key:Z.key,value:this.#$.encode(Z.value)};return Z})}#Q(W){return W.map(($)=>({key:$.key,expectedValue:$.expectedValue===null?null:this.#$.encode($.expectedValue)}))}async conditionalBatch(W,$){return QW(this.#W,this.#Q(W),this.#G($))}async has(W){return WW(this.#W,W)}async deletePrefix(W){return GW(this.#W,W)}async deleteRange(W,$){return wW(this.#W,W,$)}keys(W,$){return $W(this.#W,W,$)}async count(W){return ZW(this.#W,W)}[Symbol.dispose](){if(!this.#Z)return;this.#W[Symbol.dispose]()}}function w6(W,$,Z={}){return new hW(W,$,Z)}function y0(W){try{let $=JSON.stringify(W);if($===void 0)throw TypeError("jsonCodec only supports JSON-serializable values.");return new TextEncoder().encode($)}catch($){throw TypeError("jsonCodec only supports JSON-serializable values.",{cause:$})}}function l0(W){let $=g(W);if(!$.valid)throw TypeError(`msgpackCodec only supports structuredClone-compatible values. ${$.errors[0]?.reason??""}`.trim());return i(W)}function p0(W){return JSON.parse(new TextDecoder().decode(W))}function u0(W){let $=r(W),Z=g($);if(!Z.valid)throw TypeError(`msgpackCodec decoded a non-cloneable value. ${Z.errors[0]?.reason??""}`.trim());return $}function j6(W){return{encode($){return y0($)},decode($){let Z=p0($);return W?W(Z):Z}}}function h6(W){return{encode($){return l0($)},decode($){let Z=u0($);return W?W(Z):Z}}}export{w6 as withCodec,h6 as msgpackCodec,j6 as jsonCodec};
|
|
2
|
+
var r0=Object.defineProperty;var s0=($)=>$;function a0($,Z){this[$]=s0.bind(null,Z)}var Y1=($,Z)=>{for(var Q in Z)r0($,Q,{get:Z[Q],enumerable:!0,configurable:!0,set:a0.bind(Z,Q)})};var H=($,Z)=>()=>($&&(Z=$($=0)),Z);var V1=($,Z,Q)=>{if(Z!=null){if(typeof Z!=="object"&&typeof Z!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let J;if(Q)J=Z[Symbol.asyncDispose];if(J===void 0)J=Z[Symbol.dispose];if(typeof J!=="function")throw TypeError("Object not disposable");$.push([Q,J,Z])}else if(Q)$.push([Q]);return Z},P1=($,Z,Q)=>{let J=(q)=>Z=Q?new SuppressedError(q,Z,"An error was suppressed during disposal"):(Q=!0,q),W=(q)=>{while(q=$.pop())try{var F=q[1]&&q[1].call(q[2]);if(q[0])return Promise.resolve(F).then(W,(K)=>(J(K),W()))}catch(K){J(K)}if(Q)throw Z};return W()};function v($,Z,Q){if(!$.capabilities()[Z])throw Error(`Feature "${Q}" requires storage capability "${Z}", but this storage backend does not provide it.`)}function o0($){let Z=$.capabilities(),Q=[];if(Z.persistence!=="local"&&Z.persistence!=="remote")Q.push(`persistence must be "local" or "remote" (got "${Z.persistence}")`);if(Z.readAfterWrite!=="linearizable")Q.push(`readAfterWrite must be "linearizable" (got "${Z.readAfterWrite}")`);if(Z.scanConsistency!=="snapshot")Q.push(`scanConsistency must be "snapshot" (got "${Z.scanConsistency}")`);if(!Z.atomicBatch)Q.push("atomicBatch must be true");if(!Z.conditionalBatch)Q.push("conditionalBatch must be true");if(Q.length>0)throw Error(`Storage is not durable enough for recovery: ${Q.join("; ")}.`)}var p="default";async function Q0($,Z){return await $.get(Z)!==null}async function*A($,Z,Q){for await(let[J]of $.scan(Z,Q))yield J}async function J0($,Z){let Q=0;for await(let J of A($,Z))Q++;return Q}async function W0($,Z){let Q=[];for await(let J of A($,Z))Q.push({type:"delete",key:J});if(Q.length===0)return 0;return await $.batch(Q),Q.length}async function G0($,Z,Q){let J=[];for await(let W of A($,Z,Q))J.push({type:"delete",key:W});if(J.length===0)return 0;return await $.batch(J),J.length}var t0;var q0=H(()=>{t0=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-has-services:","wf-headers:","wf-idx-","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-terminal:"]});function z($,Z){if(Z>c)throw new K0($,Z)}function A1($){return $.length>0?$.slice(0,-1)+String.fromCharCode($.charCodeAt($.length-1)+1):"\xFF"}function z1($,Z={}){if(Z.gt!==void 0&&$<=Z.gt)return!1;if(Z.gte!==void 0&&$<Z.gte)return!1;if(Z.lt!==void 0&&$>=Z.lt)return!1;if(Z.lte!==void 0&&$>Z.lte)return!1;return!0}function T1($,Z){if($===null||Z===null)return $===Z;if($.byteLength!==Z.byteLength)return!1;for(let Q=0;Q<$.byteLength;Q++)if($[Q]!==Z[Q])return!1;return!0}async function H0($,Z){if($.has)return $.has(Z);return Q0($,Z)}function X0($,Z,Q){if($.keys)return $.keys(Z,Q);return A($,Z,Q)}async function Y0($,Z){if($.count)return $.count(Z);return J0($,Z)}async function V0($,Z){if($.deletePrefix)return $.deletePrefix(Z);return W0($,Z)}async function D1($,Z){z("batch operations",Z.length),await $.batch(Z)}async function P0($,Z,Q){if(z("conditionalBatch conditions",Z.length),z("conditionalBatch operations",Q.length),v($,"conditionalBatch","storageConditionalBatch"),!$.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return $.conditionalBatch(Z,Q)}function G($){return encodeURIComponent($)}function L1($){return decodeURIComponent($)}function x1($){try{return decodeURIComponent($)}catch{return null}}var c=1e4,B1=1e4,K0,P=($)=>String($).padStart(16,"0"),e0="0",$$="1",F0=($,Z,Q,J)=>`sig:${G($)}:${G(Z)}:${J}:${G(Q)}`,I1;var N0=H(()=>{q0();K0=class K0 extends Error{code="StorageBatchOperationLimitExceededError";cap=c;count;target;constructor($,Z){super(`${$} count ${Z} exceeds MAX_BATCH_OPERATIONS (${c}).`);this.name="StorageBatchOperationLimitExceededError",this.target=$,this.count=Z}};I1={workflow:($)=>`wf:${G($)}`,checkpoint:($)=>`wf:${G($)}:ckpt`,checkpointHistory:($,Z)=>`wf:${G($)}:ckpt:${String(Z).padStart(10,"0")}`,timelinePrefix:($)=>`wf:${G($)}:timeline:`,timeline:($,Z)=>`wf:${G($)}:timeline:${String(Z).padStart(10,"0")}`,schedule:($)=>`schedule:${G($)}`,scheduleTick:($,Z)=>`schedule-due:${String($).padStart(16,"0")}:${G(Z)}`,scheduleRun:($)=>`schedule-run:${G($)}`,operation:($,Z,Q)=>`op:${$}:${P(Z)}:${Q}`,operationInflight:($)=>`op:inflight:${$}`,operationQueued:($)=>`op:queued:${$}`,operationResolved:($)=>`op:resolved:${$}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:($)=>`op:dead-letter:${$}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:($,Z,Q)=>`audit:bulk:${P($)}:${G(Z)}:${G(Q)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:($,Z)=>`op:resolved-by-time:${P($)}:${G(Z)}`,asyncActivity:($,Z)=>`async-act:v1:${G($)}:${G(Z)}`,activityReconciliationPrefix:($)=>`actrec:v1:${G($)}:`,activityReconciliation:($,Z,Q)=>`actrec:v1:${G($)}:${G(Z)}:${Q}`,eventPrefix:($)=>`ev:${G($)}:`,event:($,Z)=>`ev:${G($)}:${String(Z).padStart(10,"0")}`,eventHead:($)=>`ev:${G($)}:head`,eventWatermark:($)=>`ev:${G($)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:($)=>`fleet-event:${String($).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:($)=>`fleet-event-by-workflow:${G($)}:`,fleetEventByWorkflow:($,Z)=>`fleet-event-by-workflow:${G($)}:${String(Z).padStart(10,"0")}`,signal:($,Z,Q)=>F0($,Z,Q,$$),startSignal:($,Z,Q)=>F0($,Z,Q,e0),signalSequence:($)=>`sigseq:v1:${G($)}`,signalAcceptedResponsePrefix:($)=>`sigres:v1:${G($)}:`,signalAcceptedResponse:($,Z,Q)=>`sigres:v1:${G($)}:${G(Z)}:${G(Q)}`,deadline:($,Z)=>`wf-deadline:${P($)}:${G(Z)}`,terminalCleanup:($,Z)=>`wf-cleanup:${P($)}:${G(Z)}`,teardownTimer:($,Z)=>`wf-teardown:${P($)}:${G(Z)}`,delayedStart:($,Z)=>`wf-delayed:${P($)}:${G(Z)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:($,Z)=>`wf-terminal:${P($)}:${G(Z)}`,attribute:($)=>`attr:${G($)}`,attributeIndex:($,Z,Q)=>`idx:${$}:${Z}:${G(Q)}`,tagIndex:($,Z)=>`tag:${G($)}:${G(Z)}`,updatePrefix:($)=>`upd:${G($)}:`,update:($,Z)=>`upd:${G($)}:${Z}`,updateResponse:($)=>`upr:${$}`,updateIdempotency:($,Z)=>`upk:${G($)}:${Z}`,startIdempotency:($)=>`start-idem:${G($)}`,startIdempotencySignalId:($)=>`start-idem:${$}`,livenessPrefix:()=>"liveness:",liveness:($)=>`liveness:${G($)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:($,Z,Q)=>`budget:${$}:${Z}:${Q}`,review:($,Z)=>`review:${G($)}:${Z}`,workflowHeaders:($)=>`wf-headers:${G($)}`,childCancellationPrefix:($)=>`child-cancel:${G($)}:`,childCancellation:($,Z)=>`child-cancel:${G($)}:${G(Z)}`,terminalCleanupNeeded:($)=>`wf-cleanup-needed:${G($)}`,workflowConcurrency:($,Z)=>`wf-concurrency:${G($)}:${G(Z)}`,workflowConcurrencyHolder:($)=>`wf-concurrency-holder:${G($)}`,workflowHasServices:($)=>`wf-has-services:${G($)}`,finalizerState:($)=>`wf-finalizer-state:${G($)}`,teardownOwed:($)=>`wf-teardown-needed:${G($)}`,teardownDeadLetter:($)=>`wf-teardown-deadletter:${G($)}`,offload:($,Z)=>`offload:${G($)}:${Z}`,archive:($,Z)=>`archive:${G($)}:${Z}`,stateExecution:($,Z)=>`state:execution:${G($)}:${G(Z)}`,stateWorkflow:($,Z)=>`state:workflow-scope:${p}:${G($)}:${G(Z)}`,streamChunkPrefix:($,Z)=>`blob:${G($)}:${Z}:chunk:`,streamChunk:($,Z,Q)=>`blob:${G($)}:${Z}:chunk:${String(Q).padStart(10,"0")}`,streamTail:($,Z)=>`blob:${G($)}:${Z}:tail`,streamMetadata:($,Z)=>`blob:${G($)}:${Z}:meta`,budgetCharged:($)=>`budget-charged:${$}`,toolEffect:($,Z,Q)=>`tool-effect:${G($)}:${Z}:${Q}`,workflowVisibilityStatus:($,Z)=>`wf-idx-status:${G($)}:${G(Z)}`,workflowVisibilityType:($,Z)=>`wf-idx-type:${G($)}:${G(Z)}`,workflowVisibilityCreated:($,Z)=>`wf-idx-created:${P($)}:${G(Z)}`,workflowVisibilityUpdated:($,Z)=>`wf-idx-updated:${P($)}:${G(Z)}`,workflowVisibilityDeadline:($,Z)=>`wf-idx-deadline:${P($)}:${G(Z)}`,workflowVisibilityManifest:($)=>`wf-idx-manifest:${G($)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"}});function M0($){let Z=$.length,Q=0,J=0;while(J<Z){let W=$.charCodeAt(J++);if((W&4294967168)===0){Q++;continue}else if((W&4294965248)===0)Q+=2;else{if(W>=55296&&W<=56319){if(J<Z){let q=$.charCodeAt(J);if((q&64512)===56320)++J,W=((W&1023)<<10)+(q&1023)+65536}}if((W&4294901760)===0)Q+=3;else Q+=4}}return Q}function Z$($,Z,Q){let J=$.length,W=Q,q=0;while(q<J){let F=$.charCodeAt(q++);if((F&4294967168)===0){Z[W++]=F;continue}else if((F&4294965248)===0)Z[W++]=F>>6&31|192;else{if(F>=55296&&F<=56319){if(q<J){let K=$.charCodeAt(q);if((K&64512)===56320)++q,F=((F&1023)<<10)+(K&1023)+65536}}if((F&4294901760)===0)Z[W++]=F>>12&15|224,Z[W++]=F>>6&63|128;else Z[W++]=F>>18&7|240,Z[W++]=F>>12&63|128,Z[W++]=F>>6&63|128}Z[W++]=F&63|128}}function W$($,Z,Q){Q$.encodeInto($,Z.subarray(Q))}function R0($,Z,Q){if($.length>J$)W$($,Z,Q);else Z$($,Z,Q)}function l($,Z,Q){let J=Z,W=J+Q,q=[],F="";while(J<W){let K=$[J++];if((K&128)===0)q.push(K);else if((K&224)===192){let B=$[J++]&63;q.push((K&31)<<6|B)}else if((K&240)===224){let B=$[J++]&63,f=$[J++]&63;q.push((K&31)<<12|B<<6|f)}else if((K&248)===240){let B=$[J++]&63,f=$[J++]&63,i0=$[J++]&63,U=(K&7)<<18|B<<12|f<<6|i0;if(U>65535)U-=65536,q.push(U>>>10&1023|55296),U=56320|U&1023;q.push(U)}else q.push(K);if(q.length>=G$)F+=String.fromCharCode(...q),q.length=0}if(q.length>0)F+=String.fromCharCode(...q);return F}function K$($,Z,Q){let J=$.subarray(Z,Z+Q);return q$.decode(J)}function U0($,Z,Q){if(Q>F$)return K$($,Z,Q);else return l($,Z,Q)}var Q$,J$=50,G$=4096,q$,F$=200;var I=H(()=>{Q$=new TextEncoder;q$=new TextDecoder});class S{type;data;constructor($,Z){this.type=$,this.data=Z}}var Y;var u=H(()=>{Y=class Y extends Error{constructor($){super($);let Z=Object.create(Y.prototype);Object.setPrototypeOf(this,Z),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:Y.name})}}});function S0($,Z,Q){let J=Q/4294967296,W=Q;$.setUint32(Z,J),$.setUint32(Z+4,W)}function k($,Z,Q){let J=Math.floor(Q/4294967296),W=Q;$.setUint32(Z,J),$.setUint32(Z+4,W)}function m($,Z){let Q=$.getInt32(Z),J=$.getUint32(Z+4);return Q*4294967296+J}function _0($,Z){let Q=$.getUint32(Z),J=$.getUint32(Z+4);return Q*4294967296+J}var _=4294967295;function V$({sec:$,nsec:Z}){if($>=0&&Z>=0&&$<=Y$)if(Z===0&&$<=X$){let Q=new Uint8Array(4);return new DataView(Q.buffer).setUint32(0,$),Q}else{let Q=$/4294967296,J=$&4294967295,W=new Uint8Array(8),q=new DataView(W.buffer);return q.setUint32(0,Z<<2|Q&3),q.setUint32(4,J),W}else{let Q=new Uint8Array(12),J=new DataView(Q.buffer);return J.setUint32(0,Z),k(J,4,$),Q}}function P$($){let Z=$.getTime(),Q=Math.floor(Z/1000),J=(Z-Q*1000)*1e6,W=Math.floor(J/1e9);return{sec:Q+W,nsec:J-W*1e9}}function N$($){if($ instanceof Date){let Z=P$($);return V$(Z)}else return null}function M$($){let Z=new DataView($.buffer,$.byteOffset,$.byteLength);switch($.byteLength){case 4:{let Q=Z.getUint32(0),J=0;return{sec:Q,nsec:0}}case 8:{let Q=Z.getUint32(0),J=Z.getUint32(4),W=(Q&3)*4294967296+J,q=Q>>>2;return{sec:W,nsec:q}}case 12:{let Q=m(Z,4),J=Z.getUint32(0);return{sec:Q,nsec:J}}default:throw new Y(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${$.length}`)}}function R$($){let Z=M$($);return new Date(Z.sec*1000+Z.nsec/1e6)}var H$=-1,X$=4294967295,Y$=17179869183,C0;var O0=H(()=>{u();C0={type:H$,encode:N$,decode:R$}});var R;var E=H(()=>{O0();R=class R{static defaultCodec=new R;__brand;builtInEncoders=[];builtInDecoders=[];encoders=[];decoders=[];constructor(){this.register(C0)}register({type:$,encode:Z,decode:Q}){if($>=0)this.encoders[$]=Z,this.decoders[$]=Q;else{let J=-1-$;this.builtInEncoders[J]=Z,this.builtInDecoders[J]=Q}}tryToEncode($,Z){for(let Q=0;Q<this.builtInEncoders.length;Q++){let J=this.builtInEncoders[Q];if(J!=null){let W=J($,Z);if(W!=null){let q=-1-Q;return new S(q,W)}}}for(let Q=0;Q<this.encoders.length;Q++){let J=this.encoders[Q];if(J!=null){let W=J($,Z);if(W!=null)return new S(Q,W)}}if($ instanceof S)return $;return null}decode($,Z,Q){let J=Z<0?this.builtInDecoders[-1-Z]:this.decoders[Z];if(J)return J($,Z,Q);else return new S(Z,$)}}});function U$($){return $ instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&$ instanceof SharedArrayBuffer}function T($){if($ instanceof Uint8Array)return $;else if(ArrayBuffer.isView($))return new Uint8Array($.buffer,$.byteOffset,$.byteLength);else if(U$($))return new Uint8Array($);else return Uint8Array.from($)}class w{extensionCodec;context;useBigInt64;maxDepth;initialBufferSize;sortKeys;forceFloat32;ignoreUndefined;forceIntegerToFloat;pos;view;bytes;entered=!1;constructor($){this.extensionCodec=$?.extensionCodec??R.defaultCodec,this.context=$?.context,this.useBigInt64=$?.useBigInt64??!1,this.maxDepth=$?.maxDepth??S$,this.initialBufferSize=$?.initialBufferSize??_$,this.sortKeys=$?.sortKeys??!1,this.forceFloat32=$?.forceFloat32??!1,this.ignoreUndefined=$?.ignoreUndefined??!1,this.forceIntegerToFloat=$?.forceIntegerToFloat??!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}clone(){return new w({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,maxDepth:this.maxDepth,initialBufferSize:this.initialBufferSize,sortKeys:this.sortKeys,forceFloat32:this.forceFloat32,ignoreUndefined:this.ignoreUndefined,forceIntegerToFloat:this.forceIntegerToFloat})}reinitializeState(){this.pos=0}encodeSharedRef($){if(this.entered)return this.clone().encodeSharedRef($);try{return this.entered=!0,this.reinitializeState(),this.doEncode($,1),this.bytes.subarray(0,this.pos)}finally{this.entered=!1}}encode($){if(this.entered)return this.clone().encode($);try{return this.entered=!0,this.reinitializeState(),this.doEncode($,1),this.bytes.slice(0,this.pos)}finally{this.entered=!1}}doEncode($,Z){if(Z>this.maxDepth)throw Error(`Too deep objects in depth ${Z}`);if($==null)this.encodeNil();else if(typeof $==="boolean")this.encodeBoolean($);else if(typeof $==="number")if(!this.forceIntegerToFloat)this.encodeNumber($);else this.encodeNumberAsFloat($);else if(typeof $==="string")this.encodeString($);else if(this.useBigInt64&&typeof $==="bigint")this.encodeBigInt64($);else this.encodeObject($,Z)}ensureBufferSizeToWrite($){let Z=this.pos+$;if(this.view.byteLength<Z)this.resizeBuffer(Z*2)}resizeBuffer($){let Z=new ArrayBuffer($),Q=new Uint8Array(Z),J=new DataView(Z);Q.set(this.bytes),this.view=J,this.bytes=Q}encodeNil(){this.writeU8(192)}encodeBoolean($){if($===!1)this.writeU8(194);else this.writeU8(195)}encodeNumber($){if(!this.forceIntegerToFloat&&Number.isSafeInteger($))if($>=0)if($<128)this.writeU8($);else if($<256)this.writeU8(204),this.writeU8($);else if($<65536)this.writeU8(205),this.writeU16($);else if($<4294967296)this.writeU8(206),this.writeU32($);else if(!this.useBigInt64)this.writeU8(207),this.writeU64($);else this.encodeNumberAsFloat($);else if($>=-32)this.writeU8(224|$+32);else if($>=-128)this.writeU8(208),this.writeI8($);else if($>=-32768)this.writeU8(209),this.writeI16($);else if($>=-2147483648)this.writeU8(210),this.writeI32($);else if(!this.useBigInt64)this.writeU8(211),this.writeI64($);else this.encodeNumberAsFloat($);else this.encodeNumberAsFloat($)}encodeNumberAsFloat($){if(this.forceFloat32)this.writeU8(202),this.writeF32($);else this.writeU8(203),this.writeF64($)}encodeBigInt64($){if($>=BigInt(0))this.writeU8(207),this.writeBigUint64($);else this.writeU8(211),this.writeBigInt64($)}writeStringHeader($){if($<32)this.writeU8(160+$);else if($<256)this.writeU8(217),this.writeU8($);else if($<65536)this.writeU8(218),this.writeU16($);else if($<4294967296)this.writeU8(219),this.writeU32($);else throw Error(`Too long string: ${$} bytes in UTF-8`)}encodeString($){let Q=M0($);this.ensureBufferSizeToWrite(5+Q),this.writeStringHeader(Q),R0($,this.bytes,this.pos),this.pos+=Q}encodeObject($,Z){let Q=this.extensionCodec.tryToEncode($,this.context);if(Q!=null)this.encodeExtension(Q);else if(Array.isArray($))this.encodeArray($,Z);else if(ArrayBuffer.isView($))this.encodeBinary($);else if(typeof $==="object")this.encodeMap($,Z);else throw Error(`Unrecognized object: ${Object.prototype.toString.apply($)}`)}encodeBinary($){let Z=$.byteLength;if(Z<256)this.writeU8(196),this.writeU8(Z);else if(Z<65536)this.writeU8(197),this.writeU16(Z);else if(Z<4294967296)this.writeU8(198),this.writeU32(Z);else throw Error(`Too large binary: ${Z}`);let Q=T($);this.writeU8a(Q)}encodeArray($,Z){let Q=$.length;if(Q<16)this.writeU8(144+Q);else if(Q<65536)this.writeU8(220),this.writeU16(Q);else if(Q<4294967296)this.writeU8(221),this.writeU32(Q);else throw Error(`Too large array: ${Q}`);for(let J of $)this.doEncode(J,Z+1)}countWithoutUndefined($,Z){let Q=0;for(let J of Z)if($[J]!==void 0)Q++;return Q}encodeMap($,Z){let Q=Object.keys($);if(this.sortKeys)Q.sort();let J=this.ignoreUndefined?this.countWithoutUndefined($,Q):Q.length;if(J<16)this.writeU8(128+J);else if(J<65536)this.writeU8(222),this.writeU16(J);else if(J<4294967296)this.writeU8(223),this.writeU32(J);else throw Error(`Too large map object: ${J}`);for(let W of Q){let q=$[W];if(!(this.ignoreUndefined&&q===void 0))this.encodeString(W),this.doEncode(q,Z+1)}}encodeExtension($){if(typeof $.data==="function"){let Q=$.data(this.pos+6),J=Q.length;if(J>=4294967296)throw Error(`Too large extension object: ${J}`);this.writeU8(201),this.writeU32(J),this.writeI8($.type),this.writeU8a(Q);return}let Z=$.data.length;if(Z===1)this.writeU8(212);else if(Z===2)this.writeU8(213);else if(Z===4)this.writeU8(214);else if(Z===8)this.writeU8(215);else if(Z===16)this.writeU8(216);else if(Z<256)this.writeU8(199),this.writeU8(Z);else if(Z<65536)this.writeU8(200),this.writeU16(Z);else if(Z<4294967296)this.writeU8(201),this.writeU32(Z);else throw Error(`Too large extension object: ${Z}`);this.writeI8($.type),this.writeU8a($.data)}writeU8($){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,$),this.pos++}writeU8a($){let Z=$.length;this.ensureBufferSizeToWrite(Z),this.bytes.set($,this.pos),this.pos+=Z}writeI8($){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,$),this.pos++}writeU16($){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,$),this.pos+=2}writeI16($){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,$),this.pos+=2}writeU32($){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,$),this.pos+=4}writeI32($){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,$),this.pos+=4}writeF32($){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,$),this.pos+=4}writeF64($){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,$),this.pos+=8}writeU64($){this.ensureBufferSizeToWrite(8),S0(this.view,this.pos,$),this.pos+=8}writeI64($){this.ensureBufferSizeToWrite(8),k(this.view,this.pos,$),this.pos+=8}writeBigUint64($){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,$),this.pos+=8}writeBigInt64($){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,$),this.pos+=8}}var S$=100,_$=2048;var B0=H(()=>{I();E()});function N($,Z){return new w(Z).encodeSharedRef($)}var A0=H(()=>{B0()});function j($){return`${$<0?"-":""}0x${Math.abs($).toString(16).padStart(2,"0")}`}class n{hit=0;miss=0;caches;maxKeyLength;maxLengthPerKey;constructor($=C$,Z=O$){this.maxKeyLength=$,this.maxLengthPerKey=Z,this.caches=[];for(let Q=0;Q<this.maxKeyLength;Q++)this.caches.push([])}canBeCached($){return $>0&&$<=this.maxKeyLength}find($,Z,Q){let J=this.caches[Q-1];$:for(let W of J){let q=W.bytes;for(let F=0;F<Q;F++)if(q[F]!==$[Z+F])continue $;return W.str}return null}store($,Z){let Q=this.caches[$.length-1],J={bytes:$,str:Z};if(Q.length>=this.maxLengthPerKey)Q[Math.random()*Q.length|0]=J;else Q.push(J)}decode($,Z,Q){let J=this.find($,Z,Q);if(J!=null)return this.hit++,J;this.miss++;let W=l($,Z,Q),q=Uint8Array.prototype.slice.call($,Z,Z+Q);return this.store(q,W),W}}var C$=16,O$=16;var z0=H(()=>{I()});class L0{stack=[];stackHeadPosition=-1;get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState($){let Z=this.getUninitializedStateFromPool();Z.type=d,Z.position=0,Z.size=$,Z.array=Array($)}pushMapState($){let Z=this.getUninitializedStateFromPool();Z.type=L,Z.readCount=0,Z.size=$,Z.map={}}getUninitializedStateFromPool(){if(this.stackHeadPosition++,this.stackHeadPosition===this.stack.length){let $={type:void 0,size:0,array:void 0,position:0,readCount:0,map:void 0,key:null};this.stack.push($)}return this.stack[this.stackHeadPosition]}release($){if(this.stack[this.stackHeadPosition]!==$)throw Error("Invalid stack state. Released state is not on top of the stack.");if($.type===d){let Q=$;Q.size=0,Q.array=void 0,Q.position=0,Q.type=void 0}if($.type===L||$.type===D0){let Q=$;Q.size=0,Q.map=void 0,Q.readCount=0,Q.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}}class h{extensionCodec;context;useBigInt64;rawStrings;maxStrLength;maxBinLength;maxArrayLength;maxMapLength;maxExtLength;keyDecoder;mapKeyConverter;totalPos=0;pos=0;view=i;bytes=A$;headByte=D;stack=new L0;entered=!1;constructor($){this.extensionCodec=$?.extensionCodec??R.defaultCodec,this.context=$?.context,this.useBigInt64=$?.useBigInt64??!1,this.rawStrings=$?.rawStrings??!1,this.maxStrLength=$?.maxStrLength??_,this.maxBinLength=$?.maxBinLength??_,this.maxArrayLength=$?.maxArrayLength??_,this.maxMapLength=$?.maxMapLength??_,this.maxExtLength=$?.maxExtLength??_,this.keyDecoder=$?.keyDecoder!==void 0?$.keyDecoder:z$,this.mapKeyConverter=$?.mapKeyConverter??B$}clone(){return new h({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,rawStrings:this.rawStrings,maxStrLength:this.maxStrLength,maxBinLength:this.maxBinLength,maxArrayLength:this.maxArrayLength,maxMapLength:this.maxMapLength,maxExtLength:this.maxExtLength,keyDecoder:this.keyDecoder})}reinitializeState(){this.totalPos=0,this.headByte=D,this.stack.reset()}setBuffer($){let Z=T($);this.bytes=Z,this.view=new DataView(Z.buffer,Z.byteOffset,Z.byteLength),this.pos=0}appendBuffer($){if(this.headByte===D&&!this.hasRemaining(1))this.setBuffer($);else{let Z=this.bytes.subarray(this.pos),Q=T($),J=new Uint8Array(Z.length+Q.length);J.set(Z),J.set(Q,Z.length),this.setBuffer(J)}}hasRemaining($){return this.view.byteLength-this.pos>=$}createExtraByteError($){let{view:Z,pos:Q}=this;return RangeError(`Extra ${Z.byteLength-Q} of ${Z.byteLength} byte(s) found at buffer[${$}]`)}decode($){if(this.entered)return this.clone().decode($);try{this.entered=!0,this.reinitializeState(),this.setBuffer($);let Z=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return Z}finally{this.entered=!1}}*decodeMulti($){if(this.entered){yield*this.clone().decodeMulti($);return}try{this.entered=!0,this.reinitializeState(),this.setBuffer($);while(this.hasRemaining(1))yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync($){if(this.entered)return this.clone().decodeAsync($);try{this.entered=!0;let Z=!1,Q;for await(let F of $){if(Z)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(F);try{Q=this.doDecodeSync(),Z=!0}catch(K){if(!(K instanceof RangeError))throw K}this.totalPos+=this.pos}if(Z){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return Q}let{headByte:J,pos:W,totalPos:q}=this;throw RangeError(`Insufficient data in parsing ${j(J)} at ${q} (${W} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream($){return this.decodeMultiAsync($,!0)}decodeStream($){return this.decodeMultiAsync($,!1)}async*decodeMultiAsync($,Z){if(this.entered){yield*this.clone().decodeMultiAsync($,Z);return}try{this.entered=!0;let Q=Z,J=-1;for await(let W of $){if(Z&&J===0)throw this.createExtraByteError(this.totalPos);if(this.appendBuffer(W),Q)J=this.readArraySize(),Q=!1,this.complete();try{while(!0)if(yield this.doDecodeSync(),--J===0)break}catch(q){if(!(q instanceof RangeError))throw q}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){$:while(!0){let $=this.readHeadByte(),Z;if($>=224)Z=$-256;else if($<192)if($<128)Z=$;else if($<144){let J=$-128;if(J!==0){this.pushMapState(J),this.complete();continue $}else Z={}}else if($<160){let J=$-144;if(J!==0){this.pushArrayState(J),this.complete();continue $}else Z=[]}else{let J=$-160;Z=this.decodeString(J,0)}else if($===192)Z=null;else if($===194)Z=!1;else if($===195)Z=!0;else if($===202)Z=this.readF32();else if($===203)Z=this.readF64();else if($===204)Z=this.readU8();else if($===205)Z=this.readU16();else if($===206)Z=this.readU32();else if($===207)if(this.useBigInt64)Z=this.readU64AsBigInt();else Z=this.readU64();else if($===208)Z=this.readI8();else if($===209)Z=this.readI16();else if($===210)Z=this.readI32();else if($===211)if(this.useBigInt64)Z=this.readI64AsBigInt();else Z=this.readI64();else if($===217){let J=this.lookU8();Z=this.decodeString(J,1)}else if($===218){let J=this.lookU16();Z=this.decodeString(J,2)}else if($===219){let J=this.lookU32();Z=this.decodeString(J,4)}else if($===220){let J=this.readU16();if(J!==0){this.pushArrayState(J),this.complete();continue $}else Z=[]}else if($===221){let J=this.readU32();if(J!==0){this.pushArrayState(J),this.complete();continue $}else Z=[]}else if($===222){let J=this.readU16();if(J!==0){this.pushMapState(J),this.complete();continue $}else Z={}}else if($===223){let J=this.readU32();if(J!==0){this.pushMapState(J),this.complete();continue $}else Z={}}else if($===196){let J=this.lookU8();Z=this.decodeBinary(J,1)}else if($===197){let J=this.lookU16();Z=this.decodeBinary(J,2)}else if($===198){let J=this.lookU32();Z=this.decodeBinary(J,4)}else if($===212)Z=this.decodeExtension(1,0);else if($===213)Z=this.decodeExtension(2,0);else if($===214)Z=this.decodeExtension(4,0);else if($===215)Z=this.decodeExtension(8,0);else if($===216)Z=this.decodeExtension(16,0);else if($===199){let J=this.lookU8();Z=this.decodeExtension(J,1)}else if($===200){let J=this.lookU16();Z=this.decodeExtension(J,2)}else if($===201){let J=this.lookU32();Z=this.decodeExtension(J,4)}else throw new Y(`Unrecognized type byte: ${j($)}`);this.complete();let Q=this.stack;while(Q.length>0){let J=Q.top();if(J.type===d)if(J.array[J.position]=Z,J.position++,J.position===J.size)Z=J.array,Q.release(J);else continue $;else if(J.type===L){if(Z==="__proto__")throw new Y("The key __proto__ is not allowed");J.key=this.mapKeyConverter(Z),J.type=D0;continue $}else if(J.map[J.key]=Z,J.readCount++,J.readCount===J.size)Z=J.map,Q.release(J);else{J.key=null,J.type=L;continue $}}return Z}}readHeadByte(){if(this.headByte===D)this.headByte=this.readU8();return this.headByte}complete(){this.headByte=D}readArraySize(){let $=this.readHeadByte();switch($){case 220:return this.readU16();case 221:return this.readU32();default:if($<160)return $-144;else throw new Y(`Unrecognized array type byte: ${j($)}`)}}pushMapState($){if($>this.maxMapLength)throw new Y(`Max length exceeded: map length (${$}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState($)}pushArrayState($){if($>this.maxArrayLength)throw new Y(`Max length exceeded: array length (${$}) > maxArrayLength (${this.maxArrayLength})`);this.stack.pushArrayState($)}decodeString($,Z){if(!this.rawStrings||this.stateIsMapKey())return this.decodeUtf8String($,Z);return this.decodeBinary($,Z)}decodeUtf8String($,Z){if($>this.maxStrLength)throw new Y(`Max length exceeded: UTF-8 byte length (${$}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+Z+$)throw T0;let Q=this.pos+Z,J;if(this.stateIsMapKey()&&this.keyDecoder?.canBeCached($))J=this.keyDecoder.decode(this.bytes,Q,$);else J=U0(this.bytes,Q,$);return this.pos+=Z+$,J}stateIsMapKey(){if(this.stack.length>0)return this.stack.top().type===L;return!1}decodeBinary($,Z){if($>this.maxBinLength)throw new Y(`Max length exceeded: bin length (${$}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining($+Z))throw T0;let Q=this.pos+Z,J=this.bytes.subarray(Q,Q+$);return this.pos+=Z+$,J}decodeExtension($,Z){if($>this.maxExtLength)throw new Y(`Max length exceeded: ext length (${$}) > maxExtLength (${this.maxExtLength})`);let Q=this.view.getInt8(this.pos+Z),J=this.decodeBinary($,Z+1);return this.extensionCodec.decode(J,Q,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let $=this.view.getUint8(this.pos);return this.pos++,$}readI8(){let $=this.view.getInt8(this.pos);return this.pos++,$}readU16(){let $=this.view.getUint16(this.pos);return this.pos+=2,$}readI16(){let $=this.view.getInt16(this.pos);return this.pos+=2,$}readU32(){let $=this.view.getUint32(this.pos);return this.pos+=4,$}readI32(){let $=this.view.getInt32(this.pos);return this.pos+=4,$}readU64(){let $=_0(this.view,this.pos);return this.pos+=8,$}readI64(){let $=m(this.view,this.pos);return this.pos+=8,$}readU64AsBigInt(){let $=this.view.getBigUint64(this.pos);return this.pos+=8,$}readI64AsBigInt(){let $=this.view.getBigInt64(this.pos);return this.pos+=8,$}readF32(){let $=this.view.getFloat32(this.pos);return this.pos+=4,$}readF64(){let $=this.view.getFloat64(this.pos);return this.pos+=8,$}}var d="array",L="map_key",D0="map_value",B$=($)=>{if(typeof $==="string"||typeof $==="number")return $;throw new Y("The type of key must be string or number but "+typeof $)},D=-1,i,A$,T0,z$;var x0=H(()=>{E();I();z0();u();i=new DataView(new ArrayBuffer(0)),A$=new Uint8Array(i.buffer);try{i.getInt8(0)}catch($){if(!($ instanceof RangeError))throw Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}T0=RangeError("Insufficient data"),z$=new n});function M($,Z){return new h(Z).decode($)}var I0=H(()=>{x0()});var g=H(()=>{A0();I0();E()});function r($){if(typeof $==="object"&&$!==null&&!Array.isArray($))return $;return{}}function b($){return Array.isArray($)?$:[]}function k0($){if(!($ instanceof Date))return null;let Z=new ArrayBuffer(8);return new DataView(Z).setFloat64(0,$.getTime()),new Uint8Array(Z)}function m0($){let Z=new DataView($.buffer,$.byteOffset,$.byteLength).getFloat64(0);return new Date(Z)}function g6($){return typeof $==="string"&&D$.has($)}var s,T$,D$;var E0=H(()=>{s=class s extends Error{code;constructor($,Z,Q){super(Z,Q);this.code=$,this.name=$}};T$={WorkflowAlreadyExistsError:!0,BulkDeleteRequiresTerminalWorkflowsError:!0,BulkOperationConfirmationError:!0,WorkflowTypeNotRegisteredForRecoveryError:!0,EngineCreateNameMismatchError:!0,EngineDisposedError:!0,WorkflowNotFoundError:!0,WorkflowNotRegisteredError:!0,WorkflowConcurrencyLimitExceededError:!0,WorkflowSuspendNotSupportedError:!0,ActivityResolutionError:!0,BranchTopologyChangedError:!0,PersistedDataIncompatibleError:!0,WorkflowTimeoutError:!0,HttpClientError:!0,WorkerProtocolIncompatibleError:!0,UpdateTimeoutError:!0,UpdateValidationError:!0,WorkflowTerminalError:!0,WorkflowBuilderError:!0,VersionMismatchError:!0,EffectReplayConflictError:!0,ReviewTimeoutError:!0,AtomicStateConflictError:!0,StandardSchemaValidationError:!0,ActivityReconciliationCapabilityError:!0,ActivityReconciliationConflictError:!0,ActivityReconciliationIndeterminateError:!0,AsyncActivityTokenNotFoundError:!0,ActivityScheduleToCloseTimeoutError:!0,ActivityPerAttemptTimeoutError:!0,PayloadSizeExceededError:!0,StartOrSignalConflictError:!0,IdempotencyKeyPurgedError:!0},D$=new Set(Object.keys(T$))});function a($){return w0.has($.constructor)}function j0($,Z){$.register({type:L$,encode(Q){if(typeof Q!=="object"||Q===null)return null;let J=w0.get(Q.constructor);if(J===void 0)return null;let W=Z(J.handlers.toJSON(Q),new Set);return N({tag:J.tag,data:W},{extensionCodec:$})},decode(Q){let J=M(Q,{extensionCodec:$});if(typeof J!=="object"||J===null||!("tag"in J))throw Error("Corrupt custom-serializer payload: missing tag.");let{tag:W,data:q}=J;if(typeof W!=="string")throw Error("Corrupt custom-serializer payload: tag is not a string.");let F=x$.get(W);if(F===void 0)throw Error(`No serializer registered for tag "${W}". Register it (with the same tag) before decoding a checkpoint that used it.`);return F.handlers.fromJSON(q)}})}var L$=100,w0,x$;var h0=H(()=>{g();w0=new Map,x$=new Map});function h$($,Z){if(Z<=200)return JSON.stringify($);return`${Z}-byte string starting ${JSON.stringify($.slice(0,120))}`}function g$($,Z){let Q=j$.encode($).byteLength;if(Q>g0)throw new t({source:$,flags:Z,sourceByteLength:Q,reason:`because source exceeds the ${g0}-byte limit.`});try{return new RegExp($,Z)}catch(J){let W=J instanceof Error?J.message:String(J);throw new t({source:$,flags:Z,sourceByteLength:Q,reason:`because ${W}`,cause:J})}}function y$($){return typeof $==="object"&&$!==null&&"__tag"in $&&$.__tag===b0}function e($,Z){if(!O($,Z))return $;return C($,new Set)}function C($,Z){if($===void 0)return b$;if($===null||typeof $!=="object")return $;if(Z.has($))return $;Z.add($);try{return f$($,Z)}finally{Z.delete($)}}function f$($,Z){if(Array.isArray($))return v$($,Z);if($ instanceof Map)return p$($,Z);if($ instanceof Set)return c$($,Z);if(y0($))return $;return l$($,Z)}function v$($,Z){let Q=Array.from({length:$.length});for(let J=0;J<$.length;J++)Q[J]=C($[J],Z);return Q}function p$($,Z){let Q=new Map;for(let[J,W]of $)Q.set(C(J,Z),C(W,Z));return Q}function c$($,Z){let Q=new Set;for(let J of $)Q.add(C(J,Z));return Q}function y0($){return $ instanceof Date||$ instanceof RegExp||$ instanceof Error||$ instanceof Uint8Array||$ instanceof ArrayBuffer||a($)}function l$($,Z){let Q=$,J={};for(let W of Object.keys(Q))J[W]=C(Q[W],Z);return J}function O($,Z){if($===void 0)return!0;if($===null||typeof $!=="object")return!1;if(Z.has($))return!1;if(y0($))return!1;Z.add($);try{if(Array.isArray($))return u$($,Z);if($ instanceof Map)return n$($,Z);if($ instanceof Set)return d$($,Z);return i$($,Z)}finally{Z.delete($)}}function u$($,Z){for(let Q=0;Q<$.length;Q++)if(O($[Q],Z))return!0;return!1}function n$($,Z){for(let[Q,J]of $)if(O(Q,Z)||O(J,Z))return!0;return!1}function d$($,Z){for(let Q of $)if(O(Q,Z))return!0;return!1}function i$($,Z){let Q=$;for(let J of Object.keys(Q))if(O(Q[J],Z))return!0;return!1}var I$=1,o=2,k$=3,m$=4,E$=5,w$=6,g0=65535,j$,t,V,b0,b$;var f0=H(()=>{g();E0();h0();j$=new TextEncoder;t=class t extends s{extensionType;source;flags;sourceByteLength;constructor($){super("RegExpExtensionDecodeError",`RegExp extension type ${o} could not be decoded: source=${h$($.source,$.sourceByteLength)} flags=${JSON.stringify($.flags)} ${$.reason}`,$.cause===void 0?void 0:{cause:$.cause});this.extensionType=o,this.source=$.source,this.flags=$.flags,this.sourceByteLength=$.sourceByteLength}};V=new R;j0(V,e);V.register({type:I$,encode:k0,decode:m0});V.register({type:o,encode($){if($ instanceof RegExp)return N({source:$.source,flags:$.flags});return null},decode($){let Z=r(M($)),Q=typeof Z.source==="string"?Z.source:"",J=typeof Z.flags==="string"?Z.flags:"";return g$(Q,J)}});V.register({type:k$,encode($){if($ instanceof Map){let Z=[...$.entries()];return N(Z,{extensionCodec:V})}return null},decode($){let Q=b(M($,{extensionCodec:V})).map((J)=>{let W=b(J);return[W[0],W[1]]});return new Map(Q)}});V.register({type:m$,encode($){if($ instanceof Set){let Z=[...$.values()];return N(Z,{extensionCodec:V})}return null},decode($){let Z=b(M($,{extensionCodec:V}));return new Set(Z)}});b0=Symbol("UndefinedSentinel"),b$=Object.freeze({__tag:b0});V.register({type:E$,encode($){if(y$($))return new Uint8Array(0);return null},decode(){return}});V.register({type:w$,encode($){if($ instanceof Error&&!a($))return N({name:$.name,message:$.message,stack:$.stack});return null},decode($){let Z=r(M($)),Q=typeof Z.name==="string"?Z.name:"Error",J=typeof Z.message==="string"?Z.message:"",W=typeof Z.stack==="string"?Z.stack:void 0,q=Error(J);if(q.name=Q,W!==void 0)q.stack=W;return q}})});function $0($){let Z=e($,new Set);return N(Z,{extensionCodec:V})}function Z0($){return M($,{extensionCodec:V})}var v0=H(()=>{g();f0()});function y($,Z=""){let Q=[];return x($,Z,Q,new Set),{valid:Q.length===0,errors:Q}}function r$($){let Z=Object.getPrototypeOf($);return s$(Z)&&!a$($)&&o$(Z)}function s$($){return $!==Object.prototype&&$!==null}function a$($){return Array.isArray($)||$ instanceof Date||$ instanceof RegExp||$ instanceof Map||$ instanceof Set||$ instanceof Error||$ instanceof Uint8Array||$ instanceof ArrayBuffer}function o$($){if(typeof $!=="object"||$===null)return!1;return Object.getOwnPropertyNames($).some((Q)=>{if(Q==="constructor")return!1;let J=Object.getOwnPropertyDescriptor($,Q);return J!==void 0&&typeof J.value==="function"})}function p0($,Z,Q,J){$.push({path:Z,value:Q,reason:J.reason,suggestion:J.suggestion})}function t$($){if(typeof $==="function")return{reason:"Functions cannot be serialized.",suggestion:"Move this into ctx.run() or reconstruct it on resume."};if(typeof $==="symbol")return{reason:"Symbols cannot be serialized.",suggestion:"Use a string identifier instead of a Symbol."};return null}function e$($,Z){if($ instanceof WeakRef)return{reason:"WeakRef cannot be serialized.",suggestion:"Store the referenced value directly instead of using a WeakRef."};if($ instanceof WeakMap)return{reason:"WeakMap cannot be serialized.",suggestion:"Use a Map instead of a WeakMap."};if($ instanceof WeakSet)return{reason:"WeakSet cannot be serialized.",suggestion:"Use a Set instead of a WeakSet."};if(Z.has($))return{reason:"Circular reference detected.",suggestion:"Remove the circular reference or restructure the data."};if(r$($))return{reason:"Class instances with methods cannot be serialized.",suggestion:"Store only the data and reconstruct the instance."};return null}function $1($){return $ instanceof Date||$ instanceof RegExp||$ instanceof Error||$ instanceof Uint8Array||$ instanceof ArrayBuffer}function Z1($,Z,Q,J){for(let[W,q]of $){let F=String(W);x(q,Z?`${Z}.${F}`:F,Q,J)}}function Q1($,Z,Q,J){let W=0;for(let q of $){let F=Z?`${Z}[${W}]`:`[${W}]`;x(q,F,Q,J),W++}}function J1($,Z,Q,J){for(let W=0;W<$.length;W++){let q=Z?`${Z}[${W}]`:`[${W}]`;x($[W],q,Q,J)}}function W1($,Z,Q,J){for(let W of Object.keys($)){let q=Z?`${Z}.${W}`:W;x($[W],q,Q,J)}}function x($,Z,Q,J){if($===null||$===void 0)return;let W=t$($);if(W){p0(Q,Z,$,W);return}if(typeof $!=="object")return;let q=e$($,J);if(q){p0(Q,Z,$,q);return}J.add($);try{if($1($))return;if($ instanceof Map){Z1($,Z,Q,J);return}if($ instanceof Set){Q1($,Z,Q,J);return}if(Array.isArray($)){J1($,Z,Q,J);return}W1($,Z,Q,J)}finally{J.delete($)}}var c0=H(()=>{v0()});var l0=H(()=>{c0()});function G1($){if($===void 0)return;if(typeof $!=="number"||!Number.isInteger($)||$<0)throw Error("deleteRange limit must be a finite non-negative integer");return $===0?0:$}function q1($){let Z={},Q=!1;for(let W of["gt","gte","lt","lte"]){let q=$[W];if(q===void 0)continue;if(typeof q!=="string")throw Error("deleteRange bounds must be strings");Z[W]=q,Q=!0}if(!Q)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let J=G1($.limit);if(J!==void 0)Z.limit=J;return Z}async function u0($,Z,Q){let J=q1(Q);if($.deleteRange)return $.deleteRange(Z,J);return G0($,Z,J)}var n0=()=>{};l0();n0();N0();class d0{#$;#Z;#Q;constructor($,Z,Q={}){this.#$=$,this.#Z=Z,this.#Q=Q.disposeUnderlyingStorage??!0}async get($){let Z=await this.#$.get($);return Z===null?null:this.#Z.decode(Z)}async put($,Z){await this.#$.put($,this.#Z.encode(Z))}async delete($){await this.#$.delete($)}async*scan($,Z){for await(let[Q,J]of this.#$.scan($,Z))yield[Q,this.#Z.decode(J)]}async batch($){z("batch operations",$.length),await this.#$.batch(this.#J($))}#J($){return $.map((Q)=>{if(Q.type==="put")return{type:"put",key:Q.key,value:this.#Z.encode(Q.value)};return Q})}#W($){return $.map((Z)=>({key:Z.key,expectedValue:Z.expectedValue===null?null:this.#Z.encode(Z.expectedValue)}))}async conditionalBatch($,Z){return P0(this.#$,this.#W($),this.#J(Z))}async has($){return H0(this.#$,$)}async deletePrefix($){return V0(this.#$,$)}async deleteRange($,Z){return u0(this.#$,$,Z)}keys($,Z){return X0(this.#$,$,Z)}async count($){return Y0(this.#$,$)}[Symbol.dispose](){if(!this.#Q)return;this.#$[Symbol.dispose]()}}function q8($,Z,Q={}){return new d0($,Z,Q)}function F1($){try{let Z=JSON.stringify($);if(Z===void 0)throw TypeError("jsonCodec only supports JSON-serializable values.");return new TextEncoder().encode(Z)}catch(Z){throw TypeError("jsonCodec only supports JSON-serializable values.",{cause:Z})}}function K1($){let Z=y($);if(!Z.valid)throw TypeError(`msgpackCodec only supports structuredClone-compatible values. ${Z.errors[0]?.reason??""}`.trim());return $0($)}function H1($){return JSON.parse(new TextDecoder().decode($))}function X1($){let Z=Z0($),Q=y(Z);if(!Q.valid)throw TypeError(`msgpackCodec decoded a non-cloneable value. ${Q.errors[0]?.reason??""}`.trim());return Z}function F8($){return{encode(Z){return F1(Z)},decode(Z){let Q=H1(Z);return $?$(Q):Q}}}function K8($){return{encode(Z){return K1(Z)},decode(Z){let Q=X1(Z);return $?$(Q):Q}}}export{q8 as withCodec,K8 as msgpackCodec,F8 as jsonCodec};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var p=Object.defineProperty;var s=(J)=>J;function a(J,X){this[J]=s.bind(null,X)}var UJ=(J,X)=>{for(var Z in X)p(J,Z,{get:X[Z],enumerable:!0,configurable:!0,set:a.bind(X,Z)})};function b(J){let X=[];for(let Z=0;Z<J.length;Z+=512)X.push(String.fromCharCode(...J.subarray(Z,Z+512)));return btoa(X.join(""))}function K(J){let X=atob(J),Z=new Uint8Array(X.length);for(let F=0;F<X.length;F+=1)Z[F]=X.charCodeAt(F);return Z}function B(J){return typeof J==="object"&&J!==null&&!Array.isArray(J)}async function L(J,X){return await J.get(X)!==null}async function*q(J,X,Z){for await(let[F]of J.scan(X,Z))yield F}async function _(J,X){let Z=0;for await(let F of q(J,X))Z++;return Z}async function D(J,X){let Z=[];for await(let F of q(J,X))Z.push({type:"delete",key:F});if(Z.length===0)return 0;return await J.batch(Z),Z.length}async function W(J,X,Z){let F=[];for await(let V of q(J,X,Z))F.push({type:"delete",key:V});if(F.length===0)return 0;return await J.batch(F),F.length}function R(J,X,Z){if(!J.capabilities()[X])throw Error(`Feature "${Z}" requires storage capability "${X}", but this storage backend does not provide it.`)}var S="default";function v(J){return J.length>0?J.slice(0,-1)+String.fromCharCode(J.charCodeAt(J.length-1)+1):"ÿ"}function x(J,X={}){if(X.gt!==void 0&&J<=X.gt)return!1;if(X.gte!==void 0&&J<X.gte)return!1;if(X.lt!==void 0&&J>=X.lt)return!1;if(X.lte!==void 0&&J>X.lte)return!1;return!0}function WJ(J,X){if(J===null||X===null)return J===X;if(J.byteLength!==X.byteLength)return!1;for(let Z=0;Z<J.byteLength;Z++)if(J[Z]!==X[Z])return!1;return!0}async function I(J,X){if(J.has)return J.has(X);return L(J,X)}function w(J,X,Z){if(J.keys)return J.keys(X,Z);return q(J,X,Z)}async function u(J,X){if(J.count)return J.count(X);return _(J,X)}async function m(J,X){if(J.deletePrefix)return J.deletePrefix(X);return D(J,X)}async function f(J,X,Z){if(R(J,"conditionalBatch","storageConditionalBatch"),!J.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return J.conditionalBatch(X,Z)}function $(J){return encodeURIComponent(J)}function zJ(J){try{return decodeURIComponent(J)}catch{return null}}var G=(J)=>String(J).padStart(16,"0"),BJ={workflow:(J)=>`wf:${$(J)}`,checkpoint:(J)=>`wf:${$(J)}:ckpt`,checkpointHistory:(J,X)=>`wf:${$(J)}:ckpt:${String(X).padStart(10,"0")}`,timelinePrefix:(J)=>`wf:${$(J)}:timeline:`,timeline:(J,X)=>`wf:${$(J)}:timeline:${String(X).padStart(10,"0")}`,schedule:(J)=>`schedule:${$(J)}`,scheduleTick:(J,X)=>`schedule-due:${String(J).padStart(16,"0")}:${$(X)}`,scheduleRun:(J)=>`schedule-run:${$(J)}`,operation:(J,X,Z)=>`op:${J}:${G(X)}:${Z}`,operationInflight:(J)=>`op:inflight:${J}`,operationQueued:(J)=>`op:queued:${J}`,operationResolved:(J)=>`op:resolved:${J}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(J,X,Z)=>`audit:bulk:${G(J)}:${$(X)}:${$(Z)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(J,X)=>`op:resolved-by-time:${G(J)}:${$(X)}`,asyncActivity:(J,X)=>`async-act:v1:${$(J)}:${$(X)}`,activityReconciliationPrefix:(J)=>`actrec:v1:${$(J)}:`,activityReconciliation:(J,X,Z)=>`actrec:v1:${$(J)}:${$(X)}:${Z}`,eventPrefix:(J)=>`ev:${$(J)}:`,event:(J,X)=>`ev:${$(J)}:${String(X).padStart(10,"0")}`,eventHead:(J)=>`ev:${$(J)}:head`,eventWatermark:(J)=>`ev:${$(J)}:watermark`,signal:(J,X,Z)=>`sig:${$(J)}:${X}:${$(Z)}`,signalSequence:(J)=>`sigseq:v1:${$(J)}`,signalAcceptedResponsePrefix:(J)=>`sigres:v1:${$(J)}:`,signalAcceptedResponse:(J,X,Z)=>`sigres:v1:${$(J)}:${$(X)}:${$(Z)}`,deadline:(J,X)=>`wf-deadline:${G(J)}:${$(X)}`,terminalCleanup:(J,X)=>`wf-cleanup:${G(J)}:${$(X)}`,delayedStart:(J,X)=>`wf-delayed:${G(J)}:${$(X)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(J,X)=>`wf-terminal:${G(J)}:${$(X)}`,attribute:(J)=>`attr:${$(J)}`,attributeIndex:(J,X,Z)=>`idx:${J}:${X}:${$(Z)}`,tagIndex:(J,X)=>`tag:${$(J)}:${$(X)}`,updatePrefix:(J)=>`upd:${$(J)}:`,update:(J,X)=>`upd:${$(J)}:${X}`,updateResponse:(J)=>`upr:${J}`,updateIdempotency:(J,X)=>`upk:${$(J)}:${X}`,startIdempotency:(J)=>`start-idem:${$(J)}`,startIdempotencySignalId:(J)=>`start-idem:${J}`,livenessPrefix:()=>"liveness:",liveness:(J)=>`liveness:${$(J)}`,budget:(J,X,Z)=>`budget:${J}:${X}:${Z}`,review:(J,X)=>`review:${$(J)}:${X}`,workflowHeaders:(J)=>`wf-headers:${$(J)}`,terminalCleanupNeeded:(J)=>`wf-cleanup-needed:${$(J)}`,workflowHasServices:(J)=>`wf-has-services:${$(J)}`,offload:(J,X)=>`offload:${$(J)}:${X}`,archive:(J,X)=>`archive:${$(J)}:${X}`,stateExecution:(J,X)=>`state:execution:${$(J)}:${$(X)}`,stateWorkflow:(J,X)=>`state:workflow-scope:${S}:${$(J)}:${$(X)}`,streamChunkPrefix:(J,X)=>`blob:${$(J)}:${X}:chunk:`,streamChunk:(J,X,Z)=>`blob:${$(J)}:${X}:chunk:${String(Z).padStart(10,"0")}`,streamMetadata:(J,X)=>`blob:${$(J)}:${X}:meta`,budgetCharged:(J)=>`budget-charged:${J}`,toolEffect:(J,X,Z)=>`tool-effect:${$(J)}:${X}:${Z}`,workflowVisibilityStatus:(J,X)=>`wf-idx-status:${$(J)}:${$(X)}`,workflowVisibilityType:(J,X)=>`wf-idx-type:${$(J)}:${$(X)}`,workflowVisibilityCreated:(J,X)=>`wf-idx-created:${G(J)}:${$(X)}`,workflowVisibilityUpdated:(J,X)=>`wf-idx-updated:${G(J)}:${$(X)}`,workflowVisibilityDeadline:(J,X)=>`wf-idx-deadline:${G(J)}:${$(X)}`,workflowVisibilityManifest:(J)=>`wf-idx-manifest:${$(J)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function i(J){if(J===void 0)return;if(typeof J!=="number"||!Number.isInteger(J)||J<0)throw Error("deleteRange limit must be a finite non-negative integer");return J===0?0:J}function N(J){let X={},Z=!1;for(let V of["gt","gte","lt","lte"]){let H=J[V];if(H===void 0)continue;if(typeof H!=="string")throw Error("deleteRange bounds must be strings");X[V]=H,Z=!0}if(!Z)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let F=i(J.limit);if(F!==void 0)X.limit=F;return X}async function k(J,X,Z){let F=N(Z);if(J.deleteRange)return J.deleteRange(X,F);return W(J,X,F)}function r(J,X){let Z={key:J,open:!1};if(X.gte!==void 0&&X.gte>Z.key)Z.key=X.gte,Z.open=!1;if(X.gt!==void 0&&X.gt>=Z.key)Z.key=X.gt,Z.open=!0;return Z}function n(J,X){let Z={key:v(J),open:!0};if(X.lt!==void 0&&X.lt<=Z.key)Z.key=X.lt,Z.open=!0;if(X.lte!==void 0&&X.lte<Z.key)Z.key=X.lte,Z.open=!1;return Z}function TJ(J,X){let Z=r(J,X),F=n(J,X);if(Z.key>F.key||Z.key===F.key&&(Z.open||F.open))return null;return{lower:Z,upper:F}}function A(J){return J.replaceAll(/:+$/g,"")}function t(J,X){let Z=A(J),F=A(X);if(Z.length===0)return F;if(F.length===0)return Z;return`${Z}:${F}`}class O{#X;#Z;constructor(J,X){this.#X=J,this.#Z=A(X)}#J(J){if(this.#Z.length===0)return J;return J.length===0?`${this.#Z}:`:`${this.#Z}:${J}`}#$(J){if(this.#Z.length===0)return J;return J.slice(this.#Z.length+1)}#F(J={}){let X={};if(J.limit!==void 0)X.limit=J.limit;if(J.reverse!==void 0)X.reverse=J.reverse;if(J.gt!==void 0)X.gt=this.#J(J.gt);if(J.gte!==void 0)X.gte=this.#J(J.gte);if(J.lt!==void 0)X.lt=this.#J(J.lt);if(J.lte!==void 0)X.lte=this.#J(J.lte);return X}#H(J){let X={};if(J.limit!==void 0)X.limit=J.limit;if(J.gt!==void 0)X.gt=this.#J(J.gt);if(J.gte!==void 0)X.gte=this.#J(J.gte);if(J.lt!==void 0)X.lt=this.#J(J.lt);if(J.lte!==void 0)X.lte=this.#J(J.lte);return X}capabilities(){return this.#X.capabilities()}scoped(J){return new O(this.#X,t(this.#Z,J))}async get(J){return this.#X.get(this.#J(J))}async put(J,X){await this.#X.put(this.#J(J),X)}async delete(J){await this.#X.delete(this.#J(J))}async*scan(J,X){for await(let[Z,F]of this.#X.scan(this.#J(J),this.#F(X)))yield[this.#$(Z),F]}async batch(J){await this.#X.batch(J.map((X)=>{if(X.type==="put")return{type:"put",key:this.#J(X.key),value:X.value};return{type:"delete",key:this.#J(X.key)}}))}async conditionalBatch(J,X){return f(this.#X,J.map((Z)=>({key:this.#J(Z.key),expectedValue:Z.expectedValue})),X.map((Z)=>{if(Z.type==="put")return{type:"put",key:this.#J(Z.key),value:Z.value};return{type:"delete",key:this.#J(Z.key)}}))}async has(J){return I(this.#X,this.#J(J))}async deletePrefix(J){return m(this.#X,this.#J(J))}async deleteRange(J,X){let Z=this.#H(N(X));return k(this.#X,this.#J(J),Z)}async*keys(J,X){for await(let Z of w(this.#X,this.#J(J),this.#F(X)))yield this.#$(Z)}async count(J){return u(this.#X,this.#J(J))}[Symbol.dispose](){this.#X[Symbol.dispose]()}}function g(J,X){return new O(J,X)}var l=1,j="__weftStorageKeyspace",o=102400,e=8192;function JJ(J){return typeof J==="object"&&J!==null&&"then"in J&&typeof J.then==="function"}function E(J){if(!B(J))return!1;if(J.__weftStorage!==l)return!1;return typeof J.value==="string"}function XJ(J){if(!B(J))return!1;return Object.values(J).every(E)}function z(J){if(J!==j)return;throw Error(`WebExtensionStorage key "${j}" is reserved for adapter metadata.`)}function ZJ(J){for(let X of J)z(X.key)}function c(J){return{__weftStorage:l,value:b(J)}}function y(J){if(!E(J))return null;return K(J.value)}function $J(J){return E(J)}function P(J){return new TextEncoder().encode(JSON.stringify(J)).byteLength}function FJ(){let J=globalThis,X=J.browser??J.chrome;if(X?.storage===void 0)throw Error("WebExtensionStorage requires globalThis.browser.storage or globalThis.chrome.storage.");return X}function HJ(J,X){let Z=J.storage?.[X];if(Z===void 0)throw Error(`WebExtensionStorage area "${X}" is not available.`);return Z}function VJ(J){if(J==="session")return"ephemeral";if(J==="sync"||J==="managed")return"remote";return"local"}function GJ(J){let X=J.runtime?.lastError?.message;return X===void 0?null:Error(X)}async function T(J,X,Z){return new Promise((F,V)=>{let H=!1,M=(U)=>{if(H)return;let C=GJ(J);if(H=!0,C!==null)V(C);else F(U)},h=(U)=>{if(H)return;H=!0,V(U)},d=(U)=>M(U),Y;try{Y=X(d)}catch{try{Y=Z()}catch(U){h(U);return}}if(JJ(Y))Y.then(M,h)})}class Q{static#X=new WeakMap;#Z;#J;#$;#F;#H;constructor(J={}){this.#$=J.area??"local",this.#F=VJ(this.#$),this.#Z=FJ(),this.#J=HJ(this.#Z,this.#$),this.#H=()=>{},this.#Z.storage?.onChanged?.addListener?.(this.#H)}capabilities(){return{persistence:this.#F,readAfterWrite:"session",scanConsistency:"best-effort",atomicBatch:!0,conditionalBatch:!1,boundedRangeDelete:!1}}async#M(J){return T(this.#Z,(X)=>this.#J.get(J,X),()=>this.#J.get(J))}async#Q(J){await T(this.#Z,(X)=>this.#J.set(J,X),()=>this.#J.set(J))}async#N(J){if(this.#J.getBytesInUse===void 0)return null;return T(this.#Z,(X)=>this.#J.getBytesInUse?.(J,X),()=>this.#J.getBytesInUse?.(J))}async#V(){let X=(await this.#M(j))[j];if(X===void 0)return{};if(!XJ(X))throw Error("WebExtensionStorage keyspace is not a valid storage envelope map.");return{...X}}async#U(J){let X={[j]:J};await this.#L(X),await this.#Q(X)}async#q(J){let X=Q.#X.get(this.#J)??Promise.resolve(),Z={},F=new Promise((H)=>{Z.release=H}),V=X.catch(()=>{return}).then(()=>F);Q.#X.set(this.#J,V),await X.catch(()=>{return});try{return await J()}finally{if(Z.release?.(),Q.#X.get(this.#J)===V)Q.#X.delete(this.#J)}}#G(){if(this.#$==="managed")throw Error('WebExtensionStorage area "managed" is read-only.')}#j(J){let X=this.#J.QUOTA_BYTES_PER_ITEM??e;for(let[Z,F]of Object.entries(J)){let V=P({[Z]:F});if(V>X)throw Error(`WebExtensionStorage sync item quota exceeded for "${Z}": ${String(V)} > ${String(X)}.`)}}async#Y(J){let X=Object.keys(J),Z=await this.#N(null),F=await this.#N(X);if(Z!==null&&F!==null)return Z-F+P(J);let V=await this.#M(null);return P({...V,...J})}async#L(J){if(this.#$!=="sync")return;this.#j(J);let X=this.#J.QUOTA_BYTES??o,Z=await this.#Y(J);if(Z>X)throw Error(`WebExtensionStorage sync total quota exceeded: ${String(Z)} > ${String(X)}.`)}async get(J){z(J);let X=await this.#V();return y(X[J])}async put(J,X){this.#G(),z(J),await this.#q(async()=>{let Z=await this.#V();Z[J]=c(X),await this.#U(Z)})}async delete(J){this.#G(),z(J),await this.#q(async()=>{let X=await this.#V();if(!(J in X))return;delete X[J],await this.#U(X)})}async*scan(J,X={}){let Z=await this.#V(),F=Object.keys(Z).filter((H)=>H.startsWith(J)).filter((H)=>x(H,X)).filter((H)=>$J(Z[H])).toSorted();if(X.reverse)F=F.toReversed();let V=0;for(let H of F){if(X.limit!==void 0&&V>=X.limit)break;let M=y(Z[H]);if(M===null)continue;yield[H,M],V+=1}}async batch(J){if(this.#G(),J.length===0)return;ZJ(J),await this.#q(async()=>{let X=await this.#V();for(let Z of J)if(Z.type==="put")X[Z.key]=c(Z.value);else delete X[Z.key];await this.#U(X)})}has(J){return L(this,J)}async*keys(J,X){yield*q(this,J,X)}count(J){return _(this,J)}async deletePrefix(J){return this.#G(),D(this,J)}async deleteRange(J,X){let Z=N(X);return this.#G(),W(this,J,Z)}scoped(J){return g(this,J)}[Symbol.dispose](){this.#Z.storage?.onChanged?.removeListener?.(this.#H)}}export{Q as WebExtensionStorage};
|
|
1
|
+
var r=Object.defineProperty;var i=(F)=>F;function t(F,J){this[F]=i.bind(null,J)}var QF=(F,J)=>{for(var X in J)r(F,X,{get:J[X],enumerable:!0,configurable:!0,set:t.bind(J,X)})};function b(F){let J=[];for(let X=0;X<F.length;X+=512)J.push(String.fromCharCode(...F.subarray(X,X+512)));return btoa(J.join(""))}function v(F){let J=atob(F),X=new Uint8Array(J.length);for(let $=0;$<J.length;$+=1)X[$]=J.charCodeAt($);return X}function z(F){return typeof F==="object"&&F!==null&&!Array.isArray(F)}async function D(F,J){return await F.get(J)!==null}async function*G(F,J,X){for await(let[$]of F.scan(J,X))yield $}async function j(F,J){let X=0;for await(let $ of G(F,J))X++;return X}async function C(F,J){let X=[];for await(let $ of G(F,J))X.push({type:"delete",key:$});if(X.length===0)return 0;return await F.batch(X),X.length}async function T(F,J,X){let $=[];for await(let H of G(F,J,X))$.push({type:"delete",key:H});if($.length===0)return 0;return await F.batch($),$.length}function B(F,J,X){if(!F.capabilities()[J])throw Error(`Feature "${X}" requires storage capability "${J}", but this storage backend does not provide it.`)}var x="default";var A=1e4,EF=1e4;class I extends Error{code="StorageBatchOperationLimitExceededError";cap=A;count;target;constructor(F,J){super(`${F} count ${J} exceeds MAX_BATCH_OPERATIONS (${A}).`);this.name="StorageBatchOperationLimitExceededError",this.target=F,this.count=J}}function _(F,J){if(J>A)throw new I(F,J)}function g(F){return F.length>0?F.slice(0,-1)+String.fromCharCode(F.charCodeAt(F.length-1)+1):"ÿ"}function c(F,J={}){if(J.gt!==void 0&&F<=J.gt)return!1;if(J.gte!==void 0&&F<J.gte)return!1;if(J.lt!==void 0&&F>=J.lt)return!1;if(J.lte!==void 0&&F>J.lte)return!1;return!0}function RF(F,J){if(F===null||J===null)return F===J;if(F.byteLength!==J.byteLength)return!1;for(let X=0;X<F.byteLength;X++)if(F[X]!==J[X])return!1;return!0}async function u(F,J){if(F.has)return F.has(J);return D(F,J)}function y(F,J,X){if(F.keys)return F.keys(J,X);return G(F,J,X)}async function w(F,J){if(F.count)return F.count(J);return j(F,J)}async function f(F,J){if(F.deletePrefix)return F.deletePrefix(J);return C(F,J)}async function OF(F,J){_("batch operations",J.length),await F.batch(J)}async function k(F,J,X){if(_("conditionalBatch conditions",J.length),_("conditionalBatch operations",X.length),B(F,"conditionalBatch","storageConditionalBatch"),!F.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return F.conditionalBatch(J,X)}function Z(F){return encodeURIComponent(F)}function PF(F){return decodeURIComponent(F)}function SF(F){try{return decodeURIComponent(F)}catch{return null}}var M=(F)=>String(F).padStart(16,"0"),o="0",e="1",m=(F,J,X,$)=>`sig:${Z(F)}:${Z(J)}:${$}:${Z(X)}`,hF={workflow:(F)=>`wf:${Z(F)}`,checkpoint:(F)=>`wf:${Z(F)}:ckpt`,checkpointHistory:(F,J)=>`wf:${Z(F)}:ckpt:${String(J).padStart(10,"0")}`,timelinePrefix:(F)=>`wf:${Z(F)}:timeline:`,timeline:(F,J)=>`wf:${Z(F)}:timeline:${String(J).padStart(10,"0")}`,schedule:(F)=>`schedule:${Z(F)}`,scheduleTick:(F,J)=>`schedule-due:${String(F).padStart(16,"0")}:${Z(J)}`,scheduleRun:(F)=>`schedule-run:${Z(F)}`,operation:(F,J,X)=>`op:${F}:${M(J)}:${X}`,operationInflight:(F)=>`op:inflight:${F}`,operationQueued:(F)=>`op:queued:${F}`,operationResolved:(F)=>`op:resolved:${F}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(F)=>`op:dead-letter:${F}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(F,J,X)=>`audit:bulk:${M(F)}:${Z(J)}:${Z(X)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(F,J)=>`op:resolved-by-time:${M(F)}:${Z(J)}`,asyncActivity:(F,J)=>`async-act:v1:${Z(F)}:${Z(J)}`,activityReconciliationPrefix:(F)=>`actrec:v1:${Z(F)}:`,activityReconciliation:(F,J,X)=>`actrec:v1:${Z(F)}:${Z(J)}:${X}`,eventPrefix:(F)=>`ev:${Z(F)}:`,event:(F,J)=>`ev:${Z(F)}:${String(J).padStart(10,"0")}`,eventHead:(F)=>`ev:${Z(F)}:head`,eventWatermark:(F)=>`ev:${Z(F)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(F)=>`fleet-event:${String(F).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(F)=>`fleet-event-by-workflow:${Z(F)}:`,fleetEventByWorkflow:(F,J)=>`fleet-event-by-workflow:${Z(F)}:${String(J).padStart(10,"0")}`,signal:(F,J,X)=>m(F,J,X,e),startSignal:(F,J,X)=>m(F,J,X,o),signalSequence:(F)=>`sigseq:v1:${Z(F)}`,signalAcceptedResponsePrefix:(F)=>`sigres:v1:${Z(F)}:`,signalAcceptedResponse:(F,J,X)=>`sigres:v1:${Z(F)}:${Z(J)}:${Z(X)}`,deadline:(F,J)=>`wf-deadline:${M(F)}:${Z(J)}`,terminalCleanup:(F,J)=>`wf-cleanup:${M(F)}:${Z(J)}`,teardownTimer:(F,J)=>`wf-teardown:${M(F)}:${Z(J)}`,delayedStart:(F,J)=>`wf-delayed:${M(F)}:${Z(J)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(F,J)=>`wf-terminal:${M(F)}:${Z(J)}`,attribute:(F)=>`attr:${Z(F)}`,attributeIndex:(F,J,X)=>`idx:${F}:${J}:${Z(X)}`,tagIndex:(F,J)=>`tag:${Z(F)}:${Z(J)}`,updatePrefix:(F)=>`upd:${Z(F)}:`,update:(F,J)=>`upd:${Z(F)}:${J}`,updateResponse:(F)=>`upr:${F}`,updateIdempotency:(F,J)=>`upk:${Z(F)}:${J}`,startIdempotency:(F)=>`start-idem:${Z(F)}`,startIdempotencySignalId:(F)=>`start-idem:${F}`,livenessPrefix:()=>"liveness:",liveness:(F)=>`liveness:${Z(F)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(F,J,X)=>`budget:${F}:${J}:${X}`,review:(F,J)=>`review:${Z(F)}:${J}`,workflowHeaders:(F)=>`wf-headers:${Z(F)}`,childCancellationPrefix:(F)=>`child-cancel:${Z(F)}:`,childCancellation:(F,J)=>`child-cancel:${Z(F)}:${Z(J)}`,terminalCleanupNeeded:(F)=>`wf-cleanup-needed:${Z(F)}`,workflowConcurrency:(F,J)=>`wf-concurrency:${Z(F)}:${Z(J)}`,workflowConcurrencyHolder:(F)=>`wf-concurrency-holder:${Z(F)}`,workflowHasServices:(F)=>`wf-has-services:${Z(F)}`,finalizerState:(F)=>`wf-finalizer-state:${Z(F)}`,teardownOwed:(F)=>`wf-teardown-needed:${Z(F)}`,teardownDeadLetter:(F)=>`wf-teardown-deadletter:${Z(F)}`,offload:(F,J)=>`offload:${Z(F)}:${J}`,archive:(F,J)=>`archive:${Z(F)}:${J}`,stateExecution:(F,J)=>`state:execution:${Z(F)}:${Z(J)}`,stateWorkflow:(F,J)=>`state:workflow-scope:${x}:${Z(F)}:${Z(J)}`,streamChunkPrefix:(F,J)=>`blob:${Z(F)}:${J}:chunk:`,streamChunk:(F,J,X)=>`blob:${Z(F)}:${J}:chunk:${String(X).padStart(10,"0")}`,streamTail:(F,J)=>`blob:${Z(F)}:${J}:tail`,streamMetadata:(F,J)=>`blob:${Z(F)}:${J}:meta`,budgetCharged:(F)=>`budget-charged:${F}`,toolEffect:(F,J,X)=>`tool-effect:${Z(F)}:${J}:${X}`,workflowVisibilityStatus:(F,J)=>`wf-idx-status:${Z(F)}:${Z(J)}`,workflowVisibilityType:(F,J)=>`wf-idx-type:${Z(F)}:${Z(J)}`,workflowVisibilityCreated:(F,J)=>`wf-idx-created:${M(F)}:${Z(J)}`,workflowVisibilityUpdated:(F,J)=>`wf-idx-updated:${M(F)}:${Z(J)}`,workflowVisibilityDeadline:(F,J)=>`wf-idx-deadline:${M(F)}:${Z(J)}`,workflowVisibilityManifest:(F)=>`wf-idx-manifest:${Z(F)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function FF(F){if(F===void 0)return;if(typeof F!=="number"||!Number.isInteger(F)||F<0)throw Error("deleteRange limit must be a finite non-negative integer");return F===0?0:F}function Y(F){let J={},X=!1;for(let H of["gt","gte","lt","lte"]){let U=F[H];if(U===void 0)continue;if(typeof U!=="string")throw Error("deleteRange bounds must be strings");J[H]=U,X=!0}if(!X)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let $=FF(F.limit);if($!==void 0)J.limit=$;return J}async function d(F,J,X){let $=Y(X);if(F.deleteRange)return F.deleteRange(J,$);return T(F,J,$)}function JF(F,J){let X={key:F,open:!1};if(J.gte!==void 0&&J.gte>X.key)X.key=J.gte,X.open=!1;if(J.gt!==void 0&&J.gt>=X.key)X.key=J.gt,X.open=!0;return X}function XF(F,J){let X={key:g(F),open:!0};if(J.lt!==void 0&&J.lt<=X.key)X.key=J.lt,X.open=!0;if(J.lte!==void 0&&J.lte<X.key)X.key=J.lte,X.open=!1;return X}function mF(F,J){let X=JF(F,J),$=XF(F,J);if(X.key>$.key||X.key===$.key&&(X.open||$.open))return null;return{lower:X,upper:$}}function E(F){return F.replaceAll(/:+$/g,"")}function ZF(F,J){let X=E(F),$=E(J);if(X.length===0)return $;if($.length===0)return X;return`${X}:${$}`}class R{#J;#X;constructor(F,J){this.#J=F,this.#X=E(J)}#F(F){if(this.#X.length===0)return F;return F.length===0?`${this.#X}:`:`${this.#X}:${F}`}#Z(F){if(this.#X.length===0)return F;return F.slice(this.#X.length+1)}#$(F={}){let J={};if(F.limit!==void 0)J.limit=F.limit;if(F.reverse!==void 0)J.reverse=F.reverse;if(F.gt!==void 0)J.gt=this.#F(F.gt);if(F.gte!==void 0)J.gte=this.#F(F.gte);if(F.lt!==void 0)J.lt=this.#F(F.lt);if(F.lte!==void 0)J.lte=this.#F(F.lte);return J}#U(F){let J={};if(F.limit!==void 0)J.limit=F.limit;if(F.gt!==void 0)J.gt=this.#F(F.gt);if(F.gte!==void 0)J.gte=this.#F(F.gte);if(F.lt!==void 0)J.lt=this.#F(F.lt);if(F.lte!==void 0)J.lte=this.#F(F.lte);return J}capabilities(){return this.#J.capabilities()}scoped(F){return new R(this.#J,ZF(this.#X,F))}async get(F){return this.#J.get(this.#F(F))}async put(F,J){await this.#J.put(this.#F(F),J)}async delete(F){await this.#J.delete(this.#F(F))}async*scan(F,J){for await(let[X,$]of this.#J.scan(this.#F(F),this.#$(J)))yield[this.#Z(X),$]}async batch(F){_("batch operations",F.length),await this.#J.batch(F.map((J)=>{if(J.type==="put")return{type:"put",key:this.#F(J.key),value:J.value};return{type:"delete",key:this.#F(J.key)}}))}async conditionalBatch(F,J){return k(this.#J,F.map((X)=>({key:this.#F(X.key),expectedValue:X.expectedValue})),J.map((X)=>{if(X.type==="put")return{type:"put",key:this.#F(X.key),value:X.value};return{type:"delete",key:this.#F(X.key)}}))}async has(F){return u(this.#J,this.#F(F))}async deletePrefix(F){return f(this.#J,this.#F(F))}async deleteRange(F,J){let X=this.#U(Y(J));return d(this.#J,this.#F(F),X)}async*keys(F,J){for await(let X of y(this.#J,this.#F(F),this.#$(J)))yield this.#Z(X)}async count(F){return w(this.#J,this.#F(F))}[Symbol.dispose](){this.#J[Symbol.dispose]()}}function l(F,J){return new R(F,J)}var a=1,Q="__weftStorageKeyspace",$F=102400,UF=8192;function HF(F){return typeof F==="object"&&F!==null&&"then"in F&&typeof F.then==="function"}function S(F){if(!z(F))return!1;if(F.__weftStorage!==a)return!1;return typeof F.value==="string"}function MF(F){if(!z(F))return!1;return Object.values(F).every(S)}function W(F){if(F!==Q)return;throw Error(`WebExtensionStorage key "${Q}" is reserved for adapter metadata.`)}function VF(F){for(let J of F)W(J.key)}function p(F){return{__weftStorage:a,value:b(F)}}function n(F){if(!S(F))return null;return v(F.value)}function GF(F){return S(F)}function O(F){return new TextEncoder().encode(JSON.stringify(F)).byteLength}function _F(){let F=globalThis,J=F.browser??F.chrome;if(J?.storage===void 0)throw Error("WebExtensionStorage requires globalThis.browser.storage or globalThis.chrome.storage.");return J}function NF(F,J){let X=F.storage?.[J];if(X===void 0)throw Error(`WebExtensionStorage area "${J}" is not available.`);return X}function YF(F){if(F==="session")return"ephemeral";if(F==="sync"||F==="managed")return"remote";return"local"}function LF(F){let J=F.runtime?.lastError?.message;return J===void 0?null:Error(J)}async function P(F,J,X){return new Promise(($,H)=>{let U=!1,N=(V)=>{if(U)return;let K=LF(F);if(U=!0,K!==null)H(K);else $(V)},h=(V)=>{if(U)return;U=!0,H(V)},s=(V)=>N(V),q;try{q=J(s)}catch{try{q=X()}catch(V){h(V);return}}if(HF(q))q.then(N,h)})}class L{static#J=new WeakMap;#X;#F;#Z;#$;#U;constructor(F={}){this.#Z=F.area??"local",this.#$=YF(this.#Z),this.#X=_F(),this.#F=NF(this.#X,this.#Z),this.#U=()=>{},this.#X.storage?.onChanged?.addListener?.(this.#U)}capabilities(){return{persistence:this.#$,readAfterWrite:"session",scanConsistency:"best-effort",atomicBatch:!1,conditionalBatch:!1,boundedRangeDelete:!1}}async#_(F){return P(this.#X,(J)=>this.#F.get(F,J),()=>this.#F.get(F))}async#Y(F){await P(this.#X,(J)=>this.#F.set(F,J),()=>this.#F.set(F))}async#N(F){if(this.#F.getBytesInUse===void 0)return null;return P(this.#X,(J)=>this.#F.getBytesInUse?.(F,J),()=>this.#F.getBytesInUse?.(F))}async#H(){let J=(await this.#_(Q))[Q];if(J===void 0)return{};if(!MF(J))throw Error("WebExtensionStorage keyspace is not a valid storage envelope map.");return{...J}}async#V(F){let J={[Q]:F};await this.#q(J),await this.#Y(J)}async#G(F){let J=L.#J.get(this.#F)??Promise.resolve(),X={},$=new Promise((U)=>{X.release=U}),H=J.catch(()=>{return}).then(()=>$);L.#J.set(this.#F,H),await J.catch(()=>{return});try{return await F()}finally{if(X.release?.(),L.#J.get(this.#F)===H)L.#J.delete(this.#F)}}#M(){if(this.#Z==="managed")throw Error('WebExtensionStorage area "managed" is read-only.')}#L(F){let J=this.#F.QUOTA_BYTES_PER_ITEM??UF;for(let[X,$]of Object.entries(F)){let H=O({[X]:$});if(H>J)throw Error(`WebExtensionStorage sync item quota exceeded for "${X}": ${String(H)} > ${String(J)}.`)}}async#Q(F){let J=Object.keys(F),X=await this.#N(null),$=await this.#N(J);if(X!==null&&$!==null)return X-$+O(F);let H=await this.#_(null);return O({...H,...F})}async#q(F){if(this.#Z!=="sync")return;this.#L(F);let J=this.#F.QUOTA_BYTES??$F,X=await this.#Q(F);if(X>J)throw Error(`WebExtensionStorage sync total quota exceeded: ${String(X)} > ${String(J)}.`)}async get(F){W(F);let J=await this.#H();return n(J[F])}async put(F,J){this.#M(),W(F),await this.#G(async()=>{let X=await this.#H();X[F]=p(J),await this.#V(X)})}async delete(F){this.#M(),W(F),await this.#G(async()=>{let J=await this.#H();if(!(F in J))return;delete J[F],await this.#V(J)})}async*scan(F,J={}){let X=await this.#H(),$=Object.keys(X).filter((U)=>U.startsWith(F)).filter((U)=>c(U,J)).filter((U)=>GF(X[U])).toSorted();if(J.reverse)$=$.toReversed();let H=0;for(let U of $){if(J.limit!==void 0&&H>=J.limit)break;let N=n(X[U]);if(N===null)continue;yield[U,N],H+=1}}async batch(F){if(_("batch operations",F.length),this.#M(),F.length===0)return;VF(F),await this.#G(async()=>{let J=await this.#H();for(let X of F)if(X.type==="put")J[X.key]=p(X.value);else delete J[X.key];await this.#V(J)})}has(F){return D(this,F)}async*keys(F,J){yield*G(this,F,J)}count(F){return j(this,F)}async deletePrefix(F){return this.#M(),C(this,F)}async deleteRange(F,J){let X=Y(J);return this.#M(),T(this,F,X)}scoped(F){return l(this,F)}[Symbol.dispose](){this.#X.storage?.onChanged?.removeListener?.(this.#U)}}export{L as WebExtensionStorage};
|