@lostgradient/weft 0.21.0 → 0.22.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/generated/operation-catalog.snapshot.json +207 -80
- package/dist/cli/generated/operation-client.generated.d.ts +120 -43
- package/dist/client/http-client-storage.js +1 -1
- package/dist/http.js +2 -2
- package/dist/indexeddb.js +1 -1
- package/dist/json-schema.js +3 -3
- package/dist/observability/index.js +2 -2
- package/dist/server/operations/get-task-diagnostics.d.ts +115 -25
- package/dist/server/operations/get-task-diagnostics.js +93 -7
- package/dist/storage/auto.js +1 -1
- package/dist/storage/bun-sql.js +2 -2
- package/dist/storage/compressed-storage.js +1 -1
- package/dist/storage/http.js +1 -1
- package/dist/storage/interface.js +1 -1
- package/dist/storage/lmdb.js +1 -1
- package/dist/storage/memory.js +1 -1
- package/dist/storage/neon.js +4 -4
- package/dist/storage/node-sqlite.js +2 -2
- 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/dist/worker/protocol.js +1 -1
- package/package.json +3 -2
package/dist/storage/http.js
CHANGED
|
@@ -105,7 +105,7 @@ export class HTTPStorage {
|
|
|
105
105
|
await this.#request(this.#storageKeyUrl(key), {
|
|
106
106
|
method: "PUT",
|
|
107
107
|
headers: { "content-type": "application/octet-stream" },
|
|
108
|
-
body: new Blob([value])
|
|
108
|
+
body: new Blob([new Uint8Array(value)])
|
|
109
109
|
});
|
|
110
110
|
}
|
|
111
111
|
async delete(key) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
2
|
+
var k=import.meta.require;function s(e,t,n){if(!e.capabilities()[t])throw Error(`Feature "${n}" requires storage capability "${t}", but this storage backend does not provide it.`)}function w(e){let t=e.capabilities(),n=[];if(t.persistence!=="local"&&t.persistence!=="remote")n.push(`persistence must be "local" or "remote" (got "${t.persistence}")`);if(t.readAfterWrite!=="linearizable")n.push(`readAfterWrite must be "linearizable" (got "${t.readAfterWrite}")`);if(t.scanConsistency!=="snapshot")n.push(`scanConsistency must be "snapshot" (got "${t.scanConsistency}")`);if(!t.atomicBatch)n.push("atomicBatch must be true");if(!t.conditionalBatch)n.push("conditionalBatch must be true");if(n.length>0)throw Error(`Storage is not durable enough for recovery: ${n.join("; ")}.`)}var l="default";async function d(e,t){return await e.get(t)!==null}async function*a(e,t,n){for await(let[i]of e.scan(t,n))yield i}async function u(e,t){let n=0;for await(let i of a(e,t))n++;return n}async function f(e,t){let n=[];for await(let i of a(e,t))n.push({type:"delete",key:i});if(n.length===0)return 0;return await e.batch(n),n.length}async function O(e,t,n){let i=[];for await(let y of a(e,t,n))i.push({type:"delete",key:y});if(i.length===0)return 0;return await e.batch(i),i.length}function r(e){return encodeURIComponent(e)}function b(e){return decodeURIComponent(e)}function S(e){try{return decodeURIComponent(e)}catch{return null}}var p={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${r(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${r(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};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:","ownership-mode-marker","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-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var c=1e4,U=1e4;class h extends Error{code="StorageBatchOperationLimitExceededError";cap=c;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${c}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function g(e,t){if(t>c)throw new h(e,t)}function V(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function W(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function q(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0}async function N(e,t){if(e.has)return e.has(t);return d(e,t)}function F(e,t,n){if(e.keys)return e.keys(t,n);return a(e,t,n)}async function z(e,t){if(e.count)return e.count(t);return u(e,t)}async function G(e,t){if(e.deletePrefix)return e.deletePrefix(t);return f(e,t)}async function X(e,t){g("batch operations",t.length),await e.batch(t)}async function Y(e,t,n){if(g("conditionalBatch conditions",t.length),g("conditionalBatch operations",n.length),s(e,"conditionalBatch","storageConditionalBatch"),!e.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return e.conditionalBatch(t,n)}var o=(e)=>String(e).padStart(16,"0"),v="0",C="1",m=(e,t,n,i)=>`sig:${r(e)}:${r(t)}:${i}:${r(n)}`,j={workflow:(e)=>`wf:${r(e)}`,checkpoint:(e)=>`wf:${r(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${r(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${r(e)}:timeline:`,timeline:(e,t)=>`wf:${r(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${r(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${r(t)}`,scheduleRun:(e)=>`schedule-run:${r(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${r(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${r(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${r(e)}:${r(t)}`,operation:(e,t,n)=>`op:${e}:${o(t)}:${n}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,n)=>`audit:bulk:${o(e)}:${r(t)}:${r(n)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${o(e)}:${r(t)}`,asyncActivity:(e,t)=>`async-act:v1:${r(e)}:${r(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${r(e)}:${r(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${r(e)}:`,activityReconciliation:(e,t,n)=>`actrec:v1:${r(e)}:${r(t)}:${n}`,eventPrefix:(e)=>`ev:${r(e)}:`,event:(e,t)=>`ev:${r(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${r(e)}:head`,eventWatermark:(e)=>`ev:${r(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${r(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${r(e)}:${String(t).padStart(10,"0")}`,signal:(e,t,n)=>m(e,t,n,C),startSignal:(e,t,n)=>m(e,t,n,v),signalSequence:(e)=>`sigseq:v1:${r(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${r(e)}:`,signalAcceptedResponse:(e,t,n)=>`sigres:v1:${r(e)}:${r(t)}:${r(n)}`,deadline:(e,t)=>`wf-deadline:${o(e)}:${r(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${o(e)}:${r(t)}`,teardownTimer:(e,t)=>`wf-teardown:${o(e)}:${r(t)}`,delayedStart:(e,t)=>`wf-delayed:${o(e)}:${r(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${o(e)}:${r(t)}`,attribute:(e)=>`attr:${r(e)}`,attributeIndex:(e,t,n)=>`idx:${e}:${t}:${r(n)}`,tagIndex:(e,t)=>`tag:${r(e)}:${r(t)}`,updatePrefix:(e)=>`upd:${r(e)}:`,update:(e,t)=>`upd:${r(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${r(e)}:${t}`,startIdempotency:(e)=>`start-idem:${r(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`,livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${r(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...p,budget:(e,t,n)=>`budget:${e}:${t}:${n}`,review:(e,t)=>`review:${r(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${r(e)}`,childCancellationPrefix:(e)=>`child-cancel:${r(e)}:`,childCancellation:(e,t)=>`child-cancel:${r(e)}:${r(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${r(e)}:${t===void 0?"":`${r(t)}:`}`,childWorkflowByParent:(e,t,n)=>`child-by-parent:${r(e)}:${t===void 0?"":`${r(t)}:`}${r(n)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${r(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${r(e)}:${r(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${r(e)}`,workflowHasServices:(e)=>`wf-has-services:${r(e)}`,finalizerState:(e)=>`wf-finalizer-state:${r(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${r(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${r(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${r(e)}`,offload:(e,t)=>`offload:${r(e)}:${t}`,archive:(e,t)=>`archive:${r(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${r(e)}:${r(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${l}:${r(e)}:${r(t)}`,streamChunkPrefix:(e,t)=>`blob:${r(e)}:${t}:chunk:`,streamChunk:(e,t,n)=>`blob:${r(e)}:${t}:chunk:${String(n).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${r(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${r(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,n)=>`tool-effect:${r(e)}:${t}:${n}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${r(e)}:${r(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${r(e)}:${r(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${o(e)}:${r(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${o(e)}:${r(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${o(e)}:${r(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${r(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};export{l as DEFAULT_SCOPE,j as KEYS,c as MAX_BATCH_OPERATIONS,U as MAX_SCAN_LIMIT,h as StorageBatchOperationLimitExceededError,x as WEFT_RESERVED_KEY_PREFIXES,w as assertDurableStorageForRecovery,g as assertStorageBatchOperationCount,b as decodeStorageKeyComponent,r as encodeStorageKeyComponent,W as matchesScanOptions,s as requireStorageCapability,V as resolvePrefixRangeEnd,X as storageBatch,Y as storageConditionalBatch,z as storageCount,G as storageDeletePrefix,N as storageHas,F as storageKeys,q as storageValuesEqual,S as tryDecodeStorageKeyComponent};
|
package/dist/storage/lmdb.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var s=import.meta.require;function L(_,F,Y){if(!_.capabilities()[F])throw Error(`Feature "${Y}" requires storage capability "${F}", but this storage backend does not provide it.`)}function g(_){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 N="default";async function D(_,F){return await _.get(F)!==null}async function*G(_,F,Y){for await(let[X]of _.scan(F,Y))yield X}async function R(_,F){let Y=0;for await(let X of G(_,F))Y++;return Y}async function A(_,F){let Y=[];for await(let X of G(_,F))Y.push({type:"delete",key:X});if(Y.length===0)return 0;return await _.batch(Y),Y.length}async function S(_,F,Y){let X=[];for await(let U of G(_,F,Y))X.push({type:"delete",key:U});if(X.length===0)return 0;return await _.batch(X),X.length}function E(_){return encodeURIComponent(_)}function I(_){return decodeURIComponent(_)}function w(_){try{return decodeURIComponent(_)}catch{return null}}var C={workflowOwnerEpoch:(_)=>`wf-owner-epoch:${E(_)}`,workflowOwnerHolder:(_)=>`wf-owner-holder:${E(_)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var k=["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:","ownership-mode-marker","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-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var q=1e4,Q_=1e4;class K extends Error{code="StorageBatchOperationLimitExceededError";cap=q;count;target;constructor(_,F){super(`${_} count ${F} exceeds MAX_BATCH_OPERATIONS (${q}).`);this.name="StorageBatchOperationLimitExceededError",this.target=_,this.count=F}}function Z(_,F){if(F>q)throw new K(_,F)}function V(_){return _.length>0?_.slice(0,-1)+String.fromCharCode(_.charCodeAt(_.length-1)+1):"\xFF"}function W(_,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 D(_,F)}function O(_,F,Y){if(_.keys)return _.keys(F,Y);return G(_,F,Y)}async function h(_,F){if(_.count)return _.count(F);return R(_,F)}async function b(_,F){if(_.deletePrefix)return _.deletePrefix(F);return A(_,F)}async function Z_(_,F){Z("batch operations",F.length),await _.batch(F)}async function m(_,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)}var M=(_)=>String(_).padStart(16,"0"),f="0",l="1",z=(_,F,Y,X)=>`sig:${E(_)}:${E(F)}:${X}:${E(Y)}`,$_={workflow:(_)=>`wf:${E(_)}`,checkpoint:(_)=>`wf:${E(_)}:ckpt`,checkpointHistory:(_,F)=>`wf:${E(_)}:ckpt:${String(F).padStart(10,"0")}`,timelinePrefix:(_)=>`wf:${E(_)}:timeline:`,timeline:(_,F)=>`wf:${E(_)}:timeline:${String(F).padStart(10,"0")}`,schedule:(_)=>`schedule:${E(_)}`,scheduleTick:(_,F)=>`schedule-due:${String(_).padStart(16,"0")}:${E(F)}`,scheduleRun:(_)=>`schedule-run:${E(_)}`,scheduleRunLink:(_)=>`schedule-run-link:${E(_)}`,scheduleRunBySchedulePrefix:(_)=>`schedule-run-by-schedule:${E(_)}:`,scheduleRunBySchedule:(_,F)=>`schedule-run-by-schedule:${E(_)}:${E(F)}`,operation:(_,F,Y)=>`op:${_}:${M(F)}:${Y}`,operationInflight:(_)=>`op:inflight:${_}`,operationQueued:(_)=>`op:queued:${_}`,operationResolved:(_)=>`op:resolved:${_}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(_,F,Y)=>`audit:bulk:${M(_)}:${E(F)}:${E(Y)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(_,F)=>`op:resolved-by-time:${M(_)}:${E(F)}`,asyncActivity:(_,F)=>`async-act:v1:${E(_)}:${E(F)}`,asyncActivityResolution:(_,F)=>`async-act:v1:${E(_)}:${E(F)}:resolution`,activityReconciliationPrefix:(_)=>`actrec:v1:${E(_)}:`,activityReconciliation:(_,F,Y)=>`actrec:v1:${E(_)}:${E(F)}:${Y}`,eventPrefix:(_)=>`ev:${E(_)}:`,event:(_,F)=>`ev:${E(_)}:${String(F).padStart(10,"0")}`,eventHead:(_)=>`ev:${E(_)}:head`,eventWatermark:(_)=>`ev:${E(_)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(_)=>`fleet-event:${String(_).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(_)=>`fleet-event-by-workflow:${E(_)}:`,fleetEventByWorkflow:(_,F)=>`fleet-event-by-workflow:${E(_)}:${String(F).padStart(10,"0")}`,signal:(_,F,Y)=>z(_,F,Y,l),startSignal:(_,F,Y)=>z(_,F,Y,f),signalSequence:(_)=>`sigseq:v1:${E(_)}`,signalAcceptedResponsePrefix:(_)=>`sigres:v1:${E(_)}:`,signalAcceptedResponse:(_,F,Y)=>`sigres:v1:${E(_)}:${E(F)}:${E(Y)}`,deadline:(_,F)=>`wf-deadline:${M(_)}:${E(F)}`,terminalCleanup:(_,F)=>`wf-cleanup:${M(_)}:${E(F)}`,teardownTimer:(_,F)=>`wf-teardown:${M(_)}:${E(F)}`,delayedStart:(_,F)=>`wf-delayed:${M(_)}:${E(F)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(_,F)=>`wf-terminal:${M(_)}:${E(F)}`,attribute:(_)=>`attr:${E(_)}`,attributeIndex:(_,F,Y)=>`idx:${_}:${F}:${E(Y)}`,tagIndex:(_,F)=>`tag:${E(_)}:${E(F)}`,updatePrefix:(_)=>`upd:${E(_)}:`,update:(_,F)=>`upd:${E(_)}:${F}`,updateResponse:(_)=>`upr:${_}`,updateIdempotency:(_,F)=>`upk:${E(_)}:${F}`,startIdempotency:(_)=>`start-idem:${E(_)}`,startIdempotencySignalId:(_)=>`start-idem:${_}`,livenessPrefix:()=>"liveness:",liveness:(_)=>`liveness:${E(_)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...C,budget:(_,F,Y)=>`budget:${_}:${F}:${Y}`,review:(_,F)=>`review:${E(_)}:${F}`,workflowHeaders:(_)=>`wf-headers:${E(_)}`,childCancellationPrefix:(_)=>`child-cancel:${E(_)}:`,childCancellation:(_,F)=>`child-cancel:${E(_)}:${E(F)}`,childWorkflowByParentPrefix:(_,F)=>`child-by-parent:${E(_)}:${F===void 0?"":`${E(F)}:`}`,childWorkflowByParent:(_,F,Y)=>`child-by-parent:${E(_)}:${F===void 0?"":`${E(F)}:`}${E(Y)}`,terminalCleanupNeeded:(_)=>`wf-cleanup-needed:${E(_)}`,workflowConcurrency:(_,F)=>`wf-concurrency:${E(_)}:${E(F)}`,workflowConcurrencyHolder:(_)=>`wf-concurrency-holder:${E(_)}`,workflowHasServices:(_)=>`wf-has-services:${E(_)}`,finalizerState:(_)=>`wf-finalizer-state:${E(_)}`,teardownOwed:(_)=>`wf-teardown-needed:${E(_)}`,teardownSucceeded:(_)=>`wf-teardown-succeeded:${E(_)}`,teardownDeadLetter:(_)=>`wf-teardown-deadletter:${E(_)}`,offload:(_,F)=>`offload:${E(_)}:${F}`,archive:(_,F)=>`archive:${E(_)}:${F}`,stateExecution:(_,F)=>`state:execution:${E(_)}:${E(F)}`,stateWorkflow:(_,F)=>`state:workflow-scope:${N}:${E(_)}:${E(F)}`,streamChunkPrefix:(_,F)=>`blob:${E(_)}:${F}:chunk:`,streamChunk:(_,F,Y)=>`blob:${E(_)}:${F}:chunk:${String(Y).padStart(10,"0")}`,streamTail:(_,F)=>`blob:${E(_)}:${F}:tail`,streamMetadata:(_,F)=>`blob:${E(_)}:${F}:meta`,budgetCharged:(_)=>`budget-charged:${_}`,toolEffect:(_,F,Y)=>`tool-effect:${E(_)}:${F}:${Y}`,workflowVisibilityStatus:(_,F)=>`wf-idx-status:${E(_)}:${E(F)}`,workflowVisibilityType:(_,F)=>`wf-idx-type:${E(_)}:${E(F)}`,workflowVisibilityCreated:(_,F)=>`wf-idx-created:${M(_)}:${E(F)}`,workflowVisibilityUpdated:(_,F)=>`wf-idx-updated:${M(_)}:${E(F)}`,workflowVisibilityDeadline:(_,F)=>`wf-idx-deadline:${M(_)}:${E(F)}`,workflowVisibilityManifest:(_)=>`wf-idx-manifest:${E(_)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function d(_){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={},Y=!1;for(let U of["gt","gte","lt","lte"]){let Q=_[U];if(Q===void 0)continue;if(typeof Q!=="string")throw Error("deleteRange bounds must be strings");F[U]=Q,Y=!0}if(!Y)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let X=d(_.limit);if(X!==void 0)F.limit=X;return F}async function c(_,F,Y){let X=H(Y);if(_.deleteRange)return _.deleteRange(F,X);return S(_,F,X)}function B(_){return _.replaceAll(/:+$/g,"")}function p(_,F){let Y=B(_),X=B(F);if(Y.length===0)return X;if(X.length===0)return Y;return`${Y}:${X}`}class T{#_;#Y;constructor(_,F){this.#_=_,this.#Y=B(F)}#F(_){if(this.#Y.length===0)return _;return _.length===0?`${this.#Y}:`:`${this.#Y}:${_}`}#E(_){return _.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)}})}#X(_){if(this.#Y.length===0)return _;return _.slice(this.#Y.length+1)}#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}#M(_={}){let F=this.#U(_);if(_.reverse!==void 0)F.reverse=_.reverse;return F}#Q(_){return this.#U(_)}capabilities(){return this.#_.capabilities()}scoped(_){return new T(this.#_,p(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,X]of this.#_.scan(this.#F(_),this.#M(F)))yield[this.#X(Y),X]}async batch(_){Z("batch operations",_.length),await this.#_.batch(this.#E(_))}async conditionalBatch(_,F){return m(this.#_,_.map((Y)=>({key:this.#F(Y.key),expectedValue:Y.expectedValue})),this.#E(F))}async has(_){return v(this.#_,this.#F(_))}async deletePrefix(_){return b(this.#_,this.#F(_))}async deleteRange(_,F){let Y=this.#Q(H(F));return c(this.#_,this.#F(_),Y)}async*keys(_,F){for await(let Y of O(this.#_,this.#F(_),this.#M(F)))yield this.#X(Y)}async count(_){return h(this.#_,this.#F(_))}[Symbol.dispose](){this.#_[Symbol.dispose]()}}function u(_,F){return new T(_,F)}import*as x from"lmdb";class a{#_;#Y=!1;#F=null;constructor(_){this.#_=x.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 Y of this.keys(_))F.push(Y);if(F.length===0)return 0;return await this.#_.batch(()=>{for(let Y of F)this.#_.remove(Y)}),F.length}async deleteRange(_,F){this.#E();let Y=H(F),X=[];for await(let U of this.keys(_,Y))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:Y,reverse:X}=F,U=V(_),Q=X?this.#_.getRange({start:U,end:_,reverse:!0}):this.#_.getRange({start:_,end:U}),J=0,j=!1;for(let{key:$,value:y}of Q){if(!$.startsWith(_)){if(X&&!j)continue;break}if(j=!0,!W($,F))continue;if(Y!==void 0&&J>=Y)break;yield[$,new Uint8Array(y)],J++}}async*keys(_,F={}){this.#E();let{limit:Y,reverse:X}=F,U=V(_),Q=X?this.#_.getKeys({start:U,end:_,reverse:!0}):this.#_.getKeys({start:_,end:U}),J=0,j=!1;for(let $ of Q){if(!$.startsWith(_)){if(X&&!j)continue;break}if(j=!0,!W($,F))continue;if(Y!==void 0&&J>=Y)break;yield $,J++}}async count(_){this.#E();let F=V(_);return this.#_.getKeysCount({start:_,end:F})}scoped(_){return this.#E(),u(this,_)}async batch(_){if(this.#E(),Z("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(),Z("conditionalBatch conditions",_.length),Z("conditionalBatch operations",F.length),this.#_.transactionSync(()=>{for(let X of _){let U=this.#_.get(X.key),Q=U===void 0?null:new Uint8Array(U);if(!P(Q,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{a as LMDBStorage};
|
|
2
|
+
var X=import.meta.require;function h(e,t,r){if(!e.capabilities()[t])throw Error(`Feature "${r}" requires storage capability "${t}", but this storage backend does not provide it.`)}function U(e){let t=e.capabilities(),r=[];if(t.persistence!=="local"&&t.persistence!=="remote")r.push(`persistence must be "local" or "remote" (got "${t.persistence}")`);if(t.readAfterWrite!=="linearizable")r.push(`readAfterWrite must be "linearizable" (got "${t.readAfterWrite}")`);if(t.scanConsistency!=="snapshot")r.push(`scanConsistency must be "snapshot" (got "${t.scanConsistency}")`);if(!t.atomicBatch)r.push("atomicBatch must be true");if(!t.conditionalBatch)r.push("conditionalBatch must be true");if(r.length>0)throw Error(`Storage is not durable enough for recovery: ${r.join("; ")}.`)}var m="default";async function v(e,t){return await e.get(t)!==null}async function*u(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function x(e,t){let r=0;for await(let i of u(e,t))r++;return r}async function k(e,t){let r=[];for await(let i of u(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function O(e,t,r){let i=[];for await(let o of u(e,t,r))i.push({type:"delete",key:o});if(i.length===0)return 0;return await e.batch(i),i.length}function n(e){return encodeURIComponent(e)}function V(e){return decodeURIComponent(e)}function N(e){try{return decodeURIComponent(e)}catch{return null}}var R={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var W=["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:","ownership-mode-marker","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-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var y=1e4,le=1e4;class P extends Error{code="StorageBatchOperationLimitExceededError";cap=y;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${y}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function l(e,t){if(t>y)throw new P(e,t)}function p(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function b(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function B(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let r=0;r<e.byteLength;r++)if(e[r]!==t[r])return!1;return!0}async function D(e,t){if(e.has)return e.has(t);return v(e,t)}function A(e,t,r){if(e.keys)return e.keys(t,r);return u(e,t,r)}async function E(e,t){if(e.count)return e.count(t);return x(e,t)}async function I(e,t){if(e.deletePrefix)return e.deletePrefix(t);return k(e,t)}async function ce(e,t){l("batch operations",t.length),await e.batch(t)}async function z(e,t,r){if(l("conditionalBatch conditions",t.length),l("conditionalBatch operations",r.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(t,r)}var s=(e)=>String(e).padStart(16,"0"),M="0",H="1",C=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,ge={workflow:(e)=>`wf:${n(e)}`,checkpoint:(e)=>`wf:${n(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${n(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${n(e)}:timeline:`,timeline:(e,t)=>`wf:${n(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${n(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${n(t)}`,scheduleRun:(e)=>`schedule-run:${n(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${n(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${n(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${n(e)}:${n(t)}`,operation:(e,t,r)=>`op:${e}:${s(t)}:${r}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,r)=>`audit:bulk:${s(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${s(e)}:${n(t)}`,asyncActivity:(e,t)=>`async-act:v1:${n(e)}:${n(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${n(e)}:${n(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${n(e)}:`,activityReconciliation:(e,t,r)=>`actrec:v1:${n(e)}:${n(t)}:${r}`,eventPrefix:(e)=>`ev:${n(e)}:`,event:(e,t)=>`ev:${n(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${n(e)}:head`,eventWatermark:(e)=>`ev:${n(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${n(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${n(e)}:${String(t).padStart(10,"0")}`,signal:(e,t,r)=>C(e,t,r,H),startSignal:(e,t,r)=>C(e,t,r,M),signalSequence:(e)=>`sigseq:v1:${n(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${n(e)}:`,signalAcceptedResponse:(e,t,r)=>`sigres:v1:${n(e)}:${n(t)}:${n(r)}`,deadline:(e,t)=>`wf-deadline:${s(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${s(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${s(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${s(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${s(e)}:${n(t)}`,attribute:(e)=>`attr:${n(e)}`,attributeIndex:(e,t,r)=>`idx:${e}:${t}:${n(r)}`,tagIndex:(e,t)=>`tag:${n(e)}:${n(t)}`,updatePrefix:(e)=>`upd:${n(e)}:`,update:(e,t)=>`upd:${n(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${n(e)}:${t}`,startIdempotency:(e)=>`start-idem:${n(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`,livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${n(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...R,budget:(e,t,r)=>`budget:${e}:${t}:${r}`,review:(e,t)=>`review:${n(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${n(e)}`,childCancellationPrefix:(e)=>`child-cancel:${n(e)}:`,childCancellation:(e,t)=>`child-cancel:${n(e)}:${n(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}`,childWorkflowByParent:(e,t,r)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}${n(r)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${n(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${n(e)}:${n(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${n(e)}`,workflowHasServices:(e)=>`wf-has-services:${n(e)}`,finalizerState:(e)=>`wf-finalizer-state:${n(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${n(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${n(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${n(e)}`,offload:(e,t)=>`offload:${n(e)}:${t}`,archive:(e,t)=>`archive:${n(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${n(e)}:${n(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${m}:${n(e)}:${n(t)}`,streamChunkPrefix:(e,t)=>`blob:${n(e)}:${t}:chunk:`,streamChunk:(e,t,r)=>`blob:${n(e)}:${t}:chunk:${String(r).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${n(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${n(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,r)=>`tool-effect:${n(e)}:${t}:${r}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${n(e)}:${n(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${n(e)}:${n(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${s(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${s(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${s(e)}:${n(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${n(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function q(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 f(e){let t={},r=!1;for(let o of["gt","gte","lt","lte"]){let a=e[o];if(a===void 0)continue;if(typeof a!=="string")throw Error("deleteRange bounds must be strings");t[o]=a,r=!0}if(!r)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let i=q(e.limit);if(i!==void 0)t.limit=i;return t}async function _(e,t,r){let i=f(r);if(e.deleteRange)return e.deleteRange(t,i);return O(e,t,i)}function w(e){return e.replaceAll(/:+$/g,"")}function F(e,t){let r=w(e),i=w(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class S{#e;#r;constructor(e,t){this.#e=e,this.#r=w(t)}#t(e){if(this.#r.length===0)return e;return e.length===0?`${this.#r}:`:`${this.#r}:${e}`}#n(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#t(t.key),value:t.value};return{type:"delete",key:this.#t(t.key)}})}#i(e){if(this.#r.length===0)return e;return e.slice(this.#r.length+1)}#o(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#t(e.gt);if(e.gte!==void 0)t.gte=this.#t(e.gte);if(e.lt!==void 0)t.lt=this.#t(e.lt);if(e.lte!==void 0)t.lte=this.#t(e.lte);return t}#s(e={}){let t=this.#o(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#a(e){return this.#o(e)}capabilities(){return this.#e.capabilities()}scoped(e){return new S(this.#e,F(this.#r,e))}async get(e){return this.#e.get(this.#t(e))}async put(e,t){await this.#e.put(this.#t(e),t)}async delete(e){await this.#e.delete(this.#t(e))}async*scan(e,t){for await(let[r,i]of this.#e.scan(this.#t(e),this.#s(t)))yield[this.#i(r),i]}async batch(e){l("batch operations",e.length),await this.#e.batch(this.#n(e))}async conditionalBatch(e,t){return z(this.#e,e.map((r)=>({key:this.#t(r.key),expectedValue:r.expectedValue})),this.#n(t))}async has(e){return D(this.#e,this.#t(e))}async deletePrefix(e){return I(this.#e,this.#t(e))}async deleteRange(e,t){let r=this.#a(f(t));return _(this.#e,this.#t(e),r)}async*keys(e,t){for await(let r of A(this.#e,this.#t(e),this.#s(t)))yield this.#i(r)}async count(e){return E(this.#e,this.#t(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function L(e,t){return new S(e,t)}import*as T from"lmdb";class G{#e;#r=!1;#t=null;constructor(e){this.#e=T.open({path:e,encoding:"binary"})}#n(){if(this.#r)throw Error("LMDBStorage is closed")}capabilities(){return{persistence:"local",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!1}}async get(e){this.#n();let t=this.#e.get(e);if(t===void 0)return null;return new Uint8Array(t)}async put(e,t){this.#n(),await this.#e.put(e,Buffer.from(t))}async delete(e){this.#n(),await this.#e.remove(e)}async has(e){return this.#n(),this.#e.doesExist(e)}async deletePrefix(e){this.#n();let t=[];for await(let r of this.keys(e))t.push(r);if(t.length===0)return 0;return await this.#e.batch(()=>{for(let r of t)this.#e.remove(r)}),t.length}async deleteRange(e,t){this.#n();let r=f(t),i=[];for await(let o of this.keys(e,r))i.push(o);if(i.length===0)return 0;return await this.#e.batch(()=>{for(let o of i)this.#e.remove(o)}),i.length}async*scan(e,t={}){this.#n();let{limit:r,reverse:i}=t,o=p(e),a=i?this.#e.getRange({start:o,end:e,reverse:!0}):this.#e.getRange({start:e,end:o}),g=0,d=!1;for(let{key:c,value:K}of a){if(!c.startsWith(e)){if(i&&!d)continue;break}if(d=!0,!b(c,t))continue;if(r!==void 0&&g>=r)break;yield[c,new Uint8Array(K)],g++}}async*keys(e,t={}){this.#n();let{limit:r,reverse:i}=t,o=p(e),a=i?this.#e.getKeys({start:o,end:e,reverse:!0}):this.#e.getKeys({start:e,end:o}),g=0,d=!1;for(let c of a){if(!c.startsWith(e)){if(i&&!d)continue;break}if(d=!0,!b(c,t))continue;if(r!==void 0&&g>=r)break;yield c,g++}}async count(e){this.#n();let t=p(e);return this.#e.getKeysCount({start:e,end:t})}scoped(e){return this.#n(),L(this,e)}async batch(e){if(this.#n(),l("batch operations",e.length),e.length===0)return;await this.#e.batch(()=>{for(let t of e)if(t.type==="put")this.#e.put(t.key,Buffer.from(t.value));else this.#e.remove(t.key)})}async conditionalBatch(e,t){return this.#n(),l("conditionalBatch conditions",e.length),l("conditionalBatch operations",t.length),this.#e.transactionSync(()=>{for(let i of e){let o=this.#e.get(i.key),a=o===void 0?null:new Uint8Array(o);if(!B(a,i.expectedValue))return!1}for(let i of t)if(i.type==="put")this.#e.putSync(i.key,Buffer.from(i.value));else this.#e.removeSync(i.key);return!0})}close(){return this.#r=!0,this.#t??=(async()=>{await Promise.resolve(),await this.#e.close()})(),this.#t}[Symbol.dispose](){this.close()}}export{G as LMDBStorage};
|
package/dist/storage/memory.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var p=import.meta.require;function L(_,F,Y){if(!_.capabilities()[F])throw Error(`Feature "${Y}" requires storage capability "${F}", but this storage backend does not provide it.`)}function x(_){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 N="default";async function B(_,F){return await _.get(F)!==null}async function*j(_,F,Y){for await(let[E]of _.scan(F,Y))yield E}async function R(_,F){let Y=0;for await(let E of j(_,F))Y++;return Y}async function A(_,F){let Y=[];for await(let E of j(_,F))Y.push({type:"delete",key:E});if(Y.length===0)return 0;return await _.batch(Y),Y.length}async function C(_,F,Y){let E=[];for await(let M of j(_,F,Y))E.push({type:"delete",key:M});if(E.length===0)return 0;return await _.batch(E),E.length}function X(_){return encodeURIComponent(_)}function g(_){return decodeURIComponent(_)}function y(_){try{return decodeURIComponent(_)}catch{return null}}var z={workflowOwnerEpoch:(_)=>`wf-owner-epoch:${X(_)}`,workflowOwnerHolder:(_)=>`wf-owner-holder:${X(_)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var I=["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:","ownership-mode-marker","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-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var q=1e4,U_=1e4;class P extends Error{code="StorageBatchOperationLimitExceededError";cap=q;count;target;constructor(_,F){super(`${_} count ${F} exceeds MAX_BATCH_OPERATIONS (${q}).`);this.name="StorageBatchOperationLimitExceededError",this.target=_,this.count=F}}function $(_,F){if(F>q)throw new P(_,F)}function V(_){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 O(_,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 B(_,F)}function K(_,F,Y){if(_.keys)return _.keys(F,Y);return j(_,F,Y)}async function b(_,F){if(_.count)return _.count(F);return R(_,F)}async function h(_,F){if(_.deletePrefix)return _.deletePrefix(F);return A(_,F)}async function M_(_,F){$("batch operations",F.length),await _.batch(F)}async function m(_,F,Y){if($("conditionalBatch conditions",F.length),$("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)}var Q=(_)=>String(_).padStart(16,"0"),w="0",f="1",S=(_,F,Y,E)=>`sig:${X(_)}:${X(F)}:${E}:${X(Y)}`,Q_={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:${_}`,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,f),startSignal:(_,F,Y)=>S(_,F,Y,w),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",...z,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:${N}:${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 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 G(_){let F={},Y=!1;for(let M of["gt","gte","lt","lte"]){let U=_[M];if(U===void 0)continue;if(typeof U!=="string")throw Error("deleteRange bounds must be strings");F[M]=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=k(_.limit);if(E!==void 0)F.limit=E;return F}async function u(_,F,Y){let E=G(Y);if(_.deleteRange)return _.deleteRange(F,E);return C(_,F,E)}function W(_){return _.replaceAll(/:+$/g,"")}function l(_,F){let Y=W(_),E=W(F);if(Y.length===0)return E;if(E.length===0)return Y;return`${Y}:${E}`}class T{#_;#Y;constructor(_,F){this.#_=_,this.#Y=W(F)}#F(_){if(this.#Y.length===0)return _;return _.length===0?`${this.#Y}:`:`${this.#Y}:${_}`}#X(_){return _.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)}})}#E(_){if(this.#Y.length===0)return _;return _.slice(this.#Y.length+1)}#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}#M(_={}){let F=this.#U(_);if(_.reverse!==void 0)F.reverse=_.reverse;return F}#Q(_){return this.#U(_)}capabilities(){return this.#_.capabilities()}scoped(_){return new T(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[Y,E]of this.#_.scan(this.#F(_),this.#M(F)))yield[this.#E(Y),E]}async batch(_){$("batch operations",_.length),await this.#_.batch(this.#X(_))}async conditionalBatch(_,F){return m(this.#_,_.map((Y)=>({key:this.#F(Y.key),expectedValue:Y.expectedValue})),this.#X(F))}async has(_){return v(this.#_,this.#F(_))}async deletePrefix(_){return h(this.#_,this.#F(_))}async deleteRange(_,F){let Y=this.#Q(G(F));return u(this.#_,this.#F(_),Y)}async*keys(_,F){for await(let Y of K(this.#_,this.#F(_),this.#M(F)))yield this.#E(Y)}async count(_){return b(this.#_,this.#F(_))}[Symbol.dispose](){this.#_[Symbol.dispose]()}}function c(_,F){return new T(_,F)}class d{#_;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,M=V(_),U=this.#F(_,M);if(U=U.filter((J)=>H(J,F)),E)U.reverse();let Z=0;for(let J of U){if(Y!==void 0&&Z>=Y)break;let D=this.#_.get(J);if(D!==void 0)yield[J,D],Z++}}async batch(_){$("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){$("conditionalBatch conditions",_.length),$("conditionalBatch operations",F.length);for(let Y of _){let E=this.#_.get(Y.key)??null;if(!O(E,Y.expectedValue))return!1}return this.#X(F),!0}async has(_){return this.#_.has(_)}async deletePrefix(_){let F=V(_),Y=this.#F(_,F);for(let E of Y)this.#_.delete(E);return Y.length}async deleteRange(_,F){let Y=G(F),E=V(_),M=this.#F(_,E).filter((Z)=>H(Z,Y)),U=Y.limit===void 0?M:M.slice(0,Y.limit);for(let Z of U)this.#_.delete(Z);return U.length}async*keys(_,F={}){let{limit:Y,reverse:E}=F,M=V(_),U=this.#F(_,M);if(U=U.filter((J)=>H(J,F)),E)U.reverse();let Z=0;for(let J of U){if(Y!==void 0&&Z>=Y)break;yield J,Z++}}async count(_){let F=V(_);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{d as MemoryStorage};
|
|
2
|
+
var F=import.meta.require;function h(e,t,n){if(!e.capabilities()[t])throw Error(`Feature "${n}" requires storage capability "${t}", but this storage backend does not provide it.`)}function L(e){let t=e.capabilities(),n=[];if(t.persistence!=="local"&&t.persistence!=="remote")n.push(`persistence must be "local" or "remote" (got "${t.persistence}")`);if(t.readAfterWrite!=="linearizable")n.push(`readAfterWrite must be "linearizable" (got "${t.readAfterWrite}")`);if(t.scanConsistency!=="snapshot")n.push(`scanConsistency must be "snapshot" (got "${t.scanConsistency}")`);if(!t.atomicBatch)n.push("atomicBatch must be true");if(!t.conditionalBatch)n.push("conditionalBatch must be true");if(n.length>0)throw Error(`Storage is not durable enough for recovery: ${n.join("; ")}.`)}var y="default";async function x(e,t){return await e.get(t)!==null}async function*u(e,t,n){for await(let[i]of e.scan(t,n))yield i}async function v(e,t){let n=0;for await(let i of u(e,t))n++;return n}async function k(e,t){let n=[];for await(let i of u(e,t))n.push({type:"delete",key:i});if(n.length===0)return 0;return await e.batch(n),n.length}async function O(e,t,n){let i=[];for await(let s of u(e,t,n))i.push({type:"delete",key:s});if(i.length===0)return 0;return await e.batch(i),i.length}function r(e){return encodeURIComponent(e)}function U(e){return decodeURIComponent(e)}function K(e){try{return decodeURIComponent(e)}catch{return null}}var R={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${r(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${r(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var M=["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:","ownership-mode-marker","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-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var m=1e4,se=1e4;class P extends Error{code="StorageBatchOperationLimitExceededError";cap=m;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${m}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function c(e,t){if(t>m)throw new P(e,t)}function d(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function f(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function B(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0}async function A(e,t){if(e.has)return e.has(t);return x(e,t)}function D(e,t,n){if(e.keys)return e.keys(t,n);return u(e,t,n)}async function E(e,t){if(e.count)return e.count(t);return v(e,t)}async function I(e,t){if(e.deletePrefix)return e.deletePrefix(t);return k(e,t)}async function ae(e,t){c("batch operations",t.length),await e.batch(t)}async function z(e,t,n){if(c("conditionalBatch conditions",t.length),c("conditionalBatch operations",n.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(t,n)}var a=(e)=>String(e).padStart(16,"0"),V="0",N="1",C=(e,t,n,i)=>`sig:${r(e)}:${r(t)}:${i}:${r(n)}`,le={workflow:(e)=>`wf:${r(e)}`,checkpoint:(e)=>`wf:${r(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${r(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${r(e)}:timeline:`,timeline:(e,t)=>`wf:${r(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${r(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${r(t)}`,scheduleRun:(e)=>`schedule-run:${r(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${r(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${r(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${r(e)}:${r(t)}`,operation:(e,t,n)=>`op:${e}:${a(t)}:${n}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,n)=>`audit:bulk:${a(e)}:${r(t)}:${r(n)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${a(e)}:${r(t)}`,asyncActivity:(e,t)=>`async-act:v1:${r(e)}:${r(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${r(e)}:${r(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${r(e)}:`,activityReconciliation:(e,t,n)=>`actrec:v1:${r(e)}:${r(t)}:${n}`,eventPrefix:(e)=>`ev:${r(e)}:`,event:(e,t)=>`ev:${r(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${r(e)}:head`,eventWatermark:(e)=>`ev:${r(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${r(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${r(e)}:${String(t).padStart(10,"0")}`,signal:(e,t,n)=>C(e,t,n,N),startSignal:(e,t,n)=>C(e,t,n,V),signalSequence:(e)=>`sigseq:v1:${r(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${r(e)}:`,signalAcceptedResponse:(e,t,n)=>`sigres:v1:${r(e)}:${r(t)}:${r(n)}`,deadline:(e,t)=>`wf-deadline:${a(e)}:${r(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${a(e)}:${r(t)}`,teardownTimer:(e,t)=>`wf-teardown:${a(e)}:${r(t)}`,delayedStart:(e,t)=>`wf-delayed:${a(e)}:${r(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${a(e)}:${r(t)}`,attribute:(e)=>`attr:${r(e)}`,attributeIndex:(e,t,n)=>`idx:${e}:${t}:${r(n)}`,tagIndex:(e,t)=>`tag:${r(e)}:${r(t)}`,updatePrefix:(e)=>`upd:${r(e)}:`,update:(e,t)=>`upd:${r(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${r(e)}:${t}`,startIdempotency:(e)=>`start-idem:${r(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`,livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${r(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...R,budget:(e,t,n)=>`budget:${e}:${t}:${n}`,review:(e,t)=>`review:${r(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${r(e)}`,childCancellationPrefix:(e)=>`child-cancel:${r(e)}:`,childCancellation:(e,t)=>`child-cancel:${r(e)}:${r(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${r(e)}:${t===void 0?"":`${r(t)}:`}`,childWorkflowByParent:(e,t,n)=>`child-by-parent:${r(e)}:${t===void 0?"":`${r(t)}:`}${r(n)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${r(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${r(e)}:${r(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${r(e)}`,workflowHasServices:(e)=>`wf-has-services:${r(e)}`,finalizerState:(e)=>`wf-finalizer-state:${r(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${r(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${r(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${r(e)}`,offload:(e,t)=>`offload:${r(e)}:${t}`,archive:(e,t)=>`archive:${r(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${r(e)}:${r(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${y}:${r(e)}:${r(t)}`,streamChunkPrefix:(e,t)=>`blob:${r(e)}:${t}:chunk:`,streamChunk:(e,t,n)=>`blob:${r(e)}:${t}:chunk:${String(n).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${r(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${r(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,n)=>`tool-effect:${r(e)}:${t}:${n}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${r(e)}:${r(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${r(e)}:${r(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${a(e)}:${r(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${a(e)}:${r(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${a(e)}:${r(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${r(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function H(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 p(e){let t={},n=!1;for(let s of["gt","gte","lt","lte"]){let o=e[s];if(o===void 0)continue;if(typeof o!=="string")throw Error("deleteRange bounds must be strings");t[s]=o,n=!0}if(!n)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let i=H(e.limit);if(i!==void 0)t.limit=i;return t}async function _(e,t,n){let i=p(n);if(e.deleteRange)return e.deleteRange(t,i);return O(e,t,i)}function b(e){return e.replaceAll(/:+$/g,"")}function W(e,t){let n=b(e),i=b(t);if(n.length===0)return i;if(i.length===0)return n;return`${n}:${i}`}class w{#e;#n;constructor(e,t){this.#e=e,this.#n=b(t)}#t(e){if(this.#n.length===0)return e;return e.length===0?`${this.#n}:`:`${this.#n}:${e}`}#r(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#t(t.key),value:t.value};return{type:"delete",key:this.#t(t.key)}})}#i(e){if(this.#n.length===0)return e;return e.slice(this.#n.length+1)}#o(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#t(e.gt);if(e.gte!==void 0)t.gte=this.#t(e.gte);if(e.lt!==void 0)t.lt=this.#t(e.lt);if(e.lte!==void 0)t.lte=this.#t(e.lte);return t}#s(e={}){let t=this.#o(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#a(e){return this.#o(e)}capabilities(){return this.#e.capabilities()}scoped(e){return new w(this.#e,W(this.#n,e))}async get(e){return this.#e.get(this.#t(e))}async put(e,t){await this.#e.put(this.#t(e),t)}async delete(e){await this.#e.delete(this.#t(e))}async*scan(e,t){for await(let[n,i]of this.#e.scan(this.#t(e),this.#s(t)))yield[this.#i(n),i]}async batch(e){c("batch operations",e.length),await this.#e.batch(this.#r(e))}async conditionalBatch(e,t){return z(this.#e,e.map((n)=>({key:this.#t(n.key),expectedValue:n.expectedValue})),this.#r(t))}async has(e){return A(this.#e,this.#t(e))}async deletePrefix(e){return I(this.#e,this.#t(e))}async deleteRange(e,t){let n=this.#a(p(t));return _(this.#e,this.#t(e),n)}async*keys(e,t){for await(let n of D(this.#e,this.#t(e),this.#s(t)))yield this.#i(n)}async count(e){return E(this.#e,this.#t(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function T(e,t){return new w(e,t)}class q{#e;constructor(){this.#e=new Map}capabilities(){return{persistence:"ephemeral",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#n(e,t,n){return e>=t&&e<n}#t(e,t){let n=[];for(let i of this.#e.keys())if(this.#n(i,e,t))n.push(i);return n.toSorted()}async get(e){return this.#e.get(e)??null}async put(e,t){this.#e.set(e,t)}async delete(e){this.#e.delete(e)}async*scan(e,t={}){let{limit:n,reverse:i}=t,s=d(e),o=this.#t(e,s);if(o=o.filter((g)=>f(g,t)),i)o.reverse();let l=0;for(let g of o){if(n!==void 0&&l>=n)break;let S=this.#e.get(g);if(S!==void 0)yield[g,S],l++}}async batch(e){c("batch operations",e.length),this.#r(e)}#r(e){for(let t of e)if(t.type==="put")this.#e.set(t.key,t.value);else this.#e.delete(t.key)}async conditionalBatch(e,t){c("conditionalBatch conditions",e.length),c("conditionalBatch operations",t.length);for(let n of e){let i=this.#e.get(n.key)??null;if(!B(i,n.expectedValue))return!1}return this.#r(t),!0}async has(e){return this.#e.has(e)}async deletePrefix(e){let t=d(e),n=this.#t(e,t);for(let i of n)this.#e.delete(i);return n.length}async deleteRange(e,t){let n=p(t),i=d(e),s=this.#t(e,i).filter((l)=>f(l,n)),o=n.limit===void 0?s:s.slice(0,n.limit);for(let l of o)this.#e.delete(l);return o.length}async*keys(e,t={}){let{limit:n,reverse:i}=t,s=d(e),o=this.#t(e,s);if(o=o.filter((g)=>f(g,t)),i)o.reverse();let l=0;for(let g of o){if(n!==void 0&&l>=n)break;yield g,l++}}async count(e){let t=d(e);return this.#t(e,t).length}scoped(e){return T(this,e)}get size(){return this.#e.size}clear(){this.#e.clear()}snapshot(){let e=new Map;for(let[t,n]of this.#e)e.set(t,new Uint8Array(n));return e}[Symbol.dispose](){this.#e.clear()}}export{q as MemoryStorage};
|
package/dist/storage/neon.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var $X=import.meta.require;function E(X,Y,_){if(!X.capabilities()[Y])throw Error(`Feature "${_}" requires storage capability "${Y}", but this storage backend does not provide it.`)}function MX(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[J]of X.scan(Y,_))yield J}async function q(X,Y){let _=0;for await(let J of V(X,Y))_++;return _}async function v(X,Y){let _=[];for await(let J of V(X,Y))_.push({type:"delete",key:J});if(_.length===0)return 0;return await X.batch(_),_.length}async function P(X,Y,_){let J=[];for await(let M of V(X,Y,_))J.push({type:"delete",key:M});if(J.length===0)return 0;return await X.batch(J),J.length}function Z(X){return encodeURIComponent(X)}function FX(X){return decodeURIComponent(X)}function GX(X){try{return decodeURIComponent(X)}catch{return null}}var b={workflowOwnerEpoch:(X)=>`wf-owner-epoch:${Z(X)}`,workflowOwnerHolder:(X)=>`wf-owner-holder:${Z(X)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var HX=["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:","ownership-mode-marker","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-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var D=1e4,kX=1e4;class x 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 x(X,Y)}function y(X){return X.length>0?X.slice(0,-1)+String.fromCharCode(X.charCodeAt(X.length-1)+1):"\xFF"}function cX(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 I(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 m(X,Y){if(X.has)return X.has(Y);return R(X,Y)}function g(X,Y,_){if(X.keys)return X.keys(Y,_);return V(X,Y,_)}async function u(X,Y){if(X.count)return X.count(Y);return q(X,Y)}async function k(X,Y){if(X.deletePrefix)return X.deletePrefix(Y);return v(X,Y)}async function wX(X,Y){U("batch operations",Y.length),await X.batch(Y)}async function c(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,_)}var H=(X)=>String(X).padStart(16,"0"),UX="0",VX="1",h=(X,Y,_,J)=>`sig:${Z(X)}:${Z(Y)}:${J}:${Z(_)}`,fX={workflow:(X)=>`wf:${Z(X)}`,checkpoint:(X)=>`wf:${Z(X)}:ckpt`,checkpointHistory:(X,Y)=>`wf:${Z(X)}:ckpt:${String(Y).padStart(10,"0")}`,timelinePrefix:(X)=>`wf:${Z(X)}:timeline:`,timeline:(X,Y)=>`wf:${Z(X)}:timeline:${String(Y).padStart(10,"0")}`,schedule:(X)=>`schedule:${Z(X)}`,scheduleTick:(X,Y)=>`schedule-due:${String(X).padStart(16,"0")}:${Z(Y)}`,scheduleRun:(X)=>`schedule-run:${Z(X)}`,scheduleRunLink:(X)=>`schedule-run-link:${Z(X)}`,scheduleRunBySchedulePrefix:(X)=>`schedule-run-by-schedule:${Z(X)}:`,scheduleRunBySchedule:(X,Y)=>`schedule-run-by-schedule:${Z(X)}:${Z(Y)}`,operation:(X,Y,_)=>`op:${X}:${H(Y)}:${_}`,operationInflight:(X)=>`op:inflight:${X}`,operationQueued:(X)=>`op:queued:${X}`,operationResolved:(X)=>`op:resolved:${X}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(X,Y,_)=>`audit:bulk:${H(X)}:${Z(Y)}:${Z(_)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(X,Y)=>`op:resolved-by-time:${H(X)}:${Z(Y)}`,asyncActivity:(X,Y)=>`async-act:v1:${Z(X)}:${Z(Y)}`,asyncActivityResolution:(X,Y)=>`async-act:v1:${Z(X)}:${Z(Y)}:resolution`,activityReconciliationPrefix:(X)=>`actrec:v1:${Z(X)}:`,activityReconciliation:(X,Y,_)=>`actrec:v1:${Z(X)}:${Z(Y)}:${_}`,eventPrefix:(X)=>`ev:${Z(X)}:`,event:(X,Y)=>`ev:${Z(X)}:${String(Y).padStart(10,"0")}`,eventHead:(X)=>`ev:${Z(X)}:head`,eventWatermark:(X)=>`ev:${Z(X)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(X)=>`fleet-event:${String(X).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(X)=>`fleet-event-by-workflow:${Z(X)}:`,fleetEventByWorkflow:(X,Y)=>`fleet-event-by-workflow:${Z(X)}:${String(Y).padStart(10,"0")}`,signal:(X,Y,_)=>h(X,Y,_,VX),startSignal:(X,Y,_)=>h(X,Y,_,UX),signalSequence:(X)=>`sigseq:v1:${Z(X)}`,signalAcceptedResponsePrefix:(X)=>`sigres:v1:${Z(X)}:`,signalAcceptedResponse:(X,Y,_)=>`sigres:v1:${Z(X)}:${Z(Y)}:${Z(_)}`,deadline:(X,Y)=>`wf-deadline:${H(X)}:${Z(Y)}`,terminalCleanup:(X,Y)=>`wf-cleanup:${H(X)}:${Z(Y)}`,teardownTimer:(X,Y)=>`wf-teardown:${H(X)}:${Z(Y)}`,delayedStart:(X,Y)=>`wf-delayed:${H(X)}:${Z(Y)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(X,Y)=>`wf-terminal:${H(X)}:${Z(Y)}`,attribute:(X)=>`attr:${Z(X)}`,attributeIndex:(X,Y,_)=>`idx:${X}:${Y}:${Z(_)}`,tagIndex:(X,Y)=>`tag:${Z(X)}:${Z(Y)}`,updatePrefix:(X)=>`upd:${Z(X)}:`,update:(X,Y)=>`upd:${Z(X)}:${Y}`,updateResponse:(X)=>`upr:${X}`,updateIdempotency:(X,Y)=>`upk:${Z(X)}:${Y}`,startIdempotency:(X)=>`start-idem:${Z(X)}`,startIdempotencySignalId:(X)=>`start-idem:${X}`,livenessPrefix:()=>"liveness:",liveness:(X)=>`liveness:${Z(X)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...b,budget:(X,Y,_)=>`budget:${X}:${Y}:${_}`,review:(X,Y)=>`review:${Z(X)}:${Y}`,workflowHeaders:(X)=>`wf-headers:${Z(X)}`,childCancellationPrefix:(X)=>`child-cancel:${Z(X)}:`,childCancellation:(X,Y)=>`child-cancel:${Z(X)}:${Z(Y)}`,childWorkflowByParentPrefix:(X,Y)=>`child-by-parent:${Z(X)}:${Y===void 0?"":`${Z(Y)}:`}`,childWorkflowByParent:(X,Y,_)=>`child-by-parent:${Z(X)}:${Y===void 0?"":`${Z(Y)}:`}${Z(_)}`,terminalCleanupNeeded:(X)=>`wf-cleanup-needed:${Z(X)}`,workflowConcurrency:(X,Y)=>`wf-concurrency:${Z(X)}:${Z(Y)}`,workflowConcurrencyHolder:(X)=>`wf-concurrency-holder:${Z(X)}`,workflowHasServices:(X)=>`wf-has-services:${Z(X)}`,finalizerState:(X)=>`wf-finalizer-state:${Z(X)}`,teardownOwed:(X)=>`wf-teardown-needed:${Z(X)}`,teardownSucceeded:(X)=>`wf-teardown-succeeded:${Z(X)}`,teardownDeadLetter:(X)=>`wf-teardown-deadletter:${Z(X)}`,offload:(X,Y)=>`offload:${Z(X)}:${Y}`,archive:(X,Y)=>`archive:${Z(X)}:${Y}`,stateExecution:(X,Y)=>`state:execution:${Z(X)}:${Z(Y)}`,stateWorkflow:(X,Y)=>`state:workflow-scope:${L}:${Z(X)}:${Z(Y)}`,streamChunkPrefix:(X,Y)=>`blob:${Z(X)}:${Y}:chunk:`,streamChunk:(X,Y,_)=>`blob:${Z(X)}:${Y}:chunk:${String(_).padStart(10,"0")}`,streamTail:(X,Y)=>`blob:${Z(X)}:${Y}:tail`,streamMetadata:(X,Y)=>`blob:${Z(X)}:${Y}:meta`,budgetCharged:(X)=>`budget-charged:${X}`,toolEffect:(X,Y,_)=>`tool-effect:${Z(X)}:${Y}:${_}`,workflowVisibilityStatus:(X,Y)=>`wf-idx-status:${Z(X)}:${Z(Y)}`,workflowVisibilityType:(X,Y)=>`wf-idx-type:${Z(X)}:${Z(Y)}`,workflowVisibilityCreated:(X,Y)=>`wf-idx-created:${H(X)}:${Z(Y)}`,workflowVisibilityUpdated:(X,Y)=>`wf-idx-updated:${H(X)}:${Z(Y)}`,workflowVisibilityDeadline:(X,Y)=>`wf-idx-deadline:${H(X)}:${Z(Y)}`,workflowVisibilityManifest:(X)=>`wf-idx-manifest:${Z(X)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function QX(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 M of["gt","gte","lt","lte"]){let $=X[M];if($===void 0)continue;if(typeof $!=="string")throw Error("deleteRange bounds must be strings");Y[M]=$,_=!0}if(!_)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let J=QX(X.limit);if(J!==void 0)Y.limit=J;return Y}async function w(X,Y,_){let J=Q(_);if(X.deleteRange)return X.deleteRange(Y,J);return P(X,Y,J)}function A(X){return X.replaceAll(/:+$/g,"")}function jX(X,Y){let _=A(X),J=A(Y);if(_.length===0)return J;if(J.length===0)return _;return`${_}:${J}`}class C{#X;#Y;constructor(X,Y){this.#X=X,this.#Y=A(Y)}#_(X){if(this.#Y.length===0)return X;return X.length===0?`${this.#Y}:`:`${this.#Y}:${X}`}#J(X){return X.map((Y)=>{if(Y.type==="put")return{type:"put",key:this.#_(Y.key),value:Y.value};return{type:"delete",key:this.#_(Y.key)}})}#$(X){if(this.#Y.length===0)return X;return X.slice(this.#Y.length+1)}#M(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}#Z(X={}){let Y=this.#M(X);if(X.reverse!==void 0)Y.reverse=X.reverse;return Y}#F(X){return this.#M(X)}capabilities(){return this.#X.capabilities()}scoped(X){return new C(this.#X,jX(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[_,J]of this.#X.scan(this.#_(X),this.#Z(Y)))yield[this.#$(_),J]}async batch(X){U("batch operations",X.length),await this.#X.batch(this.#J(X))}async conditionalBatch(X,Y){return c(this.#X,X.map((_)=>({key:this.#_(_.key),expectedValue:_.expectedValue})),this.#J(Y))}async has(X){return m(this.#X,this.#_(X))}async deletePrefix(X){return k(this.#X,this.#_(X))}async deleteRange(X,Y){let _=this.#F(Q(Y));return w(this.#X,this.#_(X),_)}async*keys(X,Y){for await(let _ of g(this.#X,this.#_(X),this.#Z(Y)))yield this.#$(_)}async count(X){return u(this.#X,this.#_(X))}[Symbol.dispose](){this.#X[Symbol.dispose]()}}function f(X,Y){return new C(X,Y)}function d(X,Y){let _,J,M=!1,$=()=>{if(M)throw Error(`${Y.storageName} pool has been disposed and cannot be reused. Construct a new adapter.`);return _??=Y.loadPool(X).catch((F)=>{throw _=void 0,WX(F,Y)}),_};return{query:async(F,G)=>{return(await $()).query(F,G)},connect:async()=>{return(await $()).connect()},end:async()=>{return M=!0,J??=(async()=>{if(_===void 0)return;await(await _.catch(()=>{return}))?.end()})(),J}}}var BX=/cannot find module|module_not_found|failed to resolve|could not resolve/i;function WX(X,Y){let _=X instanceof Error?X.message:String(X);if(BX.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 J of X)if(J.type==="put")_.delete(J.key),Y.set(J.key,J.value);else Y.delete(J.key),_.add(J.key);return{puts:Y,deletes:_}}async function p(X,Y,_){if(_.length===0)return!0;let J=_.map((F)=>F.key),M=await X.query(Y.selectValuesByKeys,[J]),$=new Map;for(let F of M.rows){let G=F.value;if(G!==null&&G!==void 0)$.set(F.key,j(G))}for(let F of _){let G=$.get(F.key)??null;if(!I(G,F.expectedValue))return!1}return!0}async function z(X,Y,_){if(_.puts.size>0){let J=[],M=[];for(let[$,F]of _.puts)J.push($),M.push(B(F));await X.query(Y.upsertValuesByKeys,[J,M])}if(_.deletes.size>0)await X.query(Y.deleteValuesByKeys,[[..._.deletes]])}var l=/^[a-z_][a-z0-9_]*$/i;function a(X,Y,_){if(!l.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 ${l.source}).`)}var s="kv";function O(X,Y){a(X,Y,"Postgres")}function i(X){let{schema:Y,table:_}=X;if(Y===void 0&&_===void 0)return s;let J=_??s;if(O(J,"table"),Y===void 0)return`"${J}"`;return O(Y,"schema"),`"${Y}"."${J}"`}function W(X){return[X,y(X)]}function r(X,Y){let{gt:_,gte:J,lt:M,lte:$}=Y,F=W(X),G=["key >= $1 AND key < $2"];if(_!==void 0)F.push(_),G.push(`key > $${F.length}`);if(J!==void 0)F.push(J),G.push(`key >= $${F.length}`);if(M!==void 0)F.push(M),G.push(`key < $${F.length}`);if($!==void 0)F.push($),G.push(`key <= $${F.length}`);return{conditions:G,parameters:F}}function n(X,Y={}){let{limit:_,reverse:J}=Y,{conditions:M,parameters:$}=r(X,Y),F=J?"DESC":"ASC",G="";if(_!==void 0)$.push(_),G=` LIMIT $${$.length}`;return{parameters:$,whereOrderLimit:`WHERE ${M.join(" AND ")} ORDER BY key ${F}${G}`}}function t(X){let Y=`CREATE TABLE IF NOT EXISTS ${X} (
|
|
2
|
+
var se=import.meta.require;function h(e,t,r){if(!e.capabilities()[t])throw Error(`Feature "${r}" requires storage capability "${t}", but this storage backend does not provide it.`)}function ae(e){let t=e.capabilities(),r=[];if(t.persistence!=="local"&&t.persistence!=="remote")r.push(`persistence must be "local" or "remote" (got "${t.persistence}")`);if(t.readAfterWrite!=="linearizable")r.push(`readAfterWrite must be "linearizable" (got "${t.readAfterWrite}")`);if(t.scanConsistency!=="snapshot")r.push(`scanConsistency must be "snapshot" (got "${t.scanConsistency}")`);if(!t.atomicBatch)r.push("atomicBatch must be true");if(!t.conditionalBatch)r.push("conditionalBatch must be true");if(r.length>0)throw Error(`Storage is not durable enough for recovery: ${r.join("; ")}.`)}var m="default";async function x(e,t){return await e.get(t)!==null}async function*g(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function k(e,t){let r=0;for await(let i of g(e,t))r++;return r}async function v(e,t){let r=[];for await(let i of g(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function A(e,t,r){let i=[];for await(let s of g(e,t,r))i.push({type:"delete",key:s});if(i.length===0)return 0;return await e.batch(i),i.length}function n(e){return encodeURIComponent(e)}function le(e){return decodeURIComponent(e)}function ue(e){try{return decodeURIComponent(e)}catch{return null}}var T={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var ce=["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:","ownership-mode-marker","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-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var w=1e4,qe=1e4;class D extends Error{code="StorageBatchOperationLimitExceededError";cap=w;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${w}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function c(e,t){if(t>w)throw new D(e,t)}function N(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function Me(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function I(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let r=0;r<e.byteLength;r++)if(e[r]!==t[r])return!1;return!0}async function K(e,t){if(e.has)return e.has(t);return x(e,t)}function _(e,t,r){if(e.keys)return e.keys(t,r);return g(e,t,r)}async function V(e,t){if(e.count)return e.count(t);return k(e,t)}async function q(e,t){if(e.deletePrefix)return e.deletePrefix(t);return v(e,t)}async function Ue(e,t){c("batch operations",t.length),await e.batch(t)}async function M(e,t,r){if(c("conditionalBatch conditions",t.length),c("conditionalBatch operations",r.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(t,r)}var u=(e)=>String(e).padStart(16,"0"),ge="0",de="1",L=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,ze={workflow:(e)=>`wf:${n(e)}`,checkpoint:(e)=>`wf:${n(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${n(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${n(e)}:timeline:`,timeline:(e,t)=>`wf:${n(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${n(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${n(t)}`,scheduleRun:(e)=>`schedule-run:${n(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${n(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${n(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${n(e)}:${n(t)}`,operation:(e,t,r)=>`op:${e}:${u(t)}:${r}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,r)=>`audit:bulk:${u(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${u(e)}:${n(t)}`,asyncActivity:(e,t)=>`async-act:v1:${n(e)}:${n(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${n(e)}:${n(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${n(e)}:`,activityReconciliation:(e,t,r)=>`actrec:v1:${n(e)}:${n(t)}:${r}`,eventPrefix:(e)=>`ev:${n(e)}:`,event:(e,t)=>`ev:${n(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${n(e)}:head`,eventWatermark:(e)=>`ev:${n(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${n(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${n(e)}:${String(t).padStart(10,"0")}`,signal:(e,t,r)=>L(e,t,r,de),startSignal:(e,t,r)=>L(e,t,r,ge),signalSequence:(e)=>`sigseq:v1:${n(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${n(e)}:`,signalAcceptedResponse:(e,t,r)=>`sigres:v1:${n(e)}:${n(t)}:${n(r)}`,deadline:(e,t)=>`wf-deadline:${u(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${u(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${u(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${u(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${u(e)}:${n(t)}`,attribute:(e)=>`attr:${n(e)}`,attributeIndex:(e,t,r)=>`idx:${e}:${t}:${n(r)}`,tagIndex:(e,t)=>`tag:${n(e)}:${n(t)}`,updatePrefix:(e)=>`upd:${n(e)}:`,update:(e,t)=>`upd:${n(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${n(e)}:${t}`,startIdempotency:(e)=>`start-idem:${n(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`,livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${n(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...T,budget:(e,t,r)=>`budget:${e}:${t}:${r}`,review:(e,t)=>`review:${n(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${n(e)}`,childCancellationPrefix:(e)=>`child-cancel:${n(e)}:`,childCancellation:(e,t)=>`child-cancel:${n(e)}:${n(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}`,childWorkflowByParent:(e,t,r)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}${n(r)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${n(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${n(e)}:${n(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${n(e)}`,workflowHasServices:(e)=>`wf-has-services:${n(e)}`,finalizerState:(e)=>`wf-finalizer-state:${n(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${n(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${n(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${n(e)}`,offload:(e,t)=>`offload:${n(e)}:${t}`,archive:(e,t)=>`archive:${n(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${n(e)}:${n(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${m}:${n(e)}:${n(t)}`,streamChunkPrefix:(e,t)=>`blob:${n(e)}:${t}:chunk:`,streamChunk:(e,t,r)=>`blob:${n(e)}:${t}:chunk:${String(r).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${n(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${n(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,r)=>`tool-effect:${n(e)}:${t}:${r}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${n(e)}:${n(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${n(e)}:${n(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${u(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${u(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${u(e)}:${n(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${n(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function ye(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 d(e){let t={},r=!1;for(let s of["gt","gte","lt","lte"]){let o=e[s];if(o===void 0)continue;if(typeof o!=="string")throw Error("deleteRange bounds must be strings");t[s]=o,r=!0}if(!r)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let i=ye(e.limit);if(i!==void 0)t.limit=i;return t}async function U(e,t,r){let i=d(r);if(e.deleteRange)return e.deleteRange(t,i);return A(e,t,i)}function P(e){return e.replaceAll(/:+$/g,"")}function pe(e,t){let r=P(e),i=P(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class S{#e;#t;constructor(e,t){this.#e=e,this.#t=P(t)}#r(e){if(this.#t.length===0)return e;return e.length===0?`${this.#t}:`:`${this.#t}:${e}`}#i(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#r(t.key),value:t.value};return{type:"delete",key:this.#r(t.key)}})}#o(e){if(this.#t.length===0)return e;return e.slice(this.#t.length+1)}#s(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#r(e.gt);if(e.gte!==void 0)t.gte=this.#r(e.gte);if(e.lt!==void 0)t.lt=this.#r(e.lt);if(e.lte!==void 0)t.lte=this.#r(e.lte);return t}#n(e={}){let t=this.#s(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#a(e){return this.#s(e)}capabilities(){return this.#e.capabilities()}scoped(e){return new S(this.#e,pe(this.#t,e))}async get(e){return this.#e.get(this.#r(e))}async put(e,t){await this.#e.put(this.#r(e),t)}async delete(e){await this.#e.delete(this.#r(e))}async*scan(e,t){for await(let[r,i]of this.#e.scan(this.#r(e),this.#n(t)))yield[this.#o(r),i]}async batch(e){c("batch operations",e.length),await this.#e.batch(this.#i(e))}async conditionalBatch(e,t){return M(this.#e,e.map((r)=>({key:this.#r(r.key),expectedValue:r.expectedValue})),this.#i(t))}async has(e){return K(this.#e,this.#r(e))}async deletePrefix(e){return q(this.#e,this.#r(e))}async deleteRange(e,t){let r=this.#a(d(t));return U(this.#e,this.#r(e),r)}async*keys(e,t){for await(let r of _(this.#e,this.#r(e),this.#n(t)))yield this.#o(r)}async count(e){return V(this.#e,this.#r(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function z(e,t){return new S(e,t)}function F(e,t){let r,i,s=!1,o=()=>{if(s)throw Error(`${t.storageName} pool has been disposed and cannot be reused. Construct a new adapter.`);return r??=t.loadPool(e).catch((a)=>{throw r=void 0,he(a,t)}),r};return{query:async(a,l)=>(await o()).query(a,l),connect:async()=>(await o()).connect(),end:async()=>(s=!0,i??=(async()=>{if(r===void 0)return;await(await r.catch(()=>{return}))?.end()})(),i)}}var fe=/cannot find module|module_not_found|failed to resolve|could not resolve/i;function he(e,t){let r=e instanceof Error?e.message:String(e);if(fe.test(r))return Error(`${t.storageName} requires the optional peer dependency "${t.driverName}". Install it in your application with: bun add ${t.driverName} (or npm install ${t.driverName}).`,{cause:e});return e instanceof Error?e:Error(r)}function E(e){return e.rowCount??e.affectedRows??e.rows.length}function y(e){if(e instanceof Uint8Array)return new Uint8Array(e);return new Uint8Array(e)}function p(e){return Buffer.from(e)}function b(e){let t=new Map,r=new Set;for(let i of e)if(i.type==="put")r.delete(i.key),t.set(i.key,i.value);else t.delete(i.key),r.add(i.key);return{puts:t,deletes:r}}async function G(e,t,r){if(r.length===0)return!0;let i=r.map((a)=>a.key),s=await e.query(t.selectValuesByKeys,[i]),o=new Map;for(let a of s.rows){let l=a.value;if(l!==null&&l!==void 0)o.set(a.key,y(l))}for(let a of r){let l=o.get(a.key)??null;if(!I(l,a.expectedValue))return!1}return!0}async function R(e,t,r){if(r.puts.size>0){let i=[],s=[];for(let[o,a]of r.puts)i.push(o),s.push(p(a));await e.query(t.upsertValuesByKeys,[i,s])}if(r.deletes.size>0)await e.query(t.deleteValuesByKeys,[[...r.deletes]])}var H=/^[a-z_][a-z0-9_]*$/i;function Q(e,t,r){if(!H.test(e))throw Error(`${r} storage ${t} name "${e}" is not a valid ${r} identifier. Use only letters, digits, and underscores, starting with a letter or underscore (matching ${H.source}).`)}var W="kv";function O(e,t){Q(e,t,"Postgres")}function X(e){let{schema:t,table:r}=e;if(t===void 0&&r===void 0)return W;let i=r??W;if(O(i,"table"),t===void 0)return`"${i}"`;return O(t,"schema"),`"${t}"."${i}"`}function f(e){return[e,N(e)]}function Z(e,t){let{gt:r,gte:i,lt:s,lte:o}=t,a=f(e),l=["key >= $1 AND key < $2"];if(r!==void 0)a.push(r),l.push(`key > $${a.length}`);if(i!==void 0)a.push(i),l.push(`key >= $${a.length}`);if(s!==void 0)a.push(s),l.push(`key < $${a.length}`);if(o!==void 0)a.push(o),l.push(`key <= $${a.length}`);return{conditions:l,parameters:a}}function Y(e,t={}){let{limit:r,reverse:i}=t,{conditions:s,parameters:o}=Z(e,t),a=i?"DESC":"ASC",l="";if(r!==void 0)o.push(r),l=` LIMIT $${o.length}`;return{parameters:o,whereOrderLimit:`WHERE ${s.join(" AND ")} ORDER BY key ${a}${l}`}}function j(e){let t=`CREATE TABLE IF NOT EXISTS ${e} (
|
|
3
3
|
key TEXT COLLATE "C" PRIMARY KEY,
|
|
4
4
|
value BYTEA NOT NULL
|
|
5
|
-
)`,
|
|
5
|
+
)`,r=`
|
|
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:e,createTable:t,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 ${e} WHERE key = $1`,upsertValueByKey:`INSERT INTO ${e} (key, value) VALUES ($1, $2) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value`,deleteValueByKey:`DELETE FROM ${e} WHERE key = $1`,selectKeyPresence:`SELECT 1 AS present FROM ${e} WHERE key = $1 LIMIT 1`,countKeysByPrefix:`SELECT COUNT(*) AS count FROM ${e} WHERE key >= $1 AND key < $2`,deleteKeysByPrefix:`DELETE FROM ${e} WHERE key >= $1 AND key < $2`,selectValuesByKeys:`SELECT key, value FROM ${e} WHERE key = ANY($1)`,upsertValuesByKeys:`INSERT INTO ${e} (key, value) SELECT * FROM unnest($1::text[], $2::bytea[]) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value`,deleteValuesByKeys:`DELETE FROM ${e} WHERE key = ANY($1)`,keyValueRangeSelect(i,s={}){let{parameters:o,whereOrderLimit:a}=Y(i,s);return{parameters:o,sql:`SELECT key, value FROM ${e} ${a}`}},keyRangeSelect(i,s={}){let{parameters:o,whereOrderLimit:a}=Y(i,s);return{parameters:o,sql:`SELECT key FROM ${e} ${a}`}},keyRangeDelete(i,s){let{conditions:o,parameters:a}=Z(i,s),l=o.join(" AND ");if(s.limit===void 0)return{parameters:a,sql:`DELETE FROM ${e} WHERE ${l}`};return a.push(s.limit),{parameters:a,sql:`DELETE FROM ${e} WHERE key IN (SELECT key FROM ${e} WHERE ${l} ORDER BY key ASC LIMIT $${a.length})`}}}}var J="BEGIN ISOLATION LEVEL SERIALIZABLE",ee="BEGIN ISOLATION LEVEL READ COMMITTED",te="BEGIN READ ONLY",re="COMMIT",B="ROLLBACK";function ne(e){return O(e,"schema"),`CREATE SCHEMA IF NOT EXISTS "${e}"`}var me=/^PRAGMA\b/iu,we=/^PRAGMA\s+(?:[A-Z_][A-Z0-9_]*\.)?[A-Z_][A-Z0-9_]*\s*$/iu,Pe=/^SELECT\b/iu;function Se(e){return e.trim().replace(/;+\s*$/u,"").trim()}function Ee(e){return we.test(e)}function ie(e){let t=Se(e);if(t.length===0)throw Error("Storage query must not be empty.");if(t.includes(";"))throw Error("Storage query must contain exactly one read-only statement.");if(Pe.test(t))return;if(me.test(t)&&Ee(t))return;throw Error("Storage query only supports read-only SELECT and PRAGMA statements.")}var be=new Set(["40001","40P01"]),oe=5;function $e(e){if(typeof e!=="object"||e===null||!("code"in e))return!1;let t=e.code;return typeof t==="string"&&be.has(t)}class C{#e;#t;#r;#i;#o;#s;constructor(e,t){if(this.#o=e.pool===void 0,e.pool===void 0){if(e.url===void 0)throw Error("PostgresKeyValueStorage requires either a `url` to build a pool from, or a pre-built `pool`; neither was provided.");this.#e=t(e.url)}else this.#e=e.pool;this.#r=e.schema;let r=X({schema:e.schema,table:e.table});this.#t=j(r)}capabilities(){return{persistence:"remote",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#n(){return this.#i??=this.#a().catch((e)=>{throw this.#i=void 0,e}),this.#i}async#a(){if(this.#r!==void 0)await this.#e.query(ne(this.#r));await this.#e.query(this.#t.createTable),await this.#c()}async#c(){let t=(await this.#e.query(this.#t.selectKeyCollation,[this.#t.tableReference])).rows[0]?.collation;if(t==="C")return;let r=t===void 0?"no such table":typeof t==="string"?`"${t}"`:"an unexpected collation value";throw Error(`Postgres storage requires the ${this.#t.tableReference} table's "key" column to use COLLATE "C" (found ${r}). 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.#t.tableReference} (key TEXT COLLATE "C" PRIMARY KEY, value BYTEA NOT NULL).`)}async get(e){await this.#n();let r=(await this.#e.query(this.#t.selectValueByKey,[e])).rows[0];if(r===void 0)return null;let i=r.value;if(i===null||i===void 0)return null;return y(i)}async put(e,t){await this.#n(),await this.#e.query(this.#t.upsertValueByKey,[e,p(t)])}async delete(e){await this.#n(),await this.#e.query(this.#t.deleteValueByKey,[e])}async has(e){return await this.#n(),(await this.#e.query(this.#t.selectKeyPresence,[e])).rows.length>0}async deletePrefix(e){await this.#n();let[t,r]=f(e),i=await this.#e.query(this.#t.deleteKeysByPrefix,[t,r]);return E(i)}async deleteRange(e,t){await this.#n();let r=d(t),{parameters:i,sql:s}=this.#t.keyRangeDelete(e,r),o=await this.#e.query(s,i);return E(o)}async*scan(e,t={}){await this.#n();let{parameters:r,sql:i}=this.#t.keyValueRangeSelect(e,t),s=await this.#e.query(i,r);for(let o of s.rows)yield[o.key,y(o.value)]}async*keys(e,t={}){await this.#n();let{parameters:r,sql:i}=this.#t.keyRangeSelect(e,t),s=await this.#e.query(i,r);for(let o of s.rows)yield o.key}async count(e){await this.#n();let[t,r]=f(e),i=await this.#e.query(this.#t.countKeysByPrefix,[t,r]);return Number(i.rows[0]?.count??0)}scoped(e){return z(this,e)}async#l(e,t,r=()=>!0){let i=await this.#e.connect();try{await i.query(e);try{let s=await t(i);return await i.query(r(s)?re:B),s}catch(s){throw await i.query(B).catch(()=>{}),s}}finally{i.release()}}async batch(e){if(c("batch operations",e.length),e.length===0)return;await this.#n(),await this.#l(ee,async(t)=>{await R(t,this.#t,b(e))})}async conditionalBatch(e,t){c("conditionalBatch conditions",e.length),c("conditionalBatch operations",t.length),await this.#n();let r=b(t),i;for(let s=0;s<oe;s+=1)try{return await this.#l(J,async(o)=>{if(!await G(o,this.#t,e))return!1;return await R(o,this.#t,r),!0},(o)=>o)}catch(o){if(!$e(o))throw o;i=o}throw Error(`conditionalBatch exhausted ${oe} attempts after retryable transaction failures`,{cause:i})}async query(e,t){return await this.#n(),ie(e),this.#l(te,async(r)=>(await r.query(e,t??[])).rows)}#u(){if(!this.#o)return Promise.resolve();return this.#s??=this.#e.end(),this.#s}[Symbol.dispose](){this.#u().catch(()=>{})}async[Symbol.asyncDispose](){await this.#u()}}function Re(e){return F(e,{driverName:"@neondatabase/serverless",storageName:"NeonStorage",loadPool:(t)=>import("@neondatabase/serverless").then(({Pool:r})=>new r({connectionString:t}))})}class Oe extends C{constructor(e,t=Re){super(e,t)}}export{Oe as NeonStorage};
|
package/dist/storage/postgres.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var $X=import.meta.require;function E(X,Y,_){if(!X.capabilities()[Y])throw Error(`Feature "${_}" requires storage capability "${Y}", but this storage backend does not provide it.`)}function MX(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 v(X,Y){return await X.get(Y)!==null}async function*V(X,Y,_){for await(let[J]of X.scan(Y,_))yield J}async function R(X,Y){let _=0;for await(let J of V(X,Y))_++;return _}async function q(X,Y){let _=[];for await(let J of V(X,Y))_.push({type:"delete",key:J});if(_.length===0)return 0;return await X.batch(_),_.length}async function P(X,Y,_){let J=[];for await(let M of V(X,Y,_))J.push({type:"delete",key:M});if(J.length===0)return 0;return await X.batch(J),J.length}function Z(X){return encodeURIComponent(X)}function FX(X){return decodeURIComponent(X)}function GX(X){try{return decodeURIComponent(X)}catch{return null}}var b={workflowOwnerEpoch:(X)=>`wf-owner-epoch:${Z(X)}`,workflowOwnerHolder:(X)=>`wf-owner-holder:${Z(X)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var HX=["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:","ownership-mode-marker","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-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var D=1e4,kX=1e4;class x 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 x(X,Y)}function y(X){return X.length>0?X.slice(0,-1)+String.fromCharCode(X.charCodeAt(X.length-1)+1):"\xFF"}function cX(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 I(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 m(X,Y){if(X.has)return X.has(Y);return v(X,Y)}function g(X,Y,_){if(X.keys)return X.keys(Y,_);return V(X,Y,_)}async function u(X,Y){if(X.count)return X.count(Y);return R(X,Y)}async function k(X,Y){if(X.deletePrefix)return X.deletePrefix(Y);return q(X,Y)}async function wX(X,Y){U("batch operations",Y.length),await X.batch(Y)}async function c(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,_)}var H=(X)=>String(X).padStart(16,"0"),UX="0",VX="1",h=(X,Y,_,J)=>`sig:${Z(X)}:${Z(Y)}:${J}:${Z(_)}`,fX={workflow:(X)=>`wf:${Z(X)}`,checkpoint:(X)=>`wf:${Z(X)}:ckpt`,checkpointHistory:(X,Y)=>`wf:${Z(X)}:ckpt:${String(Y).padStart(10,"0")}`,timelinePrefix:(X)=>`wf:${Z(X)}:timeline:`,timeline:(X,Y)=>`wf:${Z(X)}:timeline:${String(Y).padStart(10,"0")}`,schedule:(X)=>`schedule:${Z(X)}`,scheduleTick:(X,Y)=>`schedule-due:${String(X).padStart(16,"0")}:${Z(Y)}`,scheduleRun:(X)=>`schedule-run:${Z(X)}`,scheduleRunLink:(X)=>`schedule-run-link:${Z(X)}`,scheduleRunBySchedulePrefix:(X)=>`schedule-run-by-schedule:${Z(X)}:`,scheduleRunBySchedule:(X,Y)=>`schedule-run-by-schedule:${Z(X)}:${Z(Y)}`,operation:(X,Y,_)=>`op:${X}:${H(Y)}:${_}`,operationInflight:(X)=>`op:inflight:${X}`,operationQueued:(X)=>`op:queued:${X}`,operationResolved:(X)=>`op:resolved:${X}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(X,Y,_)=>`audit:bulk:${H(X)}:${Z(Y)}:${Z(_)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(X,Y)=>`op:resolved-by-time:${H(X)}:${Z(Y)}`,asyncActivity:(X,Y)=>`async-act:v1:${Z(X)}:${Z(Y)}`,asyncActivityResolution:(X,Y)=>`async-act:v1:${Z(X)}:${Z(Y)}:resolution`,activityReconciliationPrefix:(X)=>`actrec:v1:${Z(X)}:`,activityReconciliation:(X,Y,_)=>`actrec:v1:${Z(X)}:${Z(Y)}:${_}`,eventPrefix:(X)=>`ev:${Z(X)}:`,event:(X,Y)=>`ev:${Z(X)}:${String(Y).padStart(10,"0")}`,eventHead:(X)=>`ev:${Z(X)}:head`,eventWatermark:(X)=>`ev:${Z(X)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(X)=>`fleet-event:${String(X).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(X)=>`fleet-event-by-workflow:${Z(X)}:`,fleetEventByWorkflow:(X,Y)=>`fleet-event-by-workflow:${Z(X)}:${String(Y).padStart(10,"0")}`,signal:(X,Y,_)=>h(X,Y,_,VX),startSignal:(X,Y,_)=>h(X,Y,_,UX),signalSequence:(X)=>`sigseq:v1:${Z(X)}`,signalAcceptedResponsePrefix:(X)=>`sigres:v1:${Z(X)}:`,signalAcceptedResponse:(X,Y,_)=>`sigres:v1:${Z(X)}:${Z(Y)}:${Z(_)}`,deadline:(X,Y)=>`wf-deadline:${H(X)}:${Z(Y)}`,terminalCleanup:(X,Y)=>`wf-cleanup:${H(X)}:${Z(Y)}`,teardownTimer:(X,Y)=>`wf-teardown:${H(X)}:${Z(Y)}`,delayedStart:(X,Y)=>`wf-delayed:${H(X)}:${Z(Y)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(X,Y)=>`wf-terminal:${H(X)}:${Z(Y)}`,attribute:(X)=>`attr:${Z(X)}`,attributeIndex:(X,Y,_)=>`idx:${X}:${Y}:${Z(_)}`,tagIndex:(X,Y)=>`tag:${Z(X)}:${Z(Y)}`,updatePrefix:(X)=>`upd:${Z(X)}:`,update:(X,Y)=>`upd:${Z(X)}:${Y}`,updateResponse:(X)=>`upr:${X}`,updateIdempotency:(X,Y)=>`upk:${Z(X)}:${Y}`,startIdempotency:(X)=>`start-idem:${Z(X)}`,startIdempotencySignalId:(X)=>`start-idem:${X}`,livenessPrefix:()=>"liveness:",liveness:(X)=>`liveness:${Z(X)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...b,budget:(X,Y,_)=>`budget:${X}:${Y}:${_}`,review:(X,Y)=>`review:${Z(X)}:${Y}`,workflowHeaders:(X)=>`wf-headers:${Z(X)}`,childCancellationPrefix:(X)=>`child-cancel:${Z(X)}:`,childCancellation:(X,Y)=>`child-cancel:${Z(X)}:${Z(Y)}`,childWorkflowByParentPrefix:(X,Y)=>`child-by-parent:${Z(X)}:${Y===void 0?"":`${Z(Y)}:`}`,childWorkflowByParent:(X,Y,_)=>`child-by-parent:${Z(X)}:${Y===void 0?"":`${Z(Y)}:`}${Z(_)}`,terminalCleanupNeeded:(X)=>`wf-cleanup-needed:${Z(X)}`,workflowConcurrency:(X,Y)=>`wf-concurrency:${Z(X)}:${Z(Y)}`,workflowConcurrencyHolder:(X)=>`wf-concurrency-holder:${Z(X)}`,workflowHasServices:(X)=>`wf-has-services:${Z(X)}`,finalizerState:(X)=>`wf-finalizer-state:${Z(X)}`,teardownOwed:(X)=>`wf-teardown-needed:${Z(X)}`,teardownSucceeded:(X)=>`wf-teardown-succeeded:${Z(X)}`,teardownDeadLetter:(X)=>`wf-teardown-deadletter:${Z(X)}`,offload:(X,Y)=>`offload:${Z(X)}:${Y}`,archive:(X,Y)=>`archive:${Z(X)}:${Y}`,stateExecution:(X,Y)=>`state:execution:${Z(X)}:${Z(Y)}`,stateWorkflow:(X,Y)=>`state:workflow-scope:${L}:${Z(X)}:${Z(Y)}`,streamChunkPrefix:(X,Y)=>`blob:${Z(X)}:${Y}:chunk:`,streamChunk:(X,Y,_)=>`blob:${Z(X)}:${Y}:chunk:${String(_).padStart(10,"0")}`,streamTail:(X,Y)=>`blob:${Z(X)}:${Y}:tail`,streamMetadata:(X,Y)=>`blob:${Z(X)}:${Y}:meta`,budgetCharged:(X)=>`budget-charged:${X}`,toolEffect:(X,Y,_)=>`tool-effect:${Z(X)}:${Y}:${_}`,workflowVisibilityStatus:(X,Y)=>`wf-idx-status:${Z(X)}:${Z(Y)}`,workflowVisibilityType:(X,Y)=>`wf-idx-type:${Z(X)}:${Z(Y)}`,workflowVisibilityCreated:(X,Y)=>`wf-idx-created:${H(X)}:${Z(Y)}`,workflowVisibilityUpdated:(X,Y)=>`wf-idx-updated:${H(X)}:${Z(Y)}`,workflowVisibilityDeadline:(X,Y)=>`wf-idx-deadline:${H(X)}:${Z(Y)}`,workflowVisibilityManifest:(X)=>`wf-idx-manifest:${Z(X)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function QX(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 M of["gt","gte","lt","lte"]){let $=X[M];if($===void 0)continue;if(typeof $!=="string")throw Error("deleteRange bounds must be strings");Y[M]=$,_=!0}if(!_)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let J=QX(X.limit);if(J!==void 0)Y.limit=J;return Y}async function w(X,Y,_){let J=Q(_);if(X.deleteRange)return X.deleteRange(Y,J);return P(X,Y,J)}function A(X){return X.replaceAll(/:+$/g,"")}function jX(X,Y){let _=A(X),J=A(Y);if(_.length===0)return J;if(J.length===0)return _;return`${_}:${J}`}class N{#X;#Y;constructor(X,Y){this.#X=X,this.#Y=A(Y)}#_(X){if(this.#Y.length===0)return X;return X.length===0?`${this.#Y}:`:`${this.#Y}:${X}`}#J(X){return X.map((Y)=>{if(Y.type==="put")return{type:"put",key:this.#_(Y.key),value:Y.value};return{type:"delete",key:this.#_(Y.key)}})}#$(X){if(this.#Y.length===0)return X;return X.slice(this.#Y.length+1)}#M(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}#Z(X={}){let Y=this.#M(X);if(X.reverse!==void 0)Y.reverse=X.reverse;return Y}#F(X){return this.#M(X)}capabilities(){return this.#X.capabilities()}scoped(X){return new N(this.#X,jX(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[_,J]of this.#X.scan(this.#_(X),this.#Z(Y)))yield[this.#$(_),J]}async batch(X){U("batch operations",X.length),await this.#X.batch(this.#J(X))}async conditionalBatch(X,Y){return c(this.#X,X.map((_)=>({key:this.#_(_.key),expectedValue:_.expectedValue})),this.#J(Y))}async has(X){return m(this.#X,this.#_(X))}async deletePrefix(X){return k(this.#X,this.#_(X))}async deleteRange(X,Y){let _=this.#F(Q(Y));return w(this.#X,this.#_(X),_)}async*keys(X,Y){for await(let _ of g(this.#X,this.#_(X),this.#Z(Y)))yield this.#$(_)}async count(X){return u(this.#X,this.#_(X))}[Symbol.dispose](){this.#X[Symbol.dispose]()}}function f(X,Y){return new N(X,Y)}function d(X,Y){let _,J,M=!1,$=()=>{if(M)throw Error(`${Y.storageName} pool has been disposed and cannot be reused. Construct a new adapter.`);return _??=Y.loadPool(X).catch((F)=>{throw _=void 0,WX(F,Y)}),_};return{query:async(F,G)=>{return(await $()).query(F,G)},connect:async()=>{return(await $()).connect()},end:async()=>{return M=!0,J??=(async()=>{if(_===void 0)return;await(await _.catch(()=>{return}))?.end()})(),J}}}var BX=/cannot find module|module_not_found|failed to resolve|could not resolve/i;function WX(X,Y){let _=X instanceof Error?X.message:String(X);if(BX.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 C(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 J of X)if(J.type==="put")_.delete(J.key),Y.set(J.key,J.value);else Y.delete(J.key),_.add(J.key);return{puts:Y,deletes:_}}async function p(X,Y,_){if(_.length===0)return!0;let J=_.map((F)=>F.key),M=await X.query(Y.selectValuesByKeys,[J]),$=new Map;for(let F of M.rows){let G=F.value;if(G!==null&&G!==void 0)$.set(F.key,j(G))}for(let F of _){let G=$.get(F.key)??null;if(!I(G,F.expectedValue))return!1}return!0}async function z(X,Y,_){if(_.puts.size>0){let J=[],M=[];for(let[$,F]of _.puts)J.push($),M.push(B(F));await X.query(Y.upsertValuesByKeys,[J,M])}if(_.deletes.size>0)await X.query(Y.deleteValuesByKeys,[[..._.deletes]])}var l=/^[a-z_][a-z0-9_]*$/i;function a(X,Y,_){if(!l.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 ${l.source}).`)}var s="kv";function O(X,Y){a(X,Y,"Postgres")}function i(X){let{schema:Y,table:_}=X;if(Y===void 0&&_===void 0)return s;let J=_??s;if(O(J,"table"),Y===void 0)return`"${J}"`;return O(Y,"schema"),`"${Y}"."${J}"`}function W(X){return[X,y(X)]}function r(X,Y){let{gt:_,gte:J,lt:M,lte:$}=Y,F=W(X),G=["key >= $1 AND key < $2"];if(_!==void 0)F.push(_),G.push(`key > $${F.length}`);if(J!==void 0)F.push(J),G.push(`key >= $${F.length}`);if(M!==void 0)F.push(M),G.push(`key < $${F.length}`);if($!==void 0)F.push($),G.push(`key <= $${F.length}`);return{conditions:G,parameters:F}}function n(X,Y={}){let{limit:_,reverse:J}=Y,{conditions:M,parameters:$}=r(X,Y),F=J?"DESC":"ASC",G="";if(_!==void 0)$.push(_),G=` LIMIT $${$.length}`;return{parameters:$,whereOrderLimit:`WHERE ${M.join(" AND ")} ORDER BY key ${F}${G}`}}function t(X){let Y=`CREATE TABLE IF NOT EXISTS ${X} (
|
|
2
|
+
var se=import.meta.require;function h(e,t,r){if(!e.capabilities()[t])throw Error(`Feature "${r}" requires storage capability "${t}", but this storage backend does not provide it.`)}function ae(e){let t=e.capabilities(),r=[];if(t.persistence!=="local"&&t.persistence!=="remote")r.push(`persistence must be "local" or "remote" (got "${t.persistence}")`);if(t.readAfterWrite!=="linearizable")r.push(`readAfterWrite must be "linearizable" (got "${t.readAfterWrite}")`);if(t.scanConsistency!=="snapshot")r.push(`scanConsistency must be "snapshot" (got "${t.scanConsistency}")`);if(!t.atomicBatch)r.push("atomicBatch must be true");if(!t.conditionalBatch)r.push("conditionalBatch must be true");if(r.length>0)throw Error(`Storage is not durable enough for recovery: ${r.join("; ")}.`)}var m="default";async function x(e,t){return await e.get(t)!==null}async function*g(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function k(e,t){let r=0;for await(let i of g(e,t))r++;return r}async function v(e,t){let r=[];for await(let i of g(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function A(e,t,r){let i=[];for await(let s of g(e,t,r))i.push({type:"delete",key:s});if(i.length===0)return 0;return await e.batch(i),i.length}function n(e){return encodeURIComponent(e)}function le(e){return decodeURIComponent(e)}function ue(e){try{return decodeURIComponent(e)}catch{return null}}var T={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var ce=["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:","ownership-mode-marker","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-owner-epoch:","wf-owner-holder:","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var w=1e4,qe=1e4;class D extends Error{code="StorageBatchOperationLimitExceededError";cap=w;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${w}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function c(e,t){if(t>w)throw new D(e,t)}function I(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function Me(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function N(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let r=0;r<e.byteLength;r++)if(e[r]!==t[r])return!1;return!0}async function K(e,t){if(e.has)return e.has(t);return x(e,t)}function _(e,t,r){if(e.keys)return e.keys(t,r);return g(e,t,r)}async function V(e,t){if(e.count)return e.count(t);return k(e,t)}async function q(e,t){if(e.deletePrefix)return e.deletePrefix(t);return v(e,t)}async function Ue(e,t){c("batch operations",t.length),await e.batch(t)}async function M(e,t,r){if(c("conditionalBatch conditions",t.length),c("conditionalBatch operations",r.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(t,r)}var u=(e)=>String(e).padStart(16,"0"),ge="0",de="1",L=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,ze={workflow:(e)=>`wf:${n(e)}`,checkpoint:(e)=>`wf:${n(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${n(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${n(e)}:timeline:`,timeline:(e,t)=>`wf:${n(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${n(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${n(t)}`,scheduleRun:(e)=>`schedule-run:${n(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${n(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${n(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${n(e)}:${n(t)}`,operation:(e,t,r)=>`op:${e}:${u(t)}:${r}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,r)=>`audit:bulk:${u(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${u(e)}:${n(t)}`,asyncActivity:(e,t)=>`async-act:v1:${n(e)}:${n(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${n(e)}:${n(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${n(e)}:`,activityReconciliation:(e,t,r)=>`actrec:v1:${n(e)}:${n(t)}:${r}`,eventPrefix:(e)=>`ev:${n(e)}:`,event:(e,t)=>`ev:${n(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${n(e)}:head`,eventWatermark:(e)=>`ev:${n(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${n(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${n(e)}:${String(t).padStart(10,"0")}`,signal:(e,t,r)=>L(e,t,r,de),startSignal:(e,t,r)=>L(e,t,r,ge),signalSequence:(e)=>`sigseq:v1:${n(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${n(e)}:`,signalAcceptedResponse:(e,t,r)=>`sigres:v1:${n(e)}:${n(t)}:${n(r)}`,deadline:(e,t)=>`wf-deadline:${u(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${u(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${u(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${u(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${u(e)}:${n(t)}`,attribute:(e)=>`attr:${n(e)}`,attributeIndex:(e,t,r)=>`idx:${e}:${t}:${n(r)}`,tagIndex:(e,t)=>`tag:${n(e)}:${n(t)}`,updatePrefix:(e)=>`upd:${n(e)}:`,update:(e,t)=>`upd:${n(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${n(e)}:${t}`,startIdempotency:(e)=>`start-idem:${n(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`,livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${n(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...T,budget:(e,t,r)=>`budget:${e}:${t}:${r}`,review:(e,t)=>`review:${n(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${n(e)}`,childCancellationPrefix:(e)=>`child-cancel:${n(e)}:`,childCancellation:(e,t)=>`child-cancel:${n(e)}:${n(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}`,childWorkflowByParent:(e,t,r)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}${n(r)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${n(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${n(e)}:${n(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${n(e)}`,workflowHasServices:(e)=>`wf-has-services:${n(e)}`,finalizerState:(e)=>`wf-finalizer-state:${n(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${n(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${n(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${n(e)}`,offload:(e,t)=>`offload:${n(e)}:${t}`,archive:(e,t)=>`archive:${n(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${n(e)}:${n(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${m}:${n(e)}:${n(t)}`,streamChunkPrefix:(e,t)=>`blob:${n(e)}:${t}:chunk:`,streamChunk:(e,t,r)=>`blob:${n(e)}:${t}:chunk:${String(r).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${n(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${n(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,r)=>`tool-effect:${n(e)}:${t}:${r}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${n(e)}:${n(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${n(e)}:${n(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${u(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${u(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${u(e)}:${n(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${n(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function ye(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 d(e){let t={},r=!1;for(let s of["gt","gte","lt","lte"]){let o=e[s];if(o===void 0)continue;if(typeof o!=="string")throw Error("deleteRange bounds must be strings");t[s]=o,r=!0}if(!r)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let i=ye(e.limit);if(i!==void 0)t.limit=i;return t}async function U(e,t,r){let i=d(r);if(e.deleteRange)return e.deleteRange(t,i);return A(e,t,i)}function P(e){return e.replaceAll(/:+$/g,"")}function pe(e,t){let r=P(e),i=P(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class S{#e;#t;constructor(e,t){this.#e=e,this.#t=P(t)}#r(e){if(this.#t.length===0)return e;return e.length===0?`${this.#t}:`:`${this.#t}:${e}`}#i(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#r(t.key),value:t.value};return{type:"delete",key:this.#r(t.key)}})}#o(e){if(this.#t.length===0)return e;return e.slice(this.#t.length+1)}#s(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#r(e.gt);if(e.gte!==void 0)t.gte=this.#r(e.gte);if(e.lt!==void 0)t.lt=this.#r(e.lt);if(e.lte!==void 0)t.lte=this.#r(e.lte);return t}#n(e={}){let t=this.#s(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#a(e){return this.#s(e)}capabilities(){return this.#e.capabilities()}scoped(e){return new S(this.#e,pe(this.#t,e))}async get(e){return this.#e.get(this.#r(e))}async put(e,t){await this.#e.put(this.#r(e),t)}async delete(e){await this.#e.delete(this.#r(e))}async*scan(e,t){for await(let[r,i]of this.#e.scan(this.#r(e),this.#n(t)))yield[this.#o(r),i]}async batch(e){c("batch operations",e.length),await this.#e.batch(this.#i(e))}async conditionalBatch(e,t){return M(this.#e,e.map((r)=>({key:this.#r(r.key),expectedValue:r.expectedValue})),this.#i(t))}async has(e){return K(this.#e,this.#r(e))}async deletePrefix(e){return q(this.#e,this.#r(e))}async deleteRange(e,t){let r=this.#a(d(t));return U(this.#e,this.#r(e),r)}async*keys(e,t){for await(let r of _(this.#e,this.#r(e),this.#n(t)))yield this.#o(r)}async count(e){return V(this.#e,this.#r(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function z(e,t){return new S(e,t)}function F(e,t){let r,i,s=!1,o=()=>{if(s)throw Error(`${t.storageName} pool has been disposed and cannot be reused. Construct a new adapter.`);return r??=t.loadPool(e).catch((a)=>{throw r=void 0,he(a,t)}),r};return{query:async(a,l)=>(await o()).query(a,l),connect:async()=>(await o()).connect(),end:async()=>(s=!0,i??=(async()=>{if(r===void 0)return;await(await r.catch(()=>{return}))?.end()})(),i)}}var fe=/cannot find module|module_not_found|failed to resolve|could not resolve/i;function he(e,t){let r=e instanceof Error?e.message:String(e);if(fe.test(r))return Error(`${t.storageName} requires the optional peer dependency "${t.driverName}". Install it in your application with: bun add ${t.driverName} (or npm install ${t.driverName}).`,{cause:e});return e instanceof Error?e:Error(r)}function E(e){return e.rowCount??e.affectedRows??e.rows.length}function y(e){if(e instanceof Uint8Array)return new Uint8Array(e);return new Uint8Array(e)}function p(e){return Buffer.from(e)}function b(e){let t=new Map,r=new Set;for(let i of e)if(i.type==="put")r.delete(i.key),t.set(i.key,i.value);else t.delete(i.key),r.add(i.key);return{puts:t,deletes:r}}async function G(e,t,r){if(r.length===0)return!0;let i=r.map((a)=>a.key),s=await e.query(t.selectValuesByKeys,[i]),o=new Map;for(let a of s.rows){let l=a.value;if(l!==null&&l!==void 0)o.set(a.key,y(l))}for(let a of r){let l=o.get(a.key)??null;if(!N(l,a.expectedValue))return!1}return!0}async function R(e,t,r){if(r.puts.size>0){let i=[],s=[];for(let[o,a]of r.puts)i.push(o),s.push(p(a));await e.query(t.upsertValuesByKeys,[i,s])}if(r.deletes.size>0)await e.query(t.deleteValuesByKeys,[[...r.deletes]])}var H=/^[a-z_][a-z0-9_]*$/i;function Q(e,t,r){if(!H.test(e))throw Error(`${r} storage ${t} name "${e}" is not a valid ${r} identifier. Use only letters, digits, and underscores, starting with a letter or underscore (matching ${H.source}).`)}var W="kv";function O(e,t){Q(e,t,"Postgres")}function X(e){let{schema:t,table:r}=e;if(t===void 0&&r===void 0)return W;let i=r??W;if(O(i,"table"),t===void 0)return`"${i}"`;return O(t,"schema"),`"${t}"."${i}"`}function f(e){return[e,I(e)]}function Z(e,t){let{gt:r,gte:i,lt:s,lte:o}=t,a=f(e),l=["key >= $1 AND key < $2"];if(r!==void 0)a.push(r),l.push(`key > $${a.length}`);if(i!==void 0)a.push(i),l.push(`key >= $${a.length}`);if(s!==void 0)a.push(s),l.push(`key < $${a.length}`);if(o!==void 0)a.push(o),l.push(`key <= $${a.length}`);return{conditions:l,parameters:a}}function Y(e,t={}){let{limit:r,reverse:i}=t,{conditions:s,parameters:o}=Z(e,t),a=i?"DESC":"ASC",l="";if(r!==void 0)o.push(r),l=` LIMIT $${o.length}`;return{parameters:o,whereOrderLimit:`WHERE ${s.join(" AND ")} ORDER BY key ${a}${l}`}}function j(e){let t=`CREATE TABLE IF NOT EXISTS ${e} (
|
|
3
3
|
key TEXT COLLATE "C" PRIMARY KEY,
|
|
4
4
|
value BYTEA NOT NULL
|
|
5
|
-
)`,
|
|
5
|
+
)`,r=`
|
|
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:e,createTable:t,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 ${e} WHERE key = $1`,upsertValueByKey:`INSERT INTO ${e} (key, value) VALUES ($1, $2) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value`,deleteValueByKey:`DELETE FROM ${e} WHERE key = $1`,selectKeyPresence:`SELECT 1 AS present FROM ${e} WHERE key = $1 LIMIT 1`,countKeysByPrefix:`SELECT COUNT(*) AS count FROM ${e} WHERE key >= $1 AND key < $2`,deleteKeysByPrefix:`DELETE FROM ${e} WHERE key >= $1 AND key < $2`,selectValuesByKeys:`SELECT key, value FROM ${e} WHERE key = ANY($1)`,upsertValuesByKeys:`INSERT INTO ${e} (key, value) SELECT * FROM unnest($1::text[], $2::bytea[]) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value`,deleteValuesByKeys:`DELETE FROM ${e} WHERE key = ANY($1)`,keyValueRangeSelect(i,s={}){let{parameters:o,whereOrderLimit:a}=Y(i,s);return{parameters:o,sql:`SELECT key, value FROM ${e} ${a}`}},keyRangeSelect(i,s={}){let{parameters:o,whereOrderLimit:a}=Y(i,s);return{parameters:o,sql:`SELECT key FROM ${e} ${a}`}},keyRangeDelete(i,s){let{conditions:o,parameters:a}=Z(i,s),l=o.join(" AND ");if(s.limit===void 0)return{parameters:a,sql:`DELETE FROM ${e} WHERE ${l}`};return a.push(s.limit),{parameters:a,sql:`DELETE FROM ${e} WHERE key IN (SELECT key FROM ${e} WHERE ${l} ORDER BY key ASC LIMIT $${a.length})`}}}}var J="BEGIN ISOLATION LEVEL SERIALIZABLE",ee="BEGIN ISOLATION LEVEL READ COMMITTED",te="BEGIN READ ONLY",re="COMMIT",C="ROLLBACK";function ne(e){return O(e,"schema"),`CREATE SCHEMA IF NOT EXISTS "${e}"`}var me=/^PRAGMA\b/iu,we=/^PRAGMA\s+(?:[A-Z_][A-Z0-9_]*\.)?[A-Z_][A-Z0-9_]*\s*$/iu,Pe=/^SELECT\b/iu;function Se(e){return e.trim().replace(/;+\s*$/u,"").trim()}function Ee(e){return we.test(e)}function ie(e){let t=Se(e);if(t.length===0)throw Error("Storage query must not be empty.");if(t.includes(";"))throw Error("Storage query must contain exactly one read-only statement.");if(Pe.test(t))return;if(me.test(t)&&Ee(t))return;throw Error("Storage query only supports read-only SELECT and PRAGMA statements.")}var $e=new Set(["40001","40P01"]),oe=5;function be(e){if(typeof e!=="object"||e===null||!("code"in e))return!1;let t=e.code;return typeof t==="string"&&$e.has(t)}class B{#e;#t;#r;#i;#o;#s;constructor(e,t){if(this.#o=e.pool===void 0,e.pool===void 0){if(e.url===void 0)throw Error("PostgresKeyValueStorage requires either a `url` to build a pool from, or a pre-built `pool`; neither was provided.");this.#e=t(e.url)}else this.#e=e.pool;this.#r=e.schema;let r=X({schema:e.schema,table:e.table});this.#t=j(r)}capabilities(){return{persistence:"remote",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#n(){return this.#i??=this.#a().catch((e)=>{throw this.#i=void 0,e}),this.#i}async#a(){if(this.#r!==void 0)await this.#e.query(ne(this.#r));await this.#e.query(this.#t.createTable),await this.#c()}async#c(){let t=(await this.#e.query(this.#t.selectKeyCollation,[this.#t.tableReference])).rows[0]?.collation;if(t==="C")return;let r=t===void 0?"no such table":typeof t==="string"?`"${t}"`:"an unexpected collation value";throw Error(`Postgres storage requires the ${this.#t.tableReference} table's "key" column to use COLLATE "C" (found ${r}). 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.#t.tableReference} (key TEXT COLLATE "C" PRIMARY KEY, value BYTEA NOT NULL).`)}async get(e){await this.#n();let r=(await this.#e.query(this.#t.selectValueByKey,[e])).rows[0];if(r===void 0)return null;let i=r.value;if(i===null||i===void 0)return null;return y(i)}async put(e,t){await this.#n(),await this.#e.query(this.#t.upsertValueByKey,[e,p(t)])}async delete(e){await this.#n(),await this.#e.query(this.#t.deleteValueByKey,[e])}async has(e){return await this.#n(),(await this.#e.query(this.#t.selectKeyPresence,[e])).rows.length>0}async deletePrefix(e){await this.#n();let[t,r]=f(e),i=await this.#e.query(this.#t.deleteKeysByPrefix,[t,r]);return E(i)}async deleteRange(e,t){await this.#n();let r=d(t),{parameters:i,sql:s}=this.#t.keyRangeDelete(e,r),o=await this.#e.query(s,i);return E(o)}async*scan(e,t={}){await this.#n();let{parameters:r,sql:i}=this.#t.keyValueRangeSelect(e,t),s=await this.#e.query(i,r);for(let o of s.rows)yield[o.key,y(o.value)]}async*keys(e,t={}){await this.#n();let{parameters:r,sql:i}=this.#t.keyRangeSelect(e,t),s=await this.#e.query(i,r);for(let o of s.rows)yield o.key}async count(e){await this.#n();let[t,r]=f(e),i=await this.#e.query(this.#t.countKeysByPrefix,[t,r]);return Number(i.rows[0]?.count??0)}scoped(e){return z(this,e)}async#l(e,t,r=()=>!0){let i=await this.#e.connect();try{await i.query(e);try{let s=await t(i);return await i.query(r(s)?re:C),s}catch(s){throw await i.query(C).catch(()=>{}),s}}finally{i.release()}}async batch(e){if(c("batch operations",e.length),e.length===0)return;await this.#n(),await this.#l(ee,async(t)=>{await R(t,this.#t,b(e))})}async conditionalBatch(e,t){c("conditionalBatch conditions",e.length),c("conditionalBatch operations",t.length),await this.#n();let r=b(t),i;for(let s=0;s<oe;s+=1)try{return await this.#l(J,async(o)=>{if(!await G(o,this.#t,e))return!1;return await R(o,this.#t,r),!0},(o)=>o)}catch(o){if(!be(o))throw o;i=o}throw Error(`conditionalBatch exhausted ${oe} attempts after retryable transaction failures`,{cause:i})}async query(e,t){return await this.#n(),ie(e),this.#l(te,async(r)=>(await r.query(e,t??[])).rows)}#u(){if(!this.#o)return Promise.resolve();return this.#s??=this.#e.end(),this.#s}[Symbol.dispose](){this.#u().catch(()=>{})}async[Symbol.asyncDispose](){await this.#u()}}function Re(e){return F(e,{driverName:"pg",storageName:"PostgresStorage",loadPool:(t)=>import("pg").then(({default:r})=>new r.Pool({connectionString:t}))})}class Oe extends B{constructor(e,t=Re){super(e,t)}}export{Oe as PostgresStorage};
|