@lostgradient/weft 0.12.0 → 0.13.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 +1 -1
- package/dist/cli/api.d.ts +2 -0
- package/dist/cli/api.js +3 -4
- package/dist/cli/generated/operation-catalog.snapshot.json +508 -12
- package/dist/cli/generated/operation-client.generated.d.ts +118 -10
- package/dist/cli/generated/operation-client.generated.js +74 -1
- package/dist/cli/operation-catalog-snapshot.d.ts +11 -2
- package/dist/cli/operation-catalog-snapshot.js +14 -5
- package/dist/cli/operation-client-runtime.d.ts +29 -0
- package/dist/client/client-storage.d.ts +24 -0
- package/dist/client/client-storage.js +14 -0
- package/dist/client/handle-delegation.d.ts +3 -3
- package/dist/client/handle-delegation.js +2 -2
- package/dist/client/http-client-requests.d.ts +5 -3
- package/dist/client/http-client-requests.js +20 -2
- package/dist/client/http-client-storage.d.ts +3 -0
- package/dist/client/http-client-storage.js +110 -0
- package/dist/client/http-client.d.ts +9 -6
- package/dist/client/http-client.js +13 -18
- package/dist/client/http-operations.d.ts +3 -1
- package/dist/client/http-operations.js +77 -1
- package/dist/client/http-request.d.ts +15 -8
- package/dist/client/http-request.js +19 -7
- package/dist/client/in-process-operations.d.ts +2 -2
- package/dist/client/in-process-operations.js +2 -2
- package/dist/client/index.d.ts +5 -1
- package/dist/client/index.js +13 -2
- package/dist/client/interface.d.ts +26 -26
- package/dist/client/local.d.ts +9 -6
- package/dist/client/local.js +9 -4
- package/dist/client/search-params.js +10 -6
- package/dist/client/start-body.d.ts +3 -1
- package/dist/client/start-body.js +9 -0
- package/dist/core/bulk-workflow-filter.d.ts +2 -1
- package/dist/core/bulk-workflow-filter.js +5 -1
- package/dist/core/engine/async-activity-records.d.ts +12 -1
- package/dist/core/engine/async-activity-records.js +81 -2
- package/dist/core/engine/bulk-operations-purge.js +16 -1
- package/dist/core/engine/bulk-operations-shared.js +2 -0
- package/dist/core/engine/callback-creators-schedule.d.ts +2 -1
- package/dist/core/engine/callback-creators-schedule.js +3 -3
- package/dist/core/engine/checkpoint-reads.js +11 -1
- package/dist/core/engine/child-workflow.js +15 -6
- package/dist/core/engine/construction.js +3 -0
- package/dist/core/engine/disposal.js +2 -0
- package/dist/core/engine/engine-internal-types.d.ts +4 -1
- package/dist/core/engine/fenced-write.d.ts +5 -3
- package/dist/core/engine/finalizer-status.d.ts +10 -0
- package/dist/core/engine/finalizer-status.js +82 -0
- package/dist/core/engine/index.d.ts +26 -2
- package/dist/core/engine/index.js +71 -8
- package/dist/core/engine/internals.d.ts +3 -0
- package/dist/core/engine/lease-health.d.ts +64 -0
- package/dist/core/engine/lease-health.js +0 -0
- package/dist/core/engine/lease-manager.d.ts +4 -2
- package/dist/core/engine/lease-manager.js +32 -4
- package/dist/core/engine/lifecycle/recovered-services.js +0 -2
- package/dist/core/engine/lifecycle/shared.d.ts +11 -8
- package/dist/core/engine/lifecycle/start-batch.js +12 -0
- package/dist/core/engine/lifecycle/start.d.ts +1 -1
- package/dist/core/engine/lifecycle/start.js +34 -5
- package/dist/core/engine/operations-coordination.d.ts +1 -12
- package/dist/core/engine/operations-coordination.js +57 -10
- package/dist/core/engine/operations-speculate.d.ts +1 -1
- package/dist/core/engine/operations-speculate.js +19 -5
- package/dist/core/engine/registration.js +14 -0
- package/dist/core/engine/schedule-handle.d.ts +4 -4
- package/dist/core/engine/schedule-handle.js +2 -2
- package/dist/core/engine/schedule-overlap.d.ts +11 -0
- package/dist/core/engine/schedule-overlap.js +50 -0
- package/dist/core/engine/schedule-run.d.ts +11 -3
- package/dist/core/engine/schedule-run.js +27 -4
- package/dist/core/engine/schedule-timer.js +10 -1
- package/dist/core/engine/schedules.d.ts +5 -4
- package/dist/core/engine/schedules.js +62 -56
- package/dist/core/engine/state-utilities.js +1 -1
- package/dist/core/engine/storage-io.d.ts +12 -0
- package/dist/core/engine/storage-io.js +49 -10
- package/dist/core/engine/termination/finalizer-claim.d.ts +8 -6
- package/dist/core/engine/termination/finalizer-claim.js +2 -1
- package/dist/core/engine/termination/finalizer.js +10 -14
- package/dist/core/engine/timeline-coordinator-constants.d.ts +3 -0
- package/dist/core/engine/timeline-coordinator-constants.js +1 -0
- package/dist/core/engine/timeline-coordinator-detail.d.ts +13 -0
- package/dist/core/engine/timeline-coordinator-detail.js +76 -0
- package/dist/core/engine/validation/schedule-options.d.ts +8 -1
- package/dist/core/engine/validation/schedule-options.js +18 -0
- package/dist/core/engine/validation/schedule.d.ts +1 -1
- package/dist/core/engine/validation/schedule.js +27 -3
- package/dist/core/engine/validation.js +66 -2
- package/dist/core/engine/workflow-state-stream.d.ts +5 -1
- package/dist/core/engine/workflow-state-stream.js +37 -14
- package/dist/core/events/schedule-events.d.ts +3 -4
- package/dist/core/events/workflow-events.d.ts +2 -1
- package/dist/core/list-filter-validation.d.ts +3 -0
- package/dist/core/list-filter-validation.js +11 -0
- package/dist/core/registry-snapshot.d.ts +32 -0
- package/dist/core/registry-snapshot.js +28 -0
- package/dist/core/review/index.d.ts +4 -4
- package/dist/core/types/activity.d.ts +52 -5
- package/dist/core/types/bulk.d.ts +1 -0
- package/dist/core/types/list-options.d.ts +6 -0
- package/dist/core/types/options.d.ts +6 -5
- package/dist/core/types/reviews.d.ts +2 -2
- package/dist/core/types/schedules.d.ts +45 -2
- package/dist/core/types/services-resolution.d.ts +5 -5
- package/dist/core/types/state.d.ts +64 -0
- package/dist/core/types/workflow-log.d.ts +3 -2
- package/dist/core/types/workflow-observability.d.ts +50 -0
- package/dist/core/types/workflow-observability.js +0 -0
- package/dist/core/types/workflow-registry.d.ts +7 -0
- package/dist/core/types.d.ts +1 -0
- package/dist/core/types.js +1 -0
- package/dist/http.js +2 -2
- package/dist/index.d.ts +4 -3
- package/dist/indexeddb.js +1 -1
- package/dist/server/access-policy-metadata.d.ts +92 -0
- package/dist/server/access-policy-metadata.js +78 -0
- package/dist/server/fault-to-http.d.ts +3 -7
- package/dist/server/fault-to-http.js +2 -34
- package/dist/server/handler/index.js +1 -1
- package/dist/server/handler/route-dispatch.d.ts +10 -3
- package/dist/server/handler/route-dispatch.js +19 -4
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/interactive-operations.js +2 -0
- package/dist/server/openapi-error-responses.js +55 -4
- package/dist/server/openapi.d.ts +3 -1
- package/dist/server/openapi.js +4 -0
- package/dist/server/openrpc-document-schema.d.ts +64 -0
- package/dist/server/openrpc-document-schema.js +6 -26
- package/dist/server/openrpc.d.ts +4 -0
- package/dist/server/openrpc.js +9 -33
- package/dist/server/operation-fault.d.ts +24 -7
- package/dist/server/operation-fault.js +65 -13
- package/dist/server/operations/aggregate-workflows.d.ts +6 -0
- package/dist/server/operations/aggregate-workflows.js +3 -2
- package/dist/server/operations/async-activity.d.ts +14 -0
- package/dist/server/operations/async-activity.js +88 -4
- package/dist/server/operations/bulk-filter-helpers.d.ts +3 -0
- package/dist/server/operations/bulk-filter-helpers.js +27 -3
- package/dist/server/operations/bulk-mutate-workflow-tags.d.ts +6 -0
- package/dist/server/operations/bulk-signal-workflows.d.ts +6 -0
- package/dist/server/operations/get-stream-chunks.js +2 -7
- package/dist/server/operations/get-system-lease.d.ts +19 -0
- package/dist/server/operations/get-system-lease.js +48 -0
- package/dist/server/operations/get-workflow-observability.d.ts +24 -0
- package/dist/server/operations/get-workflow-observability.js +80 -0
- package/dist/server/operations/get-workflow-result.js +2 -2
- package/dist/server/operations/get-workflow.d.ts +2 -2
- package/dist/server/operations/list-filter-query-extractor.js +15 -0
- package/dist/server/operations/list-workflows.d.ts +6 -0
- package/dist/server/operations/list-workflows.js +12 -3
- package/dist/server/operations/operation-helpers.d.ts +9 -18
- package/dist/server/operations/operation-helpers.js +5 -23
- package/dist/server/operations/purge-workflows.d.ts +3 -0
- package/dist/server/operations/recover-all.js +2 -1
- package/dist/server/operations/single-workflow-tag-mutation.js +2 -2
- package/dist/server/operations/sse-stream.js +2 -7
- package/dist/server/operations/storage-capabilities.d.ts +34 -0
- package/dist/server/operations/storage-capabilities.js +38 -0
- package/dist/server/operations/storage.js +8 -17
- package/dist/server/operations/stream-workflow-sse.js +3 -9
- package/dist/server/operations/update-schedule.d.ts +8 -0
- package/dist/server/operations/update-schedule.js +70 -7
- package/dist/server/operations/workflow-events-sse.js +2 -2
- package/dist/server/rest-binding.d.ts +7 -6
- package/dist/server/rest-bindings.d.ts +2 -13
- package/dist/server/rest-bindings.js +19 -10
- package/dist/server/task-queue.d.ts +7 -5
- package/dist/storage/capabilities.d.ts +1 -1
- package/dist/storage/cloudflare-value-codec.d.ts +5 -3
- package/dist/storage/cloudflare-value-codec.js +1 -1
- package/dist/storage/compressed-storage.js +1 -1
- package/dist/storage/index.d.ts +7 -1
- package/dist/storage/interface.d.ts +16 -4
- package/dist/storage/interface.js +1 -1
- package/dist/storage/key-prefixes.d.ts +1 -1
- package/dist/storage/key-prefixes.js +4 -0
- package/dist/storage/lmdb.js +1 -1
- package/dist/storage/memory.js +1 -1
- package/dist/storage/neon.js +4 -4
- package/dist/storage/postgres.js +4 -4
- package/dist/storage/resolve.js +1 -1
- package/dist/storage/scoped-storage.js +1 -1
- package/dist/storage/testing.js +1 -1
- package/dist/storage/turso.js +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/web-extension.js +1 -1
- package/package.json +1 -1
|
@@ -14,7 +14,7 @@ function base64ToBytes(base64) {
|
|
|
14
14
|
return bytes;
|
|
15
15
|
}
|
|
16
16
|
function unexpectedValueTypeError(key, expectedEncoding, actualType) {
|
|
17
|
-
return Error(`Cloudflare Durable Object SQLite storage: key "${key}" holds a value of type ${actualType}, but this instance is configured for valueEncoding: '${expectedEncoding}'.
|
|
17
|
+
return Error(`Cloudflare Durable Object SQLite storage: key "${key}" holds a value of type ${actualType}, but this instance is configured for valueEncoding: '${expectedEncoding}'. valueEncoding is a per-table storage-format decision, and this row was written with a different valueEncoding. Configure every instance that accesses this table with the same valueEncoding, or use a different table name for a different encoding.`);
|
|
18
18
|
}
|
|
19
19
|
const base64Codec = {
|
|
20
20
|
sqlColumnType: "TEXT",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var i=import.meta.require,t=(W,F,X)=>{if(F!=null){if(typeof F!=="object"&&typeof F!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let Y;if(X)Y=F[Symbol.asyncDispose];if(Y===void 0)Y=F[Symbol.dispose];if(typeof Y!=="function")throw TypeError("Object not disposable");W.push([X,Y,F])}else if(X)W.push([X]);return F},r=(W,F,X)=>{let Y=($)=>F=X?new SuppressedError($,F,"An error was suppressed during disposal"):(X=!0,$),U=($)=>{while($=W.pop())try{var j=$[1]&&$[1].call($[2]);if($[0])return Promise.resolve(j).then(U,(C)=>(Y(C),U()))}catch(C){Y(C)}if(X)throw F};return U()};function G(W,F,X){if(!W.capabilities()[F])throw Error(`Feature "${X}" requires storage capability "${F}", but this storage backend does not provide it.`)}function g(W){let F=W.capabilities(),X=[];if(F.persistence!=="local"&&F.persistence!=="remote")X.push(`persistence must be "local" or "remote" (got "${F.persistence}")`);if(F.readAfterWrite!=="linearizable")X.push(`readAfterWrite must be "linearizable" (got "${F.readAfterWrite}")`);if(F.scanConsistency!=="snapshot")X.push(`scanConsistency must be "snapshot" (got "${F.scanConsistency}")`);if(!F.atomicBatch)X.push("atomicBatch must be true");if(!F.conditionalBatch)X.push("conditionalBatch must be true");if(X.length>0)throw Error(`Storage is not durable enough for recovery: ${X.join("; ")}.`)}var D="default";async function M(W,F){return await W.get(F)!==null}async function*P(W,F,X){for await(let[Y]of W.scan(F,X))yield Y}async function N(W,F){let X=0;for await(let Y of P(W,F))X++;return X}async function H(W,F){let X=[];for await(let Y of P(W,F))X.push({type:"delete",key:Y});if(X.length===0)return 0;return await W.batch(X),X.length}async function FW(W,F,X){let Y=[];for await(let U of P(W,F,X))Y.push({type:"delete",key:U});if(Y.length===0)return 0;return await W.batch(Y),Y.length}var u=["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:"];var L=1e4,KW=1e4;class B extends Error{code="StorageBatchOperationLimitExceededError";cap=L;count;target;constructor(W,F){super(`${W} count ${F} exceeds MAX_BATCH_OPERATIONS (${L}).`);this.name="StorageBatchOperationLimitExceededError",this.target=W,this.count=F}}function q(W,F){if(F>L)throw new B(W,F)}function QW(W){return W.length>0?W.slice(0,-1)+String.fromCharCode(W.charCodeAt(W.length-1)+1):"\xFF"}function UW(W,F={}){if(F.gt!==void 0&&W<=F.gt)return!1;if(F.gte!==void 0&&W<F.gte)return!1;if(F.lt!==void 0&&W>=F.lt)return!1;if(F.lte!==void 0&&W>F.lte)return!1;return!0}function VW(W,F){if(W===null||F===null)return W===F;if(W.byteLength!==F.byteLength)return!1;for(let X=0;X<W.byteLength;X++)if(W[X]!==F[X])return!1;return!0}async function PW(W,F){if(W.has)return W.has(F);return M(W,F)}function qW(W,F,X){if(W.keys)return W.keys(F,X);return P(W,F,X)}async function zW(W,F){if(W.count)return W.count(F);return N(W,F)}async function CW(W,F){if(W.deletePrefix)return W.deletePrefix(F);return H(W,F)}async function GW(W,F){q("batch operations",F.length),await W.batch(F)}async function DW(W,F,X){if(q("conditionalBatch conditions",F.length),q("conditionalBatch operations",X.length),G(W,"conditionalBatch","storageConditionalBatch"),!W.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return W.conditionalBatch(F,X)}function J(W){return encodeURIComponent(W)}function LW(W){return decodeURIComponent(W)}function SW(W){try{return decodeURIComponent(W)}catch{return null}}var K=(W)=>String(W).padStart(16,"0"),f="0",I="1",E=(W,F,X,Y)=>`sig:${J(W)}:${J(F)}:${Y}:${J(X)}`,ZW={workflow:(W)=>`wf:${J(W)}`,checkpoint:(W)=>`wf:${J(W)}:ckpt`,checkpointHistory:(W,F)=>`wf:${J(W)}:ckpt:${String(F).padStart(10,"0")}`,timelinePrefix:(W)=>`wf:${J(W)}:timeline:`,timeline:(W,F)=>`wf:${J(W)}:timeline:${String(F).padStart(10,"0")}`,schedule:(W)=>`schedule:${J(W)}`,scheduleTick:(W,F)=>`schedule-due:${String(W).padStart(16,"0")}:${J(F)}`,scheduleRun:(W)=>`schedule-run:${J(W)}`,operation:(W,F,X)=>`op:${W}:${K(F)}:${X}`,operationInflight:(W)=>`op:inflight:${W}`,operationQueued:(W)=>`op:queued:${W}`,operationResolved:(W)=>`op:resolved:${W}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(W)=>`op:dead-letter:${W}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(W,F,X)=>`audit:bulk:${K(W)}:${J(F)}:${J(X)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(W,F)=>`op:resolved-by-time:${K(W)}:${J(F)}`,asyncActivity:(W,F)=>`async-act:v1:${J(W)}:${J(F)}`,asyncActivityResolution:(W,F)=>`async-act:v1:${J(W)}:${J(F)}:resolution`,activityReconciliationPrefix:(W)=>`actrec:v1:${J(W)}:`,activityReconciliation:(W,F,X)=>`actrec:v1:${J(W)}:${J(F)}:${X}`,eventPrefix:(W)=>`ev:${J(W)}:`,event:(W,F)=>`ev:${J(W)}:${String(F).padStart(10,"0")}`,eventHead:(W)=>`ev:${J(W)}:head`,eventWatermark:(W)=>`ev:${J(W)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(W)=>`fleet-event:${String(W).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(W)=>`fleet-event-by-workflow:${J(W)}:`,fleetEventByWorkflow:(W,F)=>`fleet-event-by-workflow:${J(W)}:${String(F).padStart(10,"0")}`,signal:(W,F,X)=>E(W,F,X,I),startSignal:(W,F,X)=>E(W,F,X,f),signalSequence:(W)=>`sigseq:v1:${J(W)}`,signalAcceptedResponsePrefix:(W)=>`sigres:v1:${J(W)}:`,signalAcceptedResponse:(W,F,X)=>`sigres:v1:${J(W)}:${J(F)}:${J(X)}`,deadline:(W,F)=>`wf-deadline:${K(W)}:${J(F)}`,terminalCleanup:(W,F)=>`wf-cleanup:${K(W)}:${J(F)}`,teardownTimer:(W,F)=>`wf-teardown:${K(W)}:${J(F)}`,delayedStart:(W,F)=>`wf-delayed:${K(W)}:${J(F)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(W,F)=>`wf-terminal:${K(W)}:${J(F)}`,attribute:(W)=>`attr:${J(W)}`,attributeIndex:(W,F,X)=>`idx:${W}:${F}:${J(X)}`,tagIndex:(W,F)=>`tag:${J(W)}:${J(F)}`,updatePrefix:(W)=>`upd:${J(W)}:`,update:(W,F)=>`upd:${J(W)}:${F}`,updateResponse:(W)=>`upr:${W}`,updateIdempotency:(W,F)=>`upk:${J(W)}:${F}`,startIdempotency:(W)=>`start-idem:${J(W)}`,startIdempotencySignalId:(W)=>`start-idem:${W}`,livenessPrefix:()=>"liveness:",liveness:(W)=>`liveness:${J(W)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(W,F,X)=>`budget:${W}:${F}:${X}`,review:(W,F)=>`review:${J(W)}:${F}`,workflowHeaders:(W)=>`wf-headers:${J(W)}`,childCancellationPrefix:(W)=>`child-cancel:${J(W)}:`,childCancellation:(W,F)=>`child-cancel:${J(W)}:${J(F)}`,terminalCleanupNeeded:(W)=>`wf-cleanup-needed:${J(W)}`,workflowConcurrency:(W,F)=>`wf-concurrency:${J(W)}:${J(F)}`,workflowConcurrencyHolder:(W)=>`wf-concurrency-holder:${J(W)}`,workflowHasServices:(W)=>`wf-has-services:${J(W)}`,finalizerState:(W)=>`wf-finalizer-state:${J(W)}`,teardownOwed:(W)=>`wf-teardown-needed:${J(W)}`,teardownDeadLetter:(W)=>`wf-teardown-deadletter:${J(W)}`,offload:(W,F)=>`offload:${J(W)}:${F}`,archive:(W,F)=>`archive:${J(W)}:${F}`,stateExecution:(W,F)=>`state:execution:${J(W)}:${J(F)}`,stateWorkflow:(W,F)=>`state:workflow-scope:${D}:${J(W)}:${J(F)}`,streamChunkPrefix:(W,F)=>`blob:${J(W)}:${F}:chunk:`,streamChunk:(W,F,X)=>`blob:${J(W)}:${F}:chunk:${String(X).padStart(10,"0")}`,streamTail:(W,F)=>`blob:${J(W)}:${F}:tail`,streamMetadata:(W,F)=>`blob:${J(W)}:${F}:meta`,budgetCharged:(W)=>`budget-charged:${W}`,toolEffect:(W,F,X)=>`tool-effect:${J(W)}:${F}:${X}`,workflowVisibilityStatus:(W,F)=>`wf-idx-status:${J(W)}:${J(F)}`,workflowVisibilityType:(W,F)=>`wf-idx-type:${J(W)}:${J(F)}`,workflowVisibilityCreated:(W,F)=>`wf-idx-created:${K(W)}:${J(F)}`,workflowVisibilityUpdated:(W,F)=>`wf-idx-updated:${K(W)}:${J(F)}`,workflowVisibilityDeadline:(W,F)=>`wf-idx-deadline:${K(W)}:${J(F)}`,workflowVisibilityManifest:(W)=>`wf-idx-manifest:${J(W)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};var V;function p(){if(V&&"bun"in V)return V.bun;return globalThis.Bun}function x(){return typeof p()<"u"}function k(){if(V&&"process"in V)return V.process;return globalThis.process}function v(W){let X=k()?.getBuiltinModule;if(typeof X!=="function")return;return X(W)}function O(){let W=v("node:zlib");if(!W)throw Error("gzip/gunzip require Bun or Node 22.5+ (process.getBuiltinModule). "+"Not available in browser or edge runtimes \u2014 use CompressionStream directly.");return W}function T(W){if(x())return new Uint8Array(Bun.gzipSync(new Uint8Array(W)));return new Uint8Array(O().gzipSync(W))}function h(W){if(x())return new Uint8Array(Bun.gunzipSync(new Uint8Array(W)));return new Uint8Array(O().gunzipSync(W))}function A(){return v("node:zlib")}function R(){let W=A();if(!W)throw Error("Brotli compression requires Bun or Node 22.5+ with process.getBuiltinModule support. Use gzip compression for browser/edge runtimes.");return W}function w(W){return new Uint8Array(R().brotliCompressSync(W))}function n(W){return new Uint8Array(R().brotliDecompressSync(W))}var z=193,S=0,b=1,c=2,Q=2;function y(W){return l(W)}function l(W){switch(W){case"gzip":return{algorithm:"gzip",compress(F){return T(F)}};case"brotli":return{algorithm:"brotli",compress(F){return w(F)}};case"none":return{algorithm:"none",compress(F){return F}}}}async function Z(W,F,X){if(W.length<X||F.algorithm==="none"){let j=new Uint8Array(W.length+Q);return j[0]=z,j[1]=S,j.set(W,Q),j}let Y=await F.compress(W);if(Y.length+Q>=W.length+Q){let j=new Uint8Array(W.length+Q);return j[0]=z,j[1]=S,j.set(W,Q),j}let U=F.algorithm==="gzip"?b:c,$=new Uint8Array(Y.length+Q);return $[0]=z,$[1]=U,$.set(Y,Q),$}async function _(W){if(W.length<Q)throw Error("Compression payload missing 2-byte header.");if(W[0]!==z)throw Error("Compression payload missing magic byte 0xC1.");let F=W[1],X=W.slice(Q);switch(F){case S:return X;case b:return h(X);case c:return n(X);default:throw Error(`Compression payload uses unsupported algorithm byte 0x${F.toString(16).padStart(2,"0")}.`)}}var s=4096,d="gzip";function m(W){return{threshold:W?.threshold??s,algorithm:W?.algorithm??d}}class a{#W;#F;#X;constructor(W,F){this.#W=W;let X=m(F);if(this.#F=y(X.algorithm),this.#X=X.threshold,W.query){let Y=W.query.bind(W);Object.defineProperty(this,"query",{value:Y,enumerable:!0,configurable:!0})}}capabilities(){let W=this.#W.capabilities();return{...W.persistence===void 0?{}:{persistence:W.persistence},readAfterWrite:W.readAfterWrite,scanConsistency:W.scanConsistency,atomicBatch:W.atomicBatch,conditionalBatch:!1,boundedRangeDelete:!1}}async get(W){let F=await this.#W.get(W);if(!F)return null;return _(F)}async put(W,F){let X=await Z(F,this.#F,this.#X);return this.#W.put(W,X)}async delete(W){return this.#W.delete(W)}async*scan(W,F){for await(let[X,Y]of this.#W.scan(W,F))yield[X,await _(Y)]}async batch(W){q("batch operations",W.length);let F=await Promise.all(W.map(async(X)=>{if(X.type==="put")return{type:"put",key:X.key,value:await Z(X.value,this.#F,this.#X)};return X}));return this.#W.batch(F)}[Symbol.dispose](){this.#W[Symbol.dispose]()}}export{a as CompressedStorage};
|
|
2
|
+
var i=import.meta.require,t=(F,X,Y)=>{if(X!=null){if(typeof X!=="object"&&typeof X!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let $;if(Y)$=X[Symbol.asyncDispose];if($===void 0)$=X[Symbol.dispose];if(typeof $!=="function")throw TypeError("Object not disposable");F.push([Y,$,X])}else if(Y)F.push([Y]);return X},r=(F,X,Y)=>{let $=(j)=>X=Y?new SuppressedError(j,X,"An error was suppressed during disposal"):(Y=!0,j),V=(j)=>{while(j=F.pop())try{var K=j[1]&&j[1].call(j[2]);if(j[0])return Promise.resolve(K).then(V,(C)=>($(C),V()))}catch(C){$(C)}if(Y)throw X};return V()};function G(F,X,Y){if(!F.capabilities()[X])throw Error(`Feature "${Y}" requires storage capability "${X}", but this storage backend does not provide it.`)}function g(F){let X=F.capabilities(),Y=[];if(X.persistence!=="local"&&X.persistence!=="remote")Y.push(`persistence must be "local" or "remote" (got "${X.persistence}")`);if(X.readAfterWrite!=="linearizable")Y.push(`readAfterWrite must be "linearizable" (got "${X.readAfterWrite}")`);if(X.scanConsistency!=="snapshot")Y.push(`scanConsistency must be "snapshot" (got "${X.scanConsistency}")`);if(!X.atomicBatch)Y.push("atomicBatch must be true");if(!X.conditionalBatch)Y.push("conditionalBatch must be true");if(Y.length>0)throw Error(`Storage is not durable enough for recovery: ${Y.join("; ")}.`)}var D="default";async function M(F,X){return await F.get(X)!==null}async function*q(F,X,Y){for await(let[$]of F.scan(X,Y))yield $}async function N(F,X){let Y=0;for await(let $ of q(F,X))Y++;return Y}async function H(F,X){let Y=[];for await(let $ of q(F,X))Y.push({type:"delete",key:$});if(Y.length===0)return 0;return await F.batch(Y),Y.length}async function XF(F,X,Y){let $=[];for await(let V of q(F,X,Y))$.push({type:"delete",key:V});if($.length===0)return 0;return await F.batch($),$.length}var u=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","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-teardown-succeeded:","wf-terminal:"];var L=1e4,QF=1e4;class v extends Error{code="StorageBatchOperationLimitExceededError";cap=L;count;target;constructor(F,X){super(`${F} count ${X} exceeds MAX_BATCH_OPERATIONS (${L}).`);this.name="StorageBatchOperationLimitExceededError",this.target=F,this.count=X}}function z(F,X){if(X>L)throw new v(F,X)}function UF(F){return F.length>0?F.slice(0,-1)+String.fromCharCode(F.charCodeAt(F.length-1)+1):"\xFF"}function VF(F,X={}){if(X.gt!==void 0&&F<=X.gt)return!1;if(X.gte!==void 0&&F<X.gte)return!1;if(X.lt!==void 0&&F>=X.lt)return!1;if(X.lte!==void 0&&F>X.lte)return!1;return!0}function PF(F,X){if(F===null||X===null)return F===X;if(F.byteLength!==X.byteLength)return!1;for(let Y=0;Y<F.byteLength;Y++)if(F[Y]!==X[Y])return!1;return!0}async function qF(F,X){if(F.has)return F.has(X);return M(F,X)}function zF(F,X,Y){if(F.keys)return F.keys(X,Y);return q(F,X,Y)}async function WF(F,X){if(F.count)return F.count(X);return N(F,X)}async function CF(F,X){if(F.deletePrefix)return F.deletePrefix(X);return H(F,X)}async function GF(F,X){z("batch operations",X.length),await F.batch(X)}async function DF(F,X,Y){if(z("conditionalBatch conditions",X.length),z("conditionalBatch operations",Y.length),G(F,"conditionalBatch","storageConditionalBatch"),!F.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return F.conditionalBatch(X,Y)}function J(F){return encodeURIComponent(F)}function LF(F){return decodeURIComponent(F)}function SF(F){try{return decodeURIComponent(F)}catch{return null}}var Q=(F)=>String(F).padStart(16,"0"),f="0",p="1",B=(F,X,Y,$)=>`sig:${J(F)}:${J(X)}:${$}:${J(Y)}`,ZF={workflow:(F)=>`wf:${J(F)}`,checkpoint:(F)=>`wf:${J(F)}:ckpt`,checkpointHistory:(F,X)=>`wf:${J(F)}:ckpt:${String(X).padStart(10,"0")}`,timelinePrefix:(F)=>`wf:${J(F)}:timeline:`,timeline:(F,X)=>`wf:${J(F)}:timeline:${String(X).padStart(10,"0")}`,schedule:(F)=>`schedule:${J(F)}`,scheduleTick:(F,X)=>`schedule-due:${String(F).padStart(16,"0")}:${J(X)}`,scheduleRun:(F)=>`schedule-run:${J(F)}`,scheduleRunLink:(F)=>`schedule-run-link:${J(F)}`,scheduleRunBySchedulePrefix:(F)=>`schedule-run-by-schedule:${J(F)}:`,scheduleRunBySchedule:(F,X)=>`schedule-run-by-schedule:${J(F)}:${J(X)}`,operation:(F,X,Y)=>`op:${F}:${Q(X)}:${Y}`,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,X,Y)=>`audit:bulk:${Q(F)}:${J(X)}:${J(Y)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(F,X)=>`op:resolved-by-time:${Q(F)}:${J(X)}`,asyncActivity:(F,X)=>`async-act:v1:${J(F)}:${J(X)}`,asyncActivityResolution:(F,X)=>`async-act:v1:${J(F)}:${J(X)}:resolution`,activityReconciliationPrefix:(F)=>`actrec:v1:${J(F)}:`,activityReconciliation:(F,X,Y)=>`actrec:v1:${J(F)}:${J(X)}:${Y}`,eventPrefix:(F)=>`ev:${J(F)}:`,event:(F,X)=>`ev:${J(F)}:${String(X).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,X)=>`fleet-event-by-workflow:${J(F)}:${String(X).padStart(10,"0")}`,signal:(F,X,Y)=>B(F,X,Y,p),startSignal:(F,X,Y)=>B(F,X,Y,f),signalSequence:(F)=>`sigseq:v1:${J(F)}`,signalAcceptedResponsePrefix:(F)=>`sigres:v1:${J(F)}:`,signalAcceptedResponse:(F,X,Y)=>`sigres:v1:${J(F)}:${J(X)}:${J(Y)}`,deadline:(F,X)=>`wf-deadline:${Q(F)}:${J(X)}`,terminalCleanup:(F,X)=>`wf-cleanup:${Q(F)}:${J(X)}`,teardownTimer:(F,X)=>`wf-teardown:${Q(F)}:${J(X)}`,delayedStart:(F,X)=>`wf-delayed:${Q(F)}:${J(X)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(F,X)=>`wf-terminal:${Q(F)}:${J(X)}`,attribute:(F)=>`attr:${J(F)}`,attributeIndex:(F,X,Y)=>`idx:${F}:${X}:${J(Y)}`,tagIndex:(F,X)=>`tag:${J(F)}:${J(X)}`,updatePrefix:(F)=>`upd:${J(F)}:`,update:(F,X)=>`upd:${J(F)}:${X}`,updateResponse:(F)=>`upr:${F}`,updateIdempotency:(F,X)=>`upk:${J(F)}:${X}`,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,X,Y)=>`budget:${F}:${X}:${Y}`,review:(F,X)=>`review:${J(F)}:${X}`,workflowHeaders:(F)=>`wf-headers:${J(F)}`,childCancellationPrefix:(F)=>`child-cancel:${J(F)}:`,childCancellation:(F,X)=>`child-cancel:${J(F)}:${J(X)}`,childWorkflowByParentPrefix:(F,X)=>`child-by-parent:${J(F)}:${X===void 0?"":`${J(X)}:`}`,childWorkflowByParent:(F,X,Y)=>`child-by-parent:${J(F)}:${X===void 0?"":`${J(X)}:`}${J(Y)}`,terminalCleanupNeeded:(F)=>`wf-cleanup-needed:${J(F)}`,workflowConcurrency:(F,X)=>`wf-concurrency:${J(F)}:${J(X)}`,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)}`,teardownSucceeded:(F)=>`wf-teardown-succeeded:${J(F)}`,teardownDeadLetter:(F)=>`wf-teardown-deadletter:${J(F)}`,offload:(F,X)=>`offload:${J(F)}:${X}`,archive:(F,X)=>`archive:${J(F)}:${X}`,stateExecution:(F,X)=>`state:execution:${J(F)}:${J(X)}`,stateWorkflow:(F,X)=>`state:workflow-scope:${D}:${J(F)}:${J(X)}`,streamChunkPrefix:(F,X)=>`blob:${J(F)}:${X}:chunk:`,streamChunk:(F,X,Y)=>`blob:${J(F)}:${X}:chunk:${String(Y).padStart(10,"0")}`,streamTail:(F,X)=>`blob:${J(F)}:${X}:tail`,streamMetadata:(F,X)=>`blob:${J(F)}:${X}:meta`,budgetCharged:(F)=>`budget-charged:${F}`,toolEffect:(F,X,Y)=>`tool-effect:${J(F)}:${X}:${Y}`,workflowVisibilityStatus:(F,X)=>`wf-idx-status:${J(F)}:${J(X)}`,workflowVisibilityType:(F,X)=>`wf-idx-type:${J(F)}:${J(X)}`,workflowVisibilityCreated:(F,X)=>`wf-idx-created:${Q(F)}:${J(X)}`,workflowVisibilityUpdated:(F,X)=>`wf-idx-updated:${Q(F)}:${J(X)}`,workflowVisibilityDeadline:(F,X)=>`wf-idx-deadline:${Q(F)}:${J(X)}`,workflowVisibilityManifest:(F)=>`wf-idx-manifest:${J(F)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};var P;function I(){if(P&&"bun"in P)return P.bun;return globalThis.Bun}function E(){return typeof I()<"u"}function k(){if(P&&"process"in P)return P.process;return globalThis.process}function O(F){let Y=k()?.getBuiltinModule;if(typeof Y!=="function")return;return Y(F)}function x(){let F=O("node:zlib");if(!F)throw Error("gzip/gunzip require Bun or Node 22.5+ (process.getBuiltinModule). "+"Not available in browser or edge runtimes \u2014 use CompressionStream directly.");return F}function A(F){if(E())return new Uint8Array(Bun.gzipSync(new Uint8Array(F)));return new Uint8Array(x().gzipSync(F))}function h(F){if(E())return new Uint8Array(Bun.gunzipSync(new Uint8Array(F)));return new Uint8Array(x().gunzipSync(F))}function R(){return O("node:zlib")}function T(){let F=R();if(!F)throw Error("Brotli compression requires Bun or Node 22.5+ with process.getBuiltinModule support. Use gzip compression for browser/edge runtimes.");return F}function w(F){return new Uint8Array(T().brotliCompressSync(F))}function n(F){return new Uint8Array(T().brotliDecompressSync(F))}var W=193,S=0,b=1,c=2,U=2;function y(F){return l(F)}function l(F){switch(F){case"gzip":return{algorithm:"gzip",compress(X){return A(X)}};case"brotli":return{algorithm:"brotli",compress(X){return w(X)}};case"none":return{algorithm:"none",compress(X){return X}}}}async function Z(F,X,Y){if(F.length<Y||X.algorithm==="none"){let K=new Uint8Array(F.length+U);return K[0]=W,K[1]=S,K.set(F,U),K}let $=await X.compress(F);if($.length+U>=F.length+U){let K=new Uint8Array(F.length+U);return K[0]=W,K[1]=S,K.set(F,U),K}let V=X.algorithm==="gzip"?b:c,j=new Uint8Array($.length+U);return j[0]=W,j[1]=V,j.set($,U),j}async function _(F){if(F.length<U)throw Error("Compression payload missing 2-byte header.");if(F[0]!==W)throw Error("Compression payload missing magic byte 0xC1.");let X=F[1],Y=F.slice(U);switch(X){case S:return Y;case b:return h(Y);case c:return n(Y);default:throw Error(`Compression payload uses unsupported algorithm byte 0x${X.toString(16).padStart(2,"0")}.`)}}var s=4096,d="gzip";function m(F){return{threshold:F?.threshold??s,algorithm:F?.algorithm??d}}class a{#F;#X;#J;constructor(F,X){this.#F=F;let Y=m(X);if(this.#X=y(Y.algorithm),this.#J=Y.threshold,F.query){let $=F.query.bind(F);Object.defineProperty(this,"query",{value:$,enumerable:!0,configurable:!0})}}capabilities(){let F=this.#F.capabilities();return{persistence:F.persistence,readAfterWrite:F.readAfterWrite,scanConsistency:F.scanConsistency,atomicBatch:F.atomicBatch,conditionalBatch:!1,boundedRangeDelete:!1}}async get(F){let X=await this.#F.get(F);if(!X)return null;return _(X)}async put(F,X){let Y=await Z(X,this.#X,this.#J);return this.#F.put(F,Y)}async delete(F){return this.#F.delete(F)}async*scan(F,X){for await(let[Y,$]of this.#F.scan(F,X))yield[Y,await _($)]}async batch(F){z("batch operations",F.length);let X=await Promise.all(F.map(async(Y)=>{if(Y.type==="put")return{type:"put",key:Y.key,value:await Z(Y.value,this.#X,this.#J)};return Y}));return this.#F.batch(X)}[Symbol.dispose](){this.#F[Symbol.dispose]()}}export{a as CompressedStorage};
|
package/dist/storage/index.d.ts
CHANGED
|
@@ -90,6 +90,9 @@ declare const exportedKeys: {
|
|
|
90
90
|
readonly schedule: (id: string) => string;
|
|
91
91
|
readonly scheduleTick: (fireAt: number, id: string) => string;
|
|
92
92
|
readonly scheduleRun: (workflowId: string) => string;
|
|
93
|
+
readonly scheduleRunLink: (workflowId: string) => string;
|
|
94
|
+
readonly scheduleRunBySchedulePrefix: (scheduleId: string) => string;
|
|
95
|
+
readonly scheduleRunBySchedule: (scheduleId: string, workflowId: string) => string;
|
|
93
96
|
readonly operation: (queue: string, scheduledAt: number, id: string) => string;
|
|
94
97
|
readonly operationInflight: (id: string) => string;
|
|
95
98
|
readonly operationQueued: (id: string) => string;
|
|
@@ -143,12 +146,15 @@ declare const exportedKeys: {
|
|
|
143
146
|
readonly workflowHeaders: (workflowId: string) => string;
|
|
144
147
|
readonly childCancellationPrefix: (workflowId: string) => string;
|
|
145
148
|
readonly childCancellation: (workflowId: string, childWorkflowId: string) => string;
|
|
149
|
+
readonly childWorkflowByParentPrefix: (parentWorkflowId: string, parentWorkflowExecutionToken?: string) => string;
|
|
150
|
+
readonly childWorkflowByParent: (parentWorkflowId: string, parentWorkflowExecutionToken: string | undefined, childWorkflowId: string) => string;
|
|
146
151
|
readonly terminalCleanupNeeded: (workflowId: string) => string;
|
|
147
152
|
readonly workflowConcurrency: (workflowType: string, partitionKey: string) => string;
|
|
148
153
|
readonly workflowConcurrencyHolder: (workflowId: string) => string;
|
|
149
154
|
readonly workflowHasServices: (workflowId: string) => string;
|
|
150
155
|
readonly finalizerState: (workflowId: string) => string;
|
|
151
156
|
readonly teardownOwed: (workflowId: string) => string;
|
|
157
|
+
readonly teardownSucceeded: (workflowId: string) => string;
|
|
152
158
|
readonly teardownDeadLetter: (workflowId: string) => string;
|
|
153
159
|
readonly offload: (workflowId: string, key: string) => string;
|
|
154
160
|
readonly archive: (workflowId: string, key: string) => string;
|
|
@@ -349,7 +355,7 @@ declare const exportedTextValueStore: typeof textValueStore;
|
|
|
349
355
|
* void isWeftKey;
|
|
350
356
|
* ```
|
|
351
357
|
*/
|
|
352
|
-
declare const exportedWeftReservedKeyPrefixes: readonly ["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:"];
|
|
358
|
+
declare const exportedWeftReservedKeyPrefixes: readonly ["actrec:", "archive:", "async-act:", "attr:", "audit:bulk:", "blob:", "budget:", "budget-charged:", "child-by-parent:", "ev:", "fleet-event-by-workflow:", "fleet-event:", "fleet-event-tail", "idx:", "lease:", "liveness:", "offload:", "op:", "review:", "schedule:", "schedule-due:", "schedule-run-by-schedule:", "schedule-run-link:", "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-teardown-succeeded:", "wf-terminal:"];
|
|
353
359
|
/**
|
|
354
360
|
* Re-exported {@link withCodec}. See the original declaration for full docs.
|
|
355
361
|
*
|
|
@@ -365,6 +365,14 @@ export declare const KEYS: {
|
|
|
365
365
|
readonly schedule: (id: string) => string;
|
|
366
366
|
readonly scheduleTick: (fireAt: number, id: string) => string;
|
|
367
367
|
readonly scheduleRun: (workflowId: string) => string;
|
|
368
|
+
/**
|
|
369
|
+
* Durable per-workflow manifest for the schedule that launched a run. Unlike
|
|
370
|
+
* `scheduleRun`, this link survives terminal cleanup so schedule history can
|
|
371
|
+
* be queried until the workflow itself is purged.
|
|
372
|
+
*/
|
|
373
|
+
readonly scheduleRunLink: (workflowId: string) => string;
|
|
374
|
+
readonly scheduleRunBySchedulePrefix: (scheduleId: string) => string;
|
|
375
|
+
readonly scheduleRunBySchedule: (scheduleId: string, workflowId: string) => string;
|
|
368
376
|
readonly operation: (queue: string, scheduledAt: number, id: string) => string;
|
|
369
377
|
readonly operationInflight: (id: string) => string;
|
|
370
378
|
readonly operationQueued: (id: string) => string;
|
|
@@ -471,6 +479,8 @@ export declare const KEYS: {
|
|
|
471
479
|
readonly workflowHeaders: (workflowId: string) => string;
|
|
472
480
|
readonly childCancellationPrefix: (workflowId: string) => string;
|
|
473
481
|
readonly childCancellation: (workflowId: string, childWorkflowId: string) => string;
|
|
482
|
+
readonly childWorkflowByParentPrefix: (parentWorkflowId: string, parentWorkflowExecutionToken?: string) => string;
|
|
483
|
+
readonly childWorkflowByParent: (parentWorkflowId: string, parentWorkflowExecutionToken: string | undefined, childWorkflowId: string) => string;
|
|
474
484
|
readonly terminalCleanupNeeded: (workflowId: string) => string;
|
|
475
485
|
readonly workflowConcurrency: (workflowType: string, partitionKey: string) => string;
|
|
476
486
|
readonly workflowConcurrencyHolder: (workflowId: string) => string;
|
|
@@ -512,14 +522,16 @@ export declare const KEYS: {
|
|
|
512
522
|
* success or when it dead-letters, which is what unblocks purge.
|
|
513
523
|
*/
|
|
514
524
|
readonly teardownOwed: (workflowId: string) => string;
|
|
525
|
+
/** Durable successful finalizer outcome, retained until workflow purge or retention. */
|
|
526
|
+
readonly teardownSucceeded: (workflowId: string) => string;
|
|
515
527
|
/**
|
|
516
528
|
* Durable audit record written when a workflow's finalizer permanently fails — the
|
|
517
529
|
* retry horizon is reached, or the recorded resource state vanished so the finalizer
|
|
518
530
|
* can never run (issue #446 Phase 2). Holds the `TeardownDeadLetterRecord` shape
|
|
519
|
-
* `{ type, lastError, attempts, deadLetteredAt, finalizerInput? }`.
|
|
520
|
-
* the workflow purge delete-set** so it survives as the operator's
|
|
521
|
-
* leaked external resource
|
|
522
|
-
*
|
|
531
|
+
* `{ type, lastError, attempts, deadLetteredAt, workflowExecutionToken?, finalizerInput? }`.
|
|
532
|
+
* **Excluded from the workflow purge delete-set** so it survives as the operator's
|
|
533
|
+
* evidence of a leaked external resource and remains queryable through the durable
|
|
534
|
+
* finalizer-status API after purge.
|
|
523
535
|
*/
|
|
524
536
|
readonly teardownDeadLetter: (workflowId: string) => string;
|
|
525
537
|
readonly offload: (workflowId: string, key: string) => string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
2
|
+
var H=import.meta.require,C=(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 _},N=(E,_,F)=>{let P=(Y)=>_=F?new SuppressedError(Y,_,"An error was suppressed during disposal"):(F=!0,Y),U=(Y)=>{while(Y=E.pop())try{var $=Y[1]&&Y[1].call(Y[2]);if(Y[0])return Promise.resolve($).then(U,(D)=>(P(D),U()))}catch(D){P(D)}if(F)throw _};return U()};function L(E,_,F){if(!E.capabilities()[_])throw Error(`Feature "${F}" requires storage capability "${_}", but this storage backend does not provide it.`)}function j(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 V="default";async function K(E,_){return await E.get(_)!==null}async function*X(E,_,F){for await(let[P]of E.scan(_,F))yield P}async function M(E,_){let F=0;for await(let P of X(E,_))F++;return F}async function O(E,_){let F=[];for await(let P of X(E,_))F.push({type:"delete",key:P});if(F.length===0)return 0;return await E.batch(F),F.length}async function W(E,_,F){let P=[];for await(let U of X(E,_,F))P.push({type:"delete",key:U});if(P.length===0)return 0;return await E.batch(P),P.length}var z=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","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-teardown-succeeded:","wf-terminal:"];var G=1e4,u=1e4;class Z extends Error{code="StorageBatchOperationLimitExceededError";cap=G;count;target;constructor(E,_){super(`${E} count ${_} exceeds MAX_BATCH_OPERATIONS (${G}).`);this.name="StorageBatchOperationLimitExceededError",this.target=E,this.count=_}}function J(E,_){if(_>G)throw new Z(E,_)}function y(E){return E.length>0?E.slice(0,-1)+String.fromCharCode(E.charCodeAt(E.length-1)+1):"\xFF"}function g(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 p(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 n(E,_){if(E.has)return E.has(_);return K(E,_)}function s(E,_,F){if(E.keys)return E.keys(_,F);return X(E,_,F)}async function a(E,_){if(E.count)return E.count(_);return M(E,_)}async function f(E,_){if(E.deletePrefix)return E.deletePrefix(_);return O(E,_)}async function I(E,_){J("batch operations",_.length),await E.batch(_)}async function l(E,_,F){if(J("conditionalBatch conditions",_.length),J("conditionalBatch operations",F.length),L(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 S(E){return encodeURIComponent(E)}function k(E){return decodeURIComponent(E)}function t(E){try{return decodeURIComponent(E)}catch{return null}}var R=(E)=>String(E).padStart(16,"0"),B="0",v="1",Q=(E,_,F,P)=>`sig:${S(E)}:${S(_)}:${P}:${S(F)}`,i={workflow:(E)=>`wf:${S(E)}`,checkpoint:(E)=>`wf:${S(E)}:ckpt`,checkpointHistory:(E,_)=>`wf:${S(E)}:ckpt:${String(_).padStart(10,"0")}`,timelinePrefix:(E)=>`wf:${S(E)}:timeline:`,timeline:(E,_)=>`wf:${S(E)}:timeline:${String(_).padStart(10,"0")}`,schedule:(E)=>`schedule:${S(E)}`,scheduleTick:(E,_)=>`schedule-due:${String(E).padStart(16,"0")}:${S(_)}`,scheduleRun:(E)=>`schedule-run:${S(E)}`,scheduleRunLink:(E)=>`schedule-run-link:${S(E)}`,scheduleRunBySchedulePrefix:(E)=>`schedule-run-by-schedule:${S(E)}:`,scheduleRunBySchedule:(E,_)=>`schedule-run-by-schedule:${S(E)}:${S(_)}`,operation:(E,_,F)=>`op:${E}:${R(_)}:${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:${R(E)}:${S(_)}:${S(F)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(E,_)=>`op:resolved-by-time:${R(E)}:${S(_)}`,asyncActivity:(E,_)=>`async-act:v1:${S(E)}:${S(_)}`,asyncActivityResolution:(E,_)=>`async-act:v1:${S(E)}:${S(_)}:resolution`,activityReconciliationPrefix:(E)=>`actrec:v1:${S(E)}:`,activityReconciliation:(E,_,F)=>`actrec:v1:${S(E)}:${S(_)}:${F}`,eventPrefix:(E)=>`ev:${S(E)}:`,event:(E,_)=>`ev:${S(E)}:${String(_).padStart(10,"0")}`,eventHead:(E)=>`ev:${S(E)}:head`,eventWatermark:(E)=>`ev:${S(E)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(E)=>`fleet-event:${String(E).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(E)=>`fleet-event-by-workflow:${S(E)}:`,fleetEventByWorkflow:(E,_)=>`fleet-event-by-workflow:${S(E)}:${String(_).padStart(10,"0")}`,signal:(E,_,F)=>Q(E,_,F,v),startSignal:(E,_,F)=>Q(E,_,F,B),signalSequence:(E)=>`sigseq:v1:${S(E)}`,signalAcceptedResponsePrefix:(E)=>`sigres:v1:${S(E)}:`,signalAcceptedResponse:(E,_,F)=>`sigres:v1:${S(E)}:${S(_)}:${S(F)}`,deadline:(E,_)=>`wf-deadline:${R(E)}:${S(_)}`,terminalCleanup:(E,_)=>`wf-cleanup:${R(E)}:${S(_)}`,teardownTimer:(E,_)=>`wf-teardown:${R(E)}:${S(_)}`,delayedStart:(E,_)=>`wf-delayed:${R(E)}:${S(_)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(E,_)=>`wf-terminal:${R(E)}:${S(_)}`,attribute:(E)=>`attr:${S(E)}`,attributeIndex:(E,_,F)=>`idx:${E}:${_}:${S(F)}`,tagIndex:(E,_)=>`tag:${S(E)}:${S(_)}`,updatePrefix:(E)=>`upd:${S(E)}:`,update:(E,_)=>`upd:${S(E)}:${_}`,updateResponse:(E)=>`upr:${E}`,updateIdempotency:(E,_)=>`upk:${S(E)}:${_}`,startIdempotency:(E)=>`start-idem:${S(E)}`,startIdempotencySignalId:(E)=>`start-idem:${E}`,livenessPrefix:()=>"liveness:",liveness:(E)=>`liveness:${S(E)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(E,_,F)=>`budget:${E}:${_}:${F}`,review:(E,_)=>`review:${S(E)}:${_}`,workflowHeaders:(E)=>`wf-headers:${S(E)}`,childCancellationPrefix:(E)=>`child-cancel:${S(E)}:`,childCancellation:(E,_)=>`child-cancel:${S(E)}:${S(_)}`,childWorkflowByParentPrefix:(E,_)=>`child-by-parent:${S(E)}:${_===void 0?"":`${S(_)}:`}`,childWorkflowByParent:(E,_,F)=>`child-by-parent:${S(E)}:${_===void 0?"":`${S(_)}:`}${S(F)}`,terminalCleanupNeeded:(E)=>`wf-cleanup-needed:${S(E)}`,workflowConcurrency:(E,_)=>`wf-concurrency:${S(E)}:${S(_)}`,workflowConcurrencyHolder:(E)=>`wf-concurrency-holder:${S(E)}`,workflowHasServices:(E)=>`wf-has-services:${S(E)}`,finalizerState:(E)=>`wf-finalizer-state:${S(E)}`,teardownOwed:(E)=>`wf-teardown-needed:${S(E)}`,teardownSucceeded:(E)=>`wf-teardown-succeeded:${S(E)}`,teardownDeadLetter:(E)=>`wf-teardown-deadletter:${S(E)}`,offload:(E,_)=>`offload:${S(E)}:${_}`,archive:(E,_)=>`archive:${S(E)}:${_}`,stateExecution:(E,_)=>`state:execution:${S(E)}:${S(_)}`,stateWorkflow:(E,_)=>`state:workflow-scope:${V}:${S(E)}:${S(_)}`,streamChunkPrefix:(E,_)=>`blob:${S(E)}:${_}:chunk:`,streamChunk:(E,_,F)=>`blob:${S(E)}:${_}:chunk:${String(F).padStart(10,"0")}`,streamTail:(E,_)=>`blob:${S(E)}:${_}:tail`,streamMetadata:(E,_)=>`blob:${S(E)}:${_}:meta`,budgetCharged:(E)=>`budget-charged:${E}`,toolEffect:(E,_,F)=>`tool-effect:${S(E)}:${_}:${F}`,workflowVisibilityStatus:(E,_)=>`wf-idx-status:${S(E)}:${S(_)}`,workflowVisibilityType:(E,_)=>`wf-idx-type:${S(E)}:${S(_)}`,workflowVisibilityCreated:(E,_)=>`wf-idx-created:${R(E)}:${S(_)}`,workflowVisibilityUpdated:(E,_)=>`wf-idx-updated:${R(E)}:${S(_)}`,workflowVisibilityDeadline:(E,_)=>`wf-idx-deadline:${R(E)}:${S(_)}`,workflowVisibilityManifest:(E)=>`wf-idx-manifest:${S(E)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};export{t as tryDecodeStorageKeyComponent,p as storageValuesEqual,s as storageKeys,n as storageHas,f as storageDeletePrefix,a as storageCount,l as storageConditionalBatch,I as storageBatch,y as resolvePrefixRangeEnd,L as requireStorageCapability,g as matchesScanOptions,S as encodeStorageKeyComponent,k as decodeStorageKeyComponent,J as assertStorageBatchOperationCount,j as assertDurableStorageForRecovery,z as WEFT_RESERVED_KEY_PREFIXES,Z as StorageBatchOperationLimitExceededError,u as MAX_SCAN_LIMIT,G as MAX_BATCH_OPERATIONS,i as KEYS,V as DEFAULT_SCOPE};
|
|
@@ -16,4 +16,4 @@
|
|
|
16
16
|
* console.log(isWeftKey); // true
|
|
17
17
|
* ```
|
|
18
18
|
*/
|
|
19
|
-
export declare const WEFT_RESERVED_KEY_PREFIXES: readonly ["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:"];
|
|
19
|
+
export declare const WEFT_RESERVED_KEY_PREFIXES: readonly ["actrec:", "archive:", "async-act:", "attr:", "audit:bulk:", "blob:", "budget:", "budget-charged:", "child-by-parent:", "ev:", "fleet-event-by-workflow:", "fleet-event:", "fleet-event-tail", "idx:", "lease:", "liveness:", "offload:", "op:", "review:", "schedule:", "schedule-due:", "schedule-run-by-schedule:", "schedule-run-link:", "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-teardown-succeeded:", "wf-terminal:"];
|
|
@@ -7,6 +7,7 @@ export const WEFT_RESERVED_KEY_PREFIXES = [
|
|
|
7
7
|
"blob:",
|
|
8
8
|
"budget:",
|
|
9
9
|
"budget-charged:",
|
|
10
|
+
"child-by-parent:",
|
|
10
11
|
"ev:",
|
|
11
12
|
"fleet-event-by-workflow:",
|
|
12
13
|
"fleet-event:",
|
|
@@ -19,6 +20,8 @@ export const WEFT_RESERVED_KEY_PREFIXES = [
|
|
|
19
20
|
"review:",
|
|
20
21
|
"schedule:",
|
|
21
22
|
"schedule-due:",
|
|
23
|
+
"schedule-run-by-schedule:",
|
|
24
|
+
"schedule-run-link:",
|
|
22
25
|
"schedule-run:",
|
|
23
26
|
"sig:",
|
|
24
27
|
"sigres:",
|
|
@@ -44,5 +47,6 @@ export const WEFT_RESERVED_KEY_PREFIXES = [
|
|
|
44
47
|
"wf-teardown:",
|
|
45
48
|
"wf-teardown-deadletter:",
|
|
46
49
|
"wf-teardown-needed:",
|
|
50
|
+
"wf-teardown-succeeded:",
|
|
47
51
|
"wf-terminal:"
|
|
48
52
|
];
|
package/dist/storage/lmdb.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var d=import.meta.require,p=(E,_,F)=>{if(_!=null){if(typeof _!=="object"&&typeof _!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let Y;if(F)Y=_[Symbol.asyncDispose];if(Y===void 0)Y=_[Symbol.dispose];if(typeof Y!=="function")throw TypeError("Object not disposable");E.push([F,Y,_])}else if(F)E.push([F]);return _},a=(E,_,F)=>{let Y=(U)=>_=F?new SuppressedError(U,_,"An error was suppressed during disposal"):(F=!0,U),X=(U)=>{while(U=E.pop())try{var Q=U[1]&&U[1].call(U[2]);if(U[0])return Promise.resolve(Q).then(X,(J)=>(Y(J),X()))}catch(J){Y(J)}if(F)throw _};return X()};function H(E,_,F){if(!E.capabilities()[_])throw Error(`Feature "${F}" requires storage capability "${_}", but this storage backend does not provide it.`)}function y(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 V="default";async function S(E,_){return await E.get(_)!==null}async function*$(E,_,F){for await(let[Y]of E.scan(_,F))yield Y}async function q(E,_){let F=0;for await(let Y of $(E,_))F++;return F}async function B(E,_){let F=[];for await(let Y of $(E,_))F.push({type:"delete",key:Y});if(F.length===0)return 0;return await E.batch(F),F.length}async function C(E,_,F){let Y=[];for await(let X of $(E,_,F))Y.push({type:"delete",key:X});if(Y.length===0)return 0;return await E.batch(Y),Y.length}var g=["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:"];var L=1e4,_E=1e4;class z extends Error{code="StorageBatchOperationLimitExceededError";cap=L;count;target;constructor(E,_){super(`${E} count ${_} exceeds MAX_BATCH_OPERATIONS (${L}).`);this.name="StorageBatchOperationLimitExceededError",this.target=E,this.count=_}}function M(E,_){if(_>L)throw new z(E,_)}function j(E){return E.length>0?E.slice(0,-1)+String.fromCharCode(E.charCodeAt(E.length-1)+1):"\xFF"}function D(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 K(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 h(E,_){if(E.has)return E.has(_);return S(E,_)}function v(E,_,F){if(E.keys)return E.keys(_,F);return $(E,_,F)}async function P(E,_){if(E.count)return E.count(_);return q(E,_)}async function O(E,_){if(E.deletePrefix)return E.deletePrefix(_);return B(E,_)}async function FE(E,_){M("batch operations",_.length),await E.batch(_)}async function b(E,_,F){if(M("conditionalBatch conditions",_.length),M("conditionalBatch operations",F.length),H(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 W(E){return encodeURIComponent(E)}function WE(E){return decodeURIComponent(E)}function YE(E){try{return decodeURIComponent(E)}catch{return null}}var G=(E)=>String(E).padStart(16,"0"),I="0",w="1",A=(E,_,F,Y)=>`sig:${W(E)}:${W(_)}:${Y}:${W(F)}`,XE={workflow:(E)=>`wf:${W(E)}`,checkpoint:(E)=>`wf:${W(E)}:ckpt`,checkpointHistory:(E,_)=>`wf:${W(E)}:ckpt:${String(_).padStart(10,"0")}`,timelinePrefix:(E)=>`wf:${W(E)}:timeline:`,timeline:(E,_)=>`wf:${W(E)}:timeline:${String(_).padStart(10,"0")}`,schedule:(E)=>`schedule:${W(E)}`,scheduleTick:(E,_)=>`schedule-due:${String(E).padStart(16,"0")}:${W(_)}`,scheduleRun:(E)=>`schedule-run:${W(E)}`,operation:(E,_,F)=>`op:${E}:${G(_)}:${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:${G(E)}:${W(_)}:${W(F)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(E,_)=>`op:resolved-by-time:${G(E)}:${W(_)}`,asyncActivity:(E,_)=>`async-act:v1:${W(E)}:${W(_)}`,asyncActivityResolution:(E,_)=>`async-act:v1:${W(E)}:${W(_)}:resolution`,activityReconciliationPrefix:(E)=>`actrec:v1:${W(E)}:`,activityReconciliation:(E,_,F)=>`actrec:v1:${W(E)}:${W(_)}:${F}`,eventPrefix:(E)=>`ev:${W(E)}:`,event:(E,_)=>`ev:${W(E)}:${String(_).padStart(10,"0")}`,eventHead:(E)=>`ev:${W(E)}:head`,eventWatermark:(E)=>`ev:${W(E)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(E)=>`fleet-event:${String(E).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(E)=>`fleet-event-by-workflow:${W(E)}:`,fleetEventByWorkflow:(E,_)=>`fleet-event-by-workflow:${W(E)}:${String(_).padStart(10,"0")}`,signal:(E,_,F)=>A(E,_,F,w),startSignal:(E,_,F)=>A(E,_,F,I),signalSequence:(E)=>`sigseq:v1:${W(E)}`,signalAcceptedResponsePrefix:(E)=>`sigres:v1:${W(E)}:`,signalAcceptedResponse:(E,_,F)=>`sigres:v1:${W(E)}:${W(_)}:${W(F)}`,deadline:(E,_)=>`wf-deadline:${G(E)}:${W(_)}`,terminalCleanup:(E,_)=>`wf-cleanup:${G(E)}:${W(_)}`,teardownTimer:(E,_)=>`wf-teardown:${G(E)}:${W(_)}`,delayedStart:(E,_)=>`wf-delayed:${G(E)}:${W(_)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(E,_)=>`wf-terminal:${G(E)}:${W(_)}`,attribute:(E)=>`attr:${W(E)}`,attributeIndex:(E,_,F)=>`idx:${E}:${_}:${W(F)}`,tagIndex:(E,_)=>`tag:${W(E)}:${W(_)}`,updatePrefix:(E)=>`upd:${W(E)}:`,update:(E,_)=>`upd:${W(E)}:${_}`,updateResponse:(E)=>`upr:${E}`,updateIdempotency:(E,_)=>`upk:${W(E)}:${_}`,startIdempotency:(E)=>`start-idem:${W(E)}`,startIdempotencySignalId:(E)=>`start-idem:${E}`,livenessPrefix:()=>"liveness:",liveness:(E)=>`liveness:${W(E)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(E,_,F)=>`budget:${E}:${_}:${F}`,review:(E,_)=>`review:${W(E)}:${_}`,workflowHeaders:(E)=>`wf-headers:${W(E)}`,childCancellationPrefix:(E)=>`child-cancel:${W(E)}:`,childCancellation:(E,_)=>`child-cancel:${W(E)}:${W(_)}`,terminalCleanupNeeded:(E)=>`wf-cleanup-needed:${W(E)}`,workflowConcurrency:(E,_)=>`wf-concurrency:${W(E)}:${W(_)}`,workflowConcurrencyHolder:(E)=>`wf-concurrency-holder:${W(E)}`,workflowHasServices:(E)=>`wf-has-services:${W(E)}`,finalizerState:(E)=>`wf-finalizer-state:${W(E)}`,teardownOwed:(E)=>`wf-teardown-needed:${W(E)}`,teardownDeadLetter:(E)=>`wf-teardown-deadletter:${W(E)}`,offload:(E,_)=>`offload:${W(E)}:${_}`,archive:(E,_)=>`archive:${W(E)}:${_}`,stateExecution:(E,_)=>`state:execution:${W(E)}:${W(_)}`,stateWorkflow:(E,_)=>`state:workflow-scope:${V}:${W(E)}:${W(_)}`,streamChunkPrefix:(E,_)=>`blob:${W(E)}:${_}:chunk:`,streamChunk:(E,_,F)=>`blob:${W(E)}:${_}:chunk:${String(F).padStart(10,"0")}`,streamTail:(E,_)=>`blob:${W(E)}:${_}:tail`,streamMetadata:(E,_)=>`blob:${W(E)}:${_}:meta`,budgetCharged:(E)=>`budget-charged:${E}`,toolEffect:(E,_,F)=>`tool-effect:${W(E)}:${_}:${F}`,workflowVisibilityStatus:(E,_)=>`wf-idx-status:${W(E)}:${W(_)}`,workflowVisibilityType:(E,_)=>`wf-idx-type:${W(E)}:${W(_)}`,workflowVisibilityCreated:(E,_)=>`wf-idx-created:${G(E)}:${W(_)}`,workflowVisibilityUpdated:(E,_)=>`wf-idx-updated:${G(E)}:${W(_)}`,workflowVisibilityDeadline:(E,_)=>`wf-idx-deadline:${G(E)}:${W(_)}`,workflowVisibilityManifest:(E)=>`wf-idx-manifest:${W(E)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function k(E){if(E===void 0)return;if(typeof E!=="number"||!Number.isInteger(E)||E<0)throw Error("deleteRange limit must be a finite non-negative integer");return E===0?0:E}function T(E){let _={},F=!1;for(let X of["gt","gte","lt","lte"]){let U=E[X];if(U===void 0)continue;if(typeof U!=="string")throw Error("deleteRange bounds must be strings");_[X]=U,F=!0}if(!F)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let Y=k(E.limit);if(Y!==void 0)_.limit=Y;return _}async function m(E,_,F){let Y=T(F);if(E.deleteRange)return E.deleteRange(_,Y);return C(E,_,Y)}function N(E){return E.replaceAll(/:+$/g,"")}function l(E,_){let F=N(E),Y=N(_);if(F.length===0)return Y;if(Y.length===0)return F;return`${F}:${Y}`}class R{#E;#W;constructor(E,_){this.#E=E,this.#W=N(_)}#_(E){if(this.#W.length===0)return E;return E.length===0?`${this.#W}:`:`${this.#W}:${E}`}#F(E){if(this.#W.length===0)return E;return E.slice(this.#W.length+1)}#Y(E={}){let _={};if(E.limit!==void 0)_.limit=E.limit;if(E.reverse!==void 0)_.reverse=E.reverse;if(E.gt!==void 0)_.gt=this.#_(E.gt);if(E.gte!==void 0)_.gte=this.#_(E.gte);if(E.lt!==void 0)_.lt=this.#_(E.lt);if(E.lte!==void 0)_.lte=this.#_(E.lte);return _}#X(E){let _={};if(E.limit!==void 0)_.limit=E.limit;if(E.gt!==void 0)_.gt=this.#_(E.gt);if(E.gte!==void 0)_.gte=this.#_(E.gte);if(E.lt!==void 0)_.lt=this.#_(E.lt);if(E.lte!==void 0)_.lte=this.#_(E.lte);return _}capabilities(){return this.#E.capabilities()}scoped(E){return new R(this.#E,l(this.#W,E))}async get(E){return this.#E.get(this.#_(E))}async put(E,_){await this.#E.put(this.#_(E),_)}async delete(E){await this.#E.delete(this.#_(E))}async*scan(E,_){for await(let[F,Y]of this.#E.scan(this.#_(E),this.#Y(_)))yield[this.#F(F),Y]}async batch(E){M("batch operations",E.length),await this.#E.batch(E.map((_)=>{if(_.type==="put")return{type:"put",key:this.#_(_.key),value:_.value};return{type:"delete",key:this.#_(_.key)}}))}async conditionalBatch(E,_){return b(this.#E,E.map((F)=>({key:this.#_(F.key),expectedValue:F.expectedValue})),_.map((F)=>{if(F.type==="put")return{type:"put",key:this.#_(F.key),value:F.value};return{type:"delete",key:this.#_(F.key)}}))}async has(E){return h(this.#E,this.#_(E))}async deletePrefix(E){return O(this.#E,this.#_(E))}async deleteRange(E,_){let F=this.#X(T(_));return m(this.#E,this.#_(E),F)}async*keys(E,_){for await(let F of v(this.#E,this.#_(E),this.#Y(_)))yield this.#F(F)}async count(E){return P(this.#E,this.#_(E))}[Symbol.dispose](){this.#E[Symbol.dispose]()}}function c(E,_){return new R(E,_)}import*as u from"lmdb";class f{#E;#W=!1;#_=null;constructor(E){this.#E=u.open({path:E,encoding:"binary"})}#F(){if(this.#W)throw Error("LMDBStorage is closed")}capabilities(){return{persistence:"local",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!1}}async get(E){this.#F();let _=this.#E.get(E);if(_===void 0)return null;return new Uint8Array(_)}async put(E,_){this.#F(),await this.#E.put(E,Buffer.from(_))}async delete(E){this.#F(),await this.#E.remove(E)}async has(E){return this.#F(),this.#E.doesExist(E)}async deletePrefix(E){this.#F();let _=[];for await(let F of this.keys(E))_.push(F);if(_.length===0)return 0;return await this.#E.batch(()=>{for(let F of _)this.#E.remove(F)}),_.length}async deleteRange(E,_){this.#F();let F=T(_),Y=[];for await(let X of this.keys(E,F))Y.push(X);if(Y.length===0)return 0;return await this.#E.batch(()=>{for(let X of Y)this.#E.remove(X)}),Y.length}async*scan(E,_={}){this.#F();let{limit:F,reverse:Y}=_,X=j(E),U=Y?this.#E.getRange({start:X,end:E,reverse:!0}):this.#E.getRange({start:E,end:X}),Q=0,J=!1;for(let{key:Z,value:x}of U){if(!Z.startsWith(E)){if(Y&&!J)continue;break}if(J=!0,!D(Z,_))continue;if(F!==void 0&&Q>=F)break;yield[Z,new Uint8Array(x)],Q++}}async*keys(E,_={}){this.#F();let{limit:F,reverse:Y}=_,X=j(E),U=Y?this.#E.getKeys({start:X,end:E,reverse:!0}):this.#E.getKeys({start:E,end:X}),Q=0,J=!1;for(let Z of U){if(!Z.startsWith(E)){if(Y&&!J)continue;break}if(J=!0,!D(Z,_))continue;if(F!==void 0&&Q>=F)break;yield Z,Q++}}async count(E){this.#F();let _=j(E);return this.#E.getKeysCount({start:E,end:_})}scoped(E){return this.#F(),c(this,E)}async batch(E){if(this.#F(),M("batch operations",E.length),E.length===0)return;await this.#E.batch(()=>{for(let _ of E)if(_.type==="put")this.#E.put(_.key,Buffer.from(_.value));else this.#E.remove(_.key)})}async conditionalBatch(E,_){return this.#F(),M("conditionalBatch conditions",E.length),M("conditionalBatch operations",_.length),this.#E.transactionSync(()=>{for(let Y of E){let X=this.#E.get(Y.key),U=X===void 0?null:new Uint8Array(X);if(!K(U,Y.expectedValue))return!1}for(let Y of _)if(Y.type==="put")this.#E.putSync(Y.key,Buffer.from(Y.value));else this.#E.removeSync(Y.key);return!0})}close(){return this.#W=!0,this.#_??=(async()=>{await Promise.resolve(),await this.#E.close()})(),this.#_}[Symbol.dispose](){this.close()}}export{f as LMDBStorage};
|
|
2
|
+
var d=import.meta.require,p=(_,F,E)=>{if(F!=null){if(typeof F!=="object"&&typeof F!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let X;if(E)X=F[Symbol.asyncDispose];if(X===void 0)X=F[Symbol.dispose];if(typeof X!=="function")throw TypeError("Object not disposable");_.push([E,X,F])}else if(E)_.push([E]);return F},a=(_,F,E)=>{let X=(G)=>F=E?new SuppressedError(G,F,"An error was suppressed during disposal"):(E=!0,G),U=(G)=>{while(G=_.pop())try{var Z=G[1]&&G[1].call(G[2]);if(G[0])return Promise.resolve(Z).then(U,(M)=>(X(M),U()))}catch(M){X(M)}if(E)throw F};return U()};function L(_,F,E){if(!_.capabilities()[F])throw Error(`Feature "${E}" requires storage capability "${F}", but this storage backend does not provide it.`)}function x(_){let F=_.capabilities(),E=[];if(F.persistence!=="local"&&F.persistence!=="remote")E.push(`persistence must be "local" or "remote" (got "${F.persistence}")`);if(F.readAfterWrite!=="linearizable")E.push(`readAfterWrite must be "linearizable" (got "${F.readAfterWrite}")`);if(F.scanConsistency!=="snapshot")E.push(`scanConsistency must be "snapshot" (got "${F.scanConsistency}")`);if(!F.atomicBatch)E.push("atomicBatch must be true");if(!F.conditionalBatch)E.push("conditionalBatch must be true");if(E.length>0)throw Error(`Storage is not durable enough for recovery: ${E.join("; ")}.`)}var D="default";async function T(_,F){return await _.get(F)!==null}async function*j(_,F,E){for await(let[X]of _.scan(F,E))yield X}async function W(_,F){let E=0;for await(let X of j(_,F))E++;return E}async function B(_,F){let E=[];for await(let X of j(_,F))E.push({type:"delete",key:X});if(E.length===0)return 0;return await _.batch(E),E.length}async function C(_,F,E){let X=[];for await(let U of j(_,F,E))X.push({type:"delete",key:U});if(X.length===0)return 0;return await _.batch(X),X.length}var g=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","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-teardown-succeeded:","wf-terminal:"];var N=1e4,F_=1e4;class z extends Error{code="StorageBatchOperationLimitExceededError";cap=N;count;target;constructor(_,F){super(`${_} count ${F} exceeds MAX_BATCH_OPERATIONS (${N}).`);this.name="StorageBatchOperationLimitExceededError",this.target=_,this.count=F}}function Q(_,F){if(F>N)throw new z(_,F)}function V(_){return _.length>0?_.slice(0,-1)+String.fromCharCode(_.charCodeAt(_.length-1)+1):"\xFF"}function R(_,F={}){if(F.gt!==void 0&&_<=F.gt)return!1;if(F.gte!==void 0&&_<F.gte)return!1;if(F.lt!==void 0&&_>=F.lt)return!1;if(F.lte!==void 0&&_>F.lte)return!1;return!0}function K(_,F){if(_===null||F===null)return _===F;if(_.byteLength!==F.byteLength)return!1;for(let E=0;E<_.byteLength;E++)if(_[E]!==F[E])return!1;return!0}async function v(_,F){if(_.has)return _.has(F);return T(_,F)}function h(_,F,E){if(_.keys)return _.keys(F,E);return j(_,F,E)}async function P(_,F){if(_.count)return _.count(F);return W(_,F)}async function O(_,F){if(_.deletePrefix)return _.deletePrefix(F);return B(_,F)}async function E_(_,F){Q("batch operations",F.length),await _.batch(F)}async function b(_,F,E){if(Q("conditionalBatch conditions",F.length),Q("conditionalBatch operations",E.length),L(_,"conditionalBatch","storageConditionalBatch"),!_.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return _.conditionalBatch(F,E)}function Y(_){return encodeURIComponent(_)}function Y_(_){return decodeURIComponent(_)}function X_(_){try{return decodeURIComponent(_)}catch{return null}}var J=(_)=>String(_).padStart(16,"0"),I="0",w="1",A=(_,F,E,X)=>`sig:${Y(_)}:${Y(F)}:${X}:${Y(E)}`,U_={workflow:(_)=>`wf:${Y(_)}`,checkpoint:(_)=>`wf:${Y(_)}:ckpt`,checkpointHistory:(_,F)=>`wf:${Y(_)}:ckpt:${String(F).padStart(10,"0")}`,timelinePrefix:(_)=>`wf:${Y(_)}:timeline:`,timeline:(_,F)=>`wf:${Y(_)}:timeline:${String(F).padStart(10,"0")}`,schedule:(_)=>`schedule:${Y(_)}`,scheduleTick:(_,F)=>`schedule-due:${String(_).padStart(16,"0")}:${Y(F)}`,scheduleRun:(_)=>`schedule-run:${Y(_)}`,scheduleRunLink:(_)=>`schedule-run-link:${Y(_)}`,scheduleRunBySchedulePrefix:(_)=>`schedule-run-by-schedule:${Y(_)}:`,scheduleRunBySchedule:(_,F)=>`schedule-run-by-schedule:${Y(_)}:${Y(F)}`,operation:(_,F,E)=>`op:${_}:${J(F)}:${E}`,operationInflight:(_)=>`op:inflight:${_}`,operationQueued:(_)=>`op:queued:${_}`,operationResolved:(_)=>`op:resolved:${_}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(_)=>`op:dead-letter:${_}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(_,F,E)=>`audit:bulk:${J(_)}:${Y(F)}:${Y(E)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(_,F)=>`op:resolved-by-time:${J(_)}:${Y(F)}`,asyncActivity:(_,F)=>`async-act:v1:${Y(_)}:${Y(F)}`,asyncActivityResolution:(_,F)=>`async-act:v1:${Y(_)}:${Y(F)}:resolution`,activityReconciliationPrefix:(_)=>`actrec:v1:${Y(_)}:`,activityReconciliation:(_,F,E)=>`actrec:v1:${Y(_)}:${Y(F)}:${E}`,eventPrefix:(_)=>`ev:${Y(_)}:`,event:(_,F)=>`ev:${Y(_)}:${String(F).padStart(10,"0")}`,eventHead:(_)=>`ev:${Y(_)}:head`,eventWatermark:(_)=>`ev:${Y(_)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(_)=>`fleet-event:${String(_).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(_)=>`fleet-event-by-workflow:${Y(_)}:`,fleetEventByWorkflow:(_,F)=>`fleet-event-by-workflow:${Y(_)}:${String(F).padStart(10,"0")}`,signal:(_,F,E)=>A(_,F,E,w),startSignal:(_,F,E)=>A(_,F,E,I),signalSequence:(_)=>`sigseq:v1:${Y(_)}`,signalAcceptedResponsePrefix:(_)=>`sigres:v1:${Y(_)}:`,signalAcceptedResponse:(_,F,E)=>`sigres:v1:${Y(_)}:${Y(F)}:${Y(E)}`,deadline:(_,F)=>`wf-deadline:${J(_)}:${Y(F)}`,terminalCleanup:(_,F)=>`wf-cleanup:${J(_)}:${Y(F)}`,teardownTimer:(_,F)=>`wf-teardown:${J(_)}:${Y(F)}`,delayedStart:(_,F)=>`wf-delayed:${J(_)}:${Y(F)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(_,F)=>`wf-terminal:${J(_)}:${Y(F)}`,attribute:(_)=>`attr:${Y(_)}`,attributeIndex:(_,F,E)=>`idx:${_}:${F}:${Y(E)}`,tagIndex:(_,F)=>`tag:${Y(_)}:${Y(F)}`,updatePrefix:(_)=>`upd:${Y(_)}:`,update:(_,F)=>`upd:${Y(_)}:${F}`,updateResponse:(_)=>`upr:${_}`,updateIdempotency:(_,F)=>`upk:${Y(_)}:${F}`,startIdempotency:(_)=>`start-idem:${Y(_)}`,startIdempotencySignalId:(_)=>`start-idem:${_}`,livenessPrefix:()=>"liveness:",liveness:(_)=>`liveness:${Y(_)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(_,F,E)=>`budget:${_}:${F}:${E}`,review:(_,F)=>`review:${Y(_)}:${F}`,workflowHeaders:(_)=>`wf-headers:${Y(_)}`,childCancellationPrefix:(_)=>`child-cancel:${Y(_)}:`,childCancellation:(_,F)=>`child-cancel:${Y(_)}:${Y(F)}`,childWorkflowByParentPrefix:(_,F)=>`child-by-parent:${Y(_)}:${F===void 0?"":`${Y(F)}:`}`,childWorkflowByParent:(_,F,E)=>`child-by-parent:${Y(_)}:${F===void 0?"":`${Y(F)}:`}${Y(E)}`,terminalCleanupNeeded:(_)=>`wf-cleanup-needed:${Y(_)}`,workflowConcurrency:(_,F)=>`wf-concurrency:${Y(_)}:${Y(F)}`,workflowConcurrencyHolder:(_)=>`wf-concurrency-holder:${Y(_)}`,workflowHasServices:(_)=>`wf-has-services:${Y(_)}`,finalizerState:(_)=>`wf-finalizer-state:${Y(_)}`,teardownOwed:(_)=>`wf-teardown-needed:${Y(_)}`,teardownSucceeded:(_)=>`wf-teardown-succeeded:${Y(_)}`,teardownDeadLetter:(_)=>`wf-teardown-deadletter:${Y(_)}`,offload:(_,F)=>`offload:${Y(_)}:${F}`,archive:(_,F)=>`archive:${Y(_)}:${F}`,stateExecution:(_,F)=>`state:execution:${Y(_)}:${Y(F)}`,stateWorkflow:(_,F)=>`state:workflow-scope:${D}:${Y(_)}:${Y(F)}`,streamChunkPrefix:(_,F)=>`blob:${Y(_)}:${F}:chunk:`,streamChunk:(_,F,E)=>`blob:${Y(_)}:${F}:chunk:${String(E).padStart(10,"0")}`,streamTail:(_,F)=>`blob:${Y(_)}:${F}:tail`,streamMetadata:(_,F)=>`blob:${Y(_)}:${F}:meta`,budgetCharged:(_)=>`budget-charged:${_}`,toolEffect:(_,F,E)=>`tool-effect:${Y(_)}:${F}:${E}`,workflowVisibilityStatus:(_,F)=>`wf-idx-status:${Y(_)}:${Y(F)}`,workflowVisibilityType:(_,F)=>`wf-idx-type:${Y(_)}:${Y(F)}`,workflowVisibilityCreated:(_,F)=>`wf-idx-created:${J(_)}:${Y(F)}`,workflowVisibilityUpdated:(_,F)=>`wf-idx-updated:${J(_)}:${Y(F)}`,workflowVisibilityDeadline:(_,F)=>`wf-idx-deadline:${J(_)}:${Y(F)}`,workflowVisibilityManifest:(_)=>`wf-idx-manifest:${Y(_)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function k(_){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 H(_){let F={},E=!1;for(let U of["gt","gte","lt","lte"]){let G=_[U];if(G===void 0)continue;if(typeof G!=="string")throw Error("deleteRange bounds must be strings");F[U]=G,E=!0}if(!E)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let X=k(_.limit);if(X!==void 0)F.limit=X;return F}async function m(_,F,E){let X=H(E);if(_.deleteRange)return _.deleteRange(F,X);return C(_,F,X)}function S(_){return _.replaceAll(/:+$/g,"")}function l(_,F){let E=S(_),X=S(F);if(E.length===0)return X;if(X.length===0)return E;return`${E}:${X}`}class q{#_;#Y;constructor(_,F){this.#_=_,this.#Y=S(F)}#F(_){if(this.#Y.length===0)return _;return _.length===0?`${this.#Y}:`:`${this.#Y}:${_}`}#E(_){if(this.#Y.length===0)return _;return _.slice(this.#Y.length+1)}#X(_={}){let F={};if(_.limit!==void 0)F.limit=_.limit;if(_.reverse!==void 0)F.reverse=_.reverse;if(_.gt!==void 0)F.gt=this.#F(_.gt);if(_.gte!==void 0)F.gte=this.#F(_.gte);if(_.lt!==void 0)F.lt=this.#F(_.lt);if(_.lte!==void 0)F.lte=this.#F(_.lte);return F}#U(_){let F={};if(_.limit!==void 0)F.limit=_.limit;if(_.gt!==void 0)F.gt=this.#F(_.gt);if(_.gte!==void 0)F.gte=this.#F(_.gte);if(_.lt!==void 0)F.lt=this.#F(_.lt);if(_.lte!==void 0)F.lte=this.#F(_.lte);return F}capabilities(){return this.#_.capabilities()}scoped(_){return new q(this.#_,l(this.#Y,_))}async get(_){return this.#_.get(this.#F(_))}async put(_,F){await this.#_.put(this.#F(_),F)}async delete(_){await this.#_.delete(this.#F(_))}async*scan(_,F){for await(let[E,X]of this.#_.scan(this.#F(_),this.#X(F)))yield[this.#E(E),X]}async batch(_){Q("batch operations",_.length),await this.#_.batch(_.map((F)=>{if(F.type==="put")return{type:"put",key:this.#F(F.key),value:F.value};return{type:"delete",key:this.#F(F.key)}}))}async conditionalBatch(_,F){return b(this.#_,_.map((E)=>({key:this.#F(E.key),expectedValue:E.expectedValue})),F.map((E)=>{if(E.type==="put")return{type:"put",key:this.#F(E.key),value:E.value};return{type:"delete",key:this.#F(E.key)}}))}async has(_){return v(this.#_,this.#F(_))}async deletePrefix(_){return O(this.#_,this.#F(_))}async deleteRange(_,F){let E=this.#U(H(F));return m(this.#_,this.#F(_),E)}async*keys(_,F){for await(let E of h(this.#_,this.#F(_),this.#X(F)))yield this.#E(E)}async count(_){return P(this.#_,this.#F(_))}[Symbol.dispose](){this.#_[Symbol.dispose]()}}function c(_,F){return new q(_,F)}import*as u from"lmdb";class f{#_;#Y=!1;#F=null;constructor(_){this.#_=u.open({path:_,encoding:"binary"})}#E(){if(this.#Y)throw Error("LMDBStorage is closed")}capabilities(){return{persistence:"local",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!1}}async get(_){this.#E();let F=this.#_.get(_);if(F===void 0)return null;return new Uint8Array(F)}async put(_,F){this.#E(),await this.#_.put(_,Buffer.from(F))}async delete(_){this.#E(),await this.#_.remove(_)}async has(_){return this.#E(),this.#_.doesExist(_)}async deletePrefix(_){this.#E();let F=[];for await(let E of this.keys(_))F.push(E);if(F.length===0)return 0;return await this.#_.batch(()=>{for(let E of F)this.#_.remove(E)}),F.length}async deleteRange(_,F){this.#E();let E=H(F),X=[];for await(let U of this.keys(_,E))X.push(U);if(X.length===0)return 0;return await this.#_.batch(()=>{for(let U of X)this.#_.remove(U)}),X.length}async*scan(_,F={}){this.#E();let{limit:E,reverse:X}=F,U=V(_),G=X?this.#_.getRange({start:U,end:_,reverse:!0}):this.#_.getRange({start:_,end:U}),Z=0,M=!1;for(let{key:$,value:y}of G){if(!$.startsWith(_)){if(X&&!M)continue;break}if(M=!0,!R($,F))continue;if(E!==void 0&&Z>=E)break;yield[$,new Uint8Array(y)],Z++}}async*keys(_,F={}){this.#E();let{limit:E,reverse:X}=F,U=V(_),G=X?this.#_.getKeys({start:U,end:_,reverse:!0}):this.#_.getKeys({start:_,end:U}),Z=0,M=!1;for(let $ of G){if(!$.startsWith(_)){if(X&&!M)continue;break}if(M=!0,!R($,F))continue;if(E!==void 0&&Z>=E)break;yield $,Z++}}async count(_){this.#E();let F=V(_);return this.#_.getKeysCount({start:_,end:F})}scoped(_){return this.#E(),c(this,_)}async batch(_){if(this.#E(),Q("batch operations",_.length),_.length===0)return;await this.#_.batch(()=>{for(let F of _)if(F.type==="put")this.#_.put(F.key,Buffer.from(F.value));else this.#_.remove(F.key)})}async conditionalBatch(_,F){return this.#E(),Q("conditionalBatch conditions",_.length),Q("conditionalBatch operations",F.length),this.#_.transactionSync(()=>{for(let X of _){let U=this.#_.get(X.key),G=U===void 0?null:new Uint8Array(U);if(!K(G,X.expectedValue))return!1}for(let X of F)if(X.type==="put")this.#_.putSync(X.key,Buffer.from(X.value));else this.#_.removeSync(X.key);return!0})}close(){return this.#Y=!0,this.#F??=(async()=>{await Promise.resolve(),await this.#_.close()})(),this.#F}[Symbol.dispose](){this.close()}}export{f as LMDBStorage};
|
package/dist/storage/memory.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var f=import.meta.require,l=(_,E,F)=>{if(E!=null){if(typeof E!=="object"&&typeof E!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let Y;if(F)Y=E[Symbol.asyncDispose];if(Y===void 0)Y=E[Symbol.dispose];if(typeof Y!=="function")throw TypeError("Object not disposable");_.push([F,Y,E])}else if(F)_.push([F]);return E},d=(_,E,F)=>{let Y=(X)=>E=F?new SuppressedError(X,E,"An error was suppressed during disposal"):(F=!0,X),U=(X)=>{while(X=_.pop())try{var J=X[1]&&X[1].call(X[2]);if(X[0])return Promise.resolve(J).then(U,(G)=>(Y(G),U()))}catch(G){Y(G)}if(F)throw E};return U()};function j(_,E,F){if(!_.capabilities()[E])throw Error(`Feature "${F}" requires storage capability "${E}", but this storage backend does not provide it.`)}function u(_){let E=_.capabilities(),F=[];if(E.persistence!=="local"&&E.persistence!=="remote")F.push(`persistence must be "local" or "remote" (got "${E.persistence}")`);if(E.readAfterWrite!=="linearizable")F.push(`readAfterWrite must be "linearizable" (got "${E.readAfterWrite}")`);if(E.scanConsistency!=="snapshot")F.push(`scanConsistency must be "snapshot" (got "${E.scanConsistency}")`);if(!E.atomicBatch)F.push("atomicBatch must be true");if(!E.conditionalBatch)F.push("conditionalBatch must be true");if(F.length>0)throw Error(`Storage is not durable enough for recovery: ${F.join("; ")}.`)}var H="default";async function C(_,E){return await _.get(E)!==null}async function*$(_,E,F){for await(let[Y]of _.scan(E,F))yield Y}async function R(_,E){let F=0;for await(let Y of $(_,E))F++;return F}async function B(_,E){let F=[];for await(let Y of $(_,E))F.push({type:"delete",key:Y});if(F.length===0)return 0;return await _.batch(F),F.length}async function A(_,E,F){let Y=[];for await(let U of $(_,E,F))Y.push({type:"delete",key:U});if(Y.length===0)return 0;return await _.batch(Y),Y.length}var x=["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:"];var L=1e4,o=1e4;class z extends Error{code="StorageBatchOperationLimitExceededError";cap=L;count;target;constructor(_,E){super(`${_} count ${E} exceeds MAX_BATCH_OPERATIONS (${L}).`);this.name="StorageBatchOperationLimitExceededError",this.target=_,this.count=E}}function Q(_,E){if(E>L)throw new z(_,E)}function Z(_){return _.length>0?_.slice(0,-1)+String.fromCharCode(_.charCodeAt(_.length-1)+1):"\xFF"}function V(_,E={}){if(E.gt!==void 0&&_<=E.gt)return!1;if(E.gte!==void 0&&_<E.gte)return!1;if(E.lt!==void 0&&_>=E.lt)return!1;if(E.lte!==void 0&&_>E.lte)return!1;return!0}function P(_,E){if(_===null||E===null)return _===E;if(_.byteLength!==E.byteLength)return!1;for(let F=0;F<_.byteLength;F++)if(_[F]!==E[F])return!1;return!0}async function v(_,E){if(_.has)return _.has(E);return C(_,E)}function h(_,E,F){if(_.keys)return _.keys(E,F);return $(_,E,F)}async function O(_,E){if(_.count)return _.count(E);return R(_,E)}async function K(_,E){if(_.deletePrefix)return _.deletePrefix(E);return B(_,E)}async function __(_,E){Q("batch operations",E.length),await _.batch(E)}async function b(_,E,F){if(Q("conditionalBatch conditions",E.length),Q("conditionalBatch operations",F.length),j(_,"conditionalBatch","storageConditionalBatch"),!_.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return _.conditionalBatch(E,F)}function W(_){return encodeURIComponent(_)}function E_(_){return decodeURIComponent(_)}function F_(_){try{return decodeURIComponent(_)}catch{return null}}var M=(_)=>String(_).padStart(16,"0"),g="0",I="1",S=(_,E,F,Y)=>`sig:${W(_)}:${W(E)}:${Y}:${W(F)}`,W_={workflow:(_)=>`wf:${W(_)}`,checkpoint:(_)=>`wf:${W(_)}:ckpt`,checkpointHistory:(_,E)=>`wf:${W(_)}:ckpt:${String(E).padStart(10,"0")}`,timelinePrefix:(_)=>`wf:${W(_)}:timeline:`,timeline:(_,E)=>`wf:${W(_)}:timeline:${String(E).padStart(10,"0")}`,schedule:(_)=>`schedule:${W(_)}`,scheduleTick:(_,E)=>`schedule-due:${String(_).padStart(16,"0")}:${W(E)}`,scheduleRun:(_)=>`schedule-run:${W(_)}`,operation:(_,E,F)=>`op:${_}:${M(E)}:${F}`,operationInflight:(_)=>`op:inflight:${_}`,operationQueued:(_)=>`op:queued:${_}`,operationResolved:(_)=>`op:resolved:${_}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(_)=>`op:dead-letter:${_}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(_,E,F)=>`audit:bulk:${M(_)}:${W(E)}:${W(F)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(_,E)=>`op:resolved-by-time:${M(_)}:${W(E)}`,asyncActivity:(_,E)=>`async-act:v1:${W(_)}:${W(E)}`,asyncActivityResolution:(_,E)=>`async-act:v1:${W(_)}:${W(E)}:resolution`,activityReconciliationPrefix:(_)=>`actrec:v1:${W(_)}:`,activityReconciliation:(_,E,F)=>`actrec:v1:${W(_)}:${W(E)}:${F}`,eventPrefix:(_)=>`ev:${W(_)}:`,event:(_,E)=>`ev:${W(_)}:${String(E).padStart(10,"0")}`,eventHead:(_)=>`ev:${W(_)}:head`,eventWatermark:(_)=>`ev:${W(_)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(_)=>`fleet-event:${String(_).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(_)=>`fleet-event-by-workflow:${W(_)}:`,fleetEventByWorkflow:(_,E)=>`fleet-event-by-workflow:${W(_)}:${String(E).padStart(10,"0")}`,signal:(_,E,F)=>S(_,E,F,I),startSignal:(_,E,F)=>S(_,E,F,g),signalSequence:(_)=>`sigseq:v1:${W(_)}`,signalAcceptedResponsePrefix:(_)=>`sigres:v1:${W(_)}:`,signalAcceptedResponse:(_,E,F)=>`sigres:v1:${W(_)}:${W(E)}:${W(F)}`,deadline:(_,E)=>`wf-deadline:${M(_)}:${W(E)}`,terminalCleanup:(_,E)=>`wf-cleanup:${M(_)}:${W(E)}`,teardownTimer:(_,E)=>`wf-teardown:${M(_)}:${W(E)}`,delayedStart:(_,E)=>`wf-delayed:${M(_)}:${W(E)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(_,E)=>`wf-terminal:${M(_)}:${W(E)}`,attribute:(_)=>`attr:${W(_)}`,attributeIndex:(_,E,F)=>`idx:${_}:${E}:${W(F)}`,tagIndex:(_,E)=>`tag:${W(_)}:${W(E)}`,updatePrefix:(_)=>`upd:${W(_)}:`,update:(_,E)=>`upd:${W(_)}:${E}`,updateResponse:(_)=>`upr:${_}`,updateIdempotency:(_,E)=>`upk:${W(_)}:${E}`,startIdempotency:(_)=>`start-idem:${W(_)}`,startIdempotencySignalId:(_)=>`start-idem:${_}`,livenessPrefix:()=>"liveness:",liveness:(_)=>`liveness:${W(_)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(_,E,F)=>`budget:${_}:${E}:${F}`,review:(_,E)=>`review:${W(_)}:${E}`,workflowHeaders:(_)=>`wf-headers:${W(_)}`,childCancellationPrefix:(_)=>`child-cancel:${W(_)}:`,childCancellation:(_,E)=>`child-cancel:${W(_)}:${W(E)}`,terminalCleanupNeeded:(_)=>`wf-cleanup-needed:${W(_)}`,workflowConcurrency:(_,E)=>`wf-concurrency:${W(_)}:${W(E)}`,workflowConcurrencyHolder:(_)=>`wf-concurrency-holder:${W(_)}`,workflowHasServices:(_)=>`wf-has-services:${W(_)}`,finalizerState:(_)=>`wf-finalizer-state:${W(_)}`,teardownOwed:(_)=>`wf-teardown-needed:${W(_)}`,teardownDeadLetter:(_)=>`wf-teardown-deadletter:${W(_)}`,offload:(_,E)=>`offload:${W(_)}:${E}`,archive:(_,E)=>`archive:${W(_)}:${E}`,stateExecution:(_,E)=>`state:execution:${W(_)}:${W(E)}`,stateWorkflow:(_,E)=>`state:workflow-scope:${H}:${W(_)}:${W(E)}`,streamChunkPrefix:(_,E)=>`blob:${W(_)}:${E}:chunk:`,streamChunk:(_,E,F)=>`blob:${W(_)}:${E}:chunk:${String(F).padStart(10,"0")}`,streamTail:(_,E)=>`blob:${W(_)}:${E}:tail`,streamMetadata:(_,E)=>`blob:${W(_)}:${E}:meta`,budgetCharged:(_)=>`budget-charged:${_}`,toolEffect:(_,E,F)=>`tool-effect:${W(_)}:${E}:${F}`,workflowVisibilityStatus:(_,E)=>`wf-idx-status:${W(_)}:${W(E)}`,workflowVisibilityType:(_,E)=>`wf-idx-type:${W(_)}:${W(E)}`,workflowVisibilityCreated:(_,E)=>`wf-idx-created:${M(_)}:${W(E)}`,workflowVisibilityUpdated:(_,E)=>`wf-idx-updated:${M(_)}:${W(E)}`,workflowVisibilityDeadline:(_,E)=>`wf-idx-deadline:${M(_)}:${W(E)}`,workflowVisibilityManifest:(_)=>`wf-idx-manifest:${W(_)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function y(_){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 T(_){let E={},F=!1;for(let U of["gt","gte","lt","lte"]){let X=_[U];if(X===void 0)continue;if(typeof X!=="string")throw Error("deleteRange bounds must be strings");E[U]=X,F=!0}if(!F)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let Y=y(_.limit);if(Y!==void 0)E.limit=Y;return E}async function m(_,E,F){let Y=T(F);if(_.deleteRange)return _.deleteRange(E,Y);return A(_,E,Y)}function D(_){return _.replaceAll(/:+$/g,"")}function w(_,E){let F=D(_),Y=D(E);if(F.length===0)return Y;if(Y.length===0)return F;return`${F}:${Y}`}class N{#_;#F;constructor(_,E){this.#_=_,this.#F=D(E)}#E(_){if(this.#F.length===0)return _;return _.length===0?`${this.#F}:`:`${this.#F}:${_}`}#W(_){if(this.#F.length===0)return _;return _.slice(this.#F.length+1)}#Y(_={}){let E={};if(_.limit!==void 0)E.limit=_.limit;if(_.reverse!==void 0)E.reverse=_.reverse;if(_.gt!==void 0)E.gt=this.#E(_.gt);if(_.gte!==void 0)E.gte=this.#E(_.gte);if(_.lt!==void 0)E.lt=this.#E(_.lt);if(_.lte!==void 0)E.lte=this.#E(_.lte);return E}#X(_){let E={};if(_.limit!==void 0)E.limit=_.limit;if(_.gt!==void 0)E.gt=this.#E(_.gt);if(_.gte!==void 0)E.gte=this.#E(_.gte);if(_.lt!==void 0)E.lt=this.#E(_.lt);if(_.lte!==void 0)E.lte=this.#E(_.lte);return E}capabilities(){return this.#_.capabilities()}scoped(_){return new N(this.#_,w(this.#F,_))}async get(_){return this.#_.get(this.#E(_))}async put(_,E){await this.#_.put(this.#E(_),E)}async delete(_){await this.#_.delete(this.#E(_))}async*scan(_,E){for await(let[F,Y]of this.#_.scan(this.#E(_),this.#Y(E)))yield[this.#W(F),Y]}async batch(_){Q("batch operations",_.length),await this.#_.batch(_.map((E)=>{if(E.type==="put")return{type:"put",key:this.#E(E.key),value:E.value};return{type:"delete",key:this.#E(E.key)}}))}async conditionalBatch(_,E){return b(this.#_,_.map((F)=>({key:this.#E(F.key),expectedValue:F.expectedValue})),E.map((F)=>{if(F.type==="put")return{type:"put",key:this.#E(F.key),value:F.value};return{type:"delete",key:this.#E(F.key)}}))}async has(_){return v(this.#_,this.#E(_))}async deletePrefix(_){return K(this.#_,this.#E(_))}async deleteRange(_,E){let F=this.#X(T(E));return m(this.#_,this.#E(_),F)}async*keys(_,E){for await(let F of h(this.#_,this.#E(_),this.#Y(E)))yield this.#W(F)}async count(_){return O(this.#_,this.#E(_))}[Symbol.dispose](){this.#_[Symbol.dispose]()}}function c(_,E){return new N(_,E)}class k{#_;constructor(){this.#_=new Map}capabilities(){return{persistence:"ephemeral",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#F(_,E,F){return _>=E&&_<F}#E(_,E){let F=[];for(let Y of this.#_.keys())if(this.#F(Y,_,E))F.push(Y);return F.toSorted()}async get(_){return this.#_.get(_)??null}async put(_,E){this.#_.set(_,E)}async delete(_){this.#_.delete(_)}async*scan(_,E={}){let{limit:F,reverse:Y}=E,U=Z(_),X=this.#E(_,U);if(X=X.filter((G)=>V(G,E)),Y)X.reverse();let J=0;for(let G of X){if(F!==void 0&&J>=F)break;let q=this.#_.get(G);if(q!==void 0)yield[G,q],J++}}async batch(_){Q("batch operations",_.length),this.#W(_)}#W(_){for(let E of _)if(E.type==="put")this.#_.set(E.key,E.value);else this.#_.delete(E.key)}async conditionalBatch(_,E){Q("conditionalBatch conditions",_.length),Q("conditionalBatch operations",E.length);for(let F of _){let Y=this.#_.get(F.key)??null;if(!P(Y,F.expectedValue))return!1}return this.#W(E),!0}async has(_){return this.#_.has(_)}async deletePrefix(_){let E=Z(_),F=this.#E(_,E);for(let Y of F)this.#_.delete(Y);return F.length}async deleteRange(_,E){let F=T(E),Y=Z(_),U=this.#E(_,Y).filter((J)=>V(J,F)),X=F.limit===void 0?U:U.slice(0,F.limit);for(let J of X)this.#_.delete(J);return X.length}async*keys(_,E={}){let{limit:F,reverse:Y}=E,U=Z(_),X=this.#E(_,U);if(X=X.filter((G)=>V(G,E)),Y)X.reverse();let J=0;for(let G of X){if(F!==void 0&&J>=F)break;yield G,J++}}async count(_){let E=Z(_);return this.#E(_,E).length}scoped(_){return c(this,_)}get size(){return this.#_.size}clear(){this.#_.clear()}snapshot(){let _=new Map;for(let[E,F]of this.#_)_.set(E,new Uint8Array(F));return _}[Symbol.dispose](){this.#_.clear()}}export{k as MemoryStorage};
|
|
2
|
+
var k=import.meta.require,l=(_,F,Y)=>{if(F!=null){if(typeof F!=="object"&&typeof F!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let E;if(Y)E=F[Symbol.asyncDispose];if(E===void 0)E=F[Symbol.dispose];if(typeof E!=="function")throw TypeError("Object not disposable");_.push([Y,E,F])}else if(Y)_.push([Y]);return F},d=(_,F,Y)=>{let E=(U)=>F=Y?new SuppressedError(U,F,"An error was suppressed during disposal"):(Y=!0,U),G=(U)=>{while(U=_.pop())try{var M=U[1]&&U[1].call(U[2]);if(U[0])return Promise.resolve(M).then(G,(J)=>(E(J),G()))}catch(J){E(J)}if(Y)throw F};return G()};function L(_,F,Y){if(!_.capabilities()[F])throw Error(`Feature "${Y}" requires storage capability "${F}", but this storage backend does not provide it.`)}function u(_){let F=_.capabilities(),Y=[];if(F.persistence!=="local"&&F.persistence!=="remote")Y.push(`persistence must be "local" or "remote" (got "${F.persistence}")`);if(F.readAfterWrite!=="linearizable")Y.push(`readAfterWrite must be "linearizable" (got "${F.readAfterWrite}")`);if(F.scanConsistency!=="snapshot")Y.push(`scanConsistency must be "snapshot" (got "${F.scanConsistency}")`);if(!F.atomicBatch)Y.push("atomicBatch must be true");if(!F.conditionalBatch)Y.push("conditionalBatch must be true");if(Y.length>0)throw Error(`Storage is not durable enough for recovery: ${Y.join("; ")}.`)}var D="default";async function C(_,F){return await _.get(F)!==null}async function*V(_,F,Y){for await(let[E]of _.scan(F,Y))yield E}async function R(_,F){let Y=0;for await(let E of V(_,F))Y++;return Y}async function B(_,F){let Y=[];for await(let E of V(_,F))Y.push({type:"delete",key:E});if(Y.length===0)return 0;return await _.batch(Y),Y.length}async function A(_,F,Y){let E=[];for await(let G of V(_,F,Y))E.push({type:"delete",key:G});if(E.length===0)return 0;return await _.batch(E),E.length}var g=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","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-teardown-succeeded:","wf-terminal:"];var N=1e4,o=1e4;class z extends Error{code="StorageBatchOperationLimitExceededError";cap=N;count;target;constructor(_,F){super(`${_} count ${F} exceeds MAX_BATCH_OPERATIONS (${N}).`);this.name="StorageBatchOperationLimitExceededError",this.target=_,this.count=F}}function Z(_,F){if(F>N)throw new z(_,F)}function $(_){return _.length>0?_.slice(0,-1)+String.fromCharCode(_.charCodeAt(_.length-1)+1):"\xFF"}function H(_,F={}){if(F.gt!==void 0&&_<=F.gt)return!1;if(F.gte!==void 0&&_<F.gte)return!1;if(F.lt!==void 0&&_>=F.lt)return!1;if(F.lte!==void 0&&_>F.lte)return!1;return!0}function P(_,F){if(_===null||F===null)return _===F;if(_.byteLength!==F.byteLength)return!1;for(let Y=0;Y<_.byteLength;Y++)if(_[Y]!==F[Y])return!1;return!0}async function v(_,F){if(_.has)return _.has(F);return C(_,F)}function O(_,F,Y){if(_.keys)return _.keys(F,Y);return V(_,F,Y)}async function h(_,F){if(_.count)return _.count(F);return R(_,F)}async function K(_,F){if(_.deletePrefix)return _.deletePrefix(F);return B(_,F)}async function __(_,F){Z("batch operations",F.length),await _.batch(F)}async function b(_,F,Y){if(Z("conditionalBatch conditions",F.length),Z("conditionalBatch operations",Y.length),L(_,"conditionalBatch","storageConditionalBatch"),!_.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return _.conditionalBatch(F,Y)}function X(_){return encodeURIComponent(_)}function F_(_){return decodeURIComponent(_)}function Y_(_){try{return decodeURIComponent(_)}catch{return null}}var Q=(_)=>String(_).padStart(16,"0"),x="0",y="1",S=(_,F,Y,E)=>`sig:${X(_)}:${X(F)}:${E}:${X(Y)}`,X_={workflow:(_)=>`wf:${X(_)}`,checkpoint:(_)=>`wf:${X(_)}:ckpt`,checkpointHistory:(_,F)=>`wf:${X(_)}:ckpt:${String(F).padStart(10,"0")}`,timelinePrefix:(_)=>`wf:${X(_)}:timeline:`,timeline:(_,F)=>`wf:${X(_)}:timeline:${String(F).padStart(10,"0")}`,schedule:(_)=>`schedule:${X(_)}`,scheduleTick:(_,F)=>`schedule-due:${String(_).padStart(16,"0")}:${X(F)}`,scheduleRun:(_)=>`schedule-run:${X(_)}`,scheduleRunLink:(_)=>`schedule-run-link:${X(_)}`,scheduleRunBySchedulePrefix:(_)=>`schedule-run-by-schedule:${X(_)}:`,scheduleRunBySchedule:(_,F)=>`schedule-run-by-schedule:${X(_)}:${X(F)}`,operation:(_,F,Y)=>`op:${_}:${Q(F)}:${Y}`,operationInflight:(_)=>`op:inflight:${_}`,operationQueued:(_)=>`op:queued:${_}`,operationResolved:(_)=>`op:resolved:${_}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(_)=>`op:dead-letter:${_}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(_,F,Y)=>`audit:bulk:${Q(_)}:${X(F)}:${X(Y)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(_,F)=>`op:resolved-by-time:${Q(_)}:${X(F)}`,asyncActivity:(_,F)=>`async-act:v1:${X(_)}:${X(F)}`,asyncActivityResolution:(_,F)=>`async-act:v1:${X(_)}:${X(F)}:resolution`,activityReconciliationPrefix:(_)=>`actrec:v1:${X(_)}:`,activityReconciliation:(_,F,Y)=>`actrec:v1:${X(_)}:${X(F)}:${Y}`,eventPrefix:(_)=>`ev:${X(_)}:`,event:(_,F)=>`ev:${X(_)}:${String(F).padStart(10,"0")}`,eventHead:(_)=>`ev:${X(_)}:head`,eventWatermark:(_)=>`ev:${X(_)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(_)=>`fleet-event:${String(_).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(_)=>`fleet-event-by-workflow:${X(_)}:`,fleetEventByWorkflow:(_,F)=>`fleet-event-by-workflow:${X(_)}:${String(F).padStart(10,"0")}`,signal:(_,F,Y)=>S(_,F,Y,y),startSignal:(_,F,Y)=>S(_,F,Y,x),signalSequence:(_)=>`sigseq:v1:${X(_)}`,signalAcceptedResponsePrefix:(_)=>`sigres:v1:${X(_)}:`,signalAcceptedResponse:(_,F,Y)=>`sigres:v1:${X(_)}:${X(F)}:${X(Y)}`,deadline:(_,F)=>`wf-deadline:${Q(_)}:${X(F)}`,terminalCleanup:(_,F)=>`wf-cleanup:${Q(_)}:${X(F)}`,teardownTimer:(_,F)=>`wf-teardown:${Q(_)}:${X(F)}`,delayedStart:(_,F)=>`wf-delayed:${Q(_)}:${X(F)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(_,F)=>`wf-terminal:${Q(_)}:${X(F)}`,attribute:(_)=>`attr:${X(_)}`,attributeIndex:(_,F,Y)=>`idx:${_}:${F}:${X(Y)}`,tagIndex:(_,F)=>`tag:${X(_)}:${X(F)}`,updatePrefix:(_)=>`upd:${X(_)}:`,update:(_,F)=>`upd:${X(_)}:${F}`,updateResponse:(_)=>`upr:${_}`,updateIdempotency:(_,F)=>`upk:${X(_)}:${F}`,startIdempotency:(_)=>`start-idem:${X(_)}`,startIdempotencySignalId:(_)=>`start-idem:${_}`,livenessPrefix:()=>"liveness:",liveness:(_)=>`liveness:${X(_)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(_,F,Y)=>`budget:${_}:${F}:${Y}`,review:(_,F)=>`review:${X(_)}:${F}`,workflowHeaders:(_)=>`wf-headers:${X(_)}`,childCancellationPrefix:(_)=>`child-cancel:${X(_)}:`,childCancellation:(_,F)=>`child-cancel:${X(_)}:${X(F)}`,childWorkflowByParentPrefix:(_,F)=>`child-by-parent:${X(_)}:${F===void 0?"":`${X(F)}:`}`,childWorkflowByParent:(_,F,Y)=>`child-by-parent:${X(_)}:${F===void 0?"":`${X(F)}:`}${X(Y)}`,terminalCleanupNeeded:(_)=>`wf-cleanup-needed:${X(_)}`,workflowConcurrency:(_,F)=>`wf-concurrency:${X(_)}:${X(F)}`,workflowConcurrencyHolder:(_)=>`wf-concurrency-holder:${X(_)}`,workflowHasServices:(_)=>`wf-has-services:${X(_)}`,finalizerState:(_)=>`wf-finalizer-state:${X(_)}`,teardownOwed:(_)=>`wf-teardown-needed:${X(_)}`,teardownSucceeded:(_)=>`wf-teardown-succeeded:${X(_)}`,teardownDeadLetter:(_)=>`wf-teardown-deadletter:${X(_)}`,offload:(_,F)=>`offload:${X(_)}:${F}`,archive:(_,F)=>`archive:${X(_)}:${F}`,stateExecution:(_,F)=>`state:execution:${X(_)}:${X(F)}`,stateWorkflow:(_,F)=>`state:workflow-scope:${D}:${X(_)}:${X(F)}`,streamChunkPrefix:(_,F)=>`blob:${X(_)}:${F}:chunk:`,streamChunk:(_,F,Y)=>`blob:${X(_)}:${F}:chunk:${String(Y).padStart(10,"0")}`,streamTail:(_,F)=>`blob:${X(_)}:${F}:tail`,streamMetadata:(_,F)=>`blob:${X(_)}:${F}:meta`,budgetCharged:(_)=>`budget-charged:${_}`,toolEffect:(_,F,Y)=>`tool-effect:${X(_)}:${F}:${Y}`,workflowVisibilityStatus:(_,F)=>`wf-idx-status:${X(_)}:${X(F)}`,workflowVisibilityType:(_,F)=>`wf-idx-type:${X(_)}:${X(F)}`,workflowVisibilityCreated:(_,F)=>`wf-idx-created:${Q(_)}:${X(F)}`,workflowVisibilityUpdated:(_,F)=>`wf-idx-updated:${Q(_)}:${X(F)}`,workflowVisibilityDeadline:(_,F)=>`wf-idx-deadline:${Q(_)}:${X(F)}`,workflowVisibilityManifest:(_)=>`wf-idx-manifest:${X(_)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function I(_){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 j(_){let F={},Y=!1;for(let G of["gt","gte","lt","lte"]){let U=_[G];if(U===void 0)continue;if(typeof U!=="string")throw Error("deleteRange bounds must be strings");F[G]=U,Y=!0}if(!Y)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let E=I(_.limit);if(E!==void 0)F.limit=E;return F}async function m(_,F,Y){let E=j(Y);if(_.deleteRange)return _.deleteRange(F,E);return A(_,F,E)}function q(_){return _.replaceAll(/:+$/g,"")}function w(_,F){let Y=q(_),E=q(F);if(Y.length===0)return E;if(E.length===0)return Y;return`${Y}:${E}`}class T{#_;#Y;constructor(_,F){this.#_=_,this.#Y=q(F)}#F(_){if(this.#Y.length===0)return _;return _.length===0?`${this.#Y}:`:`${this.#Y}:${_}`}#X(_){if(this.#Y.length===0)return _;return _.slice(this.#Y.length+1)}#E(_={}){let F={};if(_.limit!==void 0)F.limit=_.limit;if(_.reverse!==void 0)F.reverse=_.reverse;if(_.gt!==void 0)F.gt=this.#F(_.gt);if(_.gte!==void 0)F.gte=this.#F(_.gte);if(_.lt!==void 0)F.lt=this.#F(_.lt);if(_.lte!==void 0)F.lte=this.#F(_.lte);return F}#U(_){let F={};if(_.limit!==void 0)F.limit=_.limit;if(_.gt!==void 0)F.gt=this.#F(_.gt);if(_.gte!==void 0)F.gte=this.#F(_.gte);if(_.lt!==void 0)F.lt=this.#F(_.lt);if(_.lte!==void 0)F.lte=this.#F(_.lte);return F}capabilities(){return this.#_.capabilities()}scoped(_){return new T(this.#_,w(this.#Y,_))}async get(_){return this.#_.get(this.#F(_))}async put(_,F){await this.#_.put(this.#F(_),F)}async delete(_){await this.#_.delete(this.#F(_))}async*scan(_,F){for await(let[Y,E]of this.#_.scan(this.#F(_),this.#E(F)))yield[this.#X(Y),E]}async batch(_){Z("batch operations",_.length),await this.#_.batch(_.map((F)=>{if(F.type==="put")return{type:"put",key:this.#F(F.key),value:F.value};return{type:"delete",key:this.#F(F.key)}}))}async conditionalBatch(_,F){return b(this.#_,_.map((Y)=>({key:this.#F(Y.key),expectedValue:Y.expectedValue})),F.map((Y)=>{if(Y.type==="put")return{type:"put",key:this.#F(Y.key),value:Y.value};return{type:"delete",key:this.#F(Y.key)}}))}async has(_){return v(this.#_,this.#F(_))}async deletePrefix(_){return K(this.#_,this.#F(_))}async deleteRange(_,F){let Y=this.#U(j(F));return m(this.#_,this.#F(_),Y)}async*keys(_,F){for await(let Y of O(this.#_,this.#F(_),this.#E(F)))yield this.#X(Y)}async count(_){return h(this.#_,this.#F(_))}[Symbol.dispose](){this.#_[Symbol.dispose]()}}function c(_,F){return new T(_,F)}class f{#_;constructor(){this.#_=new Map}capabilities(){return{persistence:"ephemeral",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#Y(_,F,Y){return _>=F&&_<Y}#F(_,F){let Y=[];for(let E of this.#_.keys())if(this.#Y(E,_,F))Y.push(E);return Y.toSorted()}async get(_){return this.#_.get(_)??null}async put(_,F){this.#_.set(_,F)}async delete(_){this.#_.delete(_)}async*scan(_,F={}){let{limit:Y,reverse:E}=F,G=$(_),U=this.#F(_,G);if(U=U.filter((J)=>H(J,F)),E)U.reverse();let M=0;for(let J of U){if(Y!==void 0&&M>=Y)break;let W=this.#_.get(J);if(W!==void 0)yield[J,W],M++}}async batch(_){Z("batch operations",_.length),this.#X(_)}#X(_){for(let F of _)if(F.type==="put")this.#_.set(F.key,F.value);else this.#_.delete(F.key)}async conditionalBatch(_,F){Z("conditionalBatch conditions",_.length),Z("conditionalBatch operations",F.length);for(let Y of _){let E=this.#_.get(Y.key)??null;if(!P(E,Y.expectedValue))return!1}return this.#X(F),!0}async has(_){return this.#_.has(_)}async deletePrefix(_){let F=$(_),Y=this.#F(_,F);for(let E of Y)this.#_.delete(E);return Y.length}async deleteRange(_,F){let Y=j(F),E=$(_),G=this.#F(_,E).filter((M)=>H(M,Y)),U=Y.limit===void 0?G:G.slice(0,Y.limit);for(let M of U)this.#_.delete(M);return U.length}async*keys(_,F={}){let{limit:Y,reverse:E}=F,G=$(_),U=this.#F(_,G);if(U=U.filter((J)=>H(J,F)),E)U.reverse();let M=0;for(let J of U){if(Y!==void 0&&M>=Y)break;yield J,M++}}async count(_){let F=$(_);return this.#F(_,F).length}scoped(_){return c(this,_)}get size(){return this.#_.size}clear(){this.#_.clear()}snapshot(){let _=new Map;for(let[F,Y]of this.#_)_.set(F,new Uint8Array(Y));return _}[Symbol.dispose](){this.#_.clear()}}export{f as MemoryStorage};
|
package/dist/storage/neon.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var JW=import.meta.require,SW=(W,X,Y)=>{if(X!=null){if(typeof X!=="object"&&typeof X!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let _;if(Y)_=X[Symbol.asyncDispose];if(_===void 0)_=X[Symbol.dispose];if(typeof _!=="function")throw TypeError("Object not disposable");W.push([Y,_,X])}else if(Y)W.push([Y]);return X},zW=(W,X,Y)=>{let _=(Z)=>X=Y?new SuppressedError(Z,X,"An error was suppressed during disposal"):(Y=!0,Z),G=(Z)=>{while(Z=W.pop())try{var $=Z[1]&&Z[1].call(Z[2]);if(Z[0])return Promise.resolve($).then(G,(M)=>(_(M),G()))}catch(M){_(M)}if(Y)throw X};return G()};function B(W,X,Y){if(!W.capabilities()[X])throw Error(`Feature "${Y}" requires storage capability "${X}", but this storage backend does not provide it.`)}function ZW(W){let X=W.capabilities(),Y=[];if(X.persistence!=="local"&&X.persistence!=="remote")Y.push(`persistence must be "local" or "remote" (got "${X.persistence}")`);if(X.readAfterWrite!=="linearizable")Y.push(`readAfterWrite must be "linearizable" (got "${X.readAfterWrite}")`);if(X.scanConsistency!=="snapshot")Y.push(`scanConsistency must be "snapshot" (got "${X.scanConsistency}")`);if(!X.atomicBatch)Y.push("atomicBatch must be true");if(!X.conditionalBatch)Y.push("conditionalBatch must be true");if(Y.length>0)throw Error(`Storage is not durable enough for recovery: ${Y.join("; ")}.`)}var L="default";async function R(W,X){return await W.get(X)!==null}async function*U(W,X,Y){for await(let[_]of W.scan(X,Y))yield _}async function v(W,X){let Y=0;for await(let _ of U(W,X))Y++;return Y}async function q(W,X){let Y=[];for await(let _ of U(W,X))Y.push({type:"delete",key:_});if(Y.length===0)return 0;return await W.batch(Y),Y.length}async function P(W,X,Y){let _=[];for await(let G of U(W,X,Y))_.push({type:"delete",key:G});if(_.length===0)return 0;return await W.batch(_),_.length}var GW=["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:"];var D=1e4,xW=1e4;class b extends Error{code="StorageBatchOperationLimitExceededError";cap=D;count;target;constructor(W,X){super(`${W} count ${X} exceeds MAX_BATCH_OPERATIONS (${D}).`);this.name="StorageBatchOperationLimitExceededError",this.target=W,this.count=X}}function H(W,X){if(X>D)throw new b(W,X)}function x(W){return W.length>0?W.slice(0,-1)+String.fromCharCode(W.charCodeAt(W.length-1)+1):"\xFF"}function yW(W,X={}){if(X.gt!==void 0&&W<=X.gt)return!1;if(X.gte!==void 0&&W<X.gte)return!1;if(X.lt!==void 0&&W>=X.lt)return!1;if(X.lte!==void 0&&W>X.lte)return!1;return!0}function y(W,X){if(W===null||X===null)return W===X;if(W.byteLength!==X.byteLength)return!1;for(let Y=0;Y<W.byteLength;Y++)if(W[Y]!==X[Y])return!1;return!0}async function I(W,X){if(W.has)return W.has(X);return R(W,X)}function m(W,X,Y){if(W.keys)return W.keys(X,Y);return U(W,X,Y)}async function g(W,X){if(W.count)return W.count(X);return v(W,X)}async function k(W,X){if(W.deletePrefix)return W.deletePrefix(X);return q(W,X)}async function IW(W,X){H("batch operations",X.length),await W.batch(X)}async function u(W,X,Y){if(H("conditionalBatch conditions",X.length),H("conditionalBatch operations",Y.length),B(W,"conditionalBatch","storageConditionalBatch"),!W.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return W.conditionalBatch(X,Y)}function J(W){return encodeURIComponent(W)}function mW(W){return decodeURIComponent(W)}function gW(W){try{return decodeURIComponent(W)}catch{return null}}var F=(W)=>String(W).padStart(16,"0"),$W="0",MW="1",h=(W,X,Y,_)=>`sig:${J(W)}:${J(X)}:${_}:${J(Y)}`,kW={workflow:(W)=>`wf:${J(W)}`,checkpoint:(W)=>`wf:${J(W)}:ckpt`,checkpointHistory:(W,X)=>`wf:${J(W)}:ckpt:${String(X).padStart(10,"0")}`,timelinePrefix:(W)=>`wf:${J(W)}:timeline:`,timeline:(W,X)=>`wf:${J(W)}:timeline:${String(X).padStart(10,"0")}`,schedule:(W)=>`schedule:${J(W)}`,scheduleTick:(W,X)=>`schedule-due:${String(W).padStart(16,"0")}:${J(X)}`,scheduleRun:(W)=>`schedule-run:${J(W)}`,operation:(W,X,Y)=>`op:${W}:${F(X)}:${Y}`,operationInflight:(W)=>`op:inflight:${W}`,operationQueued:(W)=>`op:queued:${W}`,operationResolved:(W)=>`op:resolved:${W}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(W)=>`op:dead-letter:${W}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(W,X,Y)=>`audit:bulk:${F(W)}:${J(X)}:${J(Y)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(W,X)=>`op:resolved-by-time:${F(W)}:${J(X)}`,asyncActivity:(W,X)=>`async-act:v1:${J(W)}:${J(X)}`,asyncActivityResolution:(W,X)=>`async-act:v1:${J(W)}:${J(X)}:resolution`,activityReconciliationPrefix:(W)=>`actrec:v1:${J(W)}:`,activityReconciliation:(W,X,Y)=>`actrec:v1:${J(W)}:${J(X)}:${Y}`,eventPrefix:(W)=>`ev:${J(W)}:`,event:(W,X)=>`ev:${J(W)}:${String(X).padStart(10,"0")}`,eventHead:(W)=>`ev:${J(W)}:head`,eventWatermark:(W)=>`ev:${J(W)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(W)=>`fleet-event:${String(W).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(W)=>`fleet-event-by-workflow:${J(W)}:`,fleetEventByWorkflow:(W,X)=>`fleet-event-by-workflow:${J(W)}:${String(X).padStart(10,"0")}`,signal:(W,X,Y)=>h(W,X,Y,MW),startSignal:(W,X,Y)=>h(W,X,Y,$W),signalSequence:(W)=>`sigseq:v1:${J(W)}`,signalAcceptedResponsePrefix:(W)=>`sigres:v1:${J(W)}:`,signalAcceptedResponse:(W,X,Y)=>`sigres:v1:${J(W)}:${J(X)}:${J(Y)}`,deadline:(W,X)=>`wf-deadline:${F(W)}:${J(X)}`,terminalCleanup:(W,X)=>`wf-cleanup:${F(W)}:${J(X)}`,teardownTimer:(W,X)=>`wf-teardown:${F(W)}:${J(X)}`,delayedStart:(W,X)=>`wf-delayed:${F(W)}:${J(X)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(W,X)=>`wf-terminal:${F(W)}:${J(X)}`,attribute:(W)=>`attr:${J(W)}`,attributeIndex:(W,X,Y)=>`idx:${W}:${X}:${J(Y)}`,tagIndex:(W,X)=>`tag:${J(W)}:${J(X)}`,updatePrefix:(W)=>`upd:${J(W)}:`,update:(W,X)=>`upd:${J(W)}:${X}`,updateResponse:(W)=>`upr:${W}`,updateIdempotency:(W,X)=>`upk:${J(W)}:${X}`,startIdempotency:(W)=>`start-idem:${J(W)}`,startIdempotencySignalId:(W)=>`start-idem:${W}`,livenessPrefix:()=>"liveness:",liveness:(W)=>`liveness:${J(W)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(W,X,Y)=>`budget:${W}:${X}:${Y}`,review:(W,X)=>`review:${J(W)}:${X}`,workflowHeaders:(W)=>`wf-headers:${J(W)}`,childCancellationPrefix:(W)=>`child-cancel:${J(W)}:`,childCancellation:(W,X)=>`child-cancel:${J(W)}:${J(X)}`,terminalCleanupNeeded:(W)=>`wf-cleanup-needed:${J(W)}`,workflowConcurrency:(W,X)=>`wf-concurrency:${J(W)}:${J(X)}`,workflowConcurrencyHolder:(W)=>`wf-concurrency-holder:${J(W)}`,workflowHasServices:(W)=>`wf-has-services:${J(W)}`,finalizerState:(W)=>`wf-finalizer-state:${J(W)}`,teardownOwed:(W)=>`wf-teardown-needed:${J(W)}`,teardownDeadLetter:(W)=>`wf-teardown-deadletter:${J(W)}`,offload:(W,X)=>`offload:${J(W)}:${X}`,archive:(W,X)=>`archive:${J(W)}:${X}`,stateExecution:(W,X)=>`state:execution:${J(W)}:${J(X)}`,stateWorkflow:(W,X)=>`state:workflow-scope:${L}:${J(W)}:${J(X)}`,streamChunkPrefix:(W,X)=>`blob:${J(W)}:${X}:chunk:`,streamChunk:(W,X,Y)=>`blob:${J(W)}:${X}:chunk:${String(Y).padStart(10,"0")}`,streamTail:(W,X)=>`blob:${J(W)}:${X}:tail`,streamMetadata:(W,X)=>`blob:${J(W)}:${X}:meta`,budgetCharged:(W)=>`budget-charged:${W}`,toolEffect:(W,X,Y)=>`tool-effect:${J(W)}:${X}:${Y}`,workflowVisibilityStatus:(W,X)=>`wf-idx-status:${J(W)}:${J(X)}`,workflowVisibilityType:(W,X)=>`wf-idx-type:${J(W)}:${J(X)}`,workflowVisibilityCreated:(W,X)=>`wf-idx-created:${F(W)}:${J(X)}`,workflowVisibilityUpdated:(W,X)=>`wf-idx-updated:${F(W)}:${J(X)}`,workflowVisibilityDeadline:(W,X)=>`wf-idx-deadline:${F(W)}:${J(X)}`,workflowVisibilityManifest:(W)=>`wf-idx-manifest:${J(W)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function FW(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 V(W){let X={},Y=!1;for(let G of["gt","gte","lt","lte"]){let Z=W[G];if(Z===void 0)continue;if(typeof Z!=="string")throw Error("deleteRange bounds must be strings");X[G]=Z,Y=!0}if(!Y)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let _=FW(W.limit);if(_!==void 0)X.limit=_;return X}async function c(W,X,Y){let _=V(Y);if(W.deleteRange)return W.deleteRange(X,_);return P(W,X,_)}function C(W){return W.replaceAll(/:+$/g,"")}function HW(W,X){let Y=C(W),_=C(X);if(Y.length===0)return _;if(_.length===0)return Y;return`${Y}:${_}`}class A{#W;#X;constructor(W,X){this.#W=W,this.#X=C(X)}#Y(W){if(this.#X.length===0)return W;return W.length===0?`${this.#X}:`:`${this.#X}:${W}`}#J(W){if(this.#X.length===0)return W;return W.slice(this.#X.length+1)}#Z(W={}){let X={};if(W.limit!==void 0)X.limit=W.limit;if(W.reverse!==void 0)X.reverse=W.reverse;if(W.gt!==void 0)X.gt=this.#Y(W.gt);if(W.gte!==void 0)X.gte=this.#Y(W.gte);if(W.lt!==void 0)X.lt=this.#Y(W.lt);if(W.lte!==void 0)X.lte=this.#Y(W.lte);return X}#G(W){let X={};if(W.limit!==void 0)X.limit=W.limit;if(W.gt!==void 0)X.gt=this.#Y(W.gt);if(W.gte!==void 0)X.gte=this.#Y(W.gte);if(W.lt!==void 0)X.lt=this.#Y(W.lt);if(W.lte!==void 0)X.lte=this.#Y(W.lte);return X}capabilities(){return this.#W.capabilities()}scoped(W){return new A(this.#W,HW(this.#X,W))}async get(W){return this.#W.get(this.#Y(W))}async put(W,X){await this.#W.put(this.#Y(W),X)}async delete(W){await this.#W.delete(this.#Y(W))}async*scan(W,X){for await(let[Y,_]of this.#W.scan(this.#Y(W),this.#Z(X)))yield[this.#J(Y),_]}async batch(W){H("batch operations",W.length),await this.#W.batch(W.map((X)=>{if(X.type==="put")return{type:"put",key:this.#Y(X.key),value:X.value};return{type:"delete",key:this.#Y(X.key)}}))}async conditionalBatch(W,X){return u(this.#W,W.map((Y)=>({key:this.#Y(Y.key),expectedValue:Y.expectedValue})),X.map((Y)=>{if(Y.type==="put")return{type:"put",key:this.#Y(Y.key),value:Y.value};return{type:"delete",key:this.#Y(Y.key)}}))}async has(W){return I(this.#W,this.#Y(W))}async deletePrefix(W){return k(this.#W,this.#Y(W))}async deleteRange(W,X){let Y=this.#G(V(X));return c(this.#W,this.#Y(W),Y)}async*keys(W,X){for await(let Y of m(this.#W,this.#Y(W),this.#Z(X)))yield this.#J(Y)}async count(W){return g(this.#W,this.#Y(W))}[Symbol.dispose](){this.#W[Symbol.dispose]()}}function w(W,X){return new A(W,X)}function f(W,X){let Y,_,G=!1,Z=()=>{if(G)throw Error(`${X.storageName} pool has been disposed and cannot be reused. Construct a new adapter.`);return Y??=X.loadPool(W).catch(($)=>{throw Y=void 0,VW($,X)}),Y};return{query:async($,M)=>{return(await Z()).query($,M)},connect:async()=>{return(await Z()).connect()},end:async()=>{return G=!0,_??=(async()=>{if(Y===void 0)return;await(await Y.catch(()=>{return}))?.end()})(),_}}}var UW=/cannot find module|module_not_found|failed to resolve|could not resolve/i;function VW(W,X){let Y=W instanceof Error?W.message:String(W);if(UW.test(Y))return Error(`${X.storageName} requires the optional peer dependency "${X.driverName}". Install it in your application with: bun add ${X.driverName} (or npm install ${X.driverName}).`,{cause:W});return W instanceof Error?W:Error(Y)}function N(W){return W.rowCount??W.affectedRows??W.rows.length}function Q(W){if(W instanceof Uint8Array)return new Uint8Array(W);return new Uint8Array(W)}function E(W){return Buffer.from(W)}function K(W){let X=new Map,Y=new Set;for(let _ of W)if(_.type==="put")Y.delete(_.key),X.set(_.key,_.value);else X.delete(_.key),Y.add(_.key);return{puts:X,deletes:Y}}async function d(W,X,Y){if(Y.length===0)return!0;let _=Y.map(($)=>$.key),G=await W.query(X.selectValuesByKeys,[_]),Z=new Map;for(let $ of G.rows){let M=$.value;if(M!==null&&M!==void 0)Z.set($.key,Q(M))}for(let $ of Y){let M=Z.get($.key)??null;if(!y(M,$.expectedValue))return!1}return!0}async function S(W,X,Y){if(Y.puts.size>0){let _=[],G=[];for(let[Z,$]of Y.puts)_.push(Z),G.push(E($));await W.query(X.upsertValuesByKeys,[_,G])}if(Y.deletes.size>0)await W.query(X.deleteValuesByKeys,[[...Y.deletes]])}var p=/^[a-z_][a-z0-9_]*$/i;function l(W,X,Y){if(!p.test(W))throw Error(`${Y} storage ${X} name "${W}" is not a valid ${Y} identifier. Use only letters, digits, and underscores, starting with a letter or underscore (matching ${p.source}).`)}var a="kv";function z(W,X){l(W,X,"Postgres")}function n(W){let{schema:X,table:Y}=W;if(X===void 0&&Y===void 0)return a;let _=Y??a;if(z(_,"table"),X===void 0)return`"${_}"`;return z(X,"schema"),`"${X}"."${_}"`}function j(W){return[W,x(W)]}function i(W,X){let{gt:Y,gte:_,lt:G,lte:Z}=X,$=j(W),M=["key >= $1 AND key < $2"];if(Y!==void 0)$.push(Y),M.push(`key > $${$.length}`);if(_!==void 0)$.push(_),M.push(`key >= $${$.length}`);if(G!==void 0)$.push(G),M.push(`key < $${$.length}`);if(Z!==void 0)$.push(Z),M.push(`key <= $${$.length}`);return{conditions:M,parameters:$}}function s(W,X={}){let{limit:Y,reverse:_}=X,{conditions:G,parameters:Z}=i(W,X),$=_?"DESC":"ASC",M="";if(Y!==void 0)Z.push(Y),M=` LIMIT $${Z.length}`;return{parameters:Z,whereOrderLimit:`WHERE ${G.join(" AND ")} ORDER BY key ${$}${M}`}}function r(W){let X=`CREATE TABLE IF NOT EXISTS ${W} (
|
|
2
|
+
var ZX=import.meta.require,SX=(X,Y,_)=>{if(Y!=null){if(typeof Y!=="object"&&typeof Y!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let Z;if(_)Z=Y[Symbol.asyncDispose];if(Z===void 0)Z=Y[Symbol.dispose];if(typeof Z!=="function")throw TypeError("Object not disposable");X.push([_,Z,Y])}else if(_)X.push([_]);return Y},zX=(X,Y,_)=>{let Z=(G)=>Y=_?new SuppressedError(G,Y,"An error was suppressed during disposal"):(_=!0,G),$=(G)=>{while(G=X.pop())try{var M=G[1]&&G[1].call(G[2]);if(G[0])return Promise.resolve(M).then($,(F)=>(Z(F),$()))}catch(F){Z(F)}if(_)throw Y};return $()};function E(X,Y,_){if(!X.capabilities()[Y])throw Error(`Feature "${_}" requires storage capability "${Y}", but this storage backend does not provide it.`)}function GX(X){let Y=X.capabilities(),_=[];if(Y.persistence!=="local"&&Y.persistence!=="remote")_.push(`persistence must be "local" or "remote" (got "${Y.persistence}")`);if(Y.readAfterWrite!=="linearizable")_.push(`readAfterWrite must be "linearizable" (got "${Y.readAfterWrite}")`);if(Y.scanConsistency!=="snapshot")_.push(`scanConsistency must be "snapshot" (got "${Y.scanConsistency}")`);if(!Y.atomicBatch)_.push("atomicBatch must be true");if(!Y.conditionalBatch)_.push("conditionalBatch must be true");if(_.length>0)throw Error(`Storage is not durable enough for recovery: ${_.join("; ")}.`)}var L="default";async function R(X,Y){return await X.get(Y)!==null}async function*V(X,Y,_){for await(let[Z]of X.scan(Y,_))yield Z}async function v(X,Y){let _=0;for await(let Z of V(X,Y))_++;return _}async function q(X,Y){let _=[];for await(let Z of V(X,Y))_.push({type:"delete",key:Z});if(_.length===0)return 0;return await X.batch(_),_.length}async function P(X,Y,_){let Z=[];for await(let $ of V(X,Y,_))Z.push({type:"delete",key:$});if(Z.length===0)return 0;return await X.batch(Z),Z.length}var $X=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","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-teardown-succeeded:","wf-terminal:"];var D=1e4,xX=1e4;class b extends Error{code="StorageBatchOperationLimitExceededError";cap=D;count;target;constructor(X,Y){super(`${X} count ${Y} exceeds MAX_BATCH_OPERATIONS (${D}).`);this.name="StorageBatchOperationLimitExceededError",this.target=X,this.count=Y}}function U(X,Y){if(Y>D)throw new b(X,Y)}function x(X){return X.length>0?X.slice(0,-1)+String.fromCharCode(X.charCodeAt(X.length-1)+1):"\xFF"}function yX(X,Y={}){if(Y.gt!==void 0&&X<=Y.gt)return!1;if(Y.gte!==void 0&&X<Y.gte)return!1;if(Y.lt!==void 0&&X>=Y.lt)return!1;if(Y.lte!==void 0&&X>Y.lte)return!1;return!0}function y(X,Y){if(X===null||Y===null)return X===Y;if(X.byteLength!==Y.byteLength)return!1;for(let _=0;_<X.byteLength;_++)if(X[_]!==Y[_])return!1;return!0}async function I(X,Y){if(X.has)return X.has(Y);return R(X,Y)}function m(X,Y,_){if(X.keys)return X.keys(Y,_);return V(X,Y,_)}async function g(X,Y){if(X.count)return X.count(Y);return v(X,Y)}async function u(X,Y){if(X.deletePrefix)return X.deletePrefix(Y);return q(X,Y)}async function IX(X,Y){U("batch operations",Y.length),await X.batch(Y)}async function k(X,Y,_){if(U("conditionalBatch conditions",Y.length),U("conditionalBatch operations",_.length),E(X,"conditionalBatch","storageConditionalBatch"),!X.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return X.conditionalBatch(Y,_)}function J(X){return encodeURIComponent(X)}function mX(X){return decodeURIComponent(X)}function gX(X){try{return decodeURIComponent(X)}catch{return null}}var H=(X)=>String(X).padStart(16,"0"),MX="0",FX="1",h=(X,Y,_,Z)=>`sig:${J(X)}:${J(Y)}:${Z}:${J(_)}`,uX={workflow:(X)=>`wf:${J(X)}`,checkpoint:(X)=>`wf:${J(X)}:ckpt`,checkpointHistory:(X,Y)=>`wf:${J(X)}:ckpt:${String(Y).padStart(10,"0")}`,timelinePrefix:(X)=>`wf:${J(X)}:timeline:`,timeline:(X,Y)=>`wf:${J(X)}:timeline:${String(Y).padStart(10,"0")}`,schedule:(X)=>`schedule:${J(X)}`,scheduleTick:(X,Y)=>`schedule-due:${String(X).padStart(16,"0")}:${J(Y)}`,scheduleRun:(X)=>`schedule-run:${J(X)}`,scheduleRunLink:(X)=>`schedule-run-link:${J(X)}`,scheduleRunBySchedulePrefix:(X)=>`schedule-run-by-schedule:${J(X)}:`,scheduleRunBySchedule:(X,Y)=>`schedule-run-by-schedule:${J(X)}:${J(Y)}`,operation:(X,Y,_)=>`op:${X}:${H(Y)}:${_}`,operationInflight:(X)=>`op:inflight:${X}`,operationQueued:(X)=>`op:queued:${X}`,operationResolved:(X)=>`op:resolved:${X}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(X)=>`op:dead-letter:${X}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(X,Y,_)=>`audit:bulk:${H(X)}:${J(Y)}:${J(_)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(X,Y)=>`op:resolved-by-time:${H(X)}:${J(Y)}`,asyncActivity:(X,Y)=>`async-act:v1:${J(X)}:${J(Y)}`,asyncActivityResolution:(X,Y)=>`async-act:v1:${J(X)}:${J(Y)}:resolution`,activityReconciliationPrefix:(X)=>`actrec:v1:${J(X)}:`,activityReconciliation:(X,Y,_)=>`actrec:v1:${J(X)}:${J(Y)}:${_}`,eventPrefix:(X)=>`ev:${J(X)}:`,event:(X,Y)=>`ev:${J(X)}:${String(Y).padStart(10,"0")}`,eventHead:(X)=>`ev:${J(X)}:head`,eventWatermark:(X)=>`ev:${J(X)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(X)=>`fleet-event:${String(X).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(X)=>`fleet-event-by-workflow:${J(X)}:`,fleetEventByWorkflow:(X,Y)=>`fleet-event-by-workflow:${J(X)}:${String(Y).padStart(10,"0")}`,signal:(X,Y,_)=>h(X,Y,_,FX),startSignal:(X,Y,_)=>h(X,Y,_,MX),signalSequence:(X)=>`sigseq:v1:${J(X)}`,signalAcceptedResponsePrefix:(X)=>`sigres:v1:${J(X)}:`,signalAcceptedResponse:(X,Y,_)=>`sigres:v1:${J(X)}:${J(Y)}:${J(_)}`,deadline:(X,Y)=>`wf-deadline:${H(X)}:${J(Y)}`,terminalCleanup:(X,Y)=>`wf-cleanup:${H(X)}:${J(Y)}`,teardownTimer:(X,Y)=>`wf-teardown:${H(X)}:${J(Y)}`,delayedStart:(X,Y)=>`wf-delayed:${H(X)}:${J(Y)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(X,Y)=>`wf-terminal:${H(X)}:${J(Y)}`,attribute:(X)=>`attr:${J(X)}`,attributeIndex:(X,Y,_)=>`idx:${X}:${Y}:${J(_)}`,tagIndex:(X,Y)=>`tag:${J(X)}:${J(Y)}`,updatePrefix:(X)=>`upd:${J(X)}:`,update:(X,Y)=>`upd:${J(X)}:${Y}`,updateResponse:(X)=>`upr:${X}`,updateIdempotency:(X,Y)=>`upk:${J(X)}:${Y}`,startIdempotency:(X)=>`start-idem:${J(X)}`,startIdempotencySignalId:(X)=>`start-idem:${X}`,livenessPrefix:()=>"liveness:",liveness:(X)=>`liveness:${J(X)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(X,Y,_)=>`budget:${X}:${Y}:${_}`,review:(X,Y)=>`review:${J(X)}:${Y}`,workflowHeaders:(X)=>`wf-headers:${J(X)}`,childCancellationPrefix:(X)=>`child-cancel:${J(X)}:`,childCancellation:(X,Y)=>`child-cancel:${J(X)}:${J(Y)}`,childWorkflowByParentPrefix:(X,Y)=>`child-by-parent:${J(X)}:${Y===void 0?"":`${J(Y)}:`}`,childWorkflowByParent:(X,Y,_)=>`child-by-parent:${J(X)}:${Y===void 0?"":`${J(Y)}:`}${J(_)}`,terminalCleanupNeeded:(X)=>`wf-cleanup-needed:${J(X)}`,workflowConcurrency:(X,Y)=>`wf-concurrency:${J(X)}:${J(Y)}`,workflowConcurrencyHolder:(X)=>`wf-concurrency-holder:${J(X)}`,workflowHasServices:(X)=>`wf-has-services:${J(X)}`,finalizerState:(X)=>`wf-finalizer-state:${J(X)}`,teardownOwed:(X)=>`wf-teardown-needed:${J(X)}`,teardownSucceeded:(X)=>`wf-teardown-succeeded:${J(X)}`,teardownDeadLetter:(X)=>`wf-teardown-deadletter:${J(X)}`,offload:(X,Y)=>`offload:${J(X)}:${Y}`,archive:(X,Y)=>`archive:${J(X)}:${Y}`,stateExecution:(X,Y)=>`state:execution:${J(X)}:${J(Y)}`,stateWorkflow:(X,Y)=>`state:workflow-scope:${L}:${J(X)}:${J(Y)}`,streamChunkPrefix:(X,Y)=>`blob:${J(X)}:${Y}:chunk:`,streamChunk:(X,Y,_)=>`blob:${J(X)}:${Y}:chunk:${String(_).padStart(10,"0")}`,streamTail:(X,Y)=>`blob:${J(X)}:${Y}:tail`,streamMetadata:(X,Y)=>`blob:${J(X)}:${Y}:meta`,budgetCharged:(X)=>`budget-charged:${X}`,toolEffect:(X,Y,_)=>`tool-effect:${J(X)}:${Y}:${_}`,workflowVisibilityStatus:(X,Y)=>`wf-idx-status:${J(X)}:${J(Y)}`,workflowVisibilityType:(X,Y)=>`wf-idx-type:${J(X)}:${J(Y)}`,workflowVisibilityCreated:(X,Y)=>`wf-idx-created:${H(X)}:${J(Y)}`,workflowVisibilityUpdated:(X,Y)=>`wf-idx-updated:${H(X)}:${J(Y)}`,workflowVisibilityDeadline:(X,Y)=>`wf-idx-deadline:${H(X)}:${J(Y)}`,workflowVisibilityManifest:(X)=>`wf-idx-manifest:${J(X)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function HX(X){if(X===void 0)return;if(typeof X!=="number"||!Number.isInteger(X)||X<0)throw Error("deleteRange limit must be a finite non-negative integer");return X===0?0:X}function Q(X){let Y={},_=!1;for(let $ of["gt","gte","lt","lte"]){let G=X[$];if(G===void 0)continue;if(typeof G!=="string")throw Error("deleteRange bounds must be strings");Y[$]=G,_=!0}if(!_)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let Z=HX(X.limit);if(Z!==void 0)Y.limit=Z;return Y}async function c(X,Y,_){let Z=Q(_);if(X.deleteRange)return X.deleteRange(Y,Z);return P(X,Y,Z)}function C(X){return X.replaceAll(/:+$/g,"")}function UX(X,Y){let _=C(X),Z=C(Y);if(_.length===0)return Z;if(Z.length===0)return _;return`${_}:${Z}`}class A{#X;#Y;constructor(X,Y){this.#X=X,this.#Y=C(Y)}#_(X){if(this.#Y.length===0)return X;return X.length===0?`${this.#Y}:`:`${this.#Y}:${X}`}#Z(X){if(this.#Y.length===0)return X;return X.slice(this.#Y.length+1)}#G(X={}){let Y={};if(X.limit!==void 0)Y.limit=X.limit;if(X.reverse!==void 0)Y.reverse=X.reverse;if(X.gt!==void 0)Y.gt=this.#_(X.gt);if(X.gte!==void 0)Y.gte=this.#_(X.gte);if(X.lt!==void 0)Y.lt=this.#_(X.lt);if(X.lte!==void 0)Y.lte=this.#_(X.lte);return Y}#$(X){let Y={};if(X.limit!==void 0)Y.limit=X.limit;if(X.gt!==void 0)Y.gt=this.#_(X.gt);if(X.gte!==void 0)Y.gte=this.#_(X.gte);if(X.lt!==void 0)Y.lt=this.#_(X.lt);if(X.lte!==void 0)Y.lte=this.#_(X.lte);return Y}capabilities(){return this.#X.capabilities()}scoped(X){return new A(this.#X,UX(this.#Y,X))}async get(X){return this.#X.get(this.#_(X))}async put(X,Y){await this.#X.put(this.#_(X),Y)}async delete(X){await this.#X.delete(this.#_(X))}async*scan(X,Y){for await(let[_,Z]of this.#X.scan(this.#_(X),this.#G(Y)))yield[this.#Z(_),Z]}async batch(X){U("batch operations",X.length),await this.#X.batch(X.map((Y)=>{if(Y.type==="put")return{type:"put",key:this.#_(Y.key),value:Y.value};return{type:"delete",key:this.#_(Y.key)}}))}async conditionalBatch(X,Y){return k(this.#X,X.map((_)=>({key:this.#_(_.key),expectedValue:_.expectedValue})),Y.map((_)=>{if(_.type==="put")return{type:"put",key:this.#_(_.key),value:_.value};return{type:"delete",key:this.#_(_.key)}}))}async has(X){return I(this.#X,this.#_(X))}async deletePrefix(X){return u(this.#X,this.#_(X))}async deleteRange(X,Y){let _=this.#$(Q(Y));return c(this.#X,this.#_(X),_)}async*keys(X,Y){for await(let _ of m(this.#X,this.#_(X),this.#G(Y)))yield this.#Z(_)}async count(X){return g(this.#X,this.#_(X))}[Symbol.dispose](){this.#X[Symbol.dispose]()}}function w(X,Y){return new A(X,Y)}function f(X,Y){let _,Z,$=!1,G=()=>{if($)throw Error(`${Y.storageName} pool has been disposed and cannot be reused. Construct a new adapter.`);return _??=Y.loadPool(X).catch((M)=>{throw _=void 0,QX(M,Y)}),_};return{query:async(M,F)=>{return(await G()).query(M,F)},connect:async()=>{return(await G()).connect()},end:async()=>{return $=!0,Z??=(async()=>{if(_===void 0)return;await(await _.catch(()=>{return}))?.end()})(),Z}}}var VX=/cannot find module|module_not_found|failed to resolve|could not resolve/i;function QX(X,Y){let _=X instanceof Error?X.message:String(X);if(VX.test(_))return Error(`${Y.storageName} requires the optional peer dependency "${Y.driverName}". Install it in your application with: bun add ${Y.driverName} (or npm install ${Y.driverName}).`,{cause:X});return X instanceof Error?X:Error(_)}function N(X){return X.rowCount??X.affectedRows??X.rows.length}function j(X){if(X instanceof Uint8Array)return new Uint8Array(X);return new Uint8Array(X)}function B(X){return Buffer.from(X)}function K(X){let Y=new Map,_=new Set;for(let Z of X)if(Z.type==="put")_.delete(Z.key),Y.set(Z.key,Z.value);else Y.delete(Z.key),_.add(Z.key);return{puts:Y,deletes:_}}async function d(X,Y,_){if(_.length===0)return!0;let Z=_.map((M)=>M.key),$=await X.query(Y.selectValuesByKeys,[Z]),G=new Map;for(let M of $.rows){let F=M.value;if(F!==null&&F!==void 0)G.set(M.key,j(F))}for(let M of _){let F=G.get(M.key)??null;if(!y(F,M.expectedValue))return!1}return!0}async function S(X,Y,_){if(_.puts.size>0){let Z=[],$=[];for(let[G,M]of _.puts)Z.push(G),$.push(B(M));await X.query(Y.upsertValuesByKeys,[Z,$])}if(_.deletes.size>0)await X.query(Y.deleteValuesByKeys,[[..._.deletes]])}var p=/^[a-z_][a-z0-9_]*$/i;function l(X,Y,_){if(!p.test(X))throw Error(`${_} storage ${Y} name "${X}" is not a valid ${_} identifier. Use only letters, digits, and underscores, starting with a letter or underscore (matching ${p.source}).`)}var a="kv";function z(X,Y){l(X,Y,"Postgres")}function n(X){let{schema:Y,table:_}=X;if(Y===void 0&&_===void 0)return a;let Z=_??a;if(z(Z,"table"),Y===void 0)return`"${Z}"`;return z(Y,"schema"),`"${Y}"."${Z}"`}function W(X){return[X,x(X)]}function i(X,Y){let{gt:_,gte:Z,lt:$,lte:G}=Y,M=W(X),F=["key >= $1 AND key < $2"];if(_!==void 0)M.push(_),F.push(`key > $${M.length}`);if(Z!==void 0)M.push(Z),F.push(`key >= $${M.length}`);if($!==void 0)M.push($),F.push(`key < $${M.length}`);if(G!==void 0)M.push(G),F.push(`key <= $${M.length}`);return{conditions:F,parameters:M}}function s(X,Y={}){let{limit:_,reverse:Z}=Y,{conditions:$,parameters:G}=i(X,Y),M=Z?"DESC":"ASC",F="";if(_!==void 0)G.push(_),F=` LIMIT $${G.length}`;return{parameters:G,whereOrderLimit:`WHERE ${$.join(" AND ")} ORDER BY key ${M}${F}`}}function r(X){let Y=`CREATE TABLE IF NOT EXISTS ${X} (
|
|
3
3
|
key TEXT COLLATE "C" PRIMARY KEY,
|
|
4
4
|
value BYTEA NOT NULL
|
|
5
|
-
)`,
|
|
5
|
+
)`,_=`
|
|
6
6
|
SELECT COALESCE(co.collname, 'default') AS collation
|
|
7
7
|
FROM pg_attribute a
|
|
8
8
|
LEFT JOIN pg_collation co ON co.oid = a.attcollation
|
|
9
9
|
WHERE a.attrelid = to_regclass($1) AND a.attname = 'key' AND a.attnum > 0
|
|
10
|
-
`;return{tableReference:
|
|
10
|
+
`;return{tableReference:X,createTable:Y,selectKeyCollation:`
|
|
11
11
|
SELECT COALESCE(co.collname, 'default') AS collation
|
|
12
12
|
FROM pg_attribute a
|
|
13
13
|
LEFT JOIN pg_collation co ON co.oid = a.attcollation
|
|
14
14
|
WHERE a.attrelid = to_regclass($1) AND a.attname = 'key' AND a.attnum > 0
|
|
15
|
-
`,selectValueByKey:`SELECT value FROM ${
|
|
15
|
+
`,selectValueByKey:`SELECT value FROM ${X} WHERE key = $1`,upsertValueByKey:`INSERT INTO ${X} (key, value) VALUES ($1, $2) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value`,deleteValueByKey:`DELETE FROM ${X} WHERE key = $1`,selectKeyPresence:`SELECT 1 AS present FROM ${X} WHERE key = $1 LIMIT 1`,countKeysByPrefix:`SELECT COUNT(*) AS count FROM ${X} WHERE key >= $1 AND key < $2`,deleteKeysByPrefix:`DELETE FROM ${X} WHERE key >= $1 AND key < $2`,selectValuesByKeys:`SELECT key, value FROM ${X} WHERE key = ANY($1)`,upsertValuesByKeys:`INSERT INTO ${X} (key, value) SELECT * FROM unnest($1::text[], $2::bytea[]) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value`,deleteValuesByKeys:`DELETE FROM ${X} WHERE key = ANY($1)`,keyValueRangeSelect(Z,$={}){let{parameters:G,whereOrderLimit:M}=s(Z,$);return{parameters:G,sql:`SELECT key, value FROM ${X} ${M}`}},keyRangeSelect(Z,$={}){let{parameters:G,whereOrderLimit:M}=s(Z,$);return{parameters:G,sql:`SELECT key FROM ${X} ${M}`}},keyRangeDelete(Z,$){let{conditions:G,parameters:M}=i(Z,$),F=G.join(" AND ");if($.limit===void 0)return{parameters:M,sql:`DELETE FROM ${X} WHERE ${F}`};return M.push($.limit),{parameters:M,sql:`DELETE FROM ${X} WHERE key IN (SELECT key FROM ${X} WHERE ${F} ORDER BY key ASC LIMIT $${M.length})`}}}}var t="BEGIN ISOLATION LEVEL SERIALIZABLE",o="BEGIN ISOLATION LEVEL READ COMMITTED",e="BEGIN READ ONLY",XX="COMMIT",O="ROLLBACK";function YX(X){return z(X,"schema"),`CREATE SCHEMA IF NOT EXISTS "${X}"`}var jX=/^PRAGMA\b/iu,BX=/^PRAGMA\s+(?:[A-Z_][A-Z0-9_]*\.)?[A-Z_][A-Z0-9_]*\s*$/iu,WX=/^SELECT\b/iu;function EX(X){return X.trim().replace(/;+\s*$/u,"").trim()}function LX(X){return BX.test(X)}function _X(X){let Y=EX(X);if(Y.length===0)throw Error("Storage query must not be empty.");if(Y.includes(";"))throw Error("Storage query must contain exactly one read-only statement.");if(WX.test(Y))return;if(jX.test(Y)&&LX(Y))return;throw Error("Storage query only supports read-only SELECT and PRAGMA statements.")}var DX=new Set(["40001","40P01"]),JX=5;function CX(X){if(typeof X!=="object"||X===null||!("code"in X))return!1;let Y=X.code;return typeof Y==="string"&&DX.has(Y)}class T{#X;#Y;#_;#Z;#G;#$;constructor(X,Y){if(this.#G=X.pool===void 0,X.pool===void 0){if(X.url===void 0)throw Error("PostgresKeyValueStorage requires either a `url` to build a pool from, or a pre-built `pool`; neither was provided.");this.#X=Y(X.url)}else this.#X=X.pool;this.#_=X.schema;let _=n({schema:X.schema,table:X.table});this.#Y=r(_)}capabilities(){return{persistence:"remote",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#J(){return this.#Z??=this.#H().catch((X)=>{throw this.#Z=void 0,X}),this.#Z}async#H(){if(this.#_!==void 0)await this.#X.query(YX(this.#_));await this.#X.query(this.#Y.createTable),await this.#U()}async#U(){let Y=(await this.#X.query(this.#Y.selectKeyCollation,[this.#Y.tableReference])).rows[0]?.collation;if(Y==="C")return;let _=Y===void 0?"no such table":typeof Y==="string"?`"${Y}"`:"an unexpected collation value";throw Error(`Postgres storage requires the ${this.#Y.tableReference} table's "key" column to use COLLATE "C" (found ${_}). A table created without COLLATE "C" sorts keys by the database locale, which breaks Weft's lexicographic prefix scans. Use a fresh table, or recreate it as: CREATE TABLE ${this.#Y.tableReference} (key TEXT COLLATE "C" PRIMARY KEY, value BYTEA NOT NULL).`)}async get(X){await this.#J();let _=(await this.#X.query(this.#Y.selectValueByKey,[X])).rows[0];if(_===void 0)return null;let Z=_.value;if(Z===null||Z===void 0)return null;return j(Z)}async put(X,Y){await this.#J(),await this.#X.query(this.#Y.upsertValueByKey,[X,B(Y)])}async delete(X){await this.#J(),await this.#X.query(this.#Y.deleteValueByKey,[X])}async has(X){return await this.#J(),(await this.#X.query(this.#Y.selectKeyPresence,[X])).rows.length>0}async deletePrefix(X){await this.#J();let[Y,_]=W(X),Z=await this.#X.query(this.#Y.deleteKeysByPrefix,[Y,_]);return N(Z)}async deleteRange(X,Y){await this.#J();let _=Q(Y),{parameters:Z,sql:$}=this.#Y.keyRangeDelete(X,_),G=await this.#X.query($,Z);return N(G)}async*scan(X,Y={}){await this.#J();let{parameters:_,sql:Z}=this.#Y.keyValueRangeSelect(X,Y),$=await this.#X.query(Z,_);for(let G of $.rows)yield[G.key,j(G.value)]}async*keys(X,Y={}){await this.#J();let{parameters:_,sql:Z}=this.#Y.keyRangeSelect(X,Y),$=await this.#X.query(Z,_);for(let G of $.rows)yield G.key}async count(X){await this.#J();let[Y,_]=W(X),Z=await this.#X.query(this.#Y.countKeysByPrefix,[Y,_]);return Number(Z.rows[0]?.count??0)}scoped(X){return w(this,X)}async#M(X,Y,_=()=>!0){let Z=await this.#X.connect();try{await Z.query(X);try{let $=await Y(Z);return await Z.query(_($)?XX:O),$}catch($){throw await Z.query(O).catch(()=>{}),$}}finally{Z.release()}}async batch(X){if(U("batch operations",X.length),X.length===0)return;await this.#J(),await this.#M(o,async(Y)=>{await S(Y,this.#Y,K(X))})}async conditionalBatch(X,Y){U("conditionalBatch conditions",X.length),U("conditionalBatch operations",Y.length),await this.#J();let _=K(Y),Z;for(let $=0;$<JX;$+=1)try{return await this.#M(t,async(G)=>{if(!await d(G,this.#Y,X))return!1;return await S(G,this.#Y,_),!0},(G)=>G)}catch(G){if(!CX(G))throw G;Z=G}throw Error(`conditionalBatch exhausted ${JX} attempts after retryable transaction failures`,{cause:Z})}async query(X,Y){return await this.#J(),_X(X),this.#M(e,async(_)=>{return(await _.query(X,Y??[])).rows})}#F(){if(!this.#G)return Promise.resolve();return this.#$??=this.#X.end(),this.#$}[Symbol.dispose](){this.#F().catch(()=>{})}async[Symbol.asyncDispose](){await this.#F()}}function AX(X){return f(X,{driverName:"@neondatabase/serverless",storageName:"NeonStorage",loadPool:(Y)=>import("@neondatabase/serverless").then(({Pool:_})=>new _({connectionString:Y}))})}class NX extends T{constructor(X,Y=AX){super(X,Y)}}export{NX as NeonStorage};
|