@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.
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- var PF=import.meta.require;function B(F,Y,Z){if(!F.capabilities()[Y])throw Error(`Feature "${Z}" requires storage capability "${Y}", but this storage backend does not provide it.`)}function s(F){let Y=F.capabilities(),Z=[];if(Y.persistence!=="local"&&Y.persistence!=="remote")Z.push(`persistence must be "local" or "remote" (got "${Y.persistence}")`);if(Y.readAfterWrite!=="linearizable")Z.push(`readAfterWrite must be "linearizable" (got "${Y.readAfterWrite}")`);if(Y.scanConsistency!=="snapshot")Z.push(`scanConsistency must be "snapshot" (got "${Y.scanConsistency}")`);if(!Y.atomicBatch)Z.push("atomicBatch must be true");if(!Y.conditionalBatch)Z.push("conditionalBatch must be true");if(Z.length>0)throw Error(`Storage is not durable enough for recovery: ${Z.join("; ")}.`)}var P="default";async function T(F,Y){return await F.get(Y)!==null}async function*W(F,Y,Z){for await(let[J]of F.scan(Y,Z))yield J}async function E(F,Y){let Z=0;for await(let J of W(F,Y))Z++;return Z}async function b(F,Y){let Z=[];for await(let J of W(F,Y))Z.push({type:"delete",key:J});if(Z.length===0)return 0;return await F.batch(Z),Z.length}async function O(F,Y,Z){let J=[];for await(let j of W(F,Y,Z))J.push({type:"delete",key:j});if(J.length===0)return 0;return await F.batch(J),J.length}function $(F){return encodeURIComponent(F)}function a(F){return decodeURIComponent(F)}function n(F){try{return decodeURIComponent(F)}catch{return null}}var h={workflowOwnerEpoch:(F)=>`wf-owner-epoch:${$(F)}`,workflowOwnerHolder:(F)=>`wf-owner-holder:${$(F)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var t=["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 A=1e4,mF=1e4;class S extends Error{code="StorageBatchOperationLimitExceededError";cap=A;count;target;constructor(F,Y){super(`${F} count ${Y} exceeds MAX_BATCH_OPERATIONS (${A}).`);this.name="StorageBatchOperationLimitExceededError",this.target=F,this.count=Y}}function G(F,Y){if(Y>A)throw new S(F,Y)}function q(F){return F.length>0?F.slice(0,-1)+String.fromCharCode(F.charCodeAt(F.length-1)+1):"\xFF"}function L(F,Y={}){if(Y.gt!==void 0&&F<=Y.gt)return!1;if(Y.gte!==void 0&&F<Y.gte)return!1;if(Y.lt!==void 0&&F>=Y.lt)return!1;if(Y.lte!==void 0&&F>Y.lte)return!1;return!0}function m(F,Y){if(F===null||Y===null)return F===Y;if(F.byteLength!==Y.byteLength)return!1;for(let Z=0;Z<F.byteLength;Z++)if(F[Z]!==Y[Z])return!1;return!0}async function x(F,Y){if(F.has)return F.has(Y);return T(F,Y)}function y(F,Y,Z){if(F.keys)return F.keys(Y,Z);return W(F,Y,Z)}async function I(F,Y){if(F.count)return F.count(Y);return E(F,Y)}async function w(F,Y){if(F.deletePrefix)return F.deletePrefix(Y);return b(F,Y)}async function xF(F,Y){G("batch operations",Y.length),await F.batch(Y)}async function c(F,Y,Z){if(G("conditionalBatch conditions",Y.length),G("conditionalBatch operations",Z.length),B(F,"conditionalBatch","storageConditionalBatch"),!F.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return F.conditionalBatch(Y,Z)}var V=(F)=>String(F).padStart(16,"0"),r="0",i="1",v=(F,Y,Z,J)=>`sig:${$(F)}:${$(Y)}:${J}:${$(Z)}`,yF={workflow:(F)=>`wf:${$(F)}`,checkpoint:(F)=>`wf:${$(F)}:ckpt`,checkpointHistory:(F,Y)=>`wf:${$(F)}:ckpt:${String(Y).padStart(10,"0")}`,timelinePrefix:(F)=>`wf:${$(F)}:timeline:`,timeline:(F,Y)=>`wf:${$(F)}:timeline:${String(Y).padStart(10,"0")}`,schedule:(F)=>`schedule:${$(F)}`,scheduleTick:(F,Y)=>`schedule-due:${String(F).padStart(16,"0")}:${$(Y)}`,scheduleRun:(F)=>`schedule-run:${$(F)}`,scheduleRunLink:(F)=>`schedule-run-link:${$(F)}`,scheduleRunBySchedulePrefix:(F)=>`schedule-run-by-schedule:${$(F)}:`,scheduleRunBySchedule:(F,Y)=>`schedule-run-by-schedule:${$(F)}:${$(Y)}`,operation:(F,Y,Z)=>`op:${F}:${V(Y)}:${Z}`,operationInflight:(F)=>`op:inflight:${F}`,operationQueued:(F)=>`op:queued:${F}`,operationResolved:(F)=>`op:resolved:${F}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(F,Y,Z)=>`audit:bulk:${V(F)}:${$(Y)}:${$(Z)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(F,Y)=>`op:resolved-by-time:${V(F)}:${$(Y)}`,asyncActivity:(F,Y)=>`async-act:v1:${$(F)}:${$(Y)}`,asyncActivityResolution:(F,Y)=>`async-act:v1:${$(F)}:${$(Y)}:resolution`,activityReconciliationPrefix:(F)=>`actrec:v1:${$(F)}:`,activityReconciliation:(F,Y,Z)=>`actrec:v1:${$(F)}:${$(Y)}:${Z}`,eventPrefix:(F)=>`ev:${$(F)}:`,event:(F,Y)=>`ev:${$(F)}:${String(Y).padStart(10,"0")}`,eventHead:(F)=>`ev:${$(F)}:head`,eventWatermark:(F)=>`ev:${$(F)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(F)=>`fleet-event:${String(F).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(F)=>`fleet-event-by-workflow:${$(F)}:`,fleetEventByWorkflow:(F,Y)=>`fleet-event-by-workflow:${$(F)}:${String(Y).padStart(10,"0")}`,signal:(F,Y,Z)=>v(F,Y,Z,i),startSignal:(F,Y,Z)=>v(F,Y,Z,r),signalSequence:(F)=>`sigseq:v1:${$(F)}`,signalAcceptedResponsePrefix:(F)=>`sigres:v1:${$(F)}:`,signalAcceptedResponse:(F,Y,Z)=>`sigres:v1:${$(F)}:${$(Y)}:${$(Z)}`,deadline:(F,Y)=>`wf-deadline:${V(F)}:${$(Y)}`,terminalCleanup:(F,Y)=>`wf-cleanup:${V(F)}:${$(Y)}`,teardownTimer:(F,Y)=>`wf-teardown:${V(F)}:${$(Y)}`,delayedStart:(F,Y)=>`wf-delayed:${V(F)}:${$(Y)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(F,Y)=>`wf-terminal:${V(F)}:${$(Y)}`,attribute:(F)=>`attr:${$(F)}`,attributeIndex:(F,Y,Z)=>`idx:${F}:${Y}:${$(Z)}`,tagIndex:(F,Y)=>`tag:${$(F)}:${$(Y)}`,updatePrefix:(F)=>`upd:${$(F)}:`,update:(F,Y)=>`upd:${$(F)}:${Y}`,updateResponse:(F)=>`upr:${F}`,updateIdempotency:(F,Y)=>`upk:${$(F)}:${Y}`,startIdempotency:(F)=>`start-idem:${$(F)}`,startIdempotencySignalId:(F)=>`start-idem:${F}`,livenessPrefix:()=>"liveness:",liveness:(F)=>`liveness:${$(F)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...h,budget:(F,Y,Z)=>`budget:${F}:${Y}:${Z}`,review:(F,Y)=>`review:${$(F)}:${Y}`,workflowHeaders:(F)=>`wf-headers:${$(F)}`,childCancellationPrefix:(F)=>`child-cancel:${$(F)}:`,childCancellation:(F,Y)=>`child-cancel:${$(F)}:${$(Y)}`,childWorkflowByParentPrefix:(F,Y)=>`child-by-parent:${$(F)}:${Y===void 0?"":`${$(Y)}:`}`,childWorkflowByParent:(F,Y,Z)=>`child-by-parent:${$(F)}:${Y===void 0?"":`${$(Y)}:`}${$(Z)}`,terminalCleanupNeeded:(F)=>`wf-cleanup-needed:${$(F)}`,workflowConcurrency:(F,Y)=>`wf-concurrency:${$(F)}:${$(Y)}`,workflowConcurrencyHolder:(F)=>`wf-concurrency-holder:${$(F)}`,workflowHasServices:(F)=>`wf-has-services:${$(F)}`,finalizerState:(F)=>`wf-finalizer-state:${$(F)}`,teardownOwed:(F)=>`wf-teardown-needed:${$(F)}`,teardownSucceeded:(F)=>`wf-teardown-succeeded:${$(F)}`,teardownDeadLetter:(F)=>`wf-teardown-deadletter:${$(F)}`,offload:(F,Y)=>`offload:${$(F)}:${Y}`,archive:(F,Y)=>`archive:${$(F)}:${Y}`,stateExecution:(F,Y)=>`state:execution:${$(F)}:${$(Y)}`,stateWorkflow:(F,Y)=>`state:workflow-scope:${P}:${$(F)}:${$(Y)}`,streamChunkPrefix:(F,Y)=>`blob:${$(F)}:${Y}:chunk:`,streamChunk:(F,Y,Z)=>`blob:${$(F)}:${Y}:chunk:${String(Z).padStart(10,"0")}`,streamTail:(F,Y)=>`blob:${$(F)}:${Y}:tail`,streamMetadata:(F,Y)=>`blob:${$(F)}:${Y}:meta`,budgetCharged:(F)=>`budget-charged:${F}`,toolEffect:(F,Y,Z)=>`tool-effect:${$(F)}:${Y}:${Z}`,workflowVisibilityStatus:(F,Y)=>`wf-idx-status:${$(F)}:${$(Y)}`,workflowVisibilityType:(F,Y)=>`wf-idx-type:${$(F)}:${$(Y)}`,workflowVisibilityCreated:(F,Y)=>`wf-idx-created:${V(F)}:${$(Y)}`,workflowVisibilityUpdated:(F,Y)=>`wf-idx-updated:${V(F)}:${$(Y)}`,workflowVisibilityDeadline:(F,Y)=>`wf-idx-deadline:${V(F)}:${$(Y)}`,workflowVisibilityManifest:(F)=>`wf-idx-manifest:${$(F)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function e(F){if(F===void 0)return;if(typeof F!=="number"||!Number.isInteger(F)||F<0)throw Error("deleteRange limit must be a finite non-negative integer");return F===0?0:F}function C(F){let Y={},Z=!1;for(let j of["gt","gte","lt","lte"]){let X=F[j];if(X===void 0)continue;if(typeof X!=="string")throw Error("deleteRange bounds must be strings");Y[j]=X,Z=!0}if(!Z)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let J=e(F.limit);if(J!==void 0)Y.limit=J;return Y}async function u(F,Y,Z){let J=C(Z);if(F.deleteRange)return F.deleteRange(Y,J);return O(F,Y,J)}function K(F){return F.replaceAll(/:+$/g,"")}function o(F,Y){let Z=K(F),J=K(Y);if(Z.length===0)return J;if(J.length===0)return Z;return`${Z}:${J}`}class N{#F;#Z;constructor(F,Y){this.#F=F,this.#Z=K(Y)}#Y(F){if(this.#Z.length===0)return F;return F.length===0?`${this.#Z}:`:`${this.#Z}:${F}`}#$(F){return F.map((Y)=>{if(Y.type==="put")return{type:"put",key:this.#Y(Y.key),value:Y.value};return{type:"delete",key:this.#Y(Y.key)}})}#J(F){if(this.#Z.length===0)return F;return F.slice(this.#Z.length+1)}#X(F){let Y={};if(F.limit!==void 0)Y.limit=F.limit;if(F.gt!==void 0)Y.gt=this.#Y(F.gt);if(F.gte!==void 0)Y.gte=this.#Y(F.gte);if(F.lt!==void 0)Y.lt=this.#Y(F.lt);if(F.lte!==void 0)Y.lte=this.#Y(F.lte);return Y}#j(F={}){let Y=this.#X(F);if(F.reverse!==void 0)Y.reverse=F.reverse;return Y}#V(F){return this.#X(F)}capabilities(){return this.#F.capabilities()}scoped(F){return new N(this.#F,o(this.#Z,F))}async get(F){return this.#F.get(this.#Y(F))}async put(F,Y){await this.#F.put(this.#Y(F),Y)}async delete(F){await this.#F.delete(this.#Y(F))}async*scan(F,Y){for await(let[Z,J]of this.#F.scan(this.#Y(F),this.#j(Y)))yield[this.#J(Z),J]}async batch(F){G("batch operations",F.length),await this.#F.batch(this.#$(F))}async conditionalBatch(F,Y){return c(this.#F,F.map((Z)=>({key:this.#Y(Z.key),expectedValue:Z.expectedValue})),this.#$(Y))}async has(F){return x(this.#F,this.#Y(F))}async deletePrefix(F){return w(this.#F,this.#Y(F))}async deleteRange(F,Y){let Z=this.#V(C(Y));return u(this.#F,this.#Y(F),Z)}async*keys(F,Y){for await(let Z of y(this.#F,this.#Y(F),this.#j(Y)))yield this.#J(Z)}async count(F){return I(this.#F,this.#Y(F))}[Symbol.dispose](){this.#F[Symbol.dispose]()}}function k(F,Y){return new N(F,Y)}class z{#F;constructor(){this.#F=new Map}capabilities(){return{persistence:"ephemeral",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#Z(F,Y,Z){return F>=Y&&F<Z}#Y(F,Y){let Z=[];for(let J of this.#F.keys())if(this.#Z(J,F,Y))Z.push(J);return Z.toSorted()}async get(F){return this.#F.get(F)??null}async put(F,Y){this.#F.set(F,Y)}async delete(F){this.#F.delete(F)}async*scan(F,Y={}){let{limit:Z,reverse:J}=Y,j=q(F),X=this.#Y(F,j);if(X=X.filter((_)=>L(_,Y)),J)X.reverse();let H=0;for(let _ of X){if(Z!==void 0&&H>=Z)break;let R=this.#F.get(_);if(R!==void 0)yield[_,R],H++}}async batch(F){G("batch operations",F.length),this.#$(F)}#$(F){for(let Y of F)if(Y.type==="put")this.#F.set(Y.key,Y.value);else this.#F.delete(Y.key)}async conditionalBatch(F,Y){G("conditionalBatch conditions",F.length),G("conditionalBatch operations",Y.length);for(let Z of F){let J=this.#F.get(Z.key)??null;if(!m(J,Z.expectedValue))return!1}return this.#$(Y),!0}async has(F){return this.#F.has(F)}async deletePrefix(F){let Y=q(F),Z=this.#Y(F,Y);for(let J of Z)this.#F.delete(J);return Z.length}async deleteRange(F,Y){let Z=C(Y),J=q(F),j=this.#Y(F,J).filter((H)=>L(H,Z)),X=Z.limit===void 0?j:j.slice(0,Z.limit);for(let H of X)this.#F.delete(H);return X.length}async*keys(F,Y={}){let{limit:Z,reverse:J}=Y,j=q(F),X=this.#Y(F,j);if(X=X.filter((_)=>L(_,Y)),J)X.reverse();let H=0;for(let _ of X){if(Z!==void 0&&H>=Z)break;yield _,H++}}async count(F){let Y=q(F);return this.#Y(F,Y).length}scoped(F){return k(this,F)}get size(){return this.#F.size}clear(){this.#F.clear()}snapshot(){let F=new Map;for(let[Y,Z]of this.#F)F.set(Y,new Uint8Array(Z));return F}[Symbol.dispose](){this.#F.clear()}}function U(F,Y){return import.meta.url.endsWith(".ts")?F:Y}async function Q(F){return await import(F)}var FF=U("./bun-sql.ts","./bun-sql.js"),YF=U("./node-sqlite.ts","./node-sqlite.js"),ZF=U("./lmdb.ts","./lmdb.js"),$F=U("./turso.ts","./turso.js"),JF=U("./neon.ts","./neon.js"),g=U("./indexeddb.ts","./indexeddb.js"),l=U("./web-extension.ts","./web-extension.js"),XF=U("./http.ts","./http.js"),jF=U("./auto.ts","./auto.js");function f(){return typeof Bun<"u"}function d(){return typeof globalThis.process==="object"&&globalThis.process!==null&&typeof globalThis.process.versions==="object"&&typeof globalThis.process.versions.node==="string"}function VF(){let F=globalThis;return F.browser?.storage!==void 0||F.chrome?.storage!==void 0}function QF(){return typeof globalThis.indexedDB<"u"}async function HF(F){if(f()){let{BunSQLiteStorage:Y}=await Q(FF);return new Y(F)}if(d()){let{NodeSQLiteStorage:Y}=await Q(YF);return new Y(F)}throw Error("SQLite storage is only available in Bun or Node runtimes.")}async function GF(){if(f()||d()){let{resolveDefaultStorage:F}=await Q(jF);return F()}if(VF()){let{WebExtensionStorage:F}=await Q(l);return new F}if(QF()){let{IndexedDBStorage:F}=await Q(g);return new F}return new z}var p={memory:async(F)=>new z,sqlite:async(F)=>HF(F.path),lmdb:async(F)=>{let{LMDBStorage:Y}=await Q(ZF);return new Y(F.path)},turso:async(F)=>{let{TursoStorage:Y}=await Q($F);return new Y({url:F.url,...F.authToken===void 0?{}:{authToken:F.authToken}})},neon:async(F)=>{let{NeonStorage:Y}=await Q(JF);return new Y({url:F.url})},indexeddb:async(F)=>{let{IndexedDBStorage:Y}=await Q(g);return new Y(F.databaseName)},"web-extension":async(F)=>{let{WebExtensionStorage:Y}=await Q(l);return new Y(F.area===void 0?{}:{area:F.area})},http:async(F)=>{let{HTTPStorage:Y}=await Q(XF);return new Y({baseUrl:F.baseUrl,...F.headers===void 0?{}:{headers:F.headers}})},auto:async(F)=>GF()};function UF(F){if(typeof F!=="object"||F===null)return"unknown";if(!("type"in F))return"unknown";return typeof F.type==="string"?F.type:"unknown"}function _F(F){if(typeof F!=="object"||F===null||Array.isArray(F))throw Error("Storage configuration must be an object.");return F}function D(F,Y,Z){let J=F[Y];if(typeof J!=="string"||J.length===0)throw Error(`${Z} storage configuration requires "${Y}" as a string.`);return J}function M(F,Y,Z){let J=F[Y];if(J===void 0)return;if(typeof J!=="string")throw Error(`${Z} storage configuration field "${Y}" must be a string.`);return J}function qF(F,Y,Z){let J=F[Y];if(typeof J==="string"||J instanceof URL)return J;throw Error(`${Z} storage configuration requires "${Y}" as a string or URL.`)}function WF(F){let Y=F.headers;if(Y===void 0)return;if(typeof Y!=="object"||Y===null||Array.isArray(Y))throw Error('HTTP storage configuration field "headers" must be a string record.');let Z={};for(let[J,j]of Object.entries(Y)){if(typeof j!=="string")throw Error('HTTP storage configuration field "headers" must be a string record.');Z[J]=j}return Z}function CF(F){let Y=F.area;if(Y===void 0)return;if(Y==="local"||Y==="sync"||Y==="session"||Y==="managed")return Y;throw Error('WebExtension storage configuration field "area" must be one of local, sync, session, or managed.')}var LF={memory:(F)=>({type:"memory"}),sqlite:(F)=>{let Y=M(F,"path","SQLite");return Y===void 0?{type:"sqlite"}:{type:"sqlite",path:Y}},lmdb:(F)=>({type:"lmdb",path:D(F,"path","LMDB")}),turso:(F)=>{let Y=M(F,"authToken","Turso");return{type:"turso",url:D(F,"url","Turso"),...Y===void 0?{}:{authToken:Y}}},neon:(F)=>({type:"neon",url:D(F,"url","Neon")}),indexeddb:(F)=>{let Y=M(F,"databaseName","IndexedDB");return Y===void 0?{type:"indexeddb"}:{type:"indexeddb",databaseName:Y}},"web-extension":(F)=>{let Y=CF(F);return Y===void 0?{type:"web-extension"}:{type:"web-extension",area:Y}},http:(F)=>{let Y=WF(F);return{type:"http",baseUrl:qF(F,"baseUrl","HTTP"),...Y===void 0?{}:{headers:Y}}},auto:(F)=>({type:"auto"})};function zF(F,Y){return LF[Y](_F(F))}function BF(F){return Object.hasOwn(p,F)}async function iF(F){let Y=UF(F);if(!BF(Y))throw Error(`Unsupported storage configuration type: ${Y}`);let Z=zF(F,Y),J=p[Y];return J(Z)}export{iF as resolveStorage};
2
+ var we=import.meta.require;function b(e,t,n){if(!e.capabilities()[t])throw Error(`Feature "${n}" requires storage capability "${t}", but this storage backend does not provide it.`)}function G(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 S="default";async function k(e,t){return await e.get(t)!==null}async function*p(e,t,n){for await(let[i]of e.scan(t,n))yield i}async function B(e,t){let n=0;for await(let i of p(e,t))n++;return n}async function E(e,t){let n=[];for await(let i of p(e,t))n.push({type:"delete",key:i});if(n.length===0)return 0;return await e.batch(n),n.length}async function P(e,t,n){let i=[];for await(let a of p(e,t,n))i.push({type:"delete",key:a});if(i.length===0)return 0;return await e.batch(i),i.length}function r(e){return encodeURIComponent(e)}function Q(e){return decodeURIComponent(e)}function F(e){try{return decodeURIComponent(e)}catch{return null}}var T={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 w=1e4,Le=1e4;class A 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 u(e,t){if(t>w)throw new A(e,t)}function f(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function h(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 L(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 _(e,t){if(e.has)return e.has(t);return k(e,t)}function I(e,t,n){if(e.keys)return e.keys(t,n);return p(e,t,n)}async function M(e,t){if(e.count)return e.count(t);return B(e,t)}async function U(e,t){if(e.deletePrefix)return e.deletePrefix(t);return E(e,t)}async function _e(e,t){u("batch operations",t.length),await e.batch(t)}async function N(e,t,n){if(u("conditionalBatch conditions",t.length),u("conditionalBatch operations",n.length),b(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 s=(e)=>String(e).padStart(16,"0"),Y="0",J="1",D=(e,t,n,i)=>`sig:${r(e)}:${r(t)}:${i}:${r(n)}`,Ie={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}:${s(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:${s(e)}:${r(t)}:${r(n)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${s(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)=>D(e,t,n,J),startSignal:(e,t,n)=>D(e,t,n,Y),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:${s(e)}:${r(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${s(e)}:${r(t)}`,teardownTimer:(e,t)=>`wf-teardown:${s(e)}:${r(t)}`,delayedStart:(e,t)=>`wf-delayed:${s(e)}:${r(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${s(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",...T,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:${S}:${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:${s(e)}:${r(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${s(e)}:${r(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${s(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 Z(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 y(e){let t={},n=!1;for(let a of["gt","gte","lt","lte"]){let o=e[a];if(o===void 0)continue;if(typeof o!=="string")throw Error("deleteRange bounds must be strings");t[a]=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=Z(e.limit);if(i!==void 0)t.limit=i;return t}async function z(e,t,n){let i=y(n);if(e.deleteRange)return e.deleteRange(t,i);return P(e,t,i)}function x(e){return e.replaceAll(/:+$/g,"")}function ee(e,t){let n=x(e),i=x(t);if(n.length===0)return i;if(i.length===0)return n;return`${n}:${i}`}class C{#e;#n;constructor(e,t){this.#e=e,this.#n=x(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}#a(e={}){let t=this.#o(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#s(e){return this.#o(e)}capabilities(){return this.#e.capabilities()}scoped(e){return new C(this.#e,ee(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.#a(t)))yield[this.#i(n),i]}async batch(e){u("batch operations",e.length),await this.#e.batch(this.#r(e))}async conditionalBatch(e,t){return N(this.#e,e.map((n)=>({key:this.#t(n.key),expectedValue:n.expectedValue})),this.#r(t))}async has(e){return _(this.#e,this.#t(e))}async deletePrefix(e){return U(this.#e,this.#t(e))}async deleteRange(e,t){let n=this.#s(y(t));return z(this.#e,this.#t(e),n)}async*keys(e,t){for await(let n of I(this.#e,this.#t(e),this.#a(t)))yield this.#i(n)}async count(e){return M(this.#e,this.#t(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function q(e,t){return new C(e,t)}class m{#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,a=f(e),o=this.#t(e,a);if(o=o.filter((d)=>h(d,t)),i)o.reverse();let l=0;for(let d of o){if(n!==void 0&&l>=n)break;let v=this.#e.get(d);if(v!==void 0)yield[d,v],l++}}async batch(e){u("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){u("conditionalBatch conditions",e.length),u("conditionalBatch operations",t.length);for(let n of e){let i=this.#e.get(n.key)??null;if(!L(i,n.expectedValue))return!1}return this.#r(t),!0}async has(e){return this.#e.has(e)}async deletePrefix(e){let t=f(e),n=this.#t(e,t);for(let i of n)this.#e.delete(i);return n.length}async deleteRange(e,t){let n=y(t),i=f(e),a=this.#t(e,i).filter((l)=>h(l,n)),o=n.limit===void 0?a:a.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,a=f(e),o=this.#t(e,a);if(o=o.filter((d)=>h(d,t)),i)o.reverse();let l=0;for(let d of o){if(n!==void 0&&l>=n)break;yield d,l++}}async count(e){let t=f(e);return this.#t(e,t).length}scoped(e){return q(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()}}function c(e,t){return import.meta.url.endsWith(".ts")?e:t}async function g(e){return await import(e)}var te=c("./bun-sql.ts","./bun-sql.js"),ne=c("./node-sqlite.ts","./node-sqlite.js"),re=c("./lmdb.ts","./lmdb.js"),ie=c("./turso.ts","./turso.js"),oe=c("./neon.ts","./neon.js"),W=c("./indexeddb.ts","./indexeddb.js"),H=c("./web-extension.ts","./web-extension.js"),ae=c("./http.ts","./http.js"),se=c("./auto.ts","./auto.js");function K(){return typeof Bun<"u"}function V(){return typeof globalThis.process==="object"&&globalThis.process!==null&&typeof globalThis.process.versions==="object"&&typeof globalThis.process.versions.node==="string"}function ge(){let e=globalThis;return e.browser?.storage!==void 0||e.chrome?.storage!==void 0}function le(){return typeof globalThis.indexedDB<"u"}async function ue(e){if(K()){let{BunSQLiteStorage:t}=await g(te);return new t(e)}if(V()){let{NodeSQLiteStorage:t}=await g(ne);return new t(e)}throw Error("SQLite storage is only available in Bun or Node runtimes.")}async function ce(){if(K()||V()){let{resolveDefaultStorage:e}=await g(se);return e()}if(ge()){let{WebExtensionStorage:e}=await g(H);return new e}if(le()){let{IndexedDBStorage:e}=await g(W);return new e}return new m}var j={memory:async(e)=>new m,sqlite:async(e)=>ue(e.path),lmdb:async(e)=>{let{LMDBStorage:t}=await g(re);return new t(e.path)},turso:async(e)=>{let{TursoStorage:t}=await g(ie);return new t({url:e.url,...e.authToken===void 0?{}:{authToken:e.authToken}})},neon:async(e)=>{let{NeonStorage:t}=await g(oe);return new t({url:e.url})},indexeddb:async(e)=>{let{IndexedDBStorage:t}=await g(W);return new t(e.databaseName)},"web-extension":async(e)=>{let{WebExtensionStorage:t}=await g(H);return new t(e.area===void 0?{}:{area:e.area})},http:async(e)=>{let{HTTPStorage:t}=await g(ae);return new t({baseUrl:e.baseUrl,...e.headers===void 0?{}:{headers:e.headers}})},auto:async(e)=>ce()};function de(e){if(typeof e!=="object"||e===null)return"unknown";if(!("type"in e))return"unknown";return typeof e.type==="string"?e.type:"unknown"}function fe(e){if(typeof e!=="object"||e===null||Array.isArray(e))throw Error("Storage configuration must be an object.");return e}function O(e,t,n){let i=e[t];if(typeof i!=="string"||i.length===0)throw Error(`${n} storage configuration requires "${t}" as a string.`);return i}function R(e,t,n){let i=e[t];if(i===void 0)return;if(typeof i!=="string")throw Error(`${n} storage configuration field "${t}" must be a string.`);return i}function pe(e,t,n){let i=e[t];if(typeof i==="string"||i instanceof URL)return i;throw Error(`${n} storage configuration requires "${t}" as a string or URL.`)}function ye(e){let t=e.headers;if(t===void 0)return;if(typeof t!=="object"||t===null||Array.isArray(t))throw Error('HTTP storage configuration field "headers" must be a string record.');let n={};for(let[i,a]of Object.entries(t)){if(typeof a!=="string")throw Error('HTTP storage configuration field "headers" must be a string record.');n[i]=a}return n}function he(e){let t=e.area;if(t===void 0)return;if(t==="local"||t==="sync"||t==="session"||t==="managed")return t;throw Error('WebExtension storage configuration field "area" must be one of local, sync, session, or managed.')}var me={memory:(e)=>({type:"memory"}),sqlite:(e)=>{let t=R(e,"path","SQLite");return t===void 0?{type:"sqlite"}:{type:"sqlite",path:t}},lmdb:(e)=>({type:"lmdb",path:O(e,"path","LMDB")}),turso:(e)=>{let t=R(e,"authToken","Turso");return{type:"turso",url:O(e,"url","Turso"),...t===void 0?{}:{authToken:t}}},neon:(e)=>({type:"neon",url:O(e,"url","Neon")}),indexeddb:(e)=>{let t=R(e,"databaseName","IndexedDB");return t===void 0?{type:"indexeddb"}:{type:"indexeddb",databaseName:t}},"web-extension":(e)=>{let t=he(e);return t===void 0?{type:"web-extension"}:{type:"web-extension",area:t}},http:(e)=>{let t=ye(e);return{type:"http",baseUrl:pe(e,"baseUrl","HTTP"),...t===void 0?{}:{headers:t}}},auto:(e)=>({type:"auto"})};function be(e,t){return me[t](fe(e))}function Se(e){return Object.hasOwn(j,e)}async function Je(e){let t=de(e);if(!Se(t))throw Error(`Unsupported storage configuration type: ${t}`);let n=be(e,t),i=j[t];return i(n)}export{Je as resolveStorage};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- var y=import.meta.require;function $(E,_,Y){if(!E.capabilities()[_])throw Error(`Feature "${Y}" requires storage capability "${_}", but this storage backend does not provide it.`)}function P(E){let _=E.capabilities(),Y=[];if(_.persistence!=="local"&&_.persistence!=="remote")Y.push(`persistence must be "local" or "remote" (got "${_.persistence}")`);if(_.readAfterWrite!=="linearizable")Y.push(`readAfterWrite must be "linearizable" (got "${_.readAfterWrite}")`);if(_.scanConsistency!=="snapshot")Y.push(`scanConsistency must be "snapshot" (got "${_.scanConsistency}")`);if(!_.atomicBatch)Y.push("atomicBatch must be true");if(!_.conditionalBatch)Y.push("conditionalBatch must be true");if(Y.length>0)throw Error(`Storage is not durable enough for recovery: ${Y.join("; ")}.`)}var J="default";async function B(E,_){return await E.get(_)!==null}async function*V(E,_,Y){for await(let[X]of E.scan(_,Y))yield X}async function R(E,_){let Y=0;for await(let X of V(E,_))Y++;return Y}async function q(E,_){let Y=[];for await(let X of V(E,_))Y.push({type:"delete",key:X});if(Y.length===0)return 0;return await E.batch(Y),Y.length}async function N(E,_,Y){let X=[];for await(let Q of V(E,_,Y))X.push({type:"delete",key:Q});if(X.length===0)return 0;return await E.batch(X),X.length}function F(E){return encodeURIComponent(E)}function K(E){return decodeURIComponent(E)}function b(E){try{return decodeURIComponent(E)}catch{return null}}var W={workflowOwnerEpoch:(E)=>`wf-owner-epoch:${F(E)}`,workflowOwnerHolder:(E)=>`wf-owner-holder:${F(E)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var h=["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 j=1e4,r=1e4;class T extends Error{code="StorageBatchOperationLimitExceededError";cap=j;count;target;constructor(E,_){super(`${E} count ${_} exceeds MAX_BATCH_OPERATIONS (${j}).`);this.name="StorageBatchOperationLimitExceededError",this.target=E,this.count=_}}function M(E,_){if(_>j)throw new T(E,_)}function e(E){return E.length>0?E.slice(0,-1)+String.fromCharCode(E.charCodeAt(E.length-1)+1):"\xFF"}function o(E,_={}){if(_.gt!==void 0&&E<=_.gt)return!1;if(_.gte!==void 0&&E<_.gte)return!1;if(_.lt!==void 0&&E>=_.lt)return!1;if(_.lte!==void 0&&E>_.lte)return!1;return!0}function EE(E,_){if(E===null||_===null)return E===_;if(E.byteLength!==_.byteLength)return!1;for(let Y=0;Y<E.byteLength;Y++)if(E[Y]!==_[Y])return!1;return!0}async function S(E,_){if(E.has)return E.has(_);return B(E,_)}function C(E,_,Y){if(E.keys)return E.keys(_,Y);return V(E,_,Y)}async function A(E,_){if(E.count)return E.count(_);return R(E,_)}async function v(E,_){if(E.deletePrefix)return E.deletePrefix(_);return q(E,_)}async function _E(E,_){M("batch operations",_.length),await E.batch(_)}async function z(E,_,Y){if(M("conditionalBatch conditions",_.length),M("conditionalBatch operations",Y.length),$(E,"conditionalBatch","storageConditionalBatch"),!E.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return E.conditionalBatch(_,Y)}var U=(E)=>String(E).padStart(16,"0"),m="0",c="1",D=(E,_,Y,X)=>`sig:${F(E)}:${F(_)}:${X}:${F(Y)}`,FE={workflow:(E)=>`wf:${F(E)}`,checkpoint:(E)=>`wf:${F(E)}:ckpt`,checkpointHistory:(E,_)=>`wf:${F(E)}:ckpt:${String(_).padStart(10,"0")}`,timelinePrefix:(E)=>`wf:${F(E)}:timeline:`,timeline:(E,_)=>`wf:${F(E)}:timeline:${String(_).padStart(10,"0")}`,schedule:(E)=>`schedule:${F(E)}`,scheduleTick:(E,_)=>`schedule-due:${String(E).padStart(16,"0")}:${F(_)}`,scheduleRun:(E)=>`schedule-run:${F(E)}`,scheduleRunLink:(E)=>`schedule-run-link:${F(E)}`,scheduleRunBySchedulePrefix:(E)=>`schedule-run-by-schedule:${F(E)}:`,scheduleRunBySchedule:(E,_)=>`schedule-run-by-schedule:${F(E)}:${F(_)}`,operation:(E,_,Y)=>`op:${E}:${U(_)}:${Y}`,operationInflight:(E)=>`op:inflight:${E}`,operationQueued:(E)=>`op:queued:${E}`,operationResolved:(E)=>`op:resolved:${E}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(E,_,Y)=>`audit:bulk:${U(E)}:${F(_)}:${F(Y)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(E,_)=>`op:resolved-by-time:${U(E)}:${F(_)}`,asyncActivity:(E,_)=>`async-act:v1:${F(E)}:${F(_)}`,asyncActivityResolution:(E,_)=>`async-act:v1:${F(E)}:${F(_)}:resolution`,activityReconciliationPrefix:(E)=>`actrec:v1:${F(E)}:`,activityReconciliation:(E,_,Y)=>`actrec:v1:${F(E)}:${F(_)}:${Y}`,eventPrefix:(E)=>`ev:${F(E)}:`,event:(E,_)=>`ev:${F(E)}:${String(_).padStart(10,"0")}`,eventHead:(E)=>`ev:${F(E)}:head`,eventWatermark:(E)=>`ev:${F(E)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(E)=>`fleet-event:${String(E).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(E)=>`fleet-event-by-workflow:${F(E)}:`,fleetEventByWorkflow:(E,_)=>`fleet-event-by-workflow:${F(E)}:${String(_).padStart(10,"0")}`,signal:(E,_,Y)=>D(E,_,Y,c),startSignal:(E,_,Y)=>D(E,_,Y,m),signalSequence:(E)=>`sigseq:v1:${F(E)}`,signalAcceptedResponsePrefix:(E)=>`sigres:v1:${F(E)}:`,signalAcceptedResponse:(E,_,Y)=>`sigres:v1:${F(E)}:${F(_)}:${F(Y)}`,deadline:(E,_)=>`wf-deadline:${U(E)}:${F(_)}`,terminalCleanup:(E,_)=>`wf-cleanup:${U(E)}:${F(_)}`,teardownTimer:(E,_)=>`wf-teardown:${U(E)}:${F(_)}`,delayedStart:(E,_)=>`wf-delayed:${U(E)}:${F(_)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(E,_)=>`wf-terminal:${U(E)}:${F(_)}`,attribute:(E)=>`attr:${F(E)}`,attributeIndex:(E,_,Y)=>`idx:${E}:${_}:${F(Y)}`,tagIndex:(E,_)=>`tag:${F(E)}:${F(_)}`,updatePrefix:(E)=>`upd:${F(E)}:`,update:(E,_)=>`upd:${F(E)}:${_}`,updateResponse:(E)=>`upr:${E}`,updateIdempotency:(E,_)=>`upk:${F(E)}:${_}`,startIdempotency:(E)=>`start-idem:${F(E)}`,startIdempotencySignalId:(E)=>`start-idem:${E}`,livenessPrefix:()=>"liveness:",liveness:(E)=>`liveness:${F(E)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...W,budget:(E,_,Y)=>`budget:${E}:${_}:${Y}`,review:(E,_)=>`review:${F(E)}:${_}`,workflowHeaders:(E)=>`wf-headers:${F(E)}`,childCancellationPrefix:(E)=>`child-cancel:${F(E)}:`,childCancellation:(E,_)=>`child-cancel:${F(E)}:${F(_)}`,childWorkflowByParentPrefix:(E,_)=>`child-by-parent:${F(E)}:${_===void 0?"":`${F(_)}:`}`,childWorkflowByParent:(E,_,Y)=>`child-by-parent:${F(E)}:${_===void 0?"":`${F(_)}:`}${F(Y)}`,terminalCleanupNeeded:(E)=>`wf-cleanup-needed:${F(E)}`,workflowConcurrency:(E,_)=>`wf-concurrency:${F(E)}:${F(_)}`,workflowConcurrencyHolder:(E)=>`wf-concurrency-holder:${F(E)}`,workflowHasServices:(E)=>`wf-has-services:${F(E)}`,finalizerState:(E)=>`wf-finalizer-state:${F(E)}`,teardownOwed:(E)=>`wf-teardown-needed:${F(E)}`,teardownSucceeded:(E)=>`wf-teardown-succeeded:${F(E)}`,teardownDeadLetter:(E)=>`wf-teardown-deadletter:${F(E)}`,offload:(E,_)=>`offload:${F(E)}:${_}`,archive:(E,_)=>`archive:${F(E)}:${_}`,stateExecution:(E,_)=>`state:execution:${F(E)}:${F(_)}`,stateWorkflow:(E,_)=>`state:workflow-scope:${J}:${F(E)}:${F(_)}`,streamChunkPrefix:(E,_)=>`blob:${F(E)}:${_}:chunk:`,streamChunk:(E,_,Y)=>`blob:${F(E)}:${_}:chunk:${String(Y).padStart(10,"0")}`,streamTail:(E,_)=>`blob:${F(E)}:${_}:tail`,streamMetadata:(E,_)=>`blob:${F(E)}:${_}:meta`,budgetCharged:(E)=>`budget-charged:${E}`,toolEffect:(E,_,Y)=>`tool-effect:${F(E)}:${_}:${Y}`,workflowVisibilityStatus:(E,_)=>`wf-idx-status:${F(E)}:${F(_)}`,workflowVisibilityType:(E,_)=>`wf-idx-type:${F(E)}:${F(_)}`,workflowVisibilityCreated:(E,_)=>`wf-idx-created:${U(E)}:${F(_)}`,workflowVisibilityUpdated:(E,_)=>`wf-idx-updated:${U(E)}:${F(_)}`,workflowVisibilityDeadline:(E,_)=>`wf-idx-deadline:${U(E)}:${F(_)}`,workflowVisibilityManifest:(E)=>`wf-idx-manifest:${F(E)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function u(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 G(E){let _={},Y=!1;for(let Q of["gt","gte","lt","lte"]){let Z=E[Q];if(Z===void 0)continue;if(typeof Z!=="string")throw Error("deleteRange bounds must be strings");_[Q]=Z,Y=!0}if(!Y)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let X=u(E.limit);if(X!==void 0)_.limit=X;return _}async function O(E,_,Y){let X=G(Y);if(E.deleteRange)return E.deleteRange(_,X);return N(E,_,X)}function H(E){return E.replaceAll(/:+$/g,"")}function x(E,_){let Y=H(E),X=H(_);if(Y.length===0)return X;if(X.length===0)return Y;return`${Y}:${X}`}class L{#_;#F;constructor(E,_){this.#_=E,this.#F=H(_)}#E(E){if(this.#F.length===0)return E;return E.length===0?`${this.#F}:`:`${this.#F}:${E}`}#Y(E){return E.map((_)=>{if(_.type==="put")return{type:"put",key:this.#E(_.key),value:_.value};return{type:"delete",key:this.#E(_.key)}})}#X(E){if(this.#F.length===0)return E;return E.slice(this.#F.length+1)}#U(E){let _={};if(E.limit!==void 0)_.limit=E.limit;if(E.gt!==void 0)_.gt=this.#E(E.gt);if(E.gte!==void 0)_.gte=this.#E(E.gte);if(E.lt!==void 0)_.lt=this.#E(E.lt);if(E.lte!==void 0)_.lte=this.#E(E.lte);return _}#V(E={}){let _=this.#U(E);if(E.reverse!==void 0)_.reverse=E.reverse;return _}#M(E){return this.#U(E)}capabilities(){return this.#_.capabilities()}scoped(E){return new L(this.#_,x(this.#F,E))}async get(E){return this.#_.get(this.#E(E))}async put(E,_){await this.#_.put(this.#E(E),_)}async delete(E){await this.#_.delete(this.#E(E))}async*scan(E,_){for await(let[Y,X]of this.#_.scan(this.#E(E),this.#V(_)))yield[this.#X(Y),X]}async batch(E){M("batch operations",E.length),await this.#_.batch(this.#Y(E))}async conditionalBatch(E,_){return z(this.#_,E.map((Y)=>({key:this.#E(Y.key),expectedValue:Y.expectedValue})),this.#Y(_))}async has(E){return S(this.#_,this.#E(E))}async deletePrefix(E){return v(this.#_,this.#E(E))}async deleteRange(E,_){let Y=this.#M(G(_));return O(this.#_,this.#E(E),Y)}async*keys(E,_){for await(let Y of C(this.#_,this.#E(E),this.#V(_)))yield this.#X(Y)}async count(E){return A(this.#_,this.#E(E))}[Symbol.dispose](){this.#_[Symbol.dispose]()}}function jE(E,_){return new L(E,_)}export{jE as scopedStorage,L as ScopedStorage};
2
+ var K=import.meta.require;function c(e,t,r){if(!e.capabilities()[t])throw Error(`Feature "${r}" requires storage capability "${t}", but this storage backend does not provide it.`)}function D(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 d="default";async function m(e,t){return await e.get(t)!==null}async function*a(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function y(e,t){let r=0;for await(let i of a(e,t))r++;return r}async function b(e,t){let r=[];for await(let i of a(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function w(e,t,r){let i=[];for await(let l of a(e,t,r))i.push({type:"delete",key:l});if(i.length===0)return 0;return await e.batch(i),i.length}function n(e){return encodeURIComponent(e)}function A(e){return decodeURIComponent(e)}function E(e){try{return decodeURIComponent(e)}catch{return null}}var S={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,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 u=1e4,J=1e4;class v extends Error{code="StorageBatchOperationLimitExceededError";cap=u;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${u}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function s(e,t){if(t>u)throw new v(e,t)}function Z(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function ee(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 te(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 R(e,t){if(e.has)return e.has(t);return m(e,t)}function O(e,t,r){if(e.keys)return e.keys(t,r);return a(e,t,r)}async function k(e,t){if(e.count)return e.count(t);return y(e,t)}async function C(e,t){if(e.deletePrefix)return e.deletePrefix(t);return b(e,t)}async function ne(e,t){s("batch operations",t.length),await e.batch(t)}async function P(e,t,r){if(s("conditionalBatch conditions",t.length),s("conditionalBatch operations",r.length),c(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 o=(e)=>String(e).padStart(16,"0"),_="0",T="1",x=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,re={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}:${o(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:${o(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${o(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)=>x(e,t,r,T),startSignal:(e,t,r)=>x(e,t,r,_),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:${o(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${o(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${o(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${o(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${o(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",...S,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:${d}:${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:${o(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${o(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${o(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 L(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 l of["gt","gte","lt","lte"]){let g=e[l];if(g===void 0)continue;if(typeof g!=="string")throw Error("deleteRange bounds must be strings");t[l]=g,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=L(e.limit);if(i!==void 0)t.limit=i;return t}async function B(e,t,r){let i=f(r);if(e.deleteRange)return e.deleteRange(t,i);return w(e,t,i)}function p(e){return e.replaceAll(/:+$/g,"")}function z(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 h{#t;#n;constructor(e,t){this.#t=e,this.#n=p(t)}#e(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.#e(t.key),value:t.value};return{type:"delete",key:this.#e(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.#e(e.gt);if(e.gte!==void 0)t.gte=this.#e(e.gte);if(e.lt!==void 0)t.lt=this.#e(e.lt);if(e.lte!==void 0)t.lte=this.#e(e.lte);return t}#a(e={}){let t=this.#o(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#s(e){return this.#o(e)}capabilities(){return this.#t.capabilities()}scoped(e){return new h(this.#t,z(this.#n,e))}async get(e){return this.#t.get(this.#e(e))}async put(e,t){await this.#t.put(this.#e(e),t)}async delete(e){await this.#t.delete(this.#e(e))}async*scan(e,t){for await(let[r,i]of this.#t.scan(this.#e(e),this.#a(t)))yield[this.#i(r),i]}async batch(e){s("batch operations",e.length),await this.#t.batch(this.#r(e))}async conditionalBatch(e,t){return P(this.#t,e.map((r)=>({key:this.#e(r.key),expectedValue:r.expectedValue})),this.#r(t))}async has(e){return R(this.#t,this.#e(e))}async deletePrefix(e){return C(this.#t,this.#e(e))}async deleteRange(e,t){let r=this.#s(f(t));return B(this.#t,this.#e(e),r)}async*keys(e,t){for await(let r of O(this.#t,this.#e(e),this.#a(t)))yield this.#i(r)}async count(e){return k(this.#t,this.#e(e))}[Symbol.dispose](){this.#t[Symbol.dispose]()}}function fe(e,t){return new h(e,t)}export{h as ScopedStorage,fe as scopedStorage};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- var c=import.meta.require;function H(E,_,R){if(!E.capabilities()[_])throw Error(`Feature "${R}" requires storage capability "${_}", but this storage backend does not provide it.`)}function h(E){let _=E.capabilities(),R=[];if(_.persistence!=="local"&&_.persistence!=="remote")R.push(`persistence must be "local" or "remote" (got "${_.persistence}")`);if(_.readAfterWrite!=="linearizable")R.push(`readAfterWrite must be "linearizable" (got "${_.readAfterWrite}")`);if(_.scanConsistency!=="snapshot")R.push(`scanConsistency must be "snapshot" (got "${_.scanConsistency}")`);if(!_.atomicBatch)R.push("atomicBatch must be true");if(!_.conditionalBatch)R.push("conditionalBatch must be true");if(R.length>0)throw Error(`Storage is not durable enough for recovery: ${R.join("; ")}.`)}var B="default";async function q(E,_){return await E.get(_)!==null}async function*j(E,_,R){for await(let[F]of E.scan(_,R))yield F}async function N(E,_){let R=0;for await(let F of j(E,_))R++;return R}async function W(E,_){let R=[];for await(let F of j(E,_))R.push({type:"delete",key:F});if(R.length===0)return 0;return await E.batch(R),R.length}async function n(E,_,R){let F=[];for await(let U of j(E,_,R))F.push({type:"delete",key:U});if(F.length===0)return 0;return await E.batch(F),F.length}function P(E){return encodeURIComponent(E)}function m(E){return decodeURIComponent(E)}function u(E){try{return decodeURIComponent(E)}catch{return null}}var C={workflowOwnerEpoch:(E)=>`wf-owner-epoch:${P(E)}`,workflowOwnerHolder:(E)=>`wf-owner-holder:${P(E)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var b=["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,EE=1e4;class A extends Error{code="StorageBatchOperationLimitExceededError";cap=D;count;target;constructor(E,_){super(`${E} count ${_} exceeds MAX_BATCH_OPERATIONS (${D}).`);this.name="StorageBatchOperationLimitExceededError",this.target=E,this.count=_}}function K(E,_){if(_>D)throw new A(E,_)}function _E(E){return E.length>0?E.slice(0,-1)+String.fromCharCode(E.charCodeAt(E.length-1)+1):"\xFF"}function FE(E,_={}){if(_.gt!==void 0&&E<=_.gt)return!1;if(_.gte!==void 0&&E<_.gte)return!1;if(_.lt!==void 0&&E>=_.lt)return!1;if(_.lte!==void 0&&E>_.lte)return!1;return!0}function PE(E,_){if(E===null||_===null)return E===_;if(E.byteLength!==_.byteLength)return!1;for(let R=0;R<E.byteLength;R++)if(E[R]!==_[R])return!1;return!0}async function RE(E,_){if(E.has)return E.has(_);return q(E,_)}function YE(E,_,R){if(E.keys)return E.keys(_,R);return j(E,_,R)}async function UE(E,_){if(E.count)return E.count(_);return N(E,_)}async function XE(E,_){if(E.deletePrefix)return E.deletePrefix(_);return W(E,_)}async function LE(E,_){K("batch operations",_.length),await E.batch(_)}async function J(E,_,R){if(K("conditionalBatch conditions",_.length),K("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(_,R)}var V=(E)=>String(E).padStart(16,"0"),x="0",y="1",T=(E,_,R,F)=>`sig:${P(E)}:${P(_)}:${F}:${P(R)}`,SE={workflow:(E)=>`wf:${P(E)}`,checkpoint:(E)=>`wf:${P(E)}:ckpt`,checkpointHistory:(E,_)=>`wf:${P(E)}:ckpt:${String(_).padStart(10,"0")}`,timelinePrefix:(E)=>`wf:${P(E)}:timeline:`,timeline:(E,_)=>`wf:${P(E)}:timeline:${String(_).padStart(10,"0")}`,schedule:(E)=>`schedule:${P(E)}`,scheduleTick:(E,_)=>`schedule-due:${String(E).padStart(16,"0")}:${P(_)}`,scheduleRun:(E)=>`schedule-run:${P(E)}`,scheduleRunLink:(E)=>`schedule-run-link:${P(E)}`,scheduleRunBySchedulePrefix:(E)=>`schedule-run-by-schedule:${P(E)}:`,scheduleRunBySchedule:(E,_)=>`schedule-run-by-schedule:${P(E)}:${P(_)}`,operation:(E,_,R)=>`op:${E}:${V(_)}:${R}`,operationInflight:(E)=>`op:inflight:${E}`,operationQueued:(E)=>`op:queued:${E}`,operationResolved:(E)=>`op:resolved:${E}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(E,_,R)=>`audit:bulk:${V(E)}:${P(_)}:${P(R)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(E,_)=>`op:resolved-by-time:${V(E)}:${P(_)}`,asyncActivity:(E,_)=>`async-act:v1:${P(E)}:${P(_)}`,asyncActivityResolution:(E,_)=>`async-act:v1:${P(E)}:${P(_)}:resolution`,activityReconciliationPrefix:(E)=>`actrec:v1:${P(E)}:`,activityReconciliation:(E,_,R)=>`actrec:v1:${P(E)}:${P(_)}:${R}`,eventPrefix:(E)=>`ev:${P(E)}:`,event:(E,_)=>`ev:${P(E)}:${String(_).padStart(10,"0")}`,eventHead:(E)=>`ev:${P(E)}:head`,eventWatermark:(E)=>`ev:${P(E)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(E)=>`fleet-event:${String(E).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(E)=>`fleet-event-by-workflow:${P(E)}:`,fleetEventByWorkflow:(E,_)=>`fleet-event-by-workflow:${P(E)}:${String(_).padStart(10,"0")}`,signal:(E,_,R)=>T(E,_,R,y),startSignal:(E,_,R)=>T(E,_,R,x),signalSequence:(E)=>`sigseq:v1:${P(E)}`,signalAcceptedResponsePrefix:(E)=>`sigres:v1:${P(E)}:`,signalAcceptedResponse:(E,_,R)=>`sigres:v1:${P(E)}:${P(_)}:${P(R)}`,deadline:(E,_)=>`wf-deadline:${V(E)}:${P(_)}`,terminalCleanup:(E,_)=>`wf-cleanup:${V(E)}:${P(_)}`,teardownTimer:(E,_)=>`wf-teardown:${V(E)}:${P(_)}`,delayedStart:(E,_)=>`wf-delayed:${V(E)}:${P(_)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(E,_)=>`wf-terminal:${V(E)}:${P(_)}`,attribute:(E)=>`attr:${P(E)}`,attributeIndex:(E,_,R)=>`idx:${E}:${_}:${P(R)}`,tagIndex:(E,_)=>`tag:${P(E)}:${P(_)}`,updatePrefix:(E)=>`upd:${P(E)}:`,update:(E,_)=>`upd:${P(E)}:${_}`,updateResponse:(E)=>`upr:${E}`,updateIdempotency:(E,_)=>`upk:${P(E)}:${_}`,startIdempotency:(E)=>`start-idem:${P(E)}`,startIdempotencySignalId:(E)=>`start-idem:${E}`,livenessPrefix:()=>"liveness:",liveness:(E)=>`liveness:${P(E)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...C,budget:(E,_,R)=>`budget:${E}:${_}:${R}`,review:(E,_)=>`review:${P(E)}:${_}`,workflowHeaders:(E)=>`wf-headers:${P(E)}`,childCancellationPrefix:(E)=>`child-cancel:${P(E)}:`,childCancellation:(E,_)=>`child-cancel:${P(E)}:${P(_)}`,childWorkflowByParentPrefix:(E,_)=>`child-by-parent:${P(E)}:${_===void 0?"":`${P(_)}:`}`,childWorkflowByParent:(E,_,R)=>`child-by-parent:${P(E)}:${_===void 0?"":`${P(_)}:`}${P(R)}`,terminalCleanupNeeded:(E)=>`wf-cleanup-needed:${P(E)}`,workflowConcurrency:(E,_)=>`wf-concurrency:${P(E)}:${P(_)}`,workflowConcurrencyHolder:(E)=>`wf-concurrency-holder:${P(E)}`,workflowHasServices:(E)=>`wf-has-services:${P(E)}`,finalizerState:(E)=>`wf-finalizer-state:${P(E)}`,teardownOwed:(E)=>`wf-teardown-needed:${P(E)}`,teardownSucceeded:(E)=>`wf-teardown-succeeded:${P(E)}`,teardownDeadLetter:(E)=>`wf-teardown-deadletter:${P(E)}`,offload:(E,_)=>`offload:${P(E)}:${_}`,archive:(E,_)=>`archive:${P(E)}:${_}`,stateExecution:(E,_)=>`state:execution:${P(E)}:${P(_)}`,stateWorkflow:(E,_)=>`state:workflow-scope:${B}:${P(E)}:${P(_)}`,streamChunkPrefix:(E,_)=>`blob:${P(E)}:${_}:chunk:`,streamChunk:(E,_,R)=>`blob:${P(E)}:${_}:chunk:${String(R).padStart(10,"0")}`,streamTail:(E,_)=>`blob:${P(E)}:${_}:tail`,streamMetadata:(E,_)=>`blob:${P(E)}:${_}:meta`,budgetCharged:(E)=>`budget-charged:${E}`,toolEffect:(E,_,R)=>`tool-effect:${P(E)}:${_}:${R}`,workflowVisibilityStatus:(E,_)=>`wf-idx-status:${P(E)}:${P(_)}`,workflowVisibilityType:(E,_)=>`wf-idx-type:${P(E)}:${P(_)}`,workflowVisibilityCreated:(E,_)=>`wf-idx-created:${V(E)}:${P(_)}`,workflowVisibilityUpdated:(E,_)=>`wf-idx-updated:${V(E)}:${P(_)}`,workflowVisibilityDeadline:(E,_)=>`wf-idx-deadline:${V(E)}:${P(_)}`,workflowVisibilityManifest:(E)=>`wf-idx-manifest:${P(E)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};import{describe as O,expect as X,it as S}from"bun:test";import{expect as $}from"bun:test";var I=new TextEncoder,f=new TextDecoder;function Y(E){return I.encode(E)}function z(E){return f.decode(E)}async function M(E){let _=[];for await(let R of E)_.push(R);return _}function v(E){let _=E.capabilities();$(["ephemeral","local","remote"]).toContain(_.persistence??""),$(["linearizable","session","eventual"]).toContain(_.readAfterWrite),$(["snapshot","best-effort"]).toContain(_.scanConsistency),$(typeof _.atomicBatch).toBe("boolean"),$(typeof _.conditionalBatch).toBe("boolean"),$(typeof _.boundedRangeDelete).toBe("boolean")}function HE(E,_){O(`${E} binary and large-scan conformance`,()=>{S("round-trips binary values correctly",async()=>{let R=await _.create();try{let F=new Uint8Array([0,1,127,128,255,42,0,13,10]);await R.put("binary",F);let U=await R.get("binary");X(U).toEqual(F)}finally{R[Symbol.dispose]()}}),S("returns 1000 scanned keys in sorted order",async()=>{let R=await _.create();try{let F=Array.from({length:1000},(L,Q)=>({type:"put",key:`item:${String(Q).padStart(4,"0")}`,value:Y(String(Q))}));await R.batch(F);let U=await M(R.scan("item:"));X(U).toHaveLength(1000);for(let L=0;L<U.length;L+=1)X(U[L][0]).toBe(`item:${String(L).padStart(4,"0")}`)}finally{R[Symbol.dispose]()}},_.largeScanTimeoutMs)})}function BE(E,_){let{create:R,expected:F}=_;O(`${E} capabilities() conformance`,()=>{if(S("reports a well-formed capability shape",async()=>{using U=await R();v(U)}),S("reports the expected capability row",async()=>{using U=await R();X(U.capabilities()).toEqual(F)}),S("satisfies its declared read-after-write level",async()=>{using U=await R();await U.put("raw:key",Y("written"));let L=await U.get("raw:key");if(F.readAfterWrite!=="eventual")X(L).not.toBeNull(),X(z(L)).toBe("written")}),F.scanConsistency==="snapshot")S("does not observe a key inserted after the scan began (snapshot)",async()=>{using U=await R();await U.put("scan:a",Y("1")),await U.put("scan:b",Y("2"));let L=U.scan("scan:")[Symbol.asyncIterator](),Q=await L.next();X(Q.done).toBe(!1),await U.put("scan:c",Y("3"));let Z=[];if(!Q.done)Z.push(Q.value[0]);for(let G=await L.next();!G.done;G=await L.next())Z.push(G.value[0]);X(Z).not.toContain("scan:c"),X(Z).toContain("scan:a"),X(Z).toContain("scan:b")});if(F.conditionalBatch)S("applies nothing when a conditionalBatch precondition mismatches",async()=>{using U=await R();await U.put("cas:key",Y("initial"));let L=await J(U,[{key:"cas:key",expectedValue:Y("wrong")}],[{type:"put",key:"cas:key",value:Y("changed")}]);X(L).toBe(!1),X(z(await U.get("cas:key"))).toBe("initial")}),S("reports conditionalBatch before running compare-and-swap assertions",async()=>{using U=await R();X(U.capabilities().conditionalBatch).toBe(!0)})})}function DE(E,_){let{create:R}=_;O(`${E} concurrent conditionalBatch conformance`,()=>{S("lets exactly one of two contending conditionalBatch calls win",async()=>{using F=await R();X(F.capabilities().conditionalBatch).toBe(!0),await F.put("cas:counter",Y("start"));let U=[{key:"cas:counter",expectedValue:Y("start")}],[L,Q]=await Promise.all([J(F,U,[{type:"put",key:"cas:counter",value:Y("first")}]),J(F,U,[{type:"put",key:"cas:counter",value:Y("second")}])]);X([L,Q].filter(Boolean)).toHaveLength(1);let Z=z(await F.get("cas:counter"));X(Z).toBe(L?"first":"second")})})}function KE(E,_){let{create:R}=_;O(`${E} basic storage contract`,()=>{S("get on empty storage returns null",async()=>{using F=await R();let U=await F.get("nonexistent");X(U).toBeNull()}),S("put then get returns same bytes",async()=>{using F=await R();let U=Y("hello");await F.put("key",U);let L=await F.get("key");X(L).toEqual(U)}),S("put with same key overwrites previous value",async()=>{using F=await R();await F.put("key",Y("first")),await F.put("key",Y("second"));let U=await F.get("key");X(z(U)).toBe("second")}),S("delete removes key, subsequent get returns null",async()=>{using F=await R();await F.put("key",Y("value")),await F.delete("key");let U=await F.get("key");X(U).toBeNull()}),S("delete on a missing key is a no-op",async()=>{using F=await R();await F.delete("nonexistent"),X(await F.get("nonexistent")).toBeNull()}),S("scan with prefix returns only matching keys, sorted lexicographically",async()=>{using F=await R();await F.put("wf:b",Y("b")),await F.put("wf:a",Y("a")),await F.put("wf:c",Y("c")),await F.put("other:x",Y("x"));let U=await M(F.scan("wf:"));X(U.map(([L])=>L)).toEqual(["wf:a","wf:b","wf:c"])}),S("scan with limit returns at most N entries",async()=>{using F=await R();await F.put("p:a",Y("a")),await F.put("p:b",Y("b")),await F.put("p:c",Y("c"));let U=await M(F.scan("p:",{limit:2}));X(U).toHaveLength(2),X(U.map(([L])=>L)).toEqual(["p:a","p:b"])}),S("scan with reverse returns in reverse order",async()=>{using F=await R();await F.put("p:a",Y("a")),await F.put("p:b",Y("b")),await F.put("p:c",Y("c"));let U=await M(F.scan("p:",{reverse:!0}));X(U.map(([L])=>L)).toEqual(["p:c","p:b","p:a"])}),S("scan with gt/lt bounds",async()=>{using F=await R();await F.put("p:a",Y("a")),await F.put("p:b",Y("b")),await F.put("p:c",Y("c")),await F.put("p:d",Y("d"));let U=await M(F.scan("p:",{gt:"p:a",lt:"p:d"}));X(U.map(([L])=>L)).toEqual(["p:b","p:c"])}),S("scan with inclusive gte/lte bounds",async()=>{using F=await R();await F.put("p:a",Y("a")),await F.put("p:b",Y("b")),await F.put("p:c",Y("c")),await F.put("p:d",Y("d"));let U=await M(F.scan("p:",{gte:"p:b",lte:"p:c"}));X(U.map(([L])=>L)).toEqual(["p:b","p:c"])}),S("scan with no matching keys returns no entries",async()=>{using F=await R();await F.put("other:a",Y("a")),X(await M(F.scan("wf:"))).toHaveLength(0)}),S("batch with multiple puts stores every value",async()=>{using F=await R();await F.batch([{type:"put",key:"a",value:Y("1")},{type:"put",key:"b",value:Y("2")},{type:"put",key:"c",value:Y("3")}]),X(await F.get("a")).toEqual(Y("1")),X(await F.get("b")).toEqual(Y("2")),X(await F.get("c")).toEqual(Y("3"))}),S("batch with mixed puts and deletes leaves the expected state",async()=>{using F=await R();await F.put("keep",Y("keep")),await F.put("remove",Y("remove")),await F.batch([{type:"put",key:"new",value:Y("new")},{type:"delete",key:"remove"}]),X(await F.get("keep")).toEqual(Y("keep")),X(await F.get("remove")).toBeNull(),X(await F.get("new")).toEqual(Y("new"))}),S("batch with no operations is a no-op",async()=>{using F=await R();await F.put("key",Y("value")),await F.batch([]),X(await F.get("key")).toEqual(Y("value"))}),S("scan with empty prefix returns all keys",async()=>{using F=await R();await F.put("alpha",Y("a")),await F.put("beta",Y("b")),await F.put("gamma",Y("c"));let U=await M(F.scan(""));X(U.map(([L])=>L)).toEqual(["alpha","beta","gamma"])}),S("scan with empty prefix on empty storage returns no entries",async()=>{using F=await R();X(await M(F.scan(""))).toEqual([])})})}export{BE as runStorageCapabilityConformance,DE as runConcurrentConditionalBatchConformance,HE as runBinaryAndLargeScanStorageConformance,KE as runBasicStorageContract};
2
+ var N=import.meta.require;function S(e,t,r){if(!e.capabilities()[t])throw Error(`Feature "${r}" requires storage capability "${t}", but this storage backend does not provide it.`)}function T(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 x="default";async function k(e,t){return await e.get(t)!==null}async function*w(e,t,r){for await(let[a]of e.scan(t,r))yield a}async function B(e,t){let r=0;for await(let a of w(e,t))r++;return r}async function E(e,t){let r=[];for await(let a of w(e,t))r.push({type:"delete",key:a});if(r.length===0)return 0;return await e.batch(r),r.length}async function W(e,t,r){let a=[];for await(let o of w(e,t,r))a.push({type:"delete",key:o});if(a.length===0)return 0;return await e.batch(a),a.length}function n(e){return encodeURIComponent(e)}function L(e){return decodeURIComponent(e)}function _(e){try{return decodeURIComponent(e)}catch{return null}}var P={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var q=["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 v=1e4,te=1e4;class O extends Error{code="StorageBatchOperationLimitExceededError";cap=v;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${v}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function C(e,t){if(t>v)throw new O(e,t)}function ae(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function ne(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 re(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 ie(e,t){if(e.has)return e.has(t);return k(e,t)}function oe(e,t,r){if(e.keys)return e.keys(t,r);return w(e,t,r)}async function se(e,t){if(e.count)return e.count(t);return B(e,t)}async function ce(e,t){if(e.deletePrefix)return e.deletePrefix(t);return E(e,t)}async function le(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),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,r)}var g=(e)=>String(e).padStart(16,"0"),I="0",D="1",A=(e,t,r,a)=>`sig:${n(e)}:${n(t)}:${a}:${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}:${g(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:${g(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${g(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)=>A(e,t,r,D),startSignal:(e,t,r)=>A(e,t,r,I),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:${g(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${g(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${g(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${g(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${g(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",...P,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:${x}:${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:${g(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${g(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${g(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"};import{describe as h,expect as s,it as l}from"bun:test";import{expect as f}from"bun:test";var K=new TextEncoder,H=new TextDecoder;function i(e){return K.encode(e)}function y(e){return H.decode(e)}async function u(e){let t=[];for await(let r of e)t.push(r);return t}function R(e){let t=e.capabilities();f(["ephemeral","local","remote"]).toContain(t.persistence??""),f(["linearizable","session","eventual"]).toContain(t.readAfterWrite),f(["snapshot","best-effort"]).toContain(t.scanConsistency),f(typeof t.atomicBatch).toBe("boolean"),f(typeof t.conditionalBatch).toBe("boolean"),f(typeof t.boundedRangeDelete).toBe("boolean")}function Se(e,t){h(`${e} binary and large-scan conformance`,()=>{l("round-trips binary values correctly",async()=>{let r=await t.create();try{let a=new Uint8Array([0,1,127,128,255,42,0,13,10]);await r.put("binary",a);let o=await r.get("binary");s(o).toEqual(a)}finally{r[Symbol.dispose]()}}),l("returns 1000 scanned keys in sorted order",async()=>{let r=await t.create();try{let a=Array.from({length:1000},(c,p)=>({type:"put",key:`item:${String(p).padStart(4,"0")}`,value:i(String(p))}));await r.batch(a);let o=await u(r.scan("item:"));s(o).toHaveLength(1000);for(let c=0;c<o.length;c+=1)s(o[c][0]).toBe(`item:${String(c).padStart(4,"0")}`)}finally{r[Symbol.dispose]()}},t.largeScanTimeoutMs)})}function xe(e,t){let{create:r,expected:a}=t;h(`${e} capabilities() conformance`,()=>{if(l("reports a well-formed capability shape",async()=>{using o=await r();R(o)}),l("reports the expected capability row",async()=>{using o=await r();s(o.capabilities()).toEqual(a)}),l("satisfies its declared read-after-write level",async()=>{using o=await r();await o.put("raw:key",i("written"));let c=await o.get("raw:key");if(a.readAfterWrite!=="eventual")s(c).not.toBeNull(),s(y(c)).toBe("written")}),a.scanConsistency==="snapshot")l("does not observe a key inserted after the scan began (snapshot)",async()=>{using o=await r();await o.put("scan:a",i("1")),await o.put("scan:b",i("2"));let c=o.scan("scan:")[Symbol.asyncIterator](),p=await c.next();s(p.done).toBe(!1),await o.put("scan:c",i("3"));let d=[];if(!p.done)d.push(p.value[0]);for(let b=await c.next();!b.done;b=await c.next())d.push(b.value[0]);s(d).not.toContain("scan:c"),s(d).toContain("scan:a"),s(d).toContain("scan:b")});if(a.conditionalBatch)l("applies nothing when a conditionalBatch precondition mismatches",async()=>{using o=await r();await o.put("cas:key",i("initial"));let c=await m(o,[{key:"cas:key",expectedValue:i("wrong")}],[{type:"put",key:"cas:key",value:i("changed")}]);s(c).toBe(!1),s(y(await o.get("cas:key"))).toBe("initial")}),l("reports conditionalBatch before running compare-and-swap assertions",async()=>{using o=await r();s(o.capabilities().conditionalBatch).toBe(!0)})})}function ve(e,t){let{create:r}=t;h(`${e} concurrent conditionalBatch conformance`,()=>{l("lets exactly one of two contending conditionalBatch calls win",async()=>{using a=await r();s(a.capabilities().conditionalBatch).toBe(!0),await a.put("cas:counter",i("start"));let o=[{key:"cas:counter",expectedValue:i("start")}],[c,p]=await Promise.all([m(a,o,[{type:"put",key:"cas:counter",value:i("first")}]),m(a,o,[{type:"put",key:"cas:counter",value:i("second")}])]);s([c,p].filter(Boolean)).toHaveLength(1);let d=y(await a.get("cas:counter"));s(d).toBe(c?"first":"second")})})}function Ce(e,t){let{create:r}=t;h(`${e} basic storage contract`,()=>{l("get on empty storage returns null",async()=>{using a=await r();let o=await a.get("nonexistent");s(o).toBeNull()}),l("put then get returns same bytes",async()=>{using a=await r();let o=i("hello");await a.put("key",o);let c=await a.get("key");s(c).toEqual(o)}),l("put with same key overwrites previous value",async()=>{using a=await r();await a.put("key",i("first")),await a.put("key",i("second"));let o=await a.get("key");s(y(o)).toBe("second")}),l("delete removes key, subsequent get returns null",async()=>{using a=await r();await a.put("key",i("value")),await a.delete("key");let o=await a.get("key");s(o).toBeNull()}),l("delete on a missing key is a no-op",async()=>{using a=await r();await a.delete("nonexistent"),s(await a.get("nonexistent")).toBeNull()}),l("scan with prefix returns only matching keys, sorted lexicographically",async()=>{using a=await r();await a.put("wf:b",i("b")),await a.put("wf:a",i("a")),await a.put("wf:c",i("c")),await a.put("other:x",i("x"));let o=await u(a.scan("wf:"));s(o.map(([c])=>c)).toEqual(["wf:a","wf:b","wf:c"])}),l("scan with limit returns at most N entries",async()=>{using a=await r();await a.put("p:a",i("a")),await a.put("p:b",i("b")),await a.put("p:c",i("c"));let o=await u(a.scan("p:",{limit:2}));s(o).toHaveLength(2),s(o.map(([c])=>c)).toEqual(["p:a","p:b"])}),l("scan with reverse returns in reverse order",async()=>{using a=await r();await a.put("p:a",i("a")),await a.put("p:b",i("b")),await a.put("p:c",i("c"));let o=await u(a.scan("p:",{reverse:!0}));s(o.map(([c])=>c)).toEqual(["p:c","p:b","p:a"])}),l("scan with gt/lt bounds",async()=>{using a=await r();await a.put("p:a",i("a")),await a.put("p:b",i("b")),await a.put("p:c",i("c")),await a.put("p:d",i("d"));let o=await u(a.scan("p:",{gt:"p:a",lt:"p:d"}));s(o.map(([c])=>c)).toEqual(["p:b","p:c"])}),l("scan with inclusive gte/lte bounds",async()=>{using a=await r();await a.put("p:a",i("a")),await a.put("p:b",i("b")),await a.put("p:c",i("c")),await a.put("p:d",i("d"));let o=await u(a.scan("p:",{gte:"p:b",lte:"p:c"}));s(o.map(([c])=>c)).toEqual(["p:b","p:c"])}),l("scan with no matching keys returns no entries",async()=>{using a=await r();await a.put("other:a",i("a")),s(await u(a.scan("wf:"))).toHaveLength(0)}),l("batch with multiple puts stores every value",async()=>{using a=await r();await a.batch([{type:"put",key:"a",value:i("1")},{type:"put",key:"b",value:i("2")},{type:"put",key:"c",value:i("3")}]),s(await a.get("a")).toEqual(i("1")),s(await a.get("b")).toEqual(i("2")),s(await a.get("c")).toEqual(i("3"))}),l("batch with mixed puts and deletes leaves the expected state",async()=>{using a=await r();await a.put("keep",i("keep")),await a.put("remove",i("remove")),await a.batch([{type:"put",key:"new",value:i("new")},{type:"delete",key:"remove"}]),s(await a.get("keep")).toEqual(i("keep")),s(await a.get("remove")).toBeNull(),s(await a.get("new")).toEqual(i("new"))}),l("batch with no operations is a no-op",async()=>{using a=await r();await a.put("key",i("value")),await a.batch([]),s(await a.get("key")).toEqual(i("value"))}),l("scan with empty prefix returns all keys",async()=>{using a=await r();await a.put("alpha",i("a")),await a.put("beta",i("b")),await a.put("gamma",i("c"));let o=await u(a.scan(""));s(o.map(([c])=>c)).toEqual(["alpha","beta","gamma"])}),l("scan with empty prefix on empty storage returns no entries",async()=>{using a=await r();s(await u(a.scan(""))).toEqual([])})})}export{Ce as runBasicStorageContract,Se as runBinaryAndLargeScanStorageConformance,ve as runConcurrentConditionalBatchConformance,xe as runStorageCapabilityConformance};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- var zF=import.meta.require;function R(F,X,Z){if(!F.capabilities()[X])throw Error(`Feature "${Z}" requires storage capability "${X}", but this storage backend does not provide it.`)}function o(F){let X=F.capabilities(),Z=[];if(X.persistence!=="local"&&X.persistence!=="remote")Z.push(`persistence must be "local" or "remote" (got "${X.persistence}")`);if(X.readAfterWrite!=="linearizable")Z.push(`readAfterWrite must be "linearizable" (got "${X.readAfterWrite}")`);if(X.scanConsistency!=="snapshot")Z.push(`scanConsistency must be "snapshot" (got "${X.scanConsistency}")`);if(!X.atomicBatch)Z.push("atomicBatch must be true");if(!X.conditionalBatch)Z.push("conditionalBatch must be true");if(Z.length>0)throw Error(`Storage is not durable enough for recovery: ${Z.join("; ")}.`)}var O="default";async function P(F,X){return await F.get(X)!==null}async function*V(F,X,Z){for await(let[J]of F.scan(X,Z))yield J}async function L(F,X){let Z=0;for await(let J of V(F,X))Z++;return Z}async function A(F,X){let Z=[];for await(let J of V(F,X))Z.push({type:"delete",key:J});if(Z.length===0)return 0;return await F.batch(Z),Z.length}async function q(F,X,Z){let J=[];for await(let j of V(F,X,Z))J.push({type:"delete",key:j});if(J.length===0)return 0;return await F.batch(J),J.length}function $(F){return encodeURIComponent(F)}function FF(F){return decodeURIComponent(F)}function XF(F){try{return decodeURIComponent(F)}catch{return null}}var K={workflowOwnerEpoch:(F)=>`wf-owner-epoch:${$(F)}`,workflowOwnerHolder:(F)=>`wf-owner-holder:${$(F)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var ZF=["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 _=1e4,yF=1e4;class E extends Error{code="StorageBatchOperationLimitExceededError";cap=_;count;target;constructor(F,X){super(`${F} count ${X} exceeds MAX_BATCH_OPERATIONS (${_}).`);this.name="StorageBatchOperationLimitExceededError",this.target=F,this.count=X}}function Q(F,X){if(X>_)throw new E(F,X)}function S(F){return F.length>0?F.slice(0,-1)+String.fromCharCode(F.charCodeAt(F.length-1)+1):"\xFF"}function uF(F,X={}){if(X.gt!==void 0&&F<=X.gt)return!1;if(X.gte!==void 0&&F<X.gte)return!1;if(X.lt!==void 0&&F>=X.lt)return!1;if(X.lte!==void 0&&F>X.lte)return!1;return!0}function T(F,X){if(F===null||X===null)return F===X;if(F.byteLength!==X.byteLength)return!1;for(let Z=0;Z<F.byteLength;Z++)if(F[Z]!==X[Z])return!1;return!0}async function b(F,X){if(F.has)return F.has(X);return P(F,X)}function x(F,X,Z){if(F.keys)return F.keys(X,Z);return V(F,X,Z)}async function m(F,X){if(F.count)return F.count(X);return L(F,X)}async function y(F,X){if(F.deletePrefix)return F.deletePrefix(X);return A(F,X)}async function cF(F,X){Q("batch operations",X.length),await F.batch(X)}async function u(F,X,Z){if(Q("conditionalBatch conditions",X.length),Q("conditionalBatch operations",Z.length),R(F,"conditionalBatch","storageConditionalBatch"),!F.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return F.conditionalBatch(X,Z)}var H=(F)=>String(F).padStart(16,"0"),$F="0",JF="1",h=(F,X,Z,J)=>`sig:${$(F)}:${$(X)}:${J}:${$(Z)}`,gF={workflow:(F)=>`wf:${$(F)}`,checkpoint:(F)=>`wf:${$(F)}:ckpt`,checkpointHistory:(F,X)=>`wf:${$(F)}:ckpt:${String(X).padStart(10,"0")}`,timelinePrefix:(F)=>`wf:${$(F)}:timeline:`,timeline:(F,X)=>`wf:${$(F)}:timeline:${String(X).padStart(10,"0")}`,schedule:(F)=>`schedule:${$(F)}`,scheduleTick:(F,X)=>`schedule-due:${String(F).padStart(16,"0")}:${$(X)}`,scheduleRun:(F)=>`schedule-run:${$(F)}`,scheduleRunLink:(F)=>`schedule-run-link:${$(F)}`,scheduleRunBySchedulePrefix:(F)=>`schedule-run-by-schedule:${$(F)}:`,scheduleRunBySchedule:(F,X)=>`schedule-run-by-schedule:${$(F)}:${$(X)}`,operation:(F,X,Z)=>`op:${F}:${H(X)}:${Z}`,operationInflight:(F)=>`op:inflight:${F}`,operationQueued:(F)=>`op:queued:${F}`,operationResolved:(F)=>`op:resolved:${F}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(F,X,Z)=>`audit:bulk:${H(F)}:${$(X)}:${$(Z)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(F,X)=>`op:resolved-by-time:${H(F)}:${$(X)}`,asyncActivity:(F,X)=>`async-act:v1:${$(F)}:${$(X)}`,asyncActivityResolution:(F,X)=>`async-act:v1:${$(F)}:${$(X)}:resolution`,activityReconciliationPrefix:(F)=>`actrec:v1:${$(F)}:`,activityReconciliation:(F,X,Z)=>`actrec:v1:${$(F)}:${$(X)}:${Z}`,eventPrefix:(F)=>`ev:${$(F)}:`,event:(F,X)=>`ev:${$(F)}:${String(X).padStart(10,"0")}`,eventHead:(F)=>`ev:${$(F)}:head`,eventWatermark:(F)=>`ev:${$(F)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(F)=>`fleet-event:${String(F).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(F)=>`fleet-event-by-workflow:${$(F)}:`,fleetEventByWorkflow:(F,X)=>`fleet-event-by-workflow:${$(F)}:${String(X).padStart(10,"0")}`,signal:(F,X,Z)=>h(F,X,Z,JF),startSignal:(F,X,Z)=>h(F,X,Z,$F),signalSequence:(F)=>`sigseq:v1:${$(F)}`,signalAcceptedResponsePrefix:(F)=>`sigres:v1:${$(F)}:`,signalAcceptedResponse:(F,X,Z)=>`sigres:v1:${$(F)}:${$(X)}:${$(Z)}`,deadline:(F,X)=>`wf-deadline:${H(F)}:${$(X)}`,terminalCleanup:(F,X)=>`wf-cleanup:${H(F)}:${$(X)}`,teardownTimer:(F,X)=>`wf-teardown:${H(F)}:${$(X)}`,delayedStart:(F,X)=>`wf-delayed:${H(F)}:${$(X)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(F,X)=>`wf-terminal:${H(F)}:${$(X)}`,attribute:(F)=>`attr:${$(F)}`,attributeIndex:(F,X,Z)=>`idx:${F}:${X}:${$(Z)}`,tagIndex:(F,X)=>`tag:${$(F)}:${$(X)}`,updatePrefix:(F)=>`upd:${$(F)}:`,update:(F,X)=>`upd:${$(F)}:${X}`,updateResponse:(F)=>`upr:${F}`,updateIdempotency:(F,X)=>`upk:${$(F)}:${X}`,startIdempotency:(F)=>`start-idem:${$(F)}`,startIdempotencySignalId:(F)=>`start-idem:${F}`,livenessPrefix:()=>"liveness:",liveness:(F)=>`liveness:${$(F)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...K,budget:(F,X,Z)=>`budget:${F}:${X}:${Z}`,review:(F,X)=>`review:${$(F)}:${X}`,workflowHeaders:(F)=>`wf-headers:${$(F)}`,childCancellationPrefix:(F)=>`child-cancel:${$(F)}:`,childCancellation:(F,X)=>`child-cancel:${$(F)}:${$(X)}`,childWorkflowByParentPrefix:(F,X)=>`child-by-parent:${$(F)}:${X===void 0?"":`${$(X)}:`}`,childWorkflowByParent:(F,X,Z)=>`child-by-parent:${$(F)}:${X===void 0?"":`${$(X)}:`}${$(Z)}`,terminalCleanupNeeded:(F)=>`wf-cleanup-needed:${$(F)}`,workflowConcurrency:(F,X)=>`wf-concurrency:${$(F)}:${$(X)}`,workflowConcurrencyHolder:(F)=>`wf-concurrency-holder:${$(F)}`,workflowHasServices:(F)=>`wf-has-services:${$(F)}`,finalizerState:(F)=>`wf-finalizer-state:${$(F)}`,teardownOwed:(F)=>`wf-teardown-needed:${$(F)}`,teardownSucceeded:(F)=>`wf-teardown-succeeded:${$(F)}`,teardownDeadLetter:(F)=>`wf-teardown-deadletter:${$(F)}`,offload:(F,X)=>`offload:${$(F)}:${X}`,archive:(F,X)=>`archive:${$(F)}:${X}`,stateExecution:(F,X)=>`state:execution:${$(F)}:${$(X)}`,stateWorkflow:(F,X)=>`state:workflow-scope:${O}:${$(F)}:${$(X)}`,streamChunkPrefix:(F,X)=>`blob:${$(F)}:${X}:chunk:`,streamChunk:(F,X,Z)=>`blob:${$(F)}:${X}:chunk:${String(Z).padStart(10,"0")}`,streamTail:(F,X)=>`blob:${$(F)}:${X}:tail`,streamMetadata:(F,X)=>`blob:${$(F)}:${X}:meta`,budgetCharged:(F)=>`budget-charged:${F}`,toolEffect:(F,X,Z)=>`tool-effect:${$(F)}:${X}:${Z}`,workflowVisibilityStatus:(F,X)=>`wf-idx-status:${$(F)}:${$(X)}`,workflowVisibilityType:(F,X)=>`wf-idx-type:${$(F)}:${$(X)}`,workflowVisibilityCreated:(F,X)=>`wf-idx-created:${H(F)}:${$(X)}`,workflowVisibilityUpdated:(F,X)=>`wf-idx-updated:${H(F)}:${$(X)}`,workflowVisibilityDeadline:(F,X)=>`wf-idx-deadline:${H(F)}:${$(X)}`,workflowVisibilityManifest:(F)=>`wf-idx-manifest:${$(F)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function jF(F){if(F===void 0)return;if(typeof F!=="number"||!Number.isInteger(F)||F<0)throw Error("deleteRange limit must be a finite non-negative integer");return F===0?0:F}function Y(F){let X={},Z=!1;for(let j of["gt","gte","lt","lte"]){let G=F[j];if(G===void 0)continue;if(typeof G!=="string")throw Error("deleteRange bounds must be strings");X[j]=G,Z=!0}if(!Z)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let J=jF(F.limit);if(J!==void 0)X.limit=J;return X}async function c(F,X,Z){let J=Y(Z);if(F.deleteRange)return F.deleteRange(X,J);return q(F,X,J)}function v(F){return F.replaceAll(/:+$/g,"")}function GF(F,X){let Z=v(F),J=v(X);if(Z.length===0)return J;if(J.length===0)return Z;return`${Z}:${J}`}class z{#F;#$;constructor(F,X){this.#F=F,this.#$=v(X)}#X(F){if(this.#$.length===0)return F;return F.length===0?`${this.#$}:`:`${this.#$}:${F}`}#Z(F){return F.map((X)=>{if(X.type==="put")return{type:"put",key:this.#X(X.key),value:X.value};return{type:"delete",key:this.#X(X.key)}})}#J(F){if(this.#$.length===0)return F;return F.slice(this.#$.length+1)}#j(F){let X={};if(F.limit!==void 0)X.limit=F.limit;if(F.gt!==void 0)X.gt=this.#X(F.gt);if(F.gte!==void 0)X.gte=this.#X(F.gte);if(F.lt!==void 0)X.lt=this.#X(F.lt);if(F.lte!==void 0)X.lte=this.#X(F.lte);return X}#G(F={}){let X=this.#j(F);if(F.reverse!==void 0)X.reverse=F.reverse;return X}#H(F){return this.#j(F)}capabilities(){return this.#F.capabilities()}scoped(F){return new z(this.#F,GF(this.#$,F))}async get(F){return this.#F.get(this.#X(F))}async put(F,X){await this.#F.put(this.#X(F),X)}async delete(F){await this.#F.delete(this.#X(F))}async*scan(F,X){for await(let[Z,J]of this.#F.scan(this.#X(F),this.#G(X)))yield[this.#J(Z),J]}async batch(F){Q("batch operations",F.length),await this.#F.batch(this.#Z(F))}async conditionalBatch(F,X){return u(this.#F,F.map((Z)=>({key:this.#X(Z.key),expectedValue:Z.expectedValue})),this.#Z(X))}async has(F){return b(this.#F,this.#X(F))}async deletePrefix(F){return y(this.#F,this.#X(F))}async deleteRange(F,X){let Z=this.#H(Y(X));return c(this.#F,this.#X(F),Z)}async*keys(F,X){for await(let Z of x(this.#F,this.#X(F),this.#G(X)))yield this.#J(Z)}async count(F){return m(this.#F,this.#X(F))}[Symbol.dispose](){this.#F[Symbol.dispose]()}}function g(F,X){return new z(F,X)}import{createClient as YF}from"@libsql/client";var HF=/^PRAGMA\b/iu,MF=/^PRAGMA\s+(?:[A-Z_][A-Z0-9_]*\.)?[A-Z_][A-Z0-9_]*\s*$/iu,UF=/^SELECT\b/iu;function QF(F){return F.trim().replace(/;+\s*$/u,"").trim()}function VF(F){return MF.test(F)}function I(F){let X=QF(F);if(X.length===0)throw Error("Storage query must not be empty.");if(X.includes(";"))throw Error("Storage query must contain exactly one read-only statement.");if(UF.test(X))return;if(HF.test(X)&&VF(X))return;throw Error("Storage query only supports read-only SELECT and PRAGMA statements.")}var k=`CREATE TABLE IF NOT EXISTS kv (
2
+ var $e=import.meta.require;function m(e,t,n){if(!e.capabilities()[t])throw Error(`Feature "${n}" requires storage capability "${t}", but this storage backend does not provide it.`)}function ee(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 S="default";async function x(e,t){return await e.get(t)!==null}async function*g(e,t,n){for await(let[i]of e.scan(t,n))yield i}async function k(e,t){let n=0;for await(let i of g(e,t))n++;return n}async function O(e,t){let n=[];for await(let i of g(e,t))n.push({type:"delete",key:i});if(n.length===0)return 0;return await e.batch(n),n.length}async function C(e,t,n){let i=[];for await(let a of g(e,t,n))i.push({type:"delete",key:a});if(i.length===0)return 0;return await e.batch(i),i.length}function r(e){return encodeURIComponent(e)}function te(e){return decodeURIComponent(e)}function ne(e){try{return decodeURIComponent(e)}catch{return null}}var T={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${r(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${r(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var re=["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,Ie=1e4;class v 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 u(e,t){if(t>w)throw new v(e,t)}function B(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"\xFF"}function qe(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 A(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 _(e,t){if(e.has)return e.has(t);return x(e,t)}function L(e,t,n){if(e.keys)return e.keys(t,n);return g(e,t,n)}async function D(e,t){if(e.count)return e.count(t);return k(e,t)}async function I(e,t){if(e.deletePrefix)return e.deletePrefix(t);return O(e,t)}async function Ke(e,t){u("batch operations",t.length),await e.batch(t)}async function q(e,t,n){if(u("conditionalBatch conditions",t.length),u("conditionalBatch operations",n.length),m(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"),ie="0",ae="1",P=(e,t,n,i)=>`sig:${r(e)}:${r(t)}:${i}:${r(n)}`,Ne={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)=>P(e,t,n,ae),startSignal:(e,t,n)=>P(e,t,n,ie),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",...T,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:${S}:${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"};function se(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={},n=!1;for(let a of["gt","gte","lt","lte"]){let s=e[a];if(s===void 0)continue;if(typeof s!=="string")throw Error("deleteRange bounds must be strings");t[a]=s,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=se(e.limit);if(i!==void 0)t.limit=i;return t}async function K(e,t,n){let i=d(n);if(e.deleteRange)return e.deleteRange(t,i);return C(e,t,i)}function E(e){return e.replaceAll(/:+$/g,"")}function oe(e,t){let n=E(e),i=E(t);if(n.length===0)return i;if(i.length===0)return n;return`${n}:${i}`}class b{#e;#r;constructor(e,t){this.#e=e,this.#r=E(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)}#a(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.#a(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#o(e){return this.#a(e)}capabilities(){return this.#e.capabilities()}scoped(e){return new b(this.#e,oe(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[n,i]of this.#e.scan(this.#t(e),this.#s(t)))yield[this.#i(n),i]}async batch(e){u("batch operations",e.length),await this.#e.batch(this.#n(e))}async conditionalBatch(e,t){return q(this.#e,e.map((n)=>({key:this.#t(n.key),expectedValue:n.expectedValue})),this.#n(t))}async has(e){return _(this.#e,this.#t(e))}async deletePrefix(e){return I(this.#e,this.#t(e))}async deleteRange(e,t){let n=this.#o(d(t));return K(this.#e,this.#t(e),n)}async*keys(e,t){for await(let n of L(this.#e,this.#t(e),this.#s(t)))yield this.#i(n)}async count(e){return D(this.#e,this.#t(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function N(e,t){return new b(e,t)}import{createClient as pe}from"@libsql/client";var le=/^PRAGMA\b/iu,ce=/^PRAGMA\s+(?:[A-Z_][A-Z0-9_]*\.)?[A-Z_][A-Z0-9_]*\s*$/iu,ue=/^SELECT\b/iu;function ge(e){return e.trim().replace(/;+\s*$/u,"").trim()}function de(e){return ce.test(e)}function U(e){let t=ge(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(ue.test(t))return;if(le.test(t)&&de(t))return;throw Error("Storage query only supports read-only SELECT and PRAGMA statements.")}var M=`CREATE TABLE IF NOT EXISTS kv (
3
3
  key TEXT PRIMARY KEY,
4
4
  value BLOB NOT NULL
5
- ) WITHOUT ROWID`,C="SELECT value FROM kv WHERE key = ?",W="INSERT INTO kv (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",D="DELETE FROM kv WHERE key = ?",w="SELECT 1 AS present FROM kv WHERE key = ? LIMIT 1",f="SELECT COUNT(*) AS count FROM kv WHERE key >= ? AND key < ?",d="DELETE FROM kv WHERE key >= ? AND key < ?";function B(F){return[F,S(F)]}function l(F,X){let{gt:Z,gte:J,lt:j,lte:G}=X,M=["key >= ? AND key < ?"],U=B(F);if(Z!==void 0)M.push("key > ?"),U.push(Z);if(J!==void 0)M.push("key >= ?"),U.push(J);if(j!==void 0)M.push("key < ?"),U.push(j);if(G!==void 0)M.push("key <= ?"),U.push(G);return{conditions:M,parameters:U}}function p(F,X={}){let{limit:Z,reverse:J}=X,{conditions:j,parameters:G}=l(F,X),M=J?"DESC":"ASC",U=Z!==void 0?" LIMIT ?":"";if(Z!==void 0)G.push(Z);return{parameters:G,sqlSuffix:`WHERE ${j.join(" AND ")} ORDER BY key ${M}${U}`}}function a(F,X,Z="kv"){let{conditions:J,parameters:j}=l(F,X),G=J.join(" AND ");if(X.limit===void 0)return{parameters:j,sql:`DELETE FROM ${Z} WHERE ${G}`};return j.push(X.limit),{parameters:j,sql:`DELETE FROM ${Z} WHERE key IN (SELECT key FROM ${Z} WHERE ${G} ORDER BY key ASC LIMIT ?)`}}function s(F,X={}){let{parameters:Z,sqlSuffix:J}=p(F,X);return{parameters:Z,sql:`SELECT key, value FROM kv ${J}`}}function n(F,X={}){let{parameters:Z,sqlSuffix:J}=p(F,X);return{parameters:Z,sql:`SELECT key FROM kv ${J}`}}var i=`${k};`,N=10,NF=new Set(["SQLITE_BUSY","SQLITE_LOCKED"]);function r(F){return typeof F==="object"&&F!==null&&"code"in F&&typeof F.code==="string"&&NF.has(F.code)}async function WF(F){return F.transaction("write")}async function DF(F){try{await F.rollback()}catch{}}async function t(F){await new Promise((X)=>{setTimeout(X,Math.min(F*5,50))})}async function BF(F,X){for(let Z=1;Z<=N;Z++)try{await F.batch(X,"write");return}catch(J){if(!r(J)||Z===N)throw J;await t(Z)}}async function RF(F,X){for(let Z of X){let j=(await F.execute({sql:C,args:[Z.key]})).rows[0]?.value,G=j===null||j===void 0?null:new Uint8Array(j);if(!T(G,Z.expectedValue))return!1}return!0}async function OF(F,X){for(let Z of X)if(Z.type==="put")await F.execute({sql:W,args:[Z.key,Z.value]});else await F.execute({sql:D,args:[Z.key]})}function _F(F){if(F==="file::memory:"||F===":memory:")return"ephemeral";if(F.startsWith("file:"))return"local";return"remote"}class vF{#F;#$;#X=!1;constructor(F){this.#$=_F(F.url),this.#F=YF(F.authToken?{url:F.url,authToken:F.authToken}:{url:F.url})}capabilities(){return{persistence:this.#$,readAfterWrite:"session",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}async#Z(){if(this.#X)return;await this.#F.executeMultiple(i),this.#X=!0}async get(F){await this.#Z();let X=await this.#F.execute({sql:C,args:[F]});if(X.rows.length===0)return null;let Z=X.rows[0].value;if(Z===null||Z===void 0)return null;return new Uint8Array(Z)}async put(F,X){await this.#Z(),await this.#F.execute({sql:W,args:[F,X]})}async delete(F){await this.#Z(),await this.#F.execute({sql:D,args:[F]})}async has(F){return await this.#Z(),(await this.#F.execute({sql:w,args:[F]})).rows.length>0}async deletePrefix(F){await this.#Z();let[X,Z]=B(F);return(await this.#F.execute({sql:d,args:[X,Z]})).rowsAffected}async deleteRange(F,X){await this.#Z();let Z=Y(X),{parameters:J,sql:j}=a(F,Z);return(await this.#F.execute({sql:j,args:J})).rowsAffected}async*scan(F,X={}){await this.#Z();let{parameters:Z,sql:J}=s(F,X),j=await this.#F.execute({sql:J,args:Z});for(let G of j.rows){let{key:M,value:U}=G,e=new Uint8Array(U);yield[M,e]}}async*keys(F,X={}){await this.#Z();let{parameters:Z,sql:J}=n(F,X),j=await this.#F.execute({sql:J,args:Z});for(let G of j.rows)yield G.key}async count(F){await this.#Z();let[X,Z]=B(F),J=await this.#F.execute({sql:f,args:[X,Z]});return Number(J.rows[0]?.count??0)}scoped(F){return g(this,F)}async batch(F){if(Q("batch operations",F.length),F.length===0)return;await this.#Z();let X=F.map((Z)=>{if(Z.type==="put")return{sql:W,args:[Z.key,Z.value]};return{sql:D,args:[Z.key]}});await BF(this.#F,X)}async conditionalBatch(F,X){Q("conditionalBatch conditions",F.length),Q("conditionalBatch operations",X.length),await this.#Z();let Z;for(let J=1;J<=N;J++){let j;try{if(j=await WF(this.#F),await j.executeMultiple(i),!await RF(j,F))return await j.rollback(),!1;return await OF(j,X),await j.commit(),!0}catch(G){if(j!==void 0)await DF(j);if(!r(G))throw G;if(Z=G,J<N)await t(J)}}throw Error(`conditionalBatch exhausted ${N} attempts after SQLite contention failures`,{cause:Z})}async query(F,X){return await this.#Z(),I(F),(await this.#F.execute({sql:F,args:X??[]})).rows}[Symbol.dispose](){this.#F.close()}}export{vF as TursoStorage};
5
+ ) WITHOUT ROWID`,R="SELECT value FROM kv WHERE key = ?",f="INSERT INTO kv (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",y="DELETE FROM kv WHERE key = ?",V="SELECT 1 AS present FROM kv WHERE key = ? LIMIT 1",Y="SELECT COUNT(*) AS count FROM kv WHERE key >= ? AND key < ?",Q="DELETE FROM kv WHERE key >= ? AND key < ?";function h(e){return[e,B(e)]}function W(e,t){let{gt:n,gte:i,lt:a,lte:s}=t,l=["key >= ? AND key < ?"],c=h(e);if(n!==void 0)l.push("key > ?"),c.push(n);if(i!==void 0)l.push("key >= ?"),c.push(i);if(a!==void 0)l.push("key < ?"),c.push(a);if(s!==void 0)l.push("key <= ?"),c.push(s);return{conditions:l,parameters:c}}function z(e,t={}){let{limit:n,reverse:i}=t,{conditions:a,parameters:s}=W(e,t),l=i?"DESC":"ASC",c=n!==void 0?" LIMIT ?":"";if(n!==void 0)s.push(n);return{parameters:s,sqlSuffix:`WHERE ${a.join(" AND ")} ORDER BY key ${l}${c}`}}function F(e,t,n="kv"){let{conditions:i,parameters:a}=W(e,t),s=i.join(" AND ");if(t.limit===void 0)return{parameters:a,sql:`DELETE FROM ${n} WHERE ${s}`};return a.push(t.limit),{parameters:a,sql:`DELETE FROM ${n} WHERE key IN (SELECT key FROM ${n} WHERE ${s} ORDER BY key ASC LIMIT ?)`}}function H(e,t={}){let{parameters:n,sqlSuffix:i}=z(e,t);return{parameters:n,sql:`SELECT key, value FROM kv ${i}`}}function X(e,t={}){let{parameters:n,sqlSuffix:i}=z(e,t);return{parameters:n,sql:`SELECT key FROM kv ${i}`}}var G=`${M};`,p=10,fe=new Set(["SQLITE_BUSY","SQLITE_LOCKED"]);function j(e){return typeof e==="object"&&e!==null&&"code"in e&&typeof e.code==="string"&&fe.has(e.code)}async function ye(e){return e.transaction("write")}async function he(e){try{await e.rollback()}catch{}}async function Z(e){await new Promise((t)=>{setTimeout(t,Math.min(e*5,50))})}async function me(e,t){for(let n=1;n<=p;n++)try{await e.batch(t,"write");return}catch(i){if(!j(i)||n===p)throw i;await Z(n)}}async function Se(e,t){for(let n of t){let a=(await e.execute({sql:R,args:[n.key]})).rows[0]?.value,s=a===null||a===void 0?null:new Uint8Array(a);if(!A(s,n.expectedValue))return!1}return!0}async function we(e,t){for(let n of t)if(n.type==="put")await e.execute({sql:f,args:[n.key,n.value]});else await e.execute({sql:y,args:[n.key]})}function Ee(e){if(e==="file::memory:"||e===":memory:")return"ephemeral";if(e.startsWith("file:"))return"local";return"remote"}class be{#e;#r;#t=!1;constructor(e){this.#r=Ee(e.url),this.#e=pe(e.authToken?{url:e.url,authToken:e.authToken}:{url:e.url})}capabilities(){return{persistence:this.#r,readAfterWrite:"session",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}async#n(){if(this.#t)return;await this.#e.executeMultiple(G),this.#t=!0}async get(e){await this.#n();let t=await this.#e.execute({sql:R,args:[e]});if(t.rows.length===0)return null;let n=t.rows[0].value;if(n===null||n===void 0)return null;return new Uint8Array(n)}async put(e,t){await this.#n(),await this.#e.execute({sql:f,args:[e,t]})}async delete(e){await this.#n(),await this.#e.execute({sql:y,args:[e]})}async has(e){return await this.#n(),(await this.#e.execute({sql:V,args:[e]})).rows.length>0}async deletePrefix(e){await this.#n();let[t,n]=h(e);return(await this.#e.execute({sql:Q,args:[t,n]})).rowsAffected}async deleteRange(e,t){await this.#n();let n=d(t),{parameters:i,sql:a}=F(e,n);return(await this.#e.execute({sql:a,args:i})).rowsAffected}async*scan(e,t={}){await this.#n();let{parameters:n,sql:i}=H(e,t),a=await this.#e.execute({sql:i,args:n});for(let s of a.rows){let{key:l,value:c}=s,J=new Uint8Array(c);yield[l,J]}}async*keys(e,t={}){await this.#n();let{parameters:n,sql:i}=X(e,t),a=await this.#e.execute({sql:i,args:n});for(let s of a.rows)yield s.key}async count(e){await this.#n();let[t,n]=h(e),i=await this.#e.execute({sql:Y,args:[t,n]});return Number(i.rows[0]?.count??0)}scoped(e){return N(this,e)}async batch(e){if(u("batch operations",e.length),e.length===0)return;await this.#n();let t=e.map((n)=>{if(n.type==="put")return{sql:f,args:[n.key,n.value]};return{sql:y,args:[n.key]}});await me(this.#e,t)}async conditionalBatch(e,t){u("conditionalBatch conditions",e.length),u("conditionalBatch operations",t.length),await this.#n();let n;for(let i=1;i<=p;i++){let a;try{if(a=await ye(this.#e),await a.executeMultiple(G),!await Se(a,e))return await a.rollback(),!1;return await we(a,t),await a.commit(),!0}catch(s){if(a!==void 0)await he(a);if(!j(s))throw s;if(n=s,i<p)await Z(i)}}throw Error(`conditionalBatch exhausted ${p} attempts after SQLite contention failures`,{cause:n})}async query(e,t){return await this.#n(),U(e),(await this.#e.execute({sql:e,args:t??[]})).rows}[Symbol.dispose](){this.#e.close()}}export{be as TursoStorage};
package/dist/version.d.ts CHANGED
@@ -9,4 +9,4 @@
9
9
  * console.log(`Running Weft ${VERSION}`);
10
10
  * ```
11
11
  */
12
- export declare const VERSION = "0.21.0";
12
+ export declare const VERSION = "0.22.0";
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const VERSION = "0.21.0";
1
+ export const VERSION = "0.22.0";
@@ -1 +1 @@
1
- function h(F){let X=[];for(let Z=0;Z<F.length;Z+=512)X.push(String.fromCharCode(...F.subarray(Z,Z+512)));return btoa(X.join(""))}function b(F){let X=atob(F),Z=new Uint8Array(X.length);for(let J=0;J<X.length;J+=1)Z[J]=X.charCodeAt(J);return Z}function _(F){return typeof F==="object"&&F!==null&&!Array.isArray(F)}async function D(F,X){return await F.get(X)!==null}async function*G(F,X,Z){for await(let[J]of F.scan(X,Z))yield J}async function z(F,X){let Z=0;for await(let J of G(F,X))Z++;return Z}async function B(F,X){let Z=[];for await(let J of G(F,X))Z.push({type:"delete",key:J});if(Z.length===0)return 0;return await F.batch(Z),Z.length}async function C(F,X,Z){let J=[];for await(let H of G(F,X,Z))J.push({type:"delete",key:H});if(J.length===0)return 0;return await F.batch(J),J.length}function v(F,X,Z){if(!F.capabilities()[X])throw Error(`Feature "${Z}" requires storage capability "${X}", but this storage backend does not provide it.`)}var x="default";function $(F){return encodeURIComponent(F)}var m={workflowOwnerEpoch:(F)=>`wf-owner-epoch:${$(F)}`,workflowOwnerHolder:(F)=>`wf-owner-holder:${$(F)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var A=1e4;class g extends Error{code="StorageBatchOperationLimitExceededError";cap=A;count;target;constructor(F,X){super(`${F} count ${X} exceeds MAX_BATCH_OPERATIONS (${A}).`);this.name="StorageBatchOperationLimitExceededError",this.target=F,this.count=X}}function Y(F,X){if(X>A)throw new g(F,X)}function y(F){return F.length>0?F.slice(0,-1)+String.fromCharCode(F.charCodeAt(F.length-1)+1):"ÿ"}function u(F,X={}){if(X.gt!==void 0&&F<=X.gt)return!1;if(X.gte!==void 0&&F<X.gte)return!1;if(X.lt!==void 0&&F>=X.lt)return!1;if(X.lte!==void 0&&F>X.lte)return!1;return!0}function RF(F,X){if(F===null||X===null)return F===X;if(F.byteLength!==X.byteLength)return!1;for(let Z=0;Z<F.byteLength;Z++)if(F[Z]!==X[Z])return!1;return!0}async function c(F,X){if(F.has)return F.has(X);return D(F,X)}function w(F,X,Z){if(F.keys)return F.keys(X,Z);return G(F,X,Z)}async function f(F,X){if(F.count)return F.count(X);return z(F,X)}async function k(F,X){if(F.deletePrefix)return F.deletePrefix(X);return B(F,X)}async function d(F,X,Z){if(Y("conditionalBatch conditions",X.length),Y("conditionalBatch operations",Z.length),v(F,"conditionalBatch","storageConditionalBatch"),!F.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return F.conditionalBatch(X,Z)}var M=(F)=>String(F).padStart(16,"0"),r="0",t="1",I=(F,X,Z,J)=>`sig:${$(F)}:${$(X)}:${J}:${$(Z)}`,WF={workflow:(F)=>`wf:${$(F)}`,checkpoint:(F)=>`wf:${$(F)}:ckpt`,checkpointHistory:(F,X)=>`wf:${$(F)}:ckpt:${String(X).padStart(10,"0")}`,timelinePrefix:(F)=>`wf:${$(F)}:timeline:`,timeline:(F,X)=>`wf:${$(F)}:timeline:${String(X).padStart(10,"0")}`,schedule:(F)=>`schedule:${$(F)}`,scheduleTick:(F,X)=>`schedule-due:${String(F).padStart(16,"0")}:${$(X)}`,scheduleRun:(F)=>`schedule-run:${$(F)}`,scheduleRunLink:(F)=>`schedule-run-link:${$(F)}`,scheduleRunBySchedulePrefix:(F)=>`schedule-run-by-schedule:${$(F)}:`,scheduleRunBySchedule:(F,X)=>`schedule-run-by-schedule:${$(F)}:${$(X)}`,operation:(F,X,Z)=>`op:${F}:${M(X)}:${Z}`,operationInflight:(F)=>`op:inflight:${F}`,operationQueued:(F)=>`op:queued:${F}`,operationResolved:(F)=>`op:resolved:${F}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(F,X,Z)=>`audit:bulk:${M(F)}:${$(X)}:${$(Z)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(F,X)=>`op:resolved-by-time:${M(F)}:${$(X)}`,asyncActivity:(F,X)=>`async-act:v1:${$(F)}:${$(X)}`,asyncActivityResolution:(F,X)=>`async-act:v1:${$(F)}:${$(X)}:resolution`,activityReconciliationPrefix:(F)=>`actrec:v1:${$(F)}:`,activityReconciliation:(F,X,Z)=>`actrec:v1:${$(F)}:${$(X)}:${Z}`,eventPrefix:(F)=>`ev:${$(F)}:`,event:(F,X)=>`ev:${$(F)}:${String(X).padStart(10,"0")}`,eventHead:(F)=>`ev:${$(F)}:head`,eventWatermark:(F)=>`ev:${$(F)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(F)=>`fleet-event:${String(F).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(F)=>`fleet-event-by-workflow:${$(F)}:`,fleetEventByWorkflow:(F,X)=>`fleet-event-by-workflow:${$(F)}:${String(X).padStart(10,"0")}`,signal:(F,X,Z)=>I(F,X,Z,t),startSignal:(F,X,Z)=>I(F,X,Z,r),signalSequence:(F)=>`sigseq:v1:${$(F)}`,signalAcceptedResponsePrefix:(F)=>`sigres:v1:${$(F)}:`,signalAcceptedResponse:(F,X,Z)=>`sigres:v1:${$(F)}:${$(X)}:${$(Z)}`,deadline:(F,X)=>`wf-deadline:${M(F)}:${$(X)}`,terminalCleanup:(F,X)=>`wf-cleanup:${M(F)}:${$(X)}`,teardownTimer:(F,X)=>`wf-teardown:${M(F)}:${$(X)}`,delayedStart:(F,X)=>`wf-delayed:${M(F)}:${$(X)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(F,X)=>`wf-terminal:${M(F)}:${$(X)}`,attribute:(F)=>`attr:${$(F)}`,attributeIndex:(F,X,Z)=>`idx:${F}:${X}:${$(Z)}`,tagIndex:(F,X)=>`tag:${$(F)}:${$(X)}`,updatePrefix:(F)=>`upd:${$(F)}:`,update:(F,X)=>`upd:${$(F)}:${X}`,updateResponse:(F)=>`upr:${F}`,updateIdempotency:(F,X)=>`upk:${$(F)}:${X}`,startIdempotency:(F)=>`start-idem:${$(F)}`,startIdempotencySignalId:(F)=>`start-idem:${F}`,livenessPrefix:()=>"liveness:",liveness:(F)=>`liveness:${$(F)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...m,budget:(F,X,Z)=>`budget:${F}:${X}:${Z}`,review:(F,X)=>`review:${$(F)}:${X}`,workflowHeaders:(F)=>`wf-headers:${$(F)}`,childCancellationPrefix:(F)=>`child-cancel:${$(F)}:`,childCancellation:(F,X)=>`child-cancel:${$(F)}:${$(X)}`,childWorkflowByParentPrefix:(F,X)=>`child-by-parent:${$(F)}:${X===void 0?"":`${$(X)}:`}`,childWorkflowByParent:(F,X,Z)=>`child-by-parent:${$(F)}:${X===void 0?"":`${$(X)}:`}${$(Z)}`,terminalCleanupNeeded:(F)=>`wf-cleanup-needed:${$(F)}`,workflowConcurrency:(F,X)=>`wf-concurrency:${$(F)}:${$(X)}`,workflowConcurrencyHolder:(F)=>`wf-concurrency-holder:${$(F)}`,workflowHasServices:(F)=>`wf-has-services:${$(F)}`,finalizerState:(F)=>`wf-finalizer-state:${$(F)}`,teardownOwed:(F)=>`wf-teardown-needed:${$(F)}`,teardownSucceeded:(F)=>`wf-teardown-succeeded:${$(F)}`,teardownDeadLetter:(F)=>`wf-teardown-deadletter:${$(F)}`,offload:(F,X)=>`offload:${$(F)}:${X}`,archive:(F,X)=>`archive:${$(F)}:${X}`,stateExecution:(F,X)=>`state:execution:${$(F)}:${$(X)}`,stateWorkflow:(F,X)=>`state:workflow-scope:${x}:${$(F)}:${$(X)}`,streamChunkPrefix:(F,X)=>`blob:${$(F)}:${X}:chunk:`,streamChunk:(F,X,Z)=>`blob:${$(F)}:${X}:chunk:${String(Z).padStart(10,"0")}`,streamTail:(F,X)=>`blob:${$(F)}:${X}:tail`,streamMetadata:(F,X)=>`blob:${$(F)}:${X}:meta`,budgetCharged:(F)=>`budget-charged:${F}`,toolEffect:(F,X,Z)=>`tool-effect:${$(F)}:${X}:${Z}`,workflowVisibilityStatus:(F,X)=>`wf-idx-status:${$(F)}:${$(X)}`,workflowVisibilityType:(F,X)=>`wf-idx-type:${$(F)}:${$(X)}`,workflowVisibilityCreated:(F,X)=>`wf-idx-created:${M(F)}:${$(X)}`,workflowVisibilityUpdated:(F,X)=>`wf-idx-updated:${M(F)}:${$(X)}`,workflowVisibilityDeadline:(F,X)=>`wf-idx-deadline:${M(F)}:${$(X)}`,workflowVisibilityManifest:(F)=>`wf-idx-manifest:${$(F)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function o(F){if(F===void 0)return;if(typeof F!=="number"||!Number.isInteger(F)||F<0)throw Error("deleteRange limit must be a finite non-negative integer");return F===0?0:F}function Q(F){let X={},Z=!1;for(let H of["gt","gte","lt","lte"]){let U=F[H];if(U===void 0)continue;if(typeof U!=="string")throw Error("deleteRange bounds must be strings");X[H]=U,Z=!0}if(!Z)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let J=o(F.limit);if(J!==void 0)X.limit=J;return X}async function l(F,X,Z){let J=Q(Z);if(F.deleteRange)return F.deleteRange(X,J);return C(F,X,J)}function e(F,X){let Z={key:F,open:!1};if(X.gte!==void 0&&X.gte>Z.key)Z.key=X.gte,Z.open=!1;if(X.gt!==void 0&&X.gt>=Z.key)Z.key=X.gt,Z.open=!0;return Z}function FF(F,X){let Z={key:y(F),open:!0};if(X.lt!==void 0&&X.lt<=Z.key)Z.key=X.lt,Z.open=!0;if(X.lte!==void 0&&X.lte<Z.key)Z.key=X.lte,Z.open=!1;return Z}function hF(F,X){let Z=e(F,X),J=FF(F,X);if(Z.key>J.key||Z.key===J.key&&(Z.open||J.open))return null;return{lower:Z,upper:J}}function O(F){return F.replaceAll(/:+$/g,"")}function XF(F,X){let Z=O(F),J=O(X);if(Z.length===0)return J;if(J.length===0)return Z;return`${Z}:${J}`}class P{#X;#Z;constructor(F,X){this.#X=F,this.#Z=O(X)}#F(F){if(this.#Z.length===0)return F;return F.length===0?`${this.#Z}:`:`${this.#Z}:${F}`}#$(F){return F.map((X)=>{if(X.type==="put")return{type:"put",key:this.#F(X.key),value:X.value};return{type:"delete",key:this.#F(X.key)}})}#U(F){if(this.#Z.length===0)return F;return F.slice(this.#Z.length+1)}#J(F){let X={};if(F.limit!==void 0)X.limit=F.limit;if(F.gt!==void 0)X.gt=this.#F(F.gt);if(F.gte!==void 0)X.gte=this.#F(F.gte);if(F.lt!==void 0)X.lt=this.#F(F.lt);if(F.lte!==void 0)X.lte=this.#F(F.lte);return X}#H(F={}){let X=this.#J(F);if(F.reverse!==void 0)X.reverse=F.reverse;return X}#G(F){return this.#J(F)}capabilities(){return this.#X.capabilities()}scoped(F){return new P(this.#X,XF(this.#Z,F))}async get(F){return this.#X.get(this.#F(F))}async put(F,X){await this.#X.put(this.#F(F),X)}async delete(F){await this.#X.delete(this.#F(F))}async*scan(F,X){for await(let[Z,J]of this.#X.scan(this.#F(F),this.#H(X)))yield[this.#U(Z),J]}async batch(F){Y("batch operations",F.length),await this.#X.batch(this.#$(F))}async conditionalBatch(F,X){return d(this.#X,F.map((Z)=>({key:this.#F(Z.key),expectedValue:Z.expectedValue})),this.#$(X))}async has(F){return c(this.#X,this.#F(F))}async deletePrefix(F){return k(this.#X,this.#F(F))}async deleteRange(F,X){let Z=this.#G(Q(X));return l(this.#X,this.#F(F),Z)}async*keys(F,X){for await(let Z of w(this.#X,this.#F(F),this.#H(X)))yield this.#U(Z)}async count(F){return f(this.#X,this.#F(F))}[Symbol.dispose](){this.#X[Symbol.dispose]()}}function p(F,X){return new P(F,X)}var a=1,N="__weftStorageKeyspace",ZF=102400,$F=8192;function JF(F){return typeof F==="object"&&F!==null&&"then"in F&&typeof F.then==="function"}function E(F){if(!_(F))return!1;if(F.__weftStorage!==a)return!1;return typeof F.value==="string"}function UF(F){if(!_(F))return!1;return Object.values(F).every(E)}function T(F){if(F!==N)return;throw Error(`WebExtensionStorage key "${N}" is reserved for adapter metadata.`)}function HF(F){for(let X of F)T(X.key)}function s(F){return{__weftStorage:a,value:h(F)}}function n(F){if(!E(F))return null;return b(F.value)}function MF(F){return E(F)}function R(F){return new TextEncoder().encode(JSON.stringify(F)).byteLength}function VF(F){if(!_(F))return!1;if(F.runtime!==void 0&&!_(F.runtime))return!1;return F.storage===void 0||_(F.storage)}function GF(F){if(F!==void 0){if(!VF(F))throw Error("WebExtensionStorage injected namespace must be an object.");return F}let X=globalThis,Z=X.browser??X.chrome;if(Z?.storage===void 0)throw Error("WebExtensionStorage requires globalThis.browser.storage or globalThis.chrome.storage.");return Z}function _F(F,X){let Z=F.storage?.[X];if(Z===void 0)throw Error(`WebExtensionStorage area "${X}" is not available.`);return Z}function YF(F){if(F==="session")return"ephemeral";if(F==="sync"||F==="managed")return"remote";return"local"}function LF(F){let X=F.runtime?.lastError?.message;return X===void 0?null:Error(X)}async function W(F,X,Z){return new Promise((J,H)=>{let U=!1,L=(V)=>{if(U)return;let K=LF(F);if(U=!0,K!==null)H(K);else J(V)},S=(V)=>{if(U)return;U=!0,H(V)},i=(V)=>L(V),j;try{j=X(i)}catch{try{j=Z()}catch(V){S(V);return}}if(JF(j))j.then(L,S)})}class q{static#X=new WeakMap;#Z;#F;#$;#U;#J;constructor(F={},X){this.#$=F.area??"local",this.#U=YF(this.#$),this.#Z=GF(X),this.#F=_F(this.#Z,this.#$),this.#J=()=>{},this.#Z.storage?.onChanged?.addListener?.(this.#J)}capabilities(){return{persistence:this.#U,readAfterWrite:"session",scanConsistency:"best-effort",atomicBatch:!1,conditionalBatch:!1,boundedRangeDelete:!1}}async#H(F){return W(this.#Z,(X)=>this.#F.get(F,X),()=>this.#F.get(F))}async#G(F){await W(this.#Z,(X)=>this.#F.set(F,X),()=>this.#F.set(F))}async#L(F){if(this.#F.getBytesInUse===void 0)return null;return W(this.#Z,(X)=>this.#F.getBytesInUse?.(F,X),()=>this.#F.getBytesInUse?.(F))}async#M(){let X=(await this.#H(N))[N];if(X===void 0)return{};if(!UF(X))throw Error("WebExtensionStorage keyspace is not a valid storage envelope map.");return{...X}}async#_(F){let X={[N]:F};await this.#N(X),await this.#G(X)}async#Y(F){let X=q.#X.get(this.#F)??Promise.resolve(),Z={},J=new Promise((U)=>{Z.release=U}),H=X.catch(()=>{return}).then(()=>J);q.#X.set(this.#F,H),await X.catch(()=>{return});try{return await F()}finally{if(Z.release?.(),q.#X.get(this.#F)===H)q.#X.delete(this.#F)}}#V(){if(this.#$==="managed")throw Error('WebExtensionStorage area "managed" is read-only.')}#Q(F){let X=this.#F.QUOTA_BYTES_PER_ITEM??$F;for(let[Z,J]of Object.entries(F)){let H=R({[Z]:J});if(H>X)throw Error(`WebExtensionStorage sync item quota exceeded for "${Z}": ${String(H)} > ${String(X)}.`)}}async#q(F){let X=Object.keys(F),Z=await this.#L(null),J=await this.#L(X);if(Z!==null&&J!==null)return Z-J+R(F);let H=await this.#H(null);return R({...H,...F})}async#N(F){if(this.#$!=="sync")return;this.#Q(F);let X=this.#F.QUOTA_BYTES??ZF,Z=await this.#q(F);if(Z>X)throw Error(`WebExtensionStorage sync total quota exceeded: ${String(Z)} > ${String(X)}.`)}async get(F){T(F);let X=await this.#M();return n(X[F])}async put(F,X){this.#V(),T(F),await this.#Y(async()=>{let Z=await this.#M();Z[F]=s(X),await this.#_(Z)})}async delete(F){this.#V(),T(F),await this.#Y(async()=>{let X=await this.#M();if(!(F in X))return;delete X[F],await this.#_(X)})}async*scan(F,X={}){let Z=await this.#M(),J=Object.keys(Z).filter((U)=>U.startsWith(F)).filter((U)=>u(U,X)).filter((U)=>MF(Z[U])).toSorted();if(X.reverse)J=J.toReversed();let H=0;for(let U of J){if(X.limit!==void 0&&H>=X.limit)break;let L=n(Z[U]);if(L===null)continue;yield[U,L],H+=1}}async batch(F){if(Y("batch operations",F.length),this.#V(),F.length===0)return;HF(F),await this.#Y(async()=>{let X=await this.#M();for(let Z of F)if(Z.type==="put")X[Z.key]=s(Z.value);else delete X[Z.key];await this.#_(X)})}has(F){return D(this,F)}async*keys(F,X){yield*G(this,F,X)}count(F){return z(this,F)}async deletePrefix(F){return this.#V(),B(this,F)}async deleteRange(F,X){let Z=Q(X);return this.#V(),C(this,F,Z)}scoped(F){return p(this,F)}[Symbol.dispose](){this.#Z.storage?.onChanged?.removeListener?.(this.#J)}}export{q as WebExtensionStorage};
1
+ function A(e){let t=[];for(let n=0;n<e.length;n+=512)t.push(String.fromCharCode(...e.subarray(n,n+512)));return btoa(t.join(""))}function T(e){let t=atob(e),n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i);return n}function g(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}async function m(e,t){return await e.get(t)!==null}async function*c(e,t,n){for await(let[i]of e.scan(t,n))yield i}async function b(e,t){let n=0;for await(let i of c(e,t))n++;return n}async function S(e,t){let n=[];for await(let i of c(e,t))n.push({type:"delete",key:i});if(n.length===0)return 0;return await e.batch(n),n.length}async function w(e,t,n){let i=[];for await(let s of c(e,t,n))i.push({type:"delete",key:s});if(i.length===0)return 0;return await e.batch(i),i.length}function D(e,t,n){if(!e.capabilities()[t])throw Error(`Feature "${n}" requires storage capability "${t}", but this storage backend does not provide it.`)}var _="default";function r(e){return encodeURIComponent(e)}var W={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${r(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${r(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var v=1e4;class N extends Error{code="StorageBatchOperationLimitExceededError";cap=v;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${v}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function u(e,t){if(t>v)throw new N(e,t)}function U(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"ÿ"}function L(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 Re(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 K(e,t){if(e.has)return e.has(t);return m(e,t)}function z(e,t,n){if(e.keys)return e.keys(t,n);return c(e,t,n)}async function M(e,t){if(e.count)return e.count(t);return b(e,t)}async function H(e,t){if(e.deletePrefix)return e.deletePrefix(t);return S(e,t)}async function V(e,t,n){if(u("conditionalBatch conditions",t.length),u("conditionalBatch operations",n.length),D(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"),X="0",Z="1",I=(e,t,n,i)=>`sig:${r(e)}:${r(t)}:${i}:${r(n)}`,Pe={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)=>I(e,t,n,Z),startSignal:(e,t,n)=>I(e,t,n,X),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",...W,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:${_}:${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 J(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={},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=J(e.limit);if(i!==void 0)t.limit=i;return t}async function Y(e,t,n){let i=f(n);if(e.deleteRange)return e.deleteRange(t,i);return w(e,t,i)}function ee(e,t){let n={key:e,open:!1};if(t.gte!==void 0&&t.gte>n.key)n.key=t.gte,n.open=!1;if(t.gt!==void 0&&t.gt>=n.key)n.key=t.gt,n.open=!0;return n}function te(e,t){let n={key:U(e),open:!0};if(t.lt!==void 0&&t.lt<=n.key)n.key=t.lt,n.open=!0;if(t.lte!==void 0&&t.lte<n.key)n.key=t.lte,n.open=!1;return n}function Ae(e,t){let n=ee(e,t),i=te(e,t);if(n.key>i.key||n.key===i.key&&(n.open||i.open))return null;return{lower:n,upper:i}}function E(e){return e.replaceAll(/:+$/g,"")}function ne(e,t){let n=E(e),i=E(t);if(n.length===0)return i;if(i.length===0)return n;return`${n}:${i}`}class k{#t;#n;constructor(e,t){this.#t=e,this.#n=E(t)}#e(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.#e(t.key),value:t.value};return{type:"delete",key:this.#e(t.key)}})}#o(e){if(this.#n.length===0)return e;return e.slice(this.#n.length+1)}#i(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#e(e.gt);if(e.gte!==void 0)t.gte=this.#e(e.gte);if(e.lt!==void 0)t.lt=this.#e(e.lt);if(e.lte!==void 0)t.lte=this.#e(e.lte);return t}#s(e={}){let t=this.#i(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#c(e){return this.#i(e)}capabilities(){return this.#t.capabilities()}scoped(e){return new k(this.#t,ne(this.#n,e))}async get(e){return this.#t.get(this.#e(e))}async put(e,t){await this.#t.put(this.#e(e),t)}async delete(e){await this.#t.delete(this.#e(e))}async*scan(e,t){for await(let[n,i]of this.#t.scan(this.#e(e),this.#s(t)))yield[this.#o(n),i]}async batch(e){u("batch operations",e.length),await this.#t.batch(this.#r(e))}async conditionalBatch(e,t){return V(this.#t,e.map((n)=>({key:this.#e(n.key),expectedValue:n.expectedValue})),this.#r(t))}async has(e){return K(this.#t,this.#e(e))}async deletePrefix(e){return H(this.#t,this.#e(e))}async deleteRange(e,t){let n=this.#c(f(t));return Y(this.#t,this.#e(e),n)}async*keys(e,t){for await(let n of z(this.#t,this.#e(e),this.#s(t)))yield this.#o(n)}async count(e){return M(this.#t,this.#e(e))}[Symbol.dispose](){this.#t[Symbol.dispose]()}}function q(e,t){return new k(e,t)}var G=1,y="__weftStorageKeyspace",re=102400,ie=8192;function oe(e){return typeof e==="object"&&e!==null&&"then"in e&&typeof e.then==="function"}function O(e){if(!g(e))return!1;if(e.__weftStorage!==G)return!1;return typeof e.value==="string"}function se(e){if(!g(e))return!1;return Object.values(e).every(O)}function x(e){if(e!==y)return;throw Error(`WebExtensionStorage key "${y}" is reserved for adapter metadata.`)}function ae(e){for(let t of e)x(t.key)}function j(e){return{__weftStorage:G,value:A(e)}}function Q(e){if(!O(e))return null;return T(e.value)}function le(e){return O(e)}function R(e){return new TextEncoder().encode(JSON.stringify(e)).byteLength}function ce(e){if(!g(e))return!1;if(e.runtime!==void 0&&!g(e.runtime))return!1;return e.storage===void 0||g(e.storage)}function ge(e){if(e!==void 0){if(!ce(e))throw Error("WebExtensionStorage injected namespace must be an object.");return e}let t=globalThis,n=t.browser??t.chrome;if(n?.storage===void 0)throw Error("WebExtensionStorage requires globalThis.browser.storage or globalThis.chrome.storage.");return n}function ue(e,t){let n=e.storage?.[t];if(n===void 0)throw Error(`WebExtensionStorage area "${t}" is not available.`);return n}function de(e){if(e==="session")return"ephemeral";if(e==="sync"||e==="managed")return"remote";return"local"}function fe(e){let t=e.runtime?.lastError?.message;return t===void 0?null:Error(t)}async function P(e,t,n){return new Promise((i,s)=>{let o=!1,d=(l)=>{if(o)return;let B=fe(e);if(o=!0,B!==null)s(B);else i(l)},C=(l)=>{if(o)return;o=!0,s(l)},F=(l)=>d(l),h;try{h=t(F)}catch{try{h=n()}catch(l){C(l);return}}if(oe(h))h.then(d,C)})}class p{static#t=new WeakMap;#n;#e;#r;#o;#i;constructor(e={},t){this.#r=e.area??"local",this.#o=de(this.#r),this.#n=ge(t),this.#e=ue(this.#n,this.#r),this.#i=()=>{},this.#n.storage?.onChanged?.addListener?.(this.#i)}capabilities(){return{persistence:this.#o,readAfterWrite:"session",scanConsistency:"best-effort",atomicBatch:!1,conditionalBatch:!1,boundedRangeDelete:!1}}async#s(e){return P(this.#n,(t)=>this.#e.get(e,t),()=>this.#e.get(e))}async#c(e){await P(this.#n,(t)=>this.#e.set(e,t),()=>this.#e.set(e))}async#d(e){if(this.#e.getBytesInUse===void 0)return null;return P(this.#n,(t)=>this.#e.getBytesInUse?.(e,t),()=>this.#e.getBytesInUse?.(e))}async#a(){let t=(await this.#s(y))[y];if(t===void 0)return{};if(!se(t))throw Error("WebExtensionStorage keyspace is not a valid storage envelope map.");return{...t}}async#g(e){let t={[y]:e};await this.#y(t),await this.#c(t)}async#u(e){let t=p.#t.get(this.#e)??Promise.resolve(),n={},i=new Promise((o)=>{n.release=o}),s=t.catch(()=>{return}).then(()=>i);p.#t.set(this.#e,s),await t.catch(()=>{return});try{return await e()}finally{if(n.release?.(),p.#t.get(this.#e)===s)p.#t.delete(this.#e)}}#l(){if(this.#r==="managed")throw Error('WebExtensionStorage area "managed" is read-only.')}#f(e){let t=this.#e.QUOTA_BYTES_PER_ITEM??ie;for(let[n,i]of Object.entries(e)){let s=R({[n]:i});if(s>t)throw Error(`WebExtensionStorage sync item quota exceeded for "${n}": ${String(s)} > ${String(t)}.`)}}async#p(e){let t=Object.keys(e),n=await this.#d(null),i=await this.#d(t);if(n!==null&&i!==null)return n-i+R(e);let s=await this.#s(null);return R({...s,...e})}async#y(e){if(this.#r!=="sync")return;this.#f(e);let t=this.#e.QUOTA_BYTES??re,n=await this.#p(e);if(n>t)throw Error(`WebExtensionStorage sync total quota exceeded: ${String(n)} > ${String(t)}.`)}async get(e){x(e);let t=await this.#a();return Q(t[e])}async put(e,t){this.#l(),x(e),await this.#u(async()=>{let n=await this.#a();n[e]=j(t),await this.#g(n)})}async delete(e){this.#l(),x(e),await this.#u(async()=>{let t=await this.#a();if(!(e in t))return;delete t[e],await this.#g(t)})}async*scan(e,t={}){let n=await this.#a(),i=Object.keys(n).filter((o)=>o.startsWith(e)).filter((o)=>L(o,t)).filter((o)=>le(n[o])).toSorted();if(t.reverse)i=i.toReversed();let s=0;for(let o of i){if(t.limit!==void 0&&s>=t.limit)break;let d=Q(n[o]);if(d===null)continue;yield[o,d],s+=1}}async batch(e){if(u("batch operations",e.length),this.#l(),e.length===0)return;ae(e),await this.#u(async()=>{let t=await this.#a();for(let n of e)if(n.type==="put")t[n.key]=j(n.value);else delete t[n.key];await this.#g(t)})}has(e){return m(this,e)}async*keys(e,t){yield*c(this,e,t)}count(e){return b(this,e)}async deletePrefix(e){return this.#l(),S(this,e)}async deleteRange(e,t){let n=f(t);return this.#l(),w(this,e,n)}scoped(e){return q(this,e)}[Symbol.dispose](){this.#n.storage?.onChanged?.removeListener?.(this.#i)}}export{p as WebExtensionStorage};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- var t=import.meta.require;function b(z){return z!==null&&typeof z==="object"&&!Array.isArray(z)}function G(z){if(z===null||typeof z==="string"||typeof z==="boolean"||typeof z==="number"&&Number.isFinite(z))return!0;if(Array.isArray(z))return z.every(G);if(!b(z))return!1;return Object.values(z).every(G)}function U(z){return typeof z==="string"&&z.length>0}function K(z){return Array.isArray(z)&&z.every(U)}function N(z){if(!b(z))return!1;return Object.values(z).every((B)=>typeof B==="string")}function x(z){return typeof z==="number"&&Number.isFinite(z)}function Q(z,B,X){return{ok:!1,error:{code:z,message:B,...X!==void 0?{requestedProtocolVersion:X}:{}}}}function J(z,B,X){let Y={};for(let[Z,H,D,w]of X){let j=B[Z];if(j===void 0){if(H)return{ok:!1,error:Q(z,w)};continue}if(!D(j))return{ok:!1,error:Q(z,w)};Y[Z]=j}return{ok:!0,values:Y}}var $=3,h=3,C=3,W=[3];var L={$ref:"#/$defs/jsonValue"},I={type:"object",additionalProperties:L},M={type:"object",additionalProperties:{type:"string"}},q={const:$},F={register:{type:"object",additionalProperties:!1,required:["type","protocolVersion","workerId","manifest"],properties:{type:{const:"register"},protocolVersion:q,workerId:{type:"string",minLength:1},manifest:{type:"object"},concurrency:{type:"number",minimum:1,maximum:1000},startedAt:{type:"number"}}},heartbeat:{type:"object",additionalProperties:!1,required:["type","workerId"],properties:{type:{const:"heartbeat"},workerId:{type:"string",minLength:1}}},taskResult:{oneOf:[{type:"object",additionalProperties:!1,required:["type","operationId","status","value","attemptToken"],properties:{type:{const:"taskResult"},operationId:{type:"string",minLength:1},status:{const:"completed"},value:L,attemptToken:{type:"string",minLength:1}}},{type:"object",additionalProperties:!1,required:["type","operationId","status","error","attemptToken"],properties:{type:{const:"taskResult"},operationId:{type:"string",minLength:1},status:{const:"failed"},error:{type:"string"},attemptToken:{type:"string",minLength:1}}},{type:"object",additionalProperties:!1,required:["type","operationId","status","error","attemptToken"],properties:{type:{const:"taskResult"},operationId:{type:"string",minLength:1},status:{const:"cancelled"},error:{type:"string"},cancelled:{const:!0},attemptToken:{type:"string",minLength:1}}}]},task:{type:"object",additionalProperties:!1,required:["type","operationId","activityName","input","attemptToken"],properties:{type:{const:"task"},operationId:{type:"string",minLength:1},activityName:{type:"string",minLength:1},input:L,attempt:{type:"number",minimum:1},headers:M,workflowExecutionToken:{type:"string",minLength:1},attemptToken:{type:"string",minLength:1}}},cancel:{type:"object",additionalProperties:!1,required:["type","operationId"],properties:{type:{const:"cancel"},operationId:{type:"string",minLength:1}}},shutdown:{type:"object",additionalProperties:!1,required:["type"],properties:{type:{const:"shutdown"}}},registerAck:{type:"object",additionalProperties:!1,required:["type","protocolVersion","workerId","queue","concurrency","acceptedManifestDigest","serverCapabilities"],properties:{type:{const:"registerAck"},protocolVersion:q,workerId:{type:"string",minLength:1},queue:{type:"string",minLength:1},concurrency:{type:"number",minimum:1,maximum:1000},acceptedManifestDigest:{type:"string",minLength:1},serverCapabilities:{type:"array",items:{type:"string",minLength:1}}}},registerError:{type:"object",additionalProperties:!1,required:["type","code","message","supportedProtocolVersions"],properties:{type:{const:"registerError"},code:{enum:["invalid_registration","unsupported_protocol_version","deployment_conflict","registration_rejected"]},message:{type:"string"},supportedProtocolVersions:{type:"array",items:{type:"number"}},requestedProtocolVersion:{type:"number"}}},protocolError:{type:"object",additionalProperties:!1,required:["type","code","message"],properties:{type:{const:"protocolError"},code:{enum:["invalid_json","invalid_message","unknown_message_type","registration_required"]},message:{type:"string"}}}},P={$schema:"https://json-schema.org/draft/2020-12/schema",$id:`https://weft.dev/schemas/remote-worker-protocol.v${String($)}.json`,title:`Weft RemoteWorker Protocol v${String($)}`,oneOf:Object.keys(F).map((z)=>({$ref:`#/$defs/messages/${z}`})),$defs:{jsonValue:{oneOf:[{type:"null"},{type:"boolean"},{type:"number"},{type:"string"},{type:"array",items:{$ref:"#/$defs/jsonValue"}},{type:"object",additionalProperties:{$ref:"#/$defs/jsonValue"}}]},jsonObject:I,messages:F}};function f(z){let B=z.attemptToken;if(!U(B))return Q("invalid_message","taskResult.attemptToken must be a non-empty string");return{ok:!0,message:{attemptToken:B}}}function g(z,B){let X=B.value;if(!G(X))return Q("invalid_message","completed taskResult.value must be valid JSON");let Y=f(B);if(!Y.ok)return Y;return{ok:!0,message:{type:"taskResult",operationId:z,status:"completed",value:X,...Y.message}}}function y(z,B){let X=B.error;if(typeof X!=="string")return Q("invalid_message","failed taskResult.error must be a string");let Y=f(B);if(!Y.ok)return Y;return{ok:!0,message:{type:"taskResult",operationId:z,status:"failed",error:X,...Y.message}}}function T(z,B){let X=B.error;if(typeof X!=="string")return Q("invalid_message","cancelled taskResult.error must be a string");let Y=B.cancelled;if(Y!==void 0&&Y!==!0)return Q("invalid_message","taskResult.cancelled must be true when present");let Z=f(B);if(!Z.ok)return Z;return{ok:!0,message:{type:"taskResult",operationId:z,status:"cancelled",error:X,...Y===!0?{cancelled:Y}:{},...Z.message}}}var _={completed:g,failed:y,cancelled:T};function V(z){return z==="completed"||z==="failed"||z==="cancelled"}function A(z){let B=z.operationId;if(!U(B))return Q("invalid_message","taskResult.operationId must be a non-empty string");let X=z.status;if(!V(X))return Q("invalid_message","taskResult.status must be completed, failed, or cancelled");return _[X](B,z)}var k=new Set(["register","heartbeat","taskResult"]),S=new Set(["registerAck","registerError","protocolError","task","cancel","shutdown"]);function m(z){if(z===$)return{ok:!0,message:z};let B=x(z)?z:void 0;return Q("unsupported_protocol_version",`Unsupported RemoteWorker protocol version: ${String(z)}`,B)}var O=[["workerId",!0,U,"register.workerId must be a non-empty string"],["manifest",!0,b,"register.manifest must be a JSON object"],["concurrency",!1,x,"register.concurrency must be a finite number"],["startedAt",!1,x,"register.startedAt must be a finite number when present"]];function E(z){let B=m(z.protocolVersion);if(!B.ok)return B;let X=J("invalid_registration",z,O);if(!X.ok)return X.error;return{ok:!0,message:{type:"register",protocolVersion:B.message,...X.values}}}function R(z){let B=z.workerId;if(!U(B))return Q("invalid_message","heartbeat.workerId must be a non-empty string");return{ok:!0,message:{type:"heartbeat",workerId:B}}}var p=[["operationId",!0,U,"task.operationId must be a non-empty string"],["activityName",!0,U,"task.activityName must be a non-empty string"],["input",!0,G,"task.input must be valid JSON"],["attempt",!1,x,"task.attempt must be a finite number"],["headers",!1,N,"task.headers must be a string map"],["workflowExecutionToken",!1,U,"task.workflowExecutionToken must be a non-empty string"],["attemptToken",!0,U,"task.attemptToken must be a non-empty string"]];function n(z){let B=J("invalid_message",z,p);if(!B.ok)return B.error;return{ok:!0,message:{type:"task",...B.values}}}function i(z){let B=z.operationId;if(!U(B))return Q("invalid_message","cancel.operationId must be a non-empty string");return{ok:!0,message:{type:"cancel",operationId:B}}}function v(){return{ok:!0,message:{type:"shutdown"}}}function d(z){let B=z.protocolVersion;if(B!==$)return Q("invalid_message",`registerAck.protocolVersion must be ${String($)}`);let{workerId:X,queue:Y,concurrency:Z,acceptedManifestDigest:H,serverCapabilities:D}=z;if(!U(X))return Q("invalid_message","registerAck.workerId must be a non-empty string");if(!U(Y))return Q("invalid_message","registerAck.queue must be a non-empty string");if(typeof Z!=="number"||!Number.isFinite(Z))return Q("invalid_message","registerAck.concurrency must be a finite number");if(!U(H))return Q("invalid_message","registerAck.acceptedManifestDigest must be a non-empty string");if(!K(D))return Q("invalid_message","registerAck.serverCapabilities must be an array of non-empty strings");return{ok:!0,message:{type:"registerAck",protocolVersion:B,workerId:X,queue:Y,concurrency:Z,acceptedManifestDigest:H,serverCapabilities:D}}}function u(z){return z==="invalid_registration"||z==="unsupported_protocol_version"||z==="deployment_conflict"||z==="registration_rejected"}function s(z){let{code:B,message:X,supportedProtocolVersions:Y,requestedProtocolVersion:Z}=z;if(!u(B))return Q("invalid_message","registerError.code is not recognized");if(typeof X!=="string")return Q("invalid_message","registerError.message must be a string");if(!Array.isArray(Y)||!Y.every((D)=>x(D)))return Q("invalid_message","registerError.supportedProtocolVersions is invalid");if(Z!==void 0&&!x(Z))return Q("invalid_message","registerError.requestedProtocolVersion must be a finite number");return{ok:!0,message:{type:"registerError",code:B,message:X,supportedProtocolVersions:Y,...Z!==void 0?{requestedProtocolVersion:Z}:{}}}}function c(z){let{code:B,message:X}=z;if(B!=="invalid_json"&&B!=="invalid_message"&&B!=="unknown_message_type"&&B!=="registration_required")return Q("invalid_message","protocolError.code is not recognized");if(typeof X!=="string")return Q("invalid_message","protocolError.message must be a string");return{ok:!0,message:{type:"protocolError",code:B,message:X}}}function Uz(z){if(!b(z))return Q("invalid_message","Worker protocol message must be a JSON object");let B=z.type;if(typeof B!=="string")return Q("invalid_message","Worker protocol message.type must be a string");if(!k.has(B))return Q("unknown_message_type",`Unknown worker message type: ${B}`);switch(B){case"register":return E(z);case"heartbeat":return R(z);case"taskResult":return A(z);default:return Q("unknown_message_type",`Unknown worker message type: ${B}`)}}function $z(z){if(!b(z))return Q("invalid_message","Server protocol message must be a JSON object");let B=z.type;if(typeof B!=="string")return Q("invalid_message","Server protocol message.type must be a string");if(!S.has(B))return Q("unknown_message_type",`Unknown server message type: ${B}`);switch(B){case"registerAck":return d(z);case"registerError":return s(z);case"protocolError":return c(z);case"task":return n(z);case"cancel":return i(z);case"shutdown":return v();default:return Q("unknown_message_type",`Unknown server message type: ${B}`)}}export{Uz as parseWorkerToServerMessage,$z as parseServerToWorkerMessage,G as isRemoteWorkerJsonValue,W as REMOTE_WORKER_SUPPORTED_PROTOCOL_VERSIONS,$ as REMOTE_WORKER_PROTOCOL_VERSION,P as REMOTE_WORKER_PROTOCOL_JSON_SCHEMA,h as REMOTE_WORKER_MIN_PROTOCOL_VERSION,F as REMOTE_WORKER_MESSAGE_SCHEMAS,C as REMOTE_WORKER_MAX_PROTOCOL_VERSION};
2
+ var X=import.meta.require;function p(e){return e!==null&&typeof e==="object"&&!Array.isArray(e)}function l(e){if(e===null||typeof e==="string"||typeof e==="boolean"||typeof e==="number"&&Number.isFinite(e))return!0;if(Array.isArray(e))return e.every(l);if(!p(e))return!1;return Object.values(e).every(l)}function a(e){return typeof e==="string"&&e.length>0}function _(e){return Array.isArray(e)&&e.every(a)}function E(e){if(!p(e))return!1;return Object.values(e).every((t)=>typeof t==="string")}function u(e){return typeof e==="number"&&Number.isFinite(e)}function r(e,t,s){return{ok:!1,error:{code:e,message:t,...s!==void 0?{requestedProtocolVersion:s}:{}}}}function d(e,t,s){let o={};for(let[n,g,c,f]of s){let m=t[n];if(m===void 0){if(g)return{ok:!1,error:r(e,f)};continue}if(!c(m))return{ok:!1,error:r(e,f)};o[n]=m}return{ok:!0,values:o}}var i=3,M=3,O=3,T=[3];var R={$ref:"#/$defs/jsonValue"},S={type:"object",additionalProperties:R},w={type:"object",additionalProperties:{type:"string"}},P={const:i},k={register:{type:"object",additionalProperties:!1,required:["type","protocolVersion","workerId","manifest"],properties:{type:{const:"register"},protocolVersion:P,workerId:{type:"string",minLength:1},manifest:{type:"object"},concurrency:{type:"number",minimum:1,maximum:1000},startedAt:{type:"number"}}},heartbeat:{type:"object",additionalProperties:!1,required:["type","workerId"],properties:{type:{const:"heartbeat"},workerId:{type:"string",minLength:1}}},taskResult:{oneOf:[{type:"object",additionalProperties:!1,required:["type","operationId","status","value","attemptToken"],properties:{type:{const:"taskResult"},operationId:{type:"string",minLength:1},status:{const:"completed"},value:R,attemptToken:{type:"string",minLength:1}}},{type:"object",additionalProperties:!1,required:["type","operationId","status","error","attemptToken"],properties:{type:{const:"taskResult"},operationId:{type:"string",minLength:1},status:{const:"failed"},error:{type:"string"},attemptToken:{type:"string",minLength:1}}},{type:"object",additionalProperties:!1,required:["type","operationId","status","error","attemptToken"],properties:{type:{const:"taskResult"},operationId:{type:"string",minLength:1},status:{const:"cancelled"},error:{type:"string"},cancelled:{const:!0},attemptToken:{type:"string",minLength:1}}}]},task:{type:"object",additionalProperties:!1,required:["type","operationId","activityName","input","attemptToken"],properties:{type:{const:"task"},operationId:{type:"string",minLength:1},activityName:{type:"string",minLength:1},input:R,attempt:{type:"number",minimum:1},headers:w,workflowExecutionToken:{type:"string",minLength:1},attemptToken:{type:"string",minLength:1}}},cancel:{type:"object",additionalProperties:!1,required:["type","operationId"],properties:{type:{const:"cancel"},operationId:{type:"string",minLength:1}}},shutdown:{type:"object",additionalProperties:!1,required:["type"],properties:{type:{const:"shutdown"}}},registerAck:{type:"object",additionalProperties:!1,required:["type","protocolVersion","workerId","queue","concurrency","acceptedManifestDigest","serverCapabilities"],properties:{type:{const:"registerAck"},protocolVersion:P,workerId:{type:"string",minLength:1},queue:{type:"string",minLength:1},concurrency:{type:"number",minimum:1,maximum:1000},acceptedManifestDigest:{type:"string",minLength:1},serverCapabilities:{type:"array",items:{type:"string",minLength:1}}}},registerError:{type:"object",additionalProperties:!1,required:["type","code","message","supportedProtocolVersions"],properties:{type:{const:"registerError"},code:{enum:["invalid_registration","unsupported_protocol_version","deployment_conflict","registration_rejected"]},message:{type:"string"},supportedProtocolVersions:{type:"array",items:{type:"number"}},requestedProtocolVersion:{type:"number"}}},protocolError:{type:"object",additionalProperties:!1,required:["type","code","message"],properties:{type:{const:"protocolError"},code:{enum:["invalid_json","invalid_message","unknown_message_type","registration_required"]},message:{type:"string"}}}},W={$schema:"https://json-schema.org/draft/2020-12/schema",$id:`https://weft.dev/schemas/remote-worker-protocol.v${String(i)}.json`,title:`Weft RemoteWorker Protocol v${String(i)}`,oneOf:Object.keys(k).map((e)=>({$ref:`#/$defs/messages/${e}`})),$defs:{jsonValue:{oneOf:[{type:"null"},{type:"boolean"},{type:"number"},{type:"string"},{type:"array",items:{$ref:"#/$defs/jsonValue"}},{type:"object",additionalProperties:{$ref:"#/$defs/jsonValue"}}]},jsonObject:S,messages:k}};function y(e){let t=e.attemptToken;if(!a(t))return r("invalid_message","taskResult.attemptToken must be a non-empty string");return{ok:!0,message:{attemptToken:t}}}function h(e,t){let s=t.value;if(!l(s))return r("invalid_message","completed taskResult.value must be valid JSON");let o=y(t);if(!o.ok)return o;return{ok:!0,message:{type:"taskResult",operationId:e,status:"completed",value:s,...o.message}}}function v(e,t){let s=t.error;if(typeof s!=="string")return r("invalid_message","failed taskResult.error must be a string");let o=y(t);if(!o.ok)return o;return{ok:!0,message:{type:"taskResult",operationId:e,status:"failed",error:s,...o.message}}}function V(e,t){let s=t.error;if(typeof s!=="string")return r("invalid_message","cancelled taskResult.error must be a string");let o=t.cancelled;if(o!==void 0&&o!==!0)return r("invalid_message","taskResult.cancelled must be true when present");let n=y(t);if(!n.ok)return n;return{ok:!0,message:{type:"taskResult",operationId:e,status:"cancelled",error:s,...o===!0?{cancelled:o}:{},...n.message}}}var I={completed:h,failed:v,cancelled:V};function C(e){return e==="completed"||e==="failed"||e==="cancelled"}function b(e){let t=e.operationId;if(!a(t))return r("invalid_message","taskResult.operationId must be a non-empty string");let s=e.status;if(!C(s))return r("invalid_message","taskResult.status must be completed, failed, or cancelled");return I[s](t,e)}var j=new Set(["register","heartbeat","taskResult"]),A=new Set(["registerAck","registerError","protocolError","task","cancel","shutdown"]);function L(e){if(e===i)return{ok:!0,message:e};let t=u(e)?e:void 0;return r("unsupported_protocol_version",`Unsupported RemoteWorker protocol version: ${String(e)}`,t)}var N=[["workerId",!0,a,"register.workerId must be a non-empty string"],["manifest",!0,p,"register.manifest must be a JSON object"],["concurrency",!1,u,"register.concurrency must be a finite number"],["startedAt",!1,u,"register.startedAt must be a finite number when present"]];function x(e){let t=L(e.protocolVersion);if(!t.ok)return t;let s=d("invalid_registration",e,N);if(!s.ok)return s.error;return{ok:!0,message:{type:"register",protocolVersion:t.message,...s.values}}}function F(e){let t=e.workerId;if(!a(t))return r("invalid_message","heartbeat.workerId must be a non-empty string");return{ok:!0,message:{type:"heartbeat",workerId:t}}}var q=[["operationId",!0,a,"task.operationId must be a non-empty string"],["activityName",!0,a,"task.activityName must be a non-empty string"],["input",!0,l,"task.input must be valid JSON"],["attempt",!1,u,"task.attempt must be a finite number"],["headers",!1,E,"task.headers must be a string map"],["workflowExecutionToken",!1,a,"task.workflowExecutionToken must be a non-empty string"],["attemptToken",!0,a,"task.attemptToken must be a non-empty string"]];function J(e){let t=d("invalid_message",e,q);if(!t.ok)return t.error;return{ok:!0,message:{type:"task",...t.values}}}function K(e){let t=e.operationId;if(!a(t))return r("invalid_message","cancel.operationId must be a non-empty string");return{ok:!0,message:{type:"cancel",operationId:t}}}function D(){return{ok:!0,message:{type:"shutdown"}}}function H(e){let t=e.protocolVersion;if(t!==i)return r("invalid_message",`registerAck.protocolVersion must be ${String(i)}`);let{workerId:s,queue:o,concurrency:n,acceptedManifestDigest:g,serverCapabilities:c}=e;if(!a(s))return r("invalid_message","registerAck.workerId must be a non-empty string");if(!a(o))return r("invalid_message","registerAck.queue must be a non-empty string");if(typeof n!=="number"||!Number.isFinite(n))return r("invalid_message","registerAck.concurrency must be a finite number");if(!a(g))return r("invalid_message","registerAck.acceptedManifestDigest must be a non-empty string");if(!_(c))return r("invalid_message","registerAck.serverCapabilities must be an array of non-empty strings");return{ok:!0,message:{type:"registerAck",protocolVersion:t,workerId:s,queue:o,concurrency:n,acceptedManifestDigest:g,serverCapabilities:c}}}function U(e){return e==="invalid_registration"||e==="unsupported_protocol_version"||e==="deployment_conflict"||e==="registration_rejected"}function G(e){let{code:t,message:s,supportedProtocolVersions:o,requestedProtocolVersion:n}=e;if(!U(t))return r("invalid_message","registerError.code is not recognized");if(typeof s!=="string")return r("invalid_message","registerError.message must be a string");if(!Array.isArray(o)||!o.every((c)=>u(c)))return r("invalid_message","registerError.supportedProtocolVersions is invalid");if(n!==void 0&&!u(n))return r("invalid_message","registerError.requestedProtocolVersion must be a finite number");return{ok:!0,message:{type:"registerError",code:t,message:s,supportedProtocolVersions:o,...n!==void 0?{requestedProtocolVersion:n}:{}}}}function z(e){let{code:t,message:s}=e;if(t!=="invalid_json"&&t!=="invalid_message"&&t!=="unknown_message_type"&&t!=="registration_required")return r("invalid_message","protocolError.code is not recognized");if(typeof s!=="string")return r("invalid_message","protocolError.message must be a string");return{ok:!0,message:{type:"protocolError",code:t,message:s}}}function ie(e){if(!p(e))return r("invalid_message","Worker protocol message must be a JSON object");let t=e.type;if(typeof t!=="string")return r("invalid_message","Worker protocol message.type must be a string");if(!j.has(t))return r("unknown_message_type",`Unknown worker message type: ${t}`);switch(t){case"register":return x(e);case"heartbeat":return F(e);case"taskResult":return b(e);default:return r("unknown_message_type",`Unknown worker message type: ${t}`)}}function ue(e){if(!p(e))return r("invalid_message","Server protocol message must be a JSON object");let t=e.type;if(typeof t!=="string")return r("invalid_message","Server protocol message.type must be a string");if(!A.has(t))return r("unknown_message_type",`Unknown server message type: ${t}`);switch(t){case"registerAck":return H(e);case"registerError":return G(e);case"protocolError":return z(e);case"task":return J(e);case"cancel":return K(e);case"shutdown":return D();default:return r("unknown_message_type",`Unknown server message type: ${t}`)}}export{O as REMOTE_WORKER_MAX_PROTOCOL_VERSION,k as REMOTE_WORKER_MESSAGE_SCHEMAS,M as REMOTE_WORKER_MIN_PROTOCOL_VERSION,W as REMOTE_WORKER_PROTOCOL_JSON_SCHEMA,i as REMOTE_WORKER_PROTOCOL_VERSION,T as REMOTE_WORKER_SUPPORTED_PROTOCOL_VERSIONS,l as isRemoteWorkerJsonValue,ue as parseServerToWorkerMessage,ie as parseWorkerToServerMessage};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lostgradient/weft",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "description": "A Bun-native durable execution engine with pluggable key-value storage.",
5
5
  "keywords": [
6
6
  "bun",
@@ -274,7 +274,7 @@
274
274
  "@electric-sql/pglite": "^0.5.1",
275
275
  "@libsql/client": "^0.17.2",
276
276
  "@neondatabase/serverless": "^1.1.0",
277
- "@types/bun": "^1.3.13",
277
+ "@types/bun": "1.3.13",
278
278
  "@types/pg": "^8.11.0",
279
279
  "better-sqlite3": "^12.8.0",
280
280
  "chalk": "^5.6.2",
@@ -290,6 +290,7 @@
290
290
  "prettier": "^3.8.1",
291
291
  "prettier-plugin-organize-imports": "^4.3.0",
292
292
  "sort-package-json": "^3.6.1",
293
+ "typescript": "5.8.3",
293
294
  "valibot": "^1.4.0"
294
295
  },
295
296
  "peerDependencies": {