@lostgradient/weft 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -8
- package/dist/cli/generated/operation-catalog.snapshot.json +977 -77
- package/dist/cli/generated/operation-client.generated.d.ts +14 -21
- package/dist/core/aggregate-validation.d.ts +2 -5
- package/dist/core/aggregate-validation.js +2 -10
- package/dist/core/atomic-state.js +21 -24
- package/dist/core/engine/schedules.js +4 -1
- package/dist/core/inline-execution-strategy.js +8 -46
- package/dist/core/list-filter-validation.d.ts +2 -5
- package/dist/core/list-filter-validation.js +2 -10
- package/dist/core/types/schedules.d.ts +13 -31
- package/dist/core/validation-issues.d.ts +13 -0
- package/dist/core/validation-issues.js +9 -0
- package/dist/http.js +1 -1
- package/dist/indexeddb.js +1 -1
- package/dist/mcp/session.js +2 -10
- package/dist/mcp/tools.js +2 -10
- package/dist/mcp/tuple-list-equality.d.ts +1 -0
- package/dist/mcp/tuple-list-equality.js +12 -0
- package/dist/server/operation-catalog/types.d.ts +1 -1
- package/dist/server/operation-registry.d.ts +2 -31
- package/dist/server/operations/bulk-filter-helpers.d.ts +17 -17
- package/dist/server/operations/bulk-filter-helpers.js +16 -37
- package/dist/server/operations/bulk-mutate-workflow-tags.d.ts +27 -27
- package/dist/server/operations/bulk-signal-workflows.d.ts +26 -26
- package/dist/server/operations/create-schedule.js +7 -19
- package/dist/server/operations/event-stream-contracts.d.ts +20 -0
- package/dist/server/operations/event-stream-contracts.js +67 -0
- package/dist/server/operations/fleet-events-sse.js +21 -50
- package/dist/server/operations/fleet-events-subscription.js +8 -12
- package/dist/server/operations/list-workflows.d.ts +43 -43
- package/dist/server/operations/list-workflows.js +9 -30
- package/dist/server/operations/purge-workflows.d.ts +11 -11
- package/dist/server/operations/schedule-rest-body.d.ts +11 -0
- package/dist/server/operations/schedule-rest-body.js +28 -0
- package/dist/server/operations/update-schedule.js +7 -19
- package/dist/server/operations/workflow-events-sse.js +29 -67
- package/dist/server/operations/workflow-events-subscription.js +9 -27
- package/dist/server/runtime/task-polling.js +3 -5
- package/dist/server/task-state.d.ts +2 -8
- package/dist/server/task-state.js +10 -7
- package/dist/storage/bun-sql.js +52 -49
- package/dist/storage/conditional-batch-body.d.ts +7 -0
- package/dist/storage/conditional-batch-body.js +14 -0
- package/dist/storage/lmdb.js +1 -1
- package/dist/storage/memory.js +1 -1
- package/dist/storage/neon.js +2 -2
- package/dist/storage/node-sqlite-loader.d.ts +2 -2
- package/dist/storage/node-sqlite.js +32 -17
- package/dist/storage/postgres.js +1 -1
- package/dist/storage/resolve.js +1 -1
- package/dist/storage/scoped-storage.js +1 -1
- package/dist/storage/turso.js +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/web-extension.js +1 -1
- package/dist/worker/execute-with-interceptors.d.ts +1 -1
- package/dist/worker/execute-with-interceptors.js +2 -2
- package/dist/worker/index.js +5 -5
- package/dist/worker/long-poll.js +3 -4
- package/dist/worker/protocol-messages.d.ts +11 -19
- package/dist/worker/protocol-schemas.d.ts +8 -8
- package/dist/worker/protocol-schemas.js +4 -4
- package/dist/worker/protocol-task-result.d.ts +1 -0
- package/dist/worker/protocol-task-result.js +1 -3
- package/dist/worker/protocol.js +1 -1
- package/dist/worker/registry/types.d.ts +2 -7
- package/dist/worker/registry.d.ts +3 -9
- package/dist/worker/registry.js +2 -5
- package/package.json +1 -1
|
@@ -115,6 +115,23 @@ async function storageConditionalBatch(storage, conditions, operations) {
|
|
|
115
115
|
return storage.conditionalBatch(conditions, operations);
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
+
// src/storage/conditional-batch-body.ts
|
|
119
|
+
function runConditionalBatchBody(conditions, operations, handlers) {
|
|
120
|
+
for (const condition of conditions) {
|
|
121
|
+
if (!storageValuesEqual(handlers.read(condition.key), condition.expectedValue)) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
for (const operation of operations) {
|
|
126
|
+
if (operation.type === "put") {
|
|
127
|
+
handlers.put(operation.key, operation.value);
|
|
128
|
+
} else {
|
|
129
|
+
handlers.delete(operation.key);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
|
|
118
135
|
// src/storage/node-sqlite-loader.ts
|
|
119
136
|
import { createRequire } from "module";
|
|
120
137
|
var DatabaseConstructor;
|
|
@@ -320,25 +337,23 @@ class NodeSQLiteStorage {
|
|
|
320
337
|
async conditionalBatch(conditions, operations) {
|
|
321
338
|
assertStorageBatchOperationCount("conditionalBatch conditions", conditions.length);
|
|
322
339
|
assertStorageBatchOperationCount("conditionalBatch operations", operations.length);
|
|
323
|
-
const conditionalTransaction = this.#database.transaction((
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
return false;
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
for (const operation of pendingOperations) {
|
|
334
|
-
if (operation.type === "put") {
|
|
335
|
-
this.#putStatement.run(operation.key, operation.value);
|
|
336
|
-
} else {
|
|
337
|
-
this.#deleteStatement.run(operation.key);
|
|
340
|
+
const conditionalTransaction = this.#database.transaction((pendingConditions, pendingOperations) => runConditionalBatchBody(pendingConditions, pendingOperations, {
|
|
341
|
+
read: (key) => {
|
|
342
|
+
const row = this.#getStatement.get(key);
|
|
343
|
+
if (!row)
|
|
344
|
+
return null;
|
|
345
|
+
if (!(row["value"] instanceof Uint8Array)) {
|
|
346
|
+
throw new Error("SQLite value must be a byte array");
|
|
338
347
|
}
|
|
348
|
+
return new Uint8Array(row["value"]);
|
|
349
|
+
},
|
|
350
|
+
put: (key, value) => {
|
|
351
|
+
this.#putStatement.run(key, value);
|
|
352
|
+
},
|
|
353
|
+
delete: (key) => {
|
|
354
|
+
this.#deleteStatement.run(key);
|
|
339
355
|
}
|
|
340
|
-
|
|
341
|
-
});
|
|
356
|
+
}));
|
|
342
357
|
return Boolean(conditionalTransaction(conditions, operations));
|
|
343
358
|
}
|
|
344
359
|
[Symbol.dispose]() {
|
package/dist/storage/postgres.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var ZX=import.meta.require,SX=(X,Y,_)=>{if(Y!=null){if(typeof Y!=="object"&&typeof Y!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let Z;if(_)Z=Y[Symbol.asyncDispose];if(Z===void 0)Z=Y[Symbol.dispose];if(typeof Z!=="function")throw TypeError("Object not disposable");X.push([_,Z,Y])}else if(_)X.push([_]);return Y},zX=(X,Y,_)=>{let Z=(G)=>Y=_?new SuppressedError(G,Y,"An error was suppressed during disposal"):(_=!0,G),$=(G)=>{while(G=X.pop())try{var M=G[1]&&G[1].call(G[2]);if(G[0])return Promise.resolve(M).then($,(F)=>(Z(F),$()))}catch(F){Z(F)}if(_)throw Y};return $()};function E(X,Y,_){if(!X.capabilities()[Y])throw Error(`Feature "${_}" requires storage capability "${Y}", but this storage backend does not provide it.`)}function GX(X){let Y=X.capabilities(),_=[];if(Y.persistence!=="local"&&Y.persistence!=="remote")_.push(`persistence must be "local" or "remote" (got "${Y.persistence}")`);if(Y.readAfterWrite!=="linearizable")_.push(`readAfterWrite must be "linearizable" (got "${Y.readAfterWrite}")`);if(Y.scanConsistency!=="snapshot")_.push(`scanConsistency must be "snapshot" (got "${Y.scanConsistency}")`);if(!Y.atomicBatch)_.push("atomicBatch must be true");if(!Y.conditionalBatch)_.push("conditionalBatch must be true");if(_.length>0)throw Error(`Storage is not durable enough for recovery: ${_.join("; ")}.`)}var L="default";async function v(X,Y){return await X.get(Y)!==null}async function*V(X,Y,_){for await(let[Z]of X.scan(Y,_))yield Z}async function R(X,Y){let _=0;for await(let Z of V(X,Y))_++;return _}async function q(X,Y){let _=[];for await(let Z of V(X,Y))_.push({type:"delete",key:Z});if(_.length===0)return 0;return await X.batch(_),_.length}async function P(X,Y,_){let Z=[];for await(let $ of V(X,Y,_))Z.push({type:"delete",key:$});if(Z.length===0)return 0;return await X.batch(Z),Z.length}var $X=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-has-services:","wf-headers:","wf-idx-","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var D=1e4,xX=1e4;class b extends Error{code="StorageBatchOperationLimitExceededError";cap=D;count;target;constructor(X,Y){super(`${X} count ${Y} exceeds MAX_BATCH_OPERATIONS (${D}).`);this.name="StorageBatchOperationLimitExceededError",this.target=X,this.count=Y}}function U(X,Y){if(Y>D)throw new b(X,Y)}function x(X){return X.length>0?X.slice(0,-1)+String.fromCharCode(X.charCodeAt(X.length-1)+1):"\xFF"}function yX(X,Y={}){if(Y.gt!==void 0&&X<=Y.gt)return!1;if(Y.gte!==void 0&&X<Y.gte)return!1;if(Y.lt!==void 0&&X>=Y.lt)return!1;if(Y.lte!==void 0&&X>Y.lte)return!1;return!0}function y(X,Y){if(X===null||Y===null)return X===Y;if(X.byteLength!==Y.byteLength)return!1;for(let _=0;_<X.byteLength;_++)if(X[_]!==Y[_])return!1;return!0}async function m(X,Y){if(X.has)return X.has(Y);return v(X,Y)}function I(X,Y,_){if(X.keys)return X.keys(Y,_);return V(X,Y,_)}async function g(X,Y){if(X.count)return X.count(Y);return R(X,Y)}async function u(X,Y){if(X.deletePrefix)return X.deletePrefix(Y);return q(X,Y)}async function mX(X,Y){U("batch operations",Y.length),await X.batch(Y)}async function k(X,Y,_){if(U("conditionalBatch conditions",Y.length),U("conditionalBatch operations",_.length),E(X,"conditionalBatch","storageConditionalBatch"),!X.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return X.conditionalBatch(Y,_)}function J(X){return encodeURIComponent(X)}function IX(X){return decodeURIComponent(X)}function gX(X){try{return decodeURIComponent(X)}catch{return null}}var H=(X)=>String(X).padStart(16,"0"),MX="0",FX="1",h=(X,Y,_,Z)=>`sig:${J(X)}:${J(Y)}:${Z}:${J(_)}`,uX={workflow:(X)=>`wf:${J(X)}`,checkpoint:(X)=>`wf:${J(X)}:ckpt`,checkpointHistory:(X,Y)=>`wf:${J(X)}:ckpt:${String(Y).padStart(10,"0")}`,timelinePrefix:(X)=>`wf:${J(X)}:timeline:`,timeline:(X,Y)=>`wf:${J(X)}:timeline:${String(Y).padStart(10,"0")}`,schedule:(X)=>`schedule:${J(X)}`,scheduleTick:(X,Y)=>`schedule-due:${String(X).padStart(16,"0")}:${J(Y)}`,scheduleRun:(X)=>`schedule-run:${J(X)}`,scheduleRunLink:(X)=>`schedule-run-link:${J(X)}`,scheduleRunBySchedulePrefix:(X)=>`schedule-run-by-schedule:${J(X)}:`,scheduleRunBySchedule:(X,Y)=>`schedule-run-by-schedule:${J(X)}:${J(Y)}`,operation:(X,Y,_)=>`op:${X}:${H(Y)}:${_}`,operationInflight:(X)=>`op:inflight:${X}`,operationQueued:(X)=>`op:queued:${X}`,operationResolved:(X)=>`op:resolved:${X}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(X)=>`op:dead-letter:${X}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(X,Y,_)=>`audit:bulk:${H(X)}:${J(Y)}:${J(_)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(X,Y)=>`op:resolved-by-time:${H(X)}:${J(Y)}`,asyncActivity:(X,Y)=>`async-act:v1:${J(X)}:${J(Y)}`,asyncActivityResolution:(X,Y)=>`async-act:v1:${J(X)}:${J(Y)}:resolution`,activityReconciliationPrefix:(X)=>`actrec:v1:${J(X)}:`,activityReconciliation:(X,Y,_)=>`actrec:v1:${J(X)}:${J(Y)}:${_}`,eventPrefix:(X)=>`ev:${J(X)}:`,event:(X,Y)=>`ev:${J(X)}:${String(Y).padStart(10,"0")}`,eventHead:(X)=>`ev:${J(X)}:head`,eventWatermark:(X)=>`ev:${J(X)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(X)=>`fleet-event:${String(X).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(X)=>`fleet-event-by-workflow:${J(X)}:`,fleetEventByWorkflow:(X,Y)=>`fleet-event-by-workflow:${J(X)}:${String(Y).padStart(10,"0")}`,signal:(X,Y,_)=>h(X,Y,_,FX),startSignal:(X,Y,_)=>h(X,Y,_,MX),signalSequence:(X)=>`sigseq:v1:${J(X)}`,signalAcceptedResponsePrefix:(X)=>`sigres:v1:${J(X)}:`,signalAcceptedResponse:(X,Y,_)=>`sigres:v1:${J(X)}:${J(Y)}:${J(_)}`,deadline:(X,Y)=>`wf-deadline:${H(X)}:${J(Y)}`,terminalCleanup:(X,Y)=>`wf-cleanup:${H(X)}:${J(Y)}`,teardownTimer:(X,Y)=>`wf-teardown:${H(X)}:${J(Y)}`,delayedStart:(X,Y)=>`wf-delayed:${H(X)}:${J(Y)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(X,Y)=>`wf-terminal:${H(X)}:${J(Y)}`,attribute:(X)=>`attr:${J(X)}`,attributeIndex:(X,Y,_)=>`idx:${X}:${Y}:${J(_)}`,tagIndex:(X,Y)=>`tag:${J(X)}:${J(Y)}`,updatePrefix:(X)=>`upd:${J(X)}:`,update:(X,Y)=>`upd:${J(X)}:${Y}`,updateResponse:(X)=>`upr:${X}`,updateIdempotency:(X,Y)=>`upk:${J(X)}:${Y}`,startIdempotency:(X)=>`start-idem:${J(X)}`,startIdempotencySignalId:(X)=>`start-idem:${X}`,livenessPrefix:()=>"liveness:",liveness:(X)=>`liveness:${J(X)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(X,Y,_)=>`budget:${X}:${Y}:${_}`,review:(X,Y)=>`review:${J(X)}:${Y}`,workflowHeaders:(X)=>`wf-headers:${J(X)}`,childCancellationPrefix:(X)=>`child-cancel:${J(X)}:`,childCancellation:(X,Y)=>`child-cancel:${J(X)}:${J(Y)}`,childWorkflowByParentPrefix:(X,Y)=>`child-by-parent:${J(X)}:${Y===void 0?"":`${J(Y)}:`}`,childWorkflowByParent:(X,Y,_)=>`child-by-parent:${J(X)}:${Y===void 0?"":`${J(Y)}:`}${J(_)}`,terminalCleanupNeeded:(X)=>`wf-cleanup-needed:${J(X)}`,workflowConcurrency:(X,Y)=>`wf-concurrency:${J(X)}:${J(Y)}`,workflowConcurrencyHolder:(X)=>`wf-concurrency-holder:${J(X)}`,workflowHasServices:(X)=>`wf-has-services:${J(X)}`,finalizerState:(X)=>`wf-finalizer-state:${J(X)}`,teardownOwed:(X)=>`wf-teardown-needed:${J(X)}`,teardownSucceeded:(X)=>`wf-teardown-succeeded:${J(X)}`,teardownDeadLetter:(X)=>`wf-teardown-deadletter:${J(X)}`,offload:(X,Y)=>`offload:${J(X)}:${Y}`,archive:(X,Y)=>`archive:${J(X)}:${Y}`,stateExecution:(X,Y)=>`state:execution:${J(X)}:${J(Y)}`,stateWorkflow:(X,Y)=>`state:workflow-scope:${L}:${J(X)}:${J(Y)}`,streamChunkPrefix:(X,Y)=>`blob:${J(X)}:${Y}:chunk:`,streamChunk:(X,Y,_)=>`blob:${J(X)}:${Y}:chunk:${String(_).padStart(10,"0")}`,streamTail:(X,Y)=>`blob:${J(X)}:${Y}:tail`,streamMetadata:(X,Y)=>`blob:${J(X)}:${Y}:meta`,budgetCharged:(X)=>`budget-charged:${X}`,toolEffect:(X,Y,_)=>`tool-effect:${J(X)}:${Y}:${_}`,workflowVisibilityStatus:(X,Y)=>`wf-idx-status:${J(X)}:${J(Y)}`,workflowVisibilityType:(X,Y)=>`wf-idx-type:${J(X)}:${J(Y)}`,workflowVisibilityCreated:(X,Y)=>`wf-idx-created:${H(X)}:${J(Y)}`,workflowVisibilityUpdated:(X,Y)=>`wf-idx-updated:${H(X)}:${J(Y)}`,workflowVisibilityDeadline:(X,Y)=>`wf-idx-deadline:${H(X)}:${J(Y)}`,workflowVisibilityManifest:(X)=>`wf-idx-manifest:${J(X)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function HX(X){if(X===void 0)return;if(typeof X!=="number"||!Number.isInteger(X)||X<0)throw Error("deleteRange limit must be a finite non-negative integer");return X===0?0:X}function Q(X){let Y={},_=!1;for(let $ of["gt","gte","lt","lte"]){let G=X[$];if(G===void 0)continue;if(typeof G!=="string")throw Error("deleteRange bounds must be strings");Y[$]=G,_=!0}if(!_)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let Z=HX(X.limit);if(Z!==void 0)Y.limit=Z;return Y}async function c(X,Y,_){let Z=Q(_);if(X.deleteRange)return X.deleteRange(Y,Z);return P(X,Y,Z)}function C(X){return X.replaceAll(/:+$/g,"")}function UX(X,Y){let _=C(X),Z=C(Y);if(_.length===0)return Z;if(Z.length===0)return _;return`${_}:${Z}`}class A{#X;#Y;constructor(X,Y){this.#X=X,this.#Y=C(Y)}#_(X){if(this.#Y.length===0)return X;return X.length===0?`${this.#Y}:`:`${this.#Y}:${X}`}#Z(X){if(this.#Y.length===0)return X;return X.slice(this.#Y.length+1)}#G(X={}){let Y={};if(X.limit!==void 0)Y.limit=X.limit;if(X.reverse!==void 0)Y.reverse=X.reverse;if(X.gt!==void 0)Y.gt=this.#_(X.gt);if(X.gte!==void 0)Y.gte=this.#_(X.gte);if(X.lt!==void 0)Y.lt=this.#_(X.lt);if(X.lte!==void 0)Y.lte=this.#_(X.lte);return Y}#$(X){let Y={};if(X.limit!==void 0)Y.limit=X.limit;if(X.gt!==void 0)Y.gt=this.#_(X.gt);if(X.gte!==void 0)Y.gte=this.#_(X.gte);if(X.lt!==void 0)Y.lt=this.#_(X.lt);if(X.lte!==void 0)Y.lte=this.#_(X.lte);return Y}capabilities(){return this.#X.capabilities()}scoped(X){return new A(this.#X,UX(this.#Y,X))}async get(X){return this.#X.get(this.#_(X))}async put(X,Y){await this.#X.put(this.#_(X),Y)}async delete(X){await this.#X.delete(this.#_(X))}async*scan(X,Y){for await(let[_,Z]of this.#X.scan(this.#_(X),this.#G(Y)))yield[this.#Z(_),Z]}async batch(X){U("batch operations",X.length),await this.#X.batch(X.map((Y)=>{if(Y.type==="put")return{type:"put",key:this.#_(Y.key),value:Y.value};return{type:"delete",key:this.#_(Y.key)}}))}async conditionalBatch(X,Y){return k(this.#X,X.map((_)=>({key:this.#_(_.key),expectedValue:_.expectedValue})),Y.map((_)=>{if(_.type==="put")return{type:"put",key:this.#_(_.key),value:_.value};return{type:"delete",key:this.#_(_.key)}}))}async has(X){return m(this.#X,this.#_(X))}async deletePrefix(X){return u(this.#X,this.#_(X))}async deleteRange(X,Y){let _=this.#$(Q(Y));return c(this.#X,this.#_(X),_)}async*keys(X,Y){for await(let _ of I(this.#X,this.#_(X),this.#G(Y)))yield this.#Z(_)}async count(X){return g(this.#X,this.#_(X))}[Symbol.dispose](){this.#X[Symbol.dispose]()}}function w(X,Y){return new A(X,Y)}function f(X,Y){let _,Z,$=!1,G=()=>{if($)throw Error(`${Y.storageName} pool has been disposed and cannot be reused. Construct a new adapter.`);return _??=Y.loadPool(X).catch((M)=>{throw _=void 0,QX(M,Y)}),_};return{query:async(M,F)=>{return(await G()).query(M,F)},connect:async()=>{return(await G()).connect()},end:async()=>{return $=!0,Z??=(async()=>{if(_===void 0)return;await(await _.catch(()=>{return}))?.end()})(),Z}}}var VX=/cannot find module|module_not_found|failed to resolve|could not resolve/i;function QX(X,Y){let _=X instanceof Error?X.message:String(X);if(VX.test(_))return Error(`${Y.storageName} requires the optional peer dependency "${Y.driverName}". Install it in your application with: bun add ${Y.driverName} (or npm install ${Y.driverName}).`,{cause:X});return X instanceof Error?X:Error(_)}function N(X){return X.rowCount??X.affectedRows??X.rows.length}function j(X){if(X instanceof Uint8Array)return new Uint8Array(X);return new Uint8Array(X)}function B(X){return Buffer.from(X)}function K(X){let Y=new Map,_=new Set;for(let Z of X)if(Z.type==="put")_.delete(Z.key),Y.set(Z.key,Z.value);else Y.delete(Z.key),_.add(Z.key);return{puts:Y,deletes:_}}async function d(X,Y,_){if(_.length===0)return!0;let Z=_.map((M)=>M.key),$=await X.query(Y.selectValuesByKeys,[Z]),G=new Map;for(let M of $.rows){let F=M.value;if(F!==null&&F!==void 0)G.set(M.key,j(F))}for(let M of _){let F=G.get(M.key)??null;if(!y(F,M.expectedValue))return!1}return!0}async function S(X,Y,_){if(_.puts.size>0){let Z=[],$=[];for(let[G,M]of _.puts)Z.push(G),$.push(B(M));await X.query(Y.upsertValuesByKeys,[Z,$])}if(_.deletes.size>0)await X.query(Y.deleteValuesByKeys,[[..._.deletes]])}var p=/^[a-z_][a-z0-9_]*$/i;function l(X,Y,_){if(!p.test(X))throw Error(`${_} storage ${Y} name "${X}" is not a valid ${_} identifier. Use only letters, digits, and underscores, starting with a letter or underscore (matching ${p.source}).`)}var a="kv";function z(X,Y){l(X,Y,"Postgres")}function n(X){let{schema:Y,table:_}=X;if(Y===void 0&&_===void 0)return a;let Z=_??a;if(z(Z,"table"),Y===void 0)return`"${Z}"`;return z(Y,"schema"),`"${Y}"."${Z}"`}function W(X){return[X,x(X)]}function i(X,Y){let{gt:_,gte:Z,lt:$,lte:G}=Y,M=W(X),F=["key >= $1 AND key < $2"];if(_!==void 0)M.push(_),F.push(`key > $${M.length}`);if(Z!==void 0)M.push(Z),F.push(`key >= $${M.length}`);if($!==void 0)M.push($),F.push(`key < $${M.length}`);if(G!==void 0)M.push(G),F.push(`key <= $${M.length}`);return{conditions:F,parameters:M}}function s(X,Y={}){let{limit:_,reverse:Z}=Y,{conditions:$,parameters:G}=i(X,Y),M=Z?"DESC":"ASC",F="";if(_!==void 0)G.push(_),F=` LIMIT $${G.length}`;return{parameters:G,whereOrderLimit:`WHERE ${$.join(" AND ")} ORDER BY key ${M}${F}`}}function r(X){let Y=`CREATE TABLE IF NOT EXISTS ${X} (
|
|
2
|
+
var ZX=import.meta.require,SX=(X,Y,_)=>{if(Y!=null){if(typeof Y!=="object"&&typeof Y!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let Z;if(_)Z=Y[Symbol.asyncDispose];if(Z===void 0)Z=Y[Symbol.dispose];if(typeof Z!=="function")throw TypeError("Object not disposable");X.push([_,Z,Y])}else if(_)X.push([_]);return Y},zX=(X,Y,_)=>{let Z=(G)=>Y=_?new SuppressedError(G,Y,"An error was suppressed during disposal"):(_=!0,G),$=(G)=>{while(G=X.pop())try{var M=G[1]&&G[1].call(G[2]);if(G[0])return Promise.resolve(M).then($,(F)=>(Z(F),$()))}catch(F){Z(F)}if(_)throw Y};return $()};function E(X,Y,_){if(!X.capabilities()[Y])throw Error(`Feature "${_}" requires storage capability "${Y}", but this storage backend does not provide it.`)}function GX(X){let Y=X.capabilities(),_=[];if(Y.persistence!=="local"&&Y.persistence!=="remote")_.push(`persistence must be "local" or "remote" (got "${Y.persistence}")`);if(Y.readAfterWrite!=="linearizable")_.push(`readAfterWrite must be "linearizable" (got "${Y.readAfterWrite}")`);if(Y.scanConsistency!=="snapshot")_.push(`scanConsistency must be "snapshot" (got "${Y.scanConsistency}")`);if(!Y.atomicBatch)_.push("atomicBatch must be true");if(!Y.conditionalBatch)_.push("conditionalBatch must be true");if(_.length>0)throw Error(`Storage is not durable enough for recovery: ${_.join("; ")}.`)}var L="default";async function v(X,Y){return await X.get(Y)!==null}async function*V(X,Y,_){for await(let[Z]of X.scan(Y,_))yield Z}async function R(X,Y){let _=0;for await(let Z of V(X,Y))_++;return _}async function q(X,Y){let _=[];for await(let Z of V(X,Y))_.push({type:"delete",key:Z});if(_.length===0)return 0;return await X.batch(_),_.length}async function P(X,Y,_){let Z=[];for await(let $ of V(X,Y,_))Z.push({type:"delete",key:$});if(Z.length===0)return 0;return await X.batch(Z),Z.length}var $X=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-has-services:","wf-headers:","wf-idx-","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var D=1e4,xX=1e4;class b extends Error{code="StorageBatchOperationLimitExceededError";cap=D;count;target;constructor(X,Y){super(`${X} count ${Y} exceeds MAX_BATCH_OPERATIONS (${D}).`);this.name="StorageBatchOperationLimitExceededError",this.target=X,this.count=Y}}function U(X,Y){if(Y>D)throw new b(X,Y)}function x(X){return X.length>0?X.slice(0,-1)+String.fromCharCode(X.charCodeAt(X.length-1)+1):"\xFF"}function yX(X,Y={}){if(Y.gt!==void 0&&X<=Y.gt)return!1;if(Y.gte!==void 0&&X<Y.gte)return!1;if(Y.lt!==void 0&&X>=Y.lt)return!1;if(Y.lte!==void 0&&X>Y.lte)return!1;return!0}function y(X,Y){if(X===null||Y===null)return X===Y;if(X.byteLength!==Y.byteLength)return!1;for(let _=0;_<X.byteLength;_++)if(X[_]!==Y[_])return!1;return!0}async function m(X,Y){if(X.has)return X.has(Y);return v(X,Y)}function I(X,Y,_){if(X.keys)return X.keys(Y,_);return V(X,Y,_)}async function g(X,Y){if(X.count)return X.count(Y);return R(X,Y)}async function u(X,Y){if(X.deletePrefix)return X.deletePrefix(Y);return q(X,Y)}async function mX(X,Y){U("batch operations",Y.length),await X.batch(Y)}async function k(X,Y,_){if(U("conditionalBatch conditions",Y.length),U("conditionalBatch operations",_.length),E(X,"conditionalBatch","storageConditionalBatch"),!X.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return X.conditionalBatch(Y,_)}function J(X){return encodeURIComponent(X)}function IX(X){return decodeURIComponent(X)}function gX(X){try{return decodeURIComponent(X)}catch{return null}}var H=(X)=>String(X).padStart(16,"0"),MX="0",FX="1",h=(X,Y,_,Z)=>`sig:${J(X)}:${J(Y)}:${Z}:${J(_)}`,uX={workflow:(X)=>`wf:${J(X)}`,checkpoint:(X)=>`wf:${J(X)}:ckpt`,checkpointHistory:(X,Y)=>`wf:${J(X)}:ckpt:${String(Y).padStart(10,"0")}`,timelinePrefix:(X)=>`wf:${J(X)}:timeline:`,timeline:(X,Y)=>`wf:${J(X)}:timeline:${String(Y).padStart(10,"0")}`,schedule:(X)=>`schedule:${J(X)}`,scheduleTick:(X,Y)=>`schedule-due:${String(X).padStart(16,"0")}:${J(Y)}`,scheduleRun:(X)=>`schedule-run:${J(X)}`,scheduleRunLink:(X)=>`schedule-run-link:${J(X)}`,scheduleRunBySchedulePrefix:(X)=>`schedule-run-by-schedule:${J(X)}:`,scheduleRunBySchedule:(X,Y)=>`schedule-run-by-schedule:${J(X)}:${J(Y)}`,operation:(X,Y,_)=>`op:${X}:${H(Y)}:${_}`,operationInflight:(X)=>`op:inflight:${X}`,operationQueued:(X)=>`op:queued:${X}`,operationResolved:(X)=>`op:resolved:${X}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(X)=>`op:dead-letter:${X}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(X,Y,_)=>`audit:bulk:${H(X)}:${J(Y)}:${J(_)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(X,Y)=>`op:resolved-by-time:${H(X)}:${J(Y)}`,asyncActivity:(X,Y)=>`async-act:v1:${J(X)}:${J(Y)}`,asyncActivityResolution:(X,Y)=>`async-act:v1:${J(X)}:${J(Y)}:resolution`,activityReconciliationPrefix:(X)=>`actrec:v1:${J(X)}:`,activityReconciliation:(X,Y,_)=>`actrec:v1:${J(X)}:${J(Y)}:${_}`,eventPrefix:(X)=>`ev:${J(X)}:`,event:(X,Y)=>`ev:${J(X)}:${String(Y).padStart(10,"0")}`,eventHead:(X)=>`ev:${J(X)}:head`,eventWatermark:(X)=>`ev:${J(X)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(X)=>`fleet-event:${String(X).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(X)=>`fleet-event-by-workflow:${J(X)}:`,fleetEventByWorkflow:(X,Y)=>`fleet-event-by-workflow:${J(X)}:${String(Y).padStart(10,"0")}`,signal:(X,Y,_)=>h(X,Y,_,FX),startSignal:(X,Y,_)=>h(X,Y,_,MX),signalSequence:(X)=>`sigseq:v1:${J(X)}`,signalAcceptedResponsePrefix:(X)=>`sigres:v1:${J(X)}:`,signalAcceptedResponse:(X,Y,_)=>`sigres:v1:${J(X)}:${J(Y)}:${J(_)}`,deadline:(X,Y)=>`wf-deadline:${H(X)}:${J(Y)}`,terminalCleanup:(X,Y)=>`wf-cleanup:${H(X)}:${J(Y)}`,teardownTimer:(X,Y)=>`wf-teardown:${H(X)}:${J(Y)}`,delayedStart:(X,Y)=>`wf-delayed:${H(X)}:${J(Y)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(X,Y)=>`wf-terminal:${H(X)}:${J(Y)}`,attribute:(X)=>`attr:${J(X)}`,attributeIndex:(X,Y,_)=>`idx:${X}:${Y}:${J(_)}`,tagIndex:(X,Y)=>`tag:${J(X)}:${J(Y)}`,updatePrefix:(X)=>`upd:${J(X)}:`,update:(X,Y)=>`upd:${J(X)}:${Y}`,updateResponse:(X)=>`upr:${X}`,updateIdempotency:(X,Y)=>`upk:${J(X)}:${Y}`,startIdempotency:(X)=>`start-idem:${J(X)}`,startIdempotencySignalId:(X)=>`start-idem:${X}`,livenessPrefix:()=>"liveness:",liveness:(X)=>`liveness:${J(X)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(X,Y,_)=>`budget:${X}:${Y}:${_}`,review:(X,Y)=>`review:${J(X)}:${Y}`,workflowHeaders:(X)=>`wf-headers:${J(X)}`,childCancellationPrefix:(X)=>`child-cancel:${J(X)}:`,childCancellation:(X,Y)=>`child-cancel:${J(X)}:${J(Y)}`,childWorkflowByParentPrefix:(X,Y)=>`child-by-parent:${J(X)}:${Y===void 0?"":`${J(Y)}:`}`,childWorkflowByParent:(X,Y,_)=>`child-by-parent:${J(X)}:${Y===void 0?"":`${J(Y)}:`}${J(_)}`,terminalCleanupNeeded:(X)=>`wf-cleanup-needed:${J(X)}`,workflowConcurrency:(X,Y)=>`wf-concurrency:${J(X)}:${J(Y)}`,workflowConcurrencyHolder:(X)=>`wf-concurrency-holder:${J(X)}`,workflowHasServices:(X)=>`wf-has-services:${J(X)}`,finalizerState:(X)=>`wf-finalizer-state:${J(X)}`,teardownOwed:(X)=>`wf-teardown-needed:${J(X)}`,teardownSucceeded:(X)=>`wf-teardown-succeeded:${J(X)}`,teardownDeadLetter:(X)=>`wf-teardown-deadletter:${J(X)}`,offload:(X,Y)=>`offload:${J(X)}:${Y}`,archive:(X,Y)=>`archive:${J(X)}:${Y}`,stateExecution:(X,Y)=>`state:execution:${J(X)}:${J(Y)}`,stateWorkflow:(X,Y)=>`state:workflow-scope:${L}:${J(X)}:${J(Y)}`,streamChunkPrefix:(X,Y)=>`blob:${J(X)}:${Y}:chunk:`,streamChunk:(X,Y,_)=>`blob:${J(X)}:${Y}:chunk:${String(_).padStart(10,"0")}`,streamTail:(X,Y)=>`blob:${J(X)}:${Y}:tail`,streamMetadata:(X,Y)=>`blob:${J(X)}:${Y}:meta`,budgetCharged:(X)=>`budget-charged:${X}`,toolEffect:(X,Y,_)=>`tool-effect:${J(X)}:${Y}:${_}`,workflowVisibilityStatus:(X,Y)=>`wf-idx-status:${J(X)}:${J(Y)}`,workflowVisibilityType:(X,Y)=>`wf-idx-type:${J(X)}:${J(Y)}`,workflowVisibilityCreated:(X,Y)=>`wf-idx-created:${H(X)}:${J(Y)}`,workflowVisibilityUpdated:(X,Y)=>`wf-idx-updated:${H(X)}:${J(Y)}`,workflowVisibilityDeadline:(X,Y)=>`wf-idx-deadline:${H(X)}:${J(Y)}`,workflowVisibilityManifest:(X)=>`wf-idx-manifest:${J(X)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function HX(X){if(X===void 0)return;if(typeof X!=="number"||!Number.isInteger(X)||X<0)throw Error("deleteRange limit must be a finite non-negative integer");return X===0?0:X}function Q(X){let Y={},_=!1;for(let $ of["gt","gte","lt","lte"]){let G=X[$];if(G===void 0)continue;if(typeof G!=="string")throw Error("deleteRange bounds must be strings");Y[$]=G,_=!0}if(!_)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let Z=HX(X.limit);if(Z!==void 0)Y.limit=Z;return Y}async function c(X,Y,_){let Z=Q(_);if(X.deleteRange)return X.deleteRange(Y,Z);return P(X,Y,Z)}function C(X){return X.replaceAll(/:+$/g,"")}function UX(X,Y){let _=C(X),Z=C(Y);if(_.length===0)return Z;if(Z.length===0)return _;return`${_}:${Z}`}class A{#X;#Y;constructor(X,Y){this.#X=X,this.#Y=C(Y)}#_(X){if(this.#Y.length===0)return X;return X.length===0?`${this.#Y}:`:`${this.#Y}:${X}`}#Z(X){return X.map((Y)=>{if(Y.type==="put")return{type:"put",key:this.#_(Y.key),value:Y.value};return{type:"delete",key:this.#_(Y.key)}})}#G(X){if(this.#Y.length===0)return X;return X.slice(this.#Y.length+1)}#$(X={}){let Y={};if(X.limit!==void 0)Y.limit=X.limit;if(X.reverse!==void 0)Y.reverse=X.reverse;if(X.gt!==void 0)Y.gt=this.#_(X.gt);if(X.gte!==void 0)Y.gte=this.#_(X.gte);if(X.lt!==void 0)Y.lt=this.#_(X.lt);if(X.lte!==void 0)Y.lte=this.#_(X.lte);return Y}#J(X){let Y={};if(X.limit!==void 0)Y.limit=X.limit;if(X.gt!==void 0)Y.gt=this.#_(X.gt);if(X.gte!==void 0)Y.gte=this.#_(X.gte);if(X.lt!==void 0)Y.lt=this.#_(X.lt);if(X.lte!==void 0)Y.lte=this.#_(X.lte);return Y}capabilities(){return this.#X.capabilities()}scoped(X){return new A(this.#X,UX(this.#Y,X))}async get(X){return this.#X.get(this.#_(X))}async put(X,Y){await this.#X.put(this.#_(X),Y)}async delete(X){await this.#X.delete(this.#_(X))}async*scan(X,Y){for await(let[_,Z]of this.#X.scan(this.#_(X),this.#$(Y)))yield[this.#G(_),Z]}async batch(X){U("batch operations",X.length),await this.#X.batch(this.#Z(X))}async conditionalBatch(X,Y){return k(this.#X,X.map((_)=>({key:this.#_(_.key),expectedValue:_.expectedValue})),this.#Z(Y))}async has(X){return m(this.#X,this.#_(X))}async deletePrefix(X){return u(this.#X,this.#_(X))}async deleteRange(X,Y){let _=this.#J(Q(Y));return c(this.#X,this.#_(X),_)}async*keys(X,Y){for await(let _ of I(this.#X,this.#_(X),this.#$(Y)))yield this.#G(_)}async count(X){return g(this.#X,this.#_(X))}[Symbol.dispose](){this.#X[Symbol.dispose]()}}function w(X,Y){return new A(X,Y)}function f(X,Y){let _,Z,$=!1,G=()=>{if($)throw Error(`${Y.storageName} pool has been disposed and cannot be reused. Construct a new adapter.`);return _??=Y.loadPool(X).catch((M)=>{throw _=void 0,QX(M,Y)}),_};return{query:async(M,F)=>{return(await G()).query(M,F)},connect:async()=>{return(await G()).connect()},end:async()=>{return $=!0,Z??=(async()=>{if(_===void 0)return;await(await _.catch(()=>{return}))?.end()})(),Z}}}var VX=/cannot find module|module_not_found|failed to resolve|could not resolve/i;function QX(X,Y){let _=X instanceof Error?X.message:String(X);if(VX.test(_))return Error(`${Y.storageName} requires the optional peer dependency "${Y.driverName}". Install it in your application with: bun add ${Y.driverName} (or npm install ${Y.driverName}).`,{cause:X});return X instanceof Error?X:Error(_)}function N(X){return X.rowCount??X.affectedRows??X.rows.length}function j(X){if(X instanceof Uint8Array)return new Uint8Array(X);return new Uint8Array(X)}function B(X){return Buffer.from(X)}function K(X){let Y=new Map,_=new Set;for(let Z of X)if(Z.type==="put")_.delete(Z.key),Y.set(Z.key,Z.value);else Y.delete(Z.key),_.add(Z.key);return{puts:Y,deletes:_}}async function d(X,Y,_){if(_.length===0)return!0;let Z=_.map((M)=>M.key),$=await X.query(Y.selectValuesByKeys,[Z]),G=new Map;for(let M of $.rows){let F=M.value;if(F!==null&&F!==void 0)G.set(M.key,j(F))}for(let M of _){let F=G.get(M.key)??null;if(!y(F,M.expectedValue))return!1}return!0}async function S(X,Y,_){if(_.puts.size>0){let Z=[],$=[];for(let[G,M]of _.puts)Z.push(G),$.push(B(M));await X.query(Y.upsertValuesByKeys,[Z,$])}if(_.deletes.size>0)await X.query(Y.deleteValuesByKeys,[[..._.deletes]])}var p=/^[a-z_][a-z0-9_]*$/i;function l(X,Y,_){if(!p.test(X))throw Error(`${_} storage ${Y} name "${X}" is not a valid ${_} identifier. Use only letters, digits, and underscores, starting with a letter or underscore (matching ${p.source}).`)}var a="kv";function z(X,Y){l(X,Y,"Postgres")}function n(X){let{schema:Y,table:_}=X;if(Y===void 0&&_===void 0)return a;let Z=_??a;if(z(Z,"table"),Y===void 0)return`"${Z}"`;return z(Y,"schema"),`"${Y}"."${Z}"`}function W(X){return[X,x(X)]}function i(X,Y){let{gt:_,gte:Z,lt:$,lte:G}=Y,M=W(X),F=["key >= $1 AND key < $2"];if(_!==void 0)M.push(_),F.push(`key > $${M.length}`);if(Z!==void 0)M.push(Z),F.push(`key >= $${M.length}`);if($!==void 0)M.push($),F.push(`key < $${M.length}`);if(G!==void 0)M.push(G),F.push(`key <= $${M.length}`);return{conditions:F,parameters:M}}function s(X,Y={}){let{limit:_,reverse:Z}=Y,{conditions:$,parameters:G}=i(X,Y),M=Z?"DESC":"ASC",F="";if(_!==void 0)G.push(_),F=` LIMIT $${G.length}`;return{parameters:G,whereOrderLimit:`WHERE ${$.join(" AND ")} ORDER BY key ${M}${F}`}}function r(X){let Y=`CREATE TABLE IF NOT EXISTS ${X} (
|
|
3
3
|
key TEXT COLLATE "C" PRIMARY KEY,
|
|
4
4
|
value BYTEA NOT NULL
|
|
5
5
|
)`,_=`
|
package/dist/storage/resolve.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var LF=import.meta.require,zF=(F,Y,J)=>{if(Y!=null){if(typeof Y!=="object"&&typeof Y!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let $;if(J)$=Y[Symbol.asyncDispose];if($===void 0)$=Y[Symbol.dispose];if(typeof $!=="function")throw TypeError("Object not disposable");F.push([J,$,Y])}else if(J)F.push([J]);return Y},BF=(F,Y,J)=>{let $=(X)=>Y=J?new SuppressedError(X,Y,"An error was suppressed during disposal"):(J=!0,X),j=(X)=>{while(X=F.pop())try{var Q=X[1]&&X[1].call(X[2]);if(X[0])return Promise.resolve(Q).then(j,(V)=>($(V),j()))}catch(V){$(V)}if(J)throw Y};return j()};function B(F,Y,J){if(!F.capabilities()[Y])throw Error(`Feature "${J}" requires storage capability "${Y}", but this storage backend does not provide it.`)}function p(F){let Y=F.capabilities(),J=[];if(Y.persistence!=="local"&&Y.persistence!=="remote")J.push(`persistence must be "local" or "remote" (got "${Y.persistence}")`);if(Y.readAfterWrite!=="linearizable")J.push(`readAfterWrite must be "linearizable" (got "${Y.readAfterWrite}")`);if(Y.scanConsistency!=="snapshot")J.push(`scanConsistency must be "snapshot" (got "${Y.scanConsistency}")`);if(!Y.atomicBatch)J.push("atomicBatch must be true");if(!Y.conditionalBatch)J.push("conditionalBatch must be true");if(J.length>0)throw Error(`Storage is not durable enough for recovery: ${J.join("; ")}.`)}var P="default";async function T(F,Y){return await F.get(Y)!==null}async function*C(F,Y,J){for await(let[$]of F.scan(Y,J))yield $}async function E(F,Y){let J=0;for await(let $ of C(F,Y))J++;return J}async function b(F,Y){let J=[];for await(let $ of C(F,Y))J.push({type:"delete",key:$});if(J.length===0)return 0;return await F.batch(J),J.length}async function h(F,Y,J){let $=[];for await(let j of C(F,Y,J))$.push({type:"delete",key:j});if($.length===0)return 0;return await F.batch($),$.length}var s=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-has-services:","wf-headers:","wf-idx-","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var A=1e4,EF=1e4;class v 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 U(F,Y){if(Y>A)throw new v(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 S(F,Y){if(F===null||Y===null)return F===Y;if(F.byteLength!==Y.byteLength)return!1;for(let J=0;J<F.byteLength;J++)if(F[J]!==Y[J])return!1;return!0}async function m(F,Y){if(F.has)return F.has(Y);return T(F,Y)}function x(F,Y,J){if(F.keys)return F.keys(Y,J);return C(F,Y,J)}async function y(F,Y){if(F.count)return F.count(Y);return E(F,Y)}async function I(F,Y){if(F.deletePrefix)return F.deletePrefix(Y);return b(F,Y)}async function bF(F,Y){U("batch operations",Y.length),await F.batch(Y)}async function c(F,Y,J){if(U("conditionalBatch conditions",Y.length),U("conditionalBatch operations",J.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,J)}function Z(F){return encodeURIComponent(F)}function hF(F){return decodeURIComponent(F)}function OF(F){try{return decodeURIComponent(F)}catch{return null}}var H=(F)=>String(F).padStart(16,"0"),a="0",n="1",O=(F,Y,J,$)=>`sig:${Z(F)}:${Z(Y)}:${$}:${Z(J)}`,vF={workflow:(F)=>`wf:${Z(F)}`,checkpoint:(F)=>`wf:${Z(F)}:ckpt`,checkpointHistory:(F,Y)=>`wf:${Z(F)}:ckpt:${String(Y).padStart(10,"0")}`,timelinePrefix:(F)=>`wf:${Z(F)}:timeline:`,timeline:(F,Y)=>`wf:${Z(F)}:timeline:${String(Y).padStart(10,"0")}`,schedule:(F)=>`schedule:${Z(F)}`,scheduleTick:(F,Y)=>`schedule-due:${String(F).padStart(16,"0")}:${Z(Y)}`,scheduleRun:(F)=>`schedule-run:${Z(F)}`,scheduleRunLink:(F)=>`schedule-run-link:${Z(F)}`,scheduleRunBySchedulePrefix:(F)=>`schedule-run-by-schedule:${Z(F)}:`,scheduleRunBySchedule:(F,Y)=>`schedule-run-by-schedule:${Z(F)}:${Z(Y)}`,operation:(F,Y,J)=>`op:${F}:${H(Y)}:${J}`,operationInflight:(F)=>`op:inflight:${F}`,operationQueued:(F)=>`op:queued:${F}`,operationResolved:(F)=>`op:resolved:${F}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(F)=>`op:dead-letter:${F}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(F,Y,J)=>`audit:bulk:${H(F)}:${Z(Y)}:${Z(J)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(F,Y)=>`op:resolved-by-time:${H(F)}:${Z(Y)}`,asyncActivity:(F,Y)=>`async-act:v1:${Z(F)}:${Z(Y)}`,asyncActivityResolution:(F,Y)=>`async-act:v1:${Z(F)}:${Z(Y)}:resolution`,activityReconciliationPrefix:(F)=>`actrec:v1:${Z(F)}:`,activityReconciliation:(F,Y,J)=>`actrec:v1:${Z(F)}:${Z(Y)}:${J}`,eventPrefix:(F)=>`ev:${Z(F)}:`,event:(F,Y)=>`ev:${Z(F)}:${String(Y).padStart(10,"0")}`,eventHead:(F)=>`ev:${Z(F)}:head`,eventWatermark:(F)=>`ev:${Z(F)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(F)=>`fleet-event:${String(F).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(F)=>`fleet-event-by-workflow:${Z(F)}:`,fleetEventByWorkflow:(F,Y)=>`fleet-event-by-workflow:${Z(F)}:${String(Y).padStart(10,"0")}`,signal:(F,Y,J)=>O(F,Y,J,n),startSignal:(F,Y,J)=>O(F,Y,J,a),signalSequence:(F)=>`sigseq:v1:${Z(F)}`,signalAcceptedResponsePrefix:(F)=>`sigres:v1:${Z(F)}:`,signalAcceptedResponse:(F,Y,J)=>`sigres:v1:${Z(F)}:${Z(Y)}:${Z(J)}`,deadline:(F,Y)=>`wf-deadline:${H(F)}:${Z(Y)}`,terminalCleanup:(F,Y)=>`wf-cleanup:${H(F)}:${Z(Y)}`,teardownTimer:(F,Y)=>`wf-teardown:${H(F)}:${Z(Y)}`,delayedStart:(F,Y)=>`wf-delayed:${H(F)}:${Z(Y)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(F,Y)=>`wf-terminal:${H(F)}:${Z(Y)}`,attribute:(F)=>`attr:${Z(F)}`,attributeIndex:(F,Y,J)=>`idx:${F}:${Y}:${Z(J)}`,tagIndex:(F,Y)=>`tag:${Z(F)}:${Z(Y)}`,updatePrefix:(F)=>`upd:${Z(F)}:`,update:(F,Y)=>`upd:${Z(F)}:${Y}`,updateResponse:(F)=>`upr:${F}`,updateIdempotency:(F,Y)=>`upk:${Z(F)}:${Y}`,startIdempotency:(F)=>`start-idem:${Z(F)}`,startIdempotencySignalId:(F)=>`start-idem:${F}`,livenessPrefix:()=>"liveness:",liveness:(F)=>`liveness:${Z(F)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(F,Y,J)=>`budget:${F}:${Y}:${J}`,review:(F,Y)=>`review:${Z(F)}:${Y}`,workflowHeaders:(F)=>`wf-headers:${Z(F)}`,childCancellationPrefix:(F)=>`child-cancel:${Z(F)}:`,childCancellation:(F,Y)=>`child-cancel:${Z(F)}:${Z(Y)}`,childWorkflowByParentPrefix:(F,Y)=>`child-by-parent:${Z(F)}:${Y===void 0?"":`${Z(Y)}:`}`,childWorkflowByParent:(F,Y,J)=>`child-by-parent:${Z(F)}:${Y===void 0?"":`${Z(Y)}:`}${Z(J)}`,terminalCleanupNeeded:(F)=>`wf-cleanup-needed:${Z(F)}`,workflowConcurrency:(F,Y)=>`wf-concurrency:${Z(F)}:${Z(Y)}`,workflowConcurrencyHolder:(F)=>`wf-concurrency-holder:${Z(F)}`,workflowHasServices:(F)=>`wf-has-services:${Z(F)}`,finalizerState:(F)=>`wf-finalizer-state:${Z(F)}`,teardownOwed:(F)=>`wf-teardown-needed:${Z(F)}`,teardownSucceeded:(F)=>`wf-teardown-succeeded:${Z(F)}`,teardownDeadLetter:(F)=>`wf-teardown-deadletter:${Z(F)}`,offload:(F,Y)=>`offload:${Z(F)}:${Y}`,archive:(F,Y)=>`archive:${Z(F)}:${Y}`,stateExecution:(F,Y)=>`state:execution:${Z(F)}:${Z(Y)}`,stateWorkflow:(F,Y)=>`state:workflow-scope:${P}:${Z(F)}:${Z(Y)}`,streamChunkPrefix:(F,Y)=>`blob:${Z(F)}:${Y}:chunk:`,streamChunk:(F,Y,J)=>`blob:${Z(F)}:${Y}:chunk:${String(J).padStart(10,"0")}`,streamTail:(F,Y)=>`blob:${Z(F)}:${Y}:tail`,streamMetadata:(F,Y)=>`blob:${Z(F)}:${Y}:meta`,budgetCharged:(F)=>`budget-charged:${F}`,toolEffect:(F,Y,J)=>`tool-effect:${Z(F)}:${Y}:${J}`,workflowVisibilityStatus:(F,Y)=>`wf-idx-status:${Z(F)}:${Z(Y)}`,workflowVisibilityType:(F,Y)=>`wf-idx-type:${Z(F)}:${Z(Y)}`,workflowVisibilityCreated:(F,Y)=>`wf-idx-created:${H(F)}:${Z(Y)}`,workflowVisibilityUpdated:(F,Y)=>`wf-idx-updated:${H(F)}:${Z(Y)}`,workflowVisibilityDeadline:(F,Y)=>`wf-idx-deadline:${H(F)}:${Z(Y)}`,workflowVisibilityManifest:(F)=>`wf-idx-manifest:${Z(F)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function t(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 W(F){let Y={},J=!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,J=!0}if(!J)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let $=t(F.limit);if($!==void 0)Y.limit=$;return Y}async function w(F,Y,J){let $=W(J);if(F.deleteRange)return F.deleteRange(Y,$);return h(F,Y,$)}function N(F){return F.replaceAll(/:+$/g,"")}function r(F,Y){let J=N(F),$=N(Y);if(J.length===0)return $;if($.length===0)return J;return`${J}:${$}`}class K{#F;#J;constructor(F,Y){this.#F=F,this.#J=N(Y)}#Y(F){if(this.#J.length===0)return F;return F.length===0?`${this.#J}:`:`${this.#J}:${F}`}#Z(F){if(this.#J.length===0)return F;return F.slice(this.#J.length+1)}#$(F={}){let Y={};if(F.limit!==void 0)Y.limit=F.limit;if(F.reverse!==void 0)Y.reverse=F.reverse;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}#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}capabilities(){return this.#F.capabilities()}scoped(F){return new K(this.#F,r(this.#J,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[J,$]of this.#F.scan(this.#Y(F),this.#$(Y)))yield[this.#Z(J),$]}async batch(F){U("batch operations",F.length),await this.#F.batch(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)}}))}async conditionalBatch(F,Y){return c(this.#F,F.map((J)=>({key:this.#Y(J.key),expectedValue:J.expectedValue})),Y.map((J)=>{if(J.type==="put")return{type:"put",key:this.#Y(J.key),value:J.value};return{type:"delete",key:this.#Y(J.key)}}))}async has(F){return m(this.#F,this.#Y(F))}async deletePrefix(F){return I(this.#F,this.#Y(F))}async deleteRange(F,Y){let J=this.#X(W(Y));return w(this.#F,this.#Y(F),J)}async*keys(F,Y){for await(let J of x(this.#F,this.#Y(F),this.#$(Y)))yield this.#Z(J)}async count(F){return y(this.#F,this.#Y(F))}[Symbol.dispose](){this.#F[Symbol.dispose]()}}function u(F,Y){return new K(F,Y)}class z{#F;constructor(){this.#F=new Map}capabilities(){return{persistence:"ephemeral",readAfterWrite:"linearizable",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#J(F,Y,J){return F>=Y&&F<J}#Y(F,Y){let J=[];for(let $ of this.#F.keys())if(this.#J($,F,Y))J.push($);return J.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:J,reverse:$}=Y,j=q(F),X=this.#Y(F,j);if(X=X.filter((V)=>L(V,Y)),$)X.reverse();let Q=0;for(let V of X){if(J!==void 0&&Q>=J)break;let M=this.#F.get(V);if(M!==void 0)yield[V,M],Q++}}async batch(F){U("batch operations",F.length),this.#Z(F)}#Z(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){U("conditionalBatch conditions",F.length),U("conditionalBatch operations",Y.length);for(let J of F){let $=this.#F.get(J.key)??null;if(!S($,J.expectedValue))return!1}return this.#Z(Y),!0}async has(F){return this.#F.has(F)}async deletePrefix(F){let Y=q(F),J=this.#Y(F,Y);for(let $ of J)this.#F.delete($);return J.length}async deleteRange(F,Y){let J=W(Y),$=q(F),j=this.#Y(F,$).filter((Q)=>L(Q,J)),X=J.limit===void 0?j:j.slice(0,J.limit);for(let Q of X)this.#F.delete(Q);return X.length}async*keys(F,Y={}){let{limit:J,reverse:$}=Y,j=q(F),X=this.#Y(F,j);if(X=X.filter((V)=>L(V,Y)),$)X.reverse();let Q=0;for(let V of X){if(J!==void 0&&Q>=J)break;yield V,Q++}}async count(F){let Y=q(F);return this.#Y(F,Y).length}scoped(F){return u(this,F)}get size(){return this.#F.size}clear(){this.#F.clear()}snapshot(){let F=new Map;for(let[Y,J]of this.#F)F.set(Y,new Uint8Array(J));return F}[Symbol.dispose](){this.#F.clear()}}function _(F,Y){return import.meta.url.endsWith(".ts")?F:Y}async function G(F){return await import(F)}var i=_("./bun-sql.ts","./bun-sql.js"),e=_("./node-sqlite.ts","./node-sqlite.js"),o=_("./lmdb.ts","./lmdb.js"),FF=_("./turso.ts","./turso.js"),YF=_("./neon.ts","./neon.js"),k=_("./indexeddb.ts","./indexeddb.js"),g=_("./web-extension.ts","./web-extension.js"),JF=_("./http.ts","./http.js"),ZF=_("./auto.ts","./auto.js");function l(){return typeof Bun<"u"}function f(){return typeof globalThis.process==="object"&&globalThis.process!==null&&typeof globalThis.process.versions==="object"&&typeof globalThis.process.versions.node==="string"}function $F(){let F=globalThis;return F.browser?.storage!==void 0||F.chrome?.storage!==void 0}function XF(){return typeof globalThis.indexedDB<"u"}async function jF(F){if(l()){let{BunSQLiteStorage:Y}=await G(i);return new Y(F)}if(f()){let{NodeSQLiteStorage:Y}=await G(e);return new Y(F)}throw Error("SQLite storage is only available in Bun or Node runtimes.")}async function VF(){if(l()||f()){let{resolveDefaultStorage:F}=await G(ZF);return F()}if($F()){let{WebExtensionStorage:F}=await G(g);return new F}if(XF()){let{IndexedDBStorage:F}=await G(k);return new F}return new z}var d={memory:async(F)=>new z,sqlite:async(F)=>jF(F.path),lmdb:async(F)=>{let{LMDBStorage:Y}=await G(o);return new Y(F.path)},turso:async(F)=>{let{TursoStorage:Y}=await G(FF);return new Y({url:F.url,...F.authToken===void 0?{}:{authToken:F.authToken}})},neon:async(F)=>{let{NeonStorage:Y}=await G(YF);return new Y({url:F.url})},indexeddb:async(F)=>{let{IndexedDBStorage:Y}=await G(k);return new Y(F.databaseName)},"web-extension":async(F)=>{let{WebExtensionStorage:Y}=await G(g);return new Y(F.area===void 0?{}:{area:F.area})},http:async(F)=>{let{HTTPStorage:Y}=await G(JF);return new Y({baseUrl:F.baseUrl,...F.headers===void 0?{}:{headers:F.headers}})},auto:async(F)=>VF()};function QF(F){if(typeof F!=="object"||F===null)return"unknown";if(!("type"in F))return"unknown";return typeof F.type==="string"?F.type:"unknown"}function HF(F){if(typeof F!=="object"||F===null||Array.isArray(F))throw Error("Storage configuration must be an object.");return F}function D(F,Y,J){let $=F[Y];if(typeof $!=="string"||$.length===0)throw Error(`${J} storage configuration requires "${Y}" as a string.`);return $}function R(F,Y,J){let $=F[Y];if($===void 0)return;if(typeof $!=="string")throw Error(`${J} storage configuration field "${Y}" must be a string.`);return $}function GF(F,Y,J){let $=F[Y];if(typeof $==="string"||$ instanceof URL)return $;throw Error(`${J} storage configuration requires "${Y}" as a string or URL.`)}function UF(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 J={};for(let[$,j]of Object.entries(Y)){if(typeof j!=="string")throw Error('HTTP storage configuration field "headers" must be a string record.');J[$]=j}return J}function _F(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 qF={memory:(F)=>({type:"memory"}),sqlite:(F)=>{let Y=R(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=R(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=R(F,"databaseName","IndexedDB");return Y===void 0?{type:"indexeddb"}:{type:"indexeddb",databaseName:Y}},"web-extension":(F)=>{let Y=_F(F);return Y===void 0?{type:"web-extension"}:{type:"web-extension",area:Y}},http:(F)=>{let Y=UF(F);return{type:"http",baseUrl:GF(F,"baseUrl","HTTP"),...Y===void 0?{}:{headers:Y}}},auto:(F)=>({type:"auto"})};function CF(F,Y){return qF[Y](HF(F))}function WF(F){return Object.hasOwn(d,F)}async function sF(F){let Y=QF(F);if(!WF(Y))throw Error(`Unsupported storage configuration type: ${Y}`);let J=CF(F,Y),$=d[Y];return $(J)}export{sF as resolveStorage};
|
|
2
|
+
var LF=import.meta.require,zF=(F,Y,J)=>{if(Y!=null){if(typeof Y!=="object"&&typeof Y!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let $;if(J)$=Y[Symbol.asyncDispose];if($===void 0)$=Y[Symbol.dispose];if(typeof $!=="function")throw TypeError("Object not disposable");F.push([J,$,Y])}else if(J)F.push([J]);return Y},BF=(F,Y,J)=>{let $=(X)=>Y=J?new SuppressedError(X,Y,"An error was suppressed during disposal"):(J=!0,X),j=(X)=>{while(X=F.pop())try{var Q=X[1]&&X[1].call(X[2]);if(X[0])return Promise.resolve(Q).then(j,(V)=>($(V),j()))}catch(V){$(V)}if(J)throw Y};return j()};function B(F,Y,J){if(!F.capabilities()[Y])throw Error(`Feature "${J}" requires storage capability "${Y}", but this storage backend does not provide it.`)}function p(F){let Y=F.capabilities(),J=[];if(Y.persistence!=="local"&&Y.persistence!=="remote")J.push(`persistence must be "local" or "remote" (got "${Y.persistence}")`);if(Y.readAfterWrite!=="linearizable")J.push(`readAfterWrite must be "linearizable" (got "${Y.readAfterWrite}")`);if(Y.scanConsistency!=="snapshot")J.push(`scanConsistency must be "snapshot" (got "${Y.scanConsistency}")`);if(!Y.atomicBatch)J.push("atomicBatch must be true");if(!Y.conditionalBatch)J.push("conditionalBatch must be true");if(J.length>0)throw Error(`Storage is not durable enough for recovery: ${J.join("; ")}.`)}var P="default";async function T(F,Y){return await F.get(Y)!==null}async function*C(F,Y,J){for await(let[$]of F.scan(Y,J))yield $}async function E(F,Y){let J=0;for await(let $ of C(F,Y))J++;return J}async function b(F,Y){let J=[];for await(let $ of C(F,Y))J.push({type:"delete",key:$});if(J.length===0)return 0;return await F.batch(J),J.length}async function h(F,Y,J){let $=[];for await(let j of C(F,Y,J))$.push({type:"delete",key:j});if($.length===0)return 0;return await F.batch($),$.length}var s=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-has-services:","wf-headers:","wf-idx-","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var A=1e4,EF=1e4;class O 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 U(F,Y){if(Y>A)throw new O(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 S(F,Y){if(F===null||Y===null)return F===Y;if(F.byteLength!==Y.byteLength)return!1;for(let J=0;J<F.byteLength;J++)if(F[J]!==Y[J])return!1;return!0}async function m(F,Y){if(F.has)return F.has(Y);return T(F,Y)}function x(F,Y,J){if(F.keys)return F.keys(Y,J);return C(F,Y,J)}async function y(F,Y){if(F.count)return F.count(Y);return E(F,Y)}async function I(F,Y){if(F.deletePrefix)return F.deletePrefix(Y);return b(F,Y)}async function bF(F,Y){U("batch operations",Y.length),await F.batch(Y)}async function c(F,Y,J){if(U("conditionalBatch conditions",Y.length),U("conditionalBatch operations",J.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,J)}function Z(F){return encodeURIComponent(F)}function hF(F){return decodeURIComponent(F)}function vF(F){try{return decodeURIComponent(F)}catch{return null}}var H=(F)=>String(F).padStart(16,"0"),a="0",n="1",v=(F,Y,J,$)=>`sig:${Z(F)}:${Z(Y)}:${$}:${Z(J)}`,OF={workflow:(F)=>`wf:${Z(F)}`,checkpoint:(F)=>`wf:${Z(F)}:ckpt`,checkpointHistory:(F,Y)=>`wf:${Z(F)}:ckpt:${String(Y).padStart(10,"0")}`,timelinePrefix:(F)=>`wf:${Z(F)}:timeline:`,timeline:(F,Y)=>`wf:${Z(F)}:timeline:${String(Y).padStart(10,"0")}`,schedule:(F)=>`schedule:${Z(F)}`,scheduleTick:(F,Y)=>`schedule-due:${String(F).padStart(16,"0")}:${Z(Y)}`,scheduleRun:(F)=>`schedule-run:${Z(F)}`,scheduleRunLink:(F)=>`schedule-run-link:${Z(F)}`,scheduleRunBySchedulePrefix:(F)=>`schedule-run-by-schedule:${Z(F)}:`,scheduleRunBySchedule:(F,Y)=>`schedule-run-by-schedule:${Z(F)}:${Z(Y)}`,operation:(F,Y,J)=>`op:${F}:${H(Y)}:${J}`,operationInflight:(F)=>`op:inflight:${F}`,operationQueued:(F)=>`op:queued:${F}`,operationResolved:(F)=>`op:resolved:${F}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(F)=>`op:dead-letter:${F}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(F,Y,J)=>`audit:bulk:${H(F)}:${Z(Y)}:${Z(J)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(F,Y)=>`op:resolved-by-time:${H(F)}:${Z(Y)}`,asyncActivity:(F,Y)=>`async-act:v1:${Z(F)}:${Z(Y)}`,asyncActivityResolution:(F,Y)=>`async-act:v1:${Z(F)}:${Z(Y)}:resolution`,activityReconciliationPrefix:(F)=>`actrec:v1:${Z(F)}:`,activityReconciliation:(F,Y,J)=>`actrec:v1:${Z(F)}:${Z(Y)}:${J}`,eventPrefix:(F)=>`ev:${Z(F)}:`,event:(F,Y)=>`ev:${Z(F)}:${String(Y).padStart(10,"0")}`,eventHead:(F)=>`ev:${Z(F)}:head`,eventWatermark:(F)=>`ev:${Z(F)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(F)=>`fleet-event:${String(F).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(F)=>`fleet-event-by-workflow:${Z(F)}:`,fleetEventByWorkflow:(F,Y)=>`fleet-event-by-workflow:${Z(F)}:${String(Y).padStart(10,"0")}`,signal:(F,Y,J)=>v(F,Y,J,n),startSignal:(F,Y,J)=>v(F,Y,J,a),signalSequence:(F)=>`sigseq:v1:${Z(F)}`,signalAcceptedResponsePrefix:(F)=>`sigres:v1:${Z(F)}:`,signalAcceptedResponse:(F,Y,J)=>`sigres:v1:${Z(F)}:${Z(Y)}:${Z(J)}`,deadline:(F,Y)=>`wf-deadline:${H(F)}:${Z(Y)}`,terminalCleanup:(F,Y)=>`wf-cleanup:${H(F)}:${Z(Y)}`,teardownTimer:(F,Y)=>`wf-teardown:${H(F)}:${Z(Y)}`,delayedStart:(F,Y)=>`wf-delayed:${H(F)}:${Z(Y)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(F,Y)=>`wf-terminal:${H(F)}:${Z(Y)}`,attribute:(F)=>`attr:${Z(F)}`,attributeIndex:(F,Y,J)=>`idx:${F}:${Y}:${Z(J)}`,tagIndex:(F,Y)=>`tag:${Z(F)}:${Z(Y)}`,updatePrefix:(F)=>`upd:${Z(F)}:`,update:(F,Y)=>`upd:${Z(F)}:${Y}`,updateResponse:(F)=>`upr:${F}`,updateIdempotency:(F,Y)=>`upk:${Z(F)}:${Y}`,startIdempotency:(F)=>`start-idem:${Z(F)}`,startIdempotencySignalId:(F)=>`start-idem:${F}`,livenessPrefix:()=>"liveness:",liveness:(F)=>`liveness:${Z(F)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(F,Y,J)=>`budget:${F}:${Y}:${J}`,review:(F,Y)=>`review:${Z(F)}:${Y}`,workflowHeaders:(F)=>`wf-headers:${Z(F)}`,childCancellationPrefix:(F)=>`child-cancel:${Z(F)}:`,childCancellation:(F,Y)=>`child-cancel:${Z(F)}:${Z(Y)}`,childWorkflowByParentPrefix:(F,Y)=>`child-by-parent:${Z(F)}:${Y===void 0?"":`${Z(Y)}:`}`,childWorkflowByParent:(F,Y,J)=>`child-by-parent:${Z(F)}:${Y===void 0?"":`${Z(Y)}:`}${Z(J)}`,terminalCleanupNeeded:(F)=>`wf-cleanup-needed:${Z(F)}`,workflowConcurrency:(F,Y)=>`wf-concurrency:${Z(F)}:${Z(Y)}`,workflowConcurrencyHolder:(F)=>`wf-concurrency-holder:${Z(F)}`,workflowHasServices:(F)=>`wf-has-services:${Z(F)}`,finalizerState:(F)=>`wf-finalizer-state:${Z(F)}`,teardownOwed:(F)=>`wf-teardown-needed:${Z(F)}`,teardownSucceeded:(F)=>`wf-teardown-succeeded:${Z(F)}`,teardownDeadLetter:(F)=>`wf-teardown-deadletter:${Z(F)}`,offload:(F,Y)=>`offload:${Z(F)}:${Y}`,archive:(F,Y)=>`archive:${Z(F)}:${Y}`,stateExecution:(F,Y)=>`state:execution:${Z(F)}:${Z(Y)}`,stateWorkflow:(F,Y)=>`state:workflow-scope:${P}:${Z(F)}:${Z(Y)}`,streamChunkPrefix:(F,Y)=>`blob:${Z(F)}:${Y}:chunk:`,streamChunk:(F,Y,J)=>`blob:${Z(F)}:${Y}:chunk:${String(J).padStart(10,"0")}`,streamTail:(F,Y)=>`blob:${Z(F)}:${Y}:tail`,streamMetadata:(F,Y)=>`blob:${Z(F)}:${Y}:meta`,budgetCharged:(F)=>`budget-charged:${F}`,toolEffect:(F,Y,J)=>`tool-effect:${Z(F)}:${Y}:${J}`,workflowVisibilityStatus:(F,Y)=>`wf-idx-status:${Z(F)}:${Z(Y)}`,workflowVisibilityType:(F,Y)=>`wf-idx-type:${Z(F)}:${Z(Y)}`,workflowVisibilityCreated:(F,Y)=>`wf-idx-created:${H(F)}:${Z(Y)}`,workflowVisibilityUpdated:(F,Y)=>`wf-idx-updated:${H(F)}:${Z(Y)}`,workflowVisibilityDeadline:(F,Y)=>`wf-idx-deadline:${H(F)}:${Z(Y)}`,workflowVisibilityManifest:(F)=>`wf-idx-manifest:${Z(F)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function t(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 W(F){let Y={},J=!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,J=!0}if(!J)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let $=t(F.limit);if($!==void 0)Y.limit=$;return Y}async function w(F,Y,J){let $=W(J);if(F.deleteRange)return F.deleteRange(Y,$);return h(F,Y,$)}function K(F){return F.replaceAll(/:+$/g,"")}function r(F,Y){let J=K(F),$=K(Y);if(J.length===0)return $;if($.length===0)return J;return`${J}:${$}`}class N{#F;#J;constructor(F,Y){this.#F=F,this.#J=K(Y)}#Y(F){if(this.#J.length===0)return F;return F.length===0?`${this.#J}:`:`${this.#J}:${F}`}#Z(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)}})}#$(F){if(this.#J.length===0)return F;return F.slice(this.#J.length+1)}#X(F={}){let Y={};if(F.limit!==void 0)Y.limit=F.limit;if(F.reverse!==void 0)Y.reverse=F.reverse;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={};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}capabilities(){return this.#F.capabilities()}scoped(F){return new N(this.#F,r(this.#J,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[J,$]of this.#F.scan(this.#Y(F),this.#X(Y)))yield[this.#$(J),$]}async batch(F){U("batch operations",F.length),await this.#F.batch(this.#Z(F))}async conditionalBatch(F,Y){return c(this.#F,F.map((J)=>({key:this.#Y(J.key),expectedValue:J.expectedValue})),this.#Z(Y))}async has(F){return m(this.#F,this.#Y(F))}async deletePrefix(F){return I(this.#F,this.#Y(F))}async deleteRange(F,Y){let J=this.#j(W(Y));return w(this.#F,this.#Y(F),J)}async*keys(F,Y){for await(let J of x(this.#F,this.#Y(F),this.#X(Y)))yield this.#$(J)}async count(F){return y(this.#F,this.#Y(F))}[Symbol.dispose](){this.#F[Symbol.dispose]()}}function u(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}}#J(F,Y,J){return F>=Y&&F<J}#Y(F,Y){let J=[];for(let $ of this.#F.keys())if(this.#J($,F,Y))J.push($);return J.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:J,reverse:$}=Y,j=q(F),X=this.#Y(F,j);if(X=X.filter((V)=>L(V,Y)),$)X.reverse();let Q=0;for(let V of X){if(J!==void 0&&Q>=J)break;let M=this.#F.get(V);if(M!==void 0)yield[V,M],Q++}}async batch(F){U("batch operations",F.length),this.#Z(F)}#Z(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){U("conditionalBatch conditions",F.length),U("conditionalBatch operations",Y.length);for(let J of F){let $=this.#F.get(J.key)??null;if(!S($,J.expectedValue))return!1}return this.#Z(Y),!0}async has(F){return this.#F.has(F)}async deletePrefix(F){let Y=q(F),J=this.#Y(F,Y);for(let $ of J)this.#F.delete($);return J.length}async deleteRange(F,Y){let J=W(Y),$=q(F),j=this.#Y(F,$).filter((Q)=>L(Q,J)),X=J.limit===void 0?j:j.slice(0,J.limit);for(let Q of X)this.#F.delete(Q);return X.length}async*keys(F,Y={}){let{limit:J,reverse:$}=Y,j=q(F),X=this.#Y(F,j);if(X=X.filter((V)=>L(V,Y)),$)X.reverse();let Q=0;for(let V of X){if(J!==void 0&&Q>=J)break;yield V,Q++}}async count(F){let Y=q(F);return this.#Y(F,Y).length}scoped(F){return u(this,F)}get size(){return this.#F.size}clear(){this.#F.clear()}snapshot(){let F=new Map;for(let[Y,J]of this.#F)F.set(Y,new Uint8Array(J));return F}[Symbol.dispose](){this.#F.clear()}}function _(F,Y){return import.meta.url.endsWith(".ts")?F:Y}async function G(F){return await import(F)}var i=_("./bun-sql.ts","./bun-sql.js"),e=_("./node-sqlite.ts","./node-sqlite.js"),o=_("./lmdb.ts","./lmdb.js"),FF=_("./turso.ts","./turso.js"),YF=_("./neon.ts","./neon.js"),k=_("./indexeddb.ts","./indexeddb.js"),g=_("./web-extension.ts","./web-extension.js"),JF=_("./http.ts","./http.js"),ZF=_("./auto.ts","./auto.js");function l(){return typeof Bun<"u"}function f(){return typeof globalThis.process==="object"&&globalThis.process!==null&&typeof globalThis.process.versions==="object"&&typeof globalThis.process.versions.node==="string"}function $F(){let F=globalThis;return F.browser?.storage!==void 0||F.chrome?.storage!==void 0}function XF(){return typeof globalThis.indexedDB<"u"}async function jF(F){if(l()){let{BunSQLiteStorage:Y}=await G(i);return new Y(F)}if(f()){let{NodeSQLiteStorage:Y}=await G(e);return new Y(F)}throw Error("SQLite storage is only available in Bun or Node runtimes.")}async function VF(){if(l()||f()){let{resolveDefaultStorage:F}=await G(ZF);return F()}if($F()){let{WebExtensionStorage:F}=await G(g);return new F}if(XF()){let{IndexedDBStorage:F}=await G(k);return new F}return new z}var d={memory:async(F)=>new z,sqlite:async(F)=>jF(F.path),lmdb:async(F)=>{let{LMDBStorage:Y}=await G(o);return new Y(F.path)},turso:async(F)=>{let{TursoStorage:Y}=await G(FF);return new Y({url:F.url,...F.authToken===void 0?{}:{authToken:F.authToken}})},neon:async(F)=>{let{NeonStorage:Y}=await G(YF);return new Y({url:F.url})},indexeddb:async(F)=>{let{IndexedDBStorage:Y}=await G(k);return new Y(F.databaseName)},"web-extension":async(F)=>{let{WebExtensionStorage:Y}=await G(g);return new Y(F.area===void 0?{}:{area:F.area})},http:async(F)=>{let{HTTPStorage:Y}=await G(JF);return new Y({baseUrl:F.baseUrl,...F.headers===void 0?{}:{headers:F.headers}})},auto:async(F)=>VF()};function QF(F){if(typeof F!=="object"||F===null)return"unknown";if(!("type"in F))return"unknown";return typeof F.type==="string"?F.type:"unknown"}function HF(F){if(typeof F!=="object"||F===null||Array.isArray(F))throw Error("Storage configuration must be an object.");return F}function D(F,Y,J){let $=F[Y];if(typeof $!=="string"||$.length===0)throw Error(`${J} storage configuration requires "${Y}" as a string.`);return $}function R(F,Y,J){let $=F[Y];if($===void 0)return;if(typeof $!=="string")throw Error(`${J} storage configuration field "${Y}" must be a string.`);return $}function GF(F,Y,J){let $=F[Y];if(typeof $==="string"||$ instanceof URL)return $;throw Error(`${J} storage configuration requires "${Y}" as a string or URL.`)}function UF(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 J={};for(let[$,j]of Object.entries(Y)){if(typeof j!=="string")throw Error('HTTP storage configuration field "headers" must be a string record.');J[$]=j}return J}function _F(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 qF={memory:(F)=>({type:"memory"}),sqlite:(F)=>{let Y=R(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=R(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=R(F,"databaseName","IndexedDB");return Y===void 0?{type:"indexeddb"}:{type:"indexeddb",databaseName:Y}},"web-extension":(F)=>{let Y=_F(F);return Y===void 0?{type:"web-extension"}:{type:"web-extension",area:Y}},http:(F)=>{let Y=UF(F);return{type:"http",baseUrl:GF(F,"baseUrl","HTTP"),...Y===void 0?{}:{headers:Y}}},auto:(F)=>({type:"auto"})};function CF(F,Y){return qF[Y](HF(F))}function WF(F){return Object.hasOwn(d,F)}async function sF(F){let Y=QF(F);if(!WF(Y))throw Error(`Unsupported storage configuration type: ${Y}`);let J=CF(F,Y),$=d[Y];return $(J)}export{sF as resolveStorage};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var x=import.meta.require,y=(E,_,F)=>{if(_!=null){if(typeof _!=="object"&&typeof _!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let X;if(F)X=_[Symbol.asyncDispose];if(X===void 0)X=_[Symbol.dispose];if(typeof X!=="function")throw TypeError("Object not disposable");E.push([F,X,_])}else if(F)E.push([F]);return _},g=(E,_,F)=>{let X=(U)=>_=F?new SuppressedError(U,_,"An error was suppressed during disposal"):(F=!0,U),G=(U)=>{while(U=E.pop())try{var P=U[1]&&U[1].call(U[2]);if(U[0])return Promise.resolve(P).then(G,(Q)=>(X(Q),G()))}catch(Q){X(Q)}if(F)throw _};return G()};function Z(E,_,F){if(!E.capabilities()[_])throw Error(`Feature "${F}" requires storage capability "${_}", but this storage backend does not provide it.`)}function h(E){let _=E.capabilities(),F=[];if(_.persistence!=="local"&&_.persistence!=="remote")F.push(`persistence must be "local" or "remote" (got "${_.persistence}")`);if(_.readAfterWrite!=="linearizable")F.push(`readAfterWrite must be "linearizable" (got "${_.readAfterWrite}")`);if(_.scanConsistency!=="snapshot")F.push(`scanConsistency must be "snapshot" (got "${_.scanConsistency}")`);if(!_.atomicBatch)F.push("atomicBatch must be true");if(!_.conditionalBatch)F.push("conditionalBatch must be true");if(F.length>0)throw Error(`Storage is not durable enough for recovery: ${F.join("; ")}.`)}var $="default";async function R(E,_){return await E.get(_)!==null}async function*J(E,_,F){for await(let[X]of E.scan(_,F))yield X}async function D(E,_){let F=0;for await(let X of J(E,_))F++;return F}async function B(E,_){let F=[];for await(let X of J(E,_))F.push({type:"delete",key:X});if(F.length===0)return 0;return await E.batch(F),F.length}async function C(E,_,F){let X=[];for await(let G of J(E,_,F))X.push({type:"delete",key:G});if(X.length===0)return 0;return await E.batch(X),X.length}var K=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-has-services:","wf-headers:","wf-idx-","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var j=1e4,p=1e4;class q 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 q(E,_)}function n(E){return E.length>0?E.slice(0,-1)+String.fromCharCode(E.charCodeAt(E.length-1)+1):"\xFF"}function t(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 r(E,_){if(E===null||_===null)return E===_;if(E.byteLength!==_.byteLength)return!1;for(let F=0;F<E.byteLength;F++)if(E[F]!==_[F])return!1;return!0}async function T(E,_){if(E.has)return E.has(_);return R(E,_)}function W(E,_,F){if(E.keys)return E.keys(_,F);return J(E,_,F)}async function A(E,_){if(E.count)return E.count(_);return D(E,_)}async function v(E,_){if(E.deletePrefix)return E.deletePrefix(_);return B(E,_)}async function i(E,_){M("batch operations",_.length),await E.batch(_)}async function z(E,_,F){if(M("conditionalBatch conditions",_.length),M("conditionalBatch operations",F.length),Z(E,"conditionalBatch","storageConditionalBatch"),!E.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return E.conditionalBatch(_,F)}function Y(E){return encodeURIComponent(E)}function e(E){return decodeURIComponent(E)}function o(E){try{return decodeURIComponent(E)}catch{return null}}var V=(E)=>String(E).padStart(16,"0"),b="0",m="1",N=(E,_,F,X)=>`sig:${Y(E)}:${Y(_)}:${X}:${Y(F)}`,EE={workflow:(E)=>`wf:${Y(E)}`,checkpoint:(E)=>`wf:${Y(E)}:ckpt`,checkpointHistory:(E,_)=>`wf:${Y(E)}:ckpt:${String(_).padStart(10,"0")}`,timelinePrefix:(E)=>`wf:${Y(E)}:timeline:`,timeline:(E,_)=>`wf:${Y(E)}:timeline:${String(_).padStart(10,"0")}`,schedule:(E)=>`schedule:${Y(E)}`,scheduleTick:(E,_)=>`schedule-due:${String(E).padStart(16,"0")}:${Y(_)}`,scheduleRun:(E)=>`schedule-run:${Y(E)}`,scheduleRunLink:(E)=>`schedule-run-link:${Y(E)}`,scheduleRunBySchedulePrefix:(E)=>`schedule-run-by-schedule:${Y(E)}:`,scheduleRunBySchedule:(E,_)=>`schedule-run-by-schedule:${Y(E)}:${Y(_)}`,operation:(E,_,F)=>`op:${E}:${V(_)}:${F}`,operationInflight:(E)=>`op:inflight:${E}`,operationQueued:(E)=>`op:queued:${E}`,operationResolved:(E)=>`op:resolved:${E}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(E)=>`op:dead-letter:${E}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(E,_,F)=>`audit:bulk:${V(E)}:${Y(_)}:${Y(F)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(E,_)=>`op:resolved-by-time:${V(E)}:${Y(_)}`,asyncActivity:(E,_)=>`async-act:v1:${Y(E)}:${Y(_)}`,asyncActivityResolution:(E,_)=>`async-act:v1:${Y(E)}:${Y(_)}:resolution`,activityReconciliationPrefix:(E)=>`actrec:v1:${Y(E)}:`,activityReconciliation:(E,_,F)=>`actrec:v1:${Y(E)}:${Y(_)}:${F}`,eventPrefix:(E)=>`ev:${Y(E)}:`,event:(E,_)=>`ev:${Y(E)}:${String(_).padStart(10,"0")}`,eventHead:(E)=>`ev:${Y(E)}:head`,eventWatermark:(E)=>`ev:${Y(E)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(E)=>`fleet-event:${String(E).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(E)=>`fleet-event-by-workflow:${Y(E)}:`,fleetEventByWorkflow:(E,_)=>`fleet-event-by-workflow:${Y(E)}:${String(_).padStart(10,"0")}`,signal:(E,_,F)=>N(E,_,F,m),startSignal:(E,_,F)=>N(E,_,F,b),signalSequence:(E)=>`sigseq:v1:${Y(E)}`,signalAcceptedResponsePrefix:(E)=>`sigres:v1:${Y(E)}:`,signalAcceptedResponse:(E,_,F)=>`sigres:v1:${Y(E)}:${Y(_)}:${Y(F)}`,deadline:(E,_)=>`wf-deadline:${V(E)}:${Y(_)}`,terminalCleanup:(E,_)=>`wf-cleanup:${V(E)}:${Y(_)}`,teardownTimer:(E,_)=>`wf-teardown:${V(E)}:${Y(_)}`,delayedStart:(E,_)=>`wf-delayed:${V(E)}:${Y(_)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(E,_)=>`wf-terminal:${V(E)}:${Y(_)}`,attribute:(E)=>`attr:${Y(E)}`,attributeIndex:(E,_,F)=>`idx:${E}:${_}:${Y(F)}`,tagIndex:(E,_)=>`tag:${Y(E)}:${Y(_)}`,updatePrefix:(E)=>`upd:${Y(E)}:`,update:(E,_)=>`upd:${Y(E)}:${_}`,updateResponse:(E)=>`upr:${E}`,updateIdempotency:(E,_)=>`upk:${Y(E)}:${_}`,startIdempotency:(E)=>`start-idem:${Y(E)}`,startIdempotencySignalId:(E)=>`start-idem:${E}`,livenessPrefix:()=>"liveness:",liveness:(E)=>`liveness:${Y(E)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(E,_,F)=>`budget:${E}:${_}:${F}`,review:(E,_)=>`review:${Y(E)}:${_}`,workflowHeaders:(E)=>`wf-headers:${Y(E)}`,childCancellationPrefix:(E)=>`child-cancel:${Y(E)}:`,childCancellation:(E,_)=>`child-cancel:${Y(E)}:${Y(_)}`,childWorkflowByParentPrefix:(E,_)=>`child-by-parent:${Y(E)}:${_===void 0?"":`${Y(_)}:`}`,childWorkflowByParent:(E,_,F)=>`child-by-parent:${Y(E)}:${_===void 0?"":`${Y(_)}:`}${Y(F)}`,terminalCleanupNeeded:(E)=>`wf-cleanup-needed:${Y(E)}`,workflowConcurrency:(E,_)=>`wf-concurrency:${Y(E)}:${Y(_)}`,workflowConcurrencyHolder:(E)=>`wf-concurrency-holder:${Y(E)}`,workflowHasServices:(E)=>`wf-has-services:${Y(E)}`,finalizerState:(E)=>`wf-finalizer-state:${Y(E)}`,teardownOwed:(E)=>`wf-teardown-needed:${Y(E)}`,teardownSucceeded:(E)=>`wf-teardown-succeeded:${Y(E)}`,teardownDeadLetter:(E)=>`wf-teardown-deadletter:${Y(E)}`,offload:(E,_)=>`offload:${Y(E)}:${_}`,archive:(E,_)=>`archive:${Y(E)}:${_}`,stateExecution:(E,_)=>`state:execution:${Y(E)}:${Y(_)}`,stateWorkflow:(E,_)=>`state:workflow-scope:${$}:${Y(E)}:${Y(_)}`,streamChunkPrefix:(E,_)=>`blob:${Y(E)}:${_}:chunk:`,streamChunk:(E,_,F)=>`blob:${Y(E)}:${_}:chunk:${String(F).padStart(10,"0")}`,streamTail:(E,_)=>`blob:${Y(E)}:${_}:tail`,streamMetadata:(E,_)=>`blob:${Y(E)}:${_}:meta`,budgetCharged:(E)=>`budget-charged:${E}`,toolEffect:(E,_,F)=>`tool-effect:${Y(E)}:${_}:${F}`,workflowVisibilityStatus:(E,_)=>`wf-idx-status:${Y(E)}:${Y(_)}`,workflowVisibilityType:(E,_)=>`wf-idx-type:${Y(E)}:${Y(_)}`,workflowVisibilityCreated:(E,_)=>`wf-idx-created:${V(E)}:${Y(_)}`,workflowVisibilityUpdated:(E,_)=>`wf-idx-updated:${V(E)}:${Y(_)}`,workflowVisibilityDeadline:(E,_)=>`wf-idx-deadline:${V(E)}:${Y(_)}`,workflowVisibilityManifest:(E)=>`wf-idx-manifest:${Y(E)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function c(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 H(E){let _={},F=!1;for(let G of["gt","gte","lt","lte"]){let U=E[G];if(U===void 0)continue;if(typeof U!=="string")throw Error("deleteRange bounds must be strings");_[G]=U,F=!0}if(!F)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let X=c(E.limit);if(X!==void 0)_.limit=X;return _}async function O(E,_,F){let X=H(F);if(E.deleteRange)return E.deleteRange(_,X);return C(E,_,X)}function S(E){return E.replaceAll(/:+$/g,"")}function u(E,_){let F=S(E),X=S(_);if(F.length===0)return X;if(X.length===0)return F;return`${F}:${X}`}class L{#_;#F;constructor(E,_){this.#_=E,this.#F=S(_)}#E(E){if(this.#F.length===0)return E;return E.length===0?`${this.#F}:`:`${this.#F}:${E}`}#Y(E){if(this.#F.length===0)return E;return E.slice(this.#F.length+1)}#X(E={}){let _={};if(E.limit!==void 0)_.limit=E.limit;if(E.reverse!==void 0)_.reverse=E.reverse;if(E.gt!==void 0)_.gt=this.#E(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 _}#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 _}capabilities(){return this.#_.capabilities()}scoped(E){return new L(this.#_,u(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[F,X]of this.#_.scan(this.#E(E),this.#X(_)))yield[this.#Y(F),X]}async batch(E){M("batch operations",E.length),await this.#_.batch(E.map((_)=>{if(_.type==="put")return{type:"put",key:this.#E(_.key),value:_.value};return{type:"delete",key:this.#E(_.key)}}))}async conditionalBatch(E,_){return z(this.#_,E.map((F)=>({key:this.#E(F.key),expectedValue:F.expectedValue})),_.map((F)=>{if(F.type==="put")return{type:"put",key:this.#E(F.key),value:F.value};return{type:"delete",key:this.#E(F.key)}}))}async has(E){return T(this.#_,this.#E(E))}async deletePrefix(E){return v(this.#_,this.#E(E))}async deleteRange(E,_){let F=this.#U(H(_));return O(this.#_,this.#E(E),F)}async*keys(E,_){for await(let F of W(this.#_,this.#E(E),this.#X(_)))yield this.#Y(F)}async count(E){return A(this.#_,this.#E(E))}[Symbol.dispose](){this.#_[Symbol.dispose]()}}function ME(E,_){return new L(E,_)}export{ME as scopedStorage,L as ScopedStorage};
|
|
2
|
+
var x=import.meta.require,y=(E,_,Y)=>{if(_!=null){if(typeof _!=="object"&&typeof _!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let X;if(Y)X=_[Symbol.asyncDispose];if(X===void 0)X=_[Symbol.dispose];if(typeof X!=="function")throw TypeError("Object not disposable");E.push([Y,X,_])}else if(Y)E.push([Y]);return _},g=(E,_,Y)=>{let X=(U)=>_=Y?new SuppressedError(U,_,"An error was suppressed during disposal"):(Y=!0,U),G=(U)=>{while(U=E.pop())try{var h=U[1]&&U[1].call(U[2]);if(U[0])return Promise.resolve(h).then(G,(Q)=>(X(Q),G()))}catch(Q){X(Q)}if(Y)throw _};return G()};function Z(E,_,Y){if(!E.capabilities()[_])throw Error(`Feature "${Y}" requires storage capability "${_}", but this storage backend does not provide it.`)}function O(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 $="default";async function R(E,_){return await E.get(_)!==null}async function*J(E,_,Y){for await(let[X]of E.scan(_,Y))yield X}async function D(E,_){let Y=0;for await(let X of J(E,_))Y++;return Y}async function B(E,_){let Y=[];for await(let X of J(E,_))Y.push({type:"delete",key:X});if(Y.length===0)return 0;return await E.batch(Y),Y.length}async function C(E,_,Y){let X=[];for await(let G of J(E,_,Y))X.push({type:"delete",key:G});if(X.length===0)return 0;return await E.batch(X),X.length}var K=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-has-services:","wf-headers:","wf-idx-","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var j=1e4,s=1e4;class q 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 q(E,_)}function n(E){return E.length>0?E.slice(0,-1)+String.fromCharCode(E.charCodeAt(E.length-1)+1):"\xFF"}function t(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 r(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 T(E,_){if(E.has)return E.has(_);return R(E,_)}function W(E,_,Y){if(E.keys)return E.keys(_,Y);return J(E,_,Y)}async function A(E,_){if(E.count)return E.count(_);return D(E,_)}async function v(E,_){if(E.deletePrefix)return E.deletePrefix(_);return B(E,_)}async function i(E,_){M("batch operations",_.length),await E.batch(_)}async function z(E,_,Y){if(M("conditionalBatch conditions",_.length),M("conditionalBatch operations",Y.length),Z(E,"conditionalBatch","storageConditionalBatch"),!E.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return E.conditionalBatch(_,Y)}function F(E){return encodeURIComponent(E)}function e(E){return decodeURIComponent(E)}function o(E){try{return decodeURIComponent(E)}catch{return null}}var V=(E)=>String(E).padStart(16,"0"),b="0",m="1",N=(E,_,Y,X)=>`sig:${F(E)}:${F(_)}:${X}:${F(Y)}`,EE={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}:${V(_)}:${Y}`,operationInflight:(E)=>`op:inflight:${E}`,operationQueued:(E)=>`op:queued:${E}`,operationResolved:(E)=>`op:resolved:${E}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(E)=>`op:dead-letter:${E}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(E,_,Y)=>`audit:bulk:${V(E)}:${F(_)}:${F(Y)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(E,_)=>`op:resolved-by-time:${V(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)=>N(E,_,Y,m),startSignal:(E,_,Y)=>N(E,_,Y,b),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:${V(E)}:${F(_)}`,terminalCleanup:(E,_)=>`wf-cleanup:${V(E)}:${F(_)}`,teardownTimer:(E,_)=>`wf-teardown:${V(E)}:${F(_)}`,delayedStart:(E,_)=>`wf-delayed:${V(E)}:${F(_)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(E,_)=>`wf-terminal:${V(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",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:${$}:${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:${V(E)}:${F(_)}`,workflowVisibilityUpdated:(E,_)=>`wf-idx-updated:${V(E)}:${F(_)}`,workflowVisibilityDeadline:(E,_)=>`wf-idx-deadline:${V(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 c(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 H(E){let _={},Y=!1;for(let G of["gt","gte","lt","lte"]){let U=E[G];if(U===void 0)continue;if(typeof U!=="string")throw Error("deleteRange bounds must be strings");_[G]=U,Y=!0}if(!Y)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let X=c(E.limit);if(X!==void 0)_.limit=X;return _}async function P(E,_,Y){let X=H(Y);if(E.deleteRange)return E.deleteRange(_,X);return C(E,_,X)}function S(E){return E.replaceAll(/:+$/g,"")}function u(E,_){let Y=S(E),X=S(_);if(Y.length===0)return X;if(X.length===0)return Y;return`${Y}:${X}`}class L{#_;#F;constructor(E,_){this.#_=E,this.#F=S(_)}#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.reverse!==void 0)_.reverse=E.reverse;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 _={};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 _}capabilities(){return this.#_.capabilities()}scoped(E){return new L(this.#_,u(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.#U(_)))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 T(this.#_,this.#E(E))}async deletePrefix(E){return v(this.#_,this.#E(E))}async deleteRange(E,_){let Y=this.#V(H(_));return P(this.#_,this.#E(E),Y)}async*keys(E,_){for await(let Y of W(this.#_,this.#E(E),this.#U(_)))yield this.#X(Y)}async count(E){return A(this.#_,this.#E(E))}[Symbol.dispose](){this.#_[Symbol.dispose]()}}function ME(E,_){return new L(E,_)}export{ME as scopedStorage,L as ScopedStorage};
|
package/dist/storage/turso.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var CF=import.meta.require,OF=(F,X,J)=>{if(X!=null){if(typeof X!=="object"&&typeof X!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let $;if(J)$=X[Symbol.asyncDispose];if($===void 0)$=X[Symbol.dispose];if(typeof $!=="function")throw TypeError("Object not disposable");F.push([J,$,X])}else if(J)F.push([J]);return X},vF=(F,X,J)=>{let $=(j)=>X=J?new SuppressedError(j,X,"An error was suppressed during disposal"):(J=!0,j),G=(j)=>{while(j=F.pop())try{var M=j[1]&&j[1].call(j[2]);if(j[0])return Promise.resolve(M).then(G,(H)=>($(H),G()))}catch(H){$(H)}if(J)throw X};return G()};function B(F,X,J){if(!F.capabilities()[X])throw Error(`Feature "${J}" requires storage capability "${X}", but this storage backend does not provide it.`)}function e(F){let X=F.capabilities(),J=[];if(X.persistence!=="local"&&X.persistence!=="remote")J.push(`persistence must be "local" or "remote" (got "${X.persistence}")`);if(X.readAfterWrite!=="linearizable")J.push(`readAfterWrite must be "linearizable" (got "${X.readAfterWrite}")`);if(X.scanConsistency!=="snapshot")J.push(`scanConsistency must be "snapshot" (got "${X.scanConsistency}")`);if(!X.atomicBatch)J.push("atomicBatch must be true");if(!X.conditionalBatch)J.push("conditionalBatch must be true");if(J.length>0)throw Error(`Storage is not durable enough for recovery: ${J.join("; ")}.`)}var C="default";async function z(F,X){return await F.get(X)!==null}async function*Q(F,X,J){for await(let[$]of F.scan(X,J))yield $}async function P(F,X){let J=0;for await(let $ of Q(F,X))J++;return J}async function A(F,X){let J=[];for await(let $ of Q(F,X))J.push({type:"delete",key:$});if(J.length===0)return 0;return await F.batch(J),J.length}async function L(F,X,J){let $=[];for await(let G of Q(F,X,J))$.push({type:"delete",key:G});if($.length===0)return 0;return await F.batch($),$.length}var o=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-has-services:","wf-headers:","wf-idx-","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var O=1e4,SF=1e4;class K extends Error{code="StorageBatchOperationLimitExceededError";cap=O;count;target;constructor(F,X){super(`${F} count ${X} exceeds MAX_BATCH_OPERATIONS (${O}).`);this.name="StorageBatchOperationLimitExceededError",this.target=F,this.count=X}}function D(F,X){if(X>O)throw new K(F,X)}function S(F){return F.length>0?F.slice(0,-1)+String.fromCharCode(F.charCodeAt(F.length-1)+1):"\xFF"}function EF(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 E(F,X){if(F===null||X===null)return F===X;if(F.byteLength!==X.byteLength)return!1;for(let J=0;J<F.byteLength;J++)if(F[J]!==X[J])return!1;return!0}async function T(F,X){if(F.has)return F.has(X);return z(F,X)}function b(F,X,J){if(F.keys)return F.keys(X,J);return Q(F,X,J)}async function m(F,X){if(F.count)return F.count(X);return P(F,X)}async function c(F,X){if(F.deletePrefix)return F.deletePrefix(X);return A(F,X)}async function TF(F,X){D("batch operations",X.length),await F.batch(X)}async function x(F,X,J){if(D("conditionalBatch conditions",X.length),D("conditionalBatch operations",J.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(X,J)}function Z(F){return encodeURIComponent(F)}function bF(F){return decodeURIComponent(F)}function mF(F){try{return decodeURIComponent(F)}catch{return null}}var U=(F)=>String(F).padStart(16,"0"),FF="0",XF="1",q=(F,X,J,$)=>`sig:${Z(F)}:${Z(X)}:${$}:${Z(J)}`,cF={workflow:(F)=>`wf:${Z(F)}`,checkpoint:(F)=>`wf:${Z(F)}:ckpt`,checkpointHistory:(F,X)=>`wf:${Z(F)}:ckpt:${String(X).padStart(10,"0")}`,timelinePrefix:(F)=>`wf:${Z(F)}:timeline:`,timeline:(F,X)=>`wf:${Z(F)}:timeline:${String(X).padStart(10,"0")}`,schedule:(F)=>`schedule:${Z(F)}`,scheduleTick:(F,X)=>`schedule-due:${String(F).padStart(16,"0")}:${Z(X)}`,scheduleRun:(F)=>`schedule-run:${Z(F)}`,scheduleRunLink:(F)=>`schedule-run-link:${Z(F)}`,scheduleRunBySchedulePrefix:(F)=>`schedule-run-by-schedule:${Z(F)}:`,scheduleRunBySchedule:(F,X)=>`schedule-run-by-schedule:${Z(F)}:${Z(X)}`,operation:(F,X,J)=>`op:${F}:${U(X)}:${J}`,operationInflight:(F)=>`op:inflight:${F}`,operationQueued:(F)=>`op:queued:${F}`,operationResolved:(F)=>`op:resolved:${F}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(F)=>`op:dead-letter:${F}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(F,X,J)=>`audit:bulk:${U(F)}:${Z(X)}:${Z(J)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(F,X)=>`op:resolved-by-time:${U(F)}:${Z(X)}`,asyncActivity:(F,X)=>`async-act:v1:${Z(F)}:${Z(X)}`,asyncActivityResolution:(F,X)=>`async-act:v1:${Z(F)}:${Z(X)}:resolution`,activityReconciliationPrefix:(F)=>`actrec:v1:${Z(F)}:`,activityReconciliation:(F,X,J)=>`actrec:v1:${Z(F)}:${Z(X)}:${J}`,eventPrefix:(F)=>`ev:${Z(F)}:`,event:(F,X)=>`ev:${Z(F)}:${String(X).padStart(10,"0")}`,eventHead:(F)=>`ev:${Z(F)}:head`,eventWatermark:(F)=>`ev:${Z(F)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(F)=>`fleet-event:${String(F).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(F)=>`fleet-event-by-workflow:${Z(F)}:`,fleetEventByWorkflow:(F,X)=>`fleet-event-by-workflow:${Z(F)}:${String(X).padStart(10,"0")}`,signal:(F,X,J)=>q(F,X,J,XF),startSignal:(F,X,J)=>q(F,X,J,FF),signalSequence:(F)=>`sigseq:v1:${Z(F)}`,signalAcceptedResponsePrefix:(F)=>`sigres:v1:${Z(F)}:`,signalAcceptedResponse:(F,X,J)=>`sigres:v1:${Z(F)}:${Z(X)}:${Z(J)}`,deadline:(F,X)=>`wf-deadline:${U(F)}:${Z(X)}`,terminalCleanup:(F,X)=>`wf-cleanup:${U(F)}:${Z(X)}`,teardownTimer:(F,X)=>`wf-teardown:${U(F)}:${Z(X)}`,delayedStart:(F,X)=>`wf-delayed:${U(F)}:${Z(X)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(F,X)=>`wf-terminal:${U(F)}:${Z(X)}`,attribute:(F)=>`attr:${Z(F)}`,attributeIndex:(F,X,J)=>`idx:${F}:${X}:${Z(J)}`,tagIndex:(F,X)=>`tag:${Z(F)}:${Z(X)}`,updatePrefix:(F)=>`upd:${Z(F)}:`,update:(F,X)=>`upd:${Z(F)}:${X}`,updateResponse:(F)=>`upr:${F}`,updateIdempotency:(F,X)=>`upk:${Z(F)}:${X}`,startIdempotency:(F)=>`start-idem:${Z(F)}`,startIdempotencySignalId:(F)=>`start-idem:${F}`,livenessPrefix:()=>"liveness:",liveness:(F)=>`liveness:${Z(F)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(F,X,J)=>`budget:${F}:${X}:${J}`,review:(F,X)=>`review:${Z(F)}:${X}`,workflowHeaders:(F)=>`wf-headers:${Z(F)}`,childCancellationPrefix:(F)=>`child-cancel:${Z(F)}:`,childCancellation:(F,X)=>`child-cancel:${Z(F)}:${Z(X)}`,childWorkflowByParentPrefix:(F,X)=>`child-by-parent:${Z(F)}:${X===void 0?"":`${Z(X)}:`}`,childWorkflowByParent:(F,X,J)=>`child-by-parent:${Z(F)}:${X===void 0?"":`${Z(X)}:`}${Z(J)}`,terminalCleanupNeeded:(F)=>`wf-cleanup-needed:${Z(F)}`,workflowConcurrency:(F,X)=>`wf-concurrency:${Z(F)}:${Z(X)}`,workflowConcurrencyHolder:(F)=>`wf-concurrency-holder:${Z(F)}`,workflowHasServices:(F)=>`wf-has-services:${Z(F)}`,finalizerState:(F)=>`wf-finalizer-state:${Z(F)}`,teardownOwed:(F)=>`wf-teardown-needed:${Z(F)}`,teardownSucceeded:(F)=>`wf-teardown-succeeded:${Z(F)}`,teardownDeadLetter:(F)=>`wf-teardown-deadletter:${Z(F)}`,offload:(F,X)=>`offload:${Z(F)}:${X}`,archive:(F,X)=>`archive:${Z(F)}:${X}`,stateExecution:(F,X)=>`state:execution:${Z(F)}:${Z(X)}`,stateWorkflow:(F,X)=>`state:workflow-scope:${C}:${Z(F)}:${Z(X)}`,streamChunkPrefix:(F,X)=>`blob:${Z(F)}:${X}:chunk:`,streamChunk:(F,X,J)=>`blob:${Z(F)}:${X}:chunk:${String(J).padStart(10,"0")}`,streamTail:(F,X)=>`blob:${Z(F)}:${X}:tail`,streamMetadata:(F,X)=>`blob:${Z(F)}:${X}:meta`,budgetCharged:(F)=>`budget-charged:${F}`,toolEffect:(F,X,J)=>`tool-effect:${Z(F)}:${X}:${J}`,workflowVisibilityStatus:(F,X)=>`wf-idx-status:${Z(F)}:${Z(X)}`,workflowVisibilityType:(F,X)=>`wf-idx-type:${Z(F)}:${Z(X)}`,workflowVisibilityCreated:(F,X)=>`wf-idx-created:${U(F)}:${Z(X)}`,workflowVisibilityUpdated:(F,X)=>`wf-idx-updated:${U(F)}:${Z(X)}`,workflowVisibilityDeadline:(F,X)=>`wf-idx-deadline:${U(F)}:${Z(X)}`,workflowVisibilityManifest:(F)=>`wf-idx-manifest:${Z(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 N(F){let X={},J=!1;for(let G of["gt","gte","lt","lte"]){let j=F[G];if(j===void 0)continue;if(typeof j!=="string")throw Error("deleteRange bounds must be strings");X[G]=j,J=!0}if(!J)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let $=JF(F.limit);if($!==void 0)X.limit=$;return X}async function y(F,X,J){let $=N(J);if(F.deleteRange)return F.deleteRange(X,$);return L(F,X,$)}function v(F){return F.replaceAll(/:+$/g,"")}function ZF(F,X){let J=v(F),$=v(X);if(J.length===0)return $;if($.length===0)return J;return`${J}:${$}`}class _{#F;#Z;constructor(F,X){this.#F=F,this.#Z=v(X)}#X(F){if(this.#Z.length===0)return F;return F.length===0?`${this.#Z}:`:`${this.#Z}:${F}`}#J(F){if(this.#Z.length===0)return F;return F.slice(this.#Z.length+1)}#$(F={}){let X={};if(F.limit!==void 0)X.limit=F.limit;if(F.reverse!==void 0)X.reverse=F.reverse;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={};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}capabilities(){return this.#F.capabilities()}scoped(F){return new _(this.#F,ZF(this.#Z,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[J,$]of this.#F.scan(this.#X(F),this.#$(X)))yield[this.#J(J),$]}async batch(F){D("batch operations",F.length),await this.#F.batch(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)}}))}async conditionalBatch(F,X){return x(this.#F,F.map((J)=>({key:this.#X(J.key),expectedValue:J.expectedValue})),X.map((J)=>{if(J.type==="put")return{type:"put",key:this.#X(J.key),value:J.value};return{type:"delete",key:this.#X(J.key)}}))}async has(F){return T(this.#F,this.#X(F))}async deletePrefix(F){return c(this.#F,this.#X(F))}async deleteRange(F,X){let J=this.#G(N(X));return y(this.#F,this.#X(F),J)}async*keys(F,X){for await(let J of b(this.#F,this.#X(F),this.#$(X)))yield this.#J(J)}async count(F){return m(this.#F,this.#X(F))}[Symbol.dispose](){this.#F[Symbol.dispose]()}}function u(F,X){return new _(F,X)}import{createClient as UF}from"@libsql/client";var $F=/^PRAGMA\b/iu,GF=/^PRAGMA\s+(?:[A-Z_][A-Z0-9_]*\.)?[A-Z_][A-Z0-9_]*\s*$/iu,jF=/^SELECT\b/iu;function HF(F){return F.trim().replace(/;+\s*$/u,"").trim()}function MF(F){return GF.test(F)}function g(F){let X=HF(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(jF.test(X))return;if($F.test(X)&&MF(X))return;throw Error("Storage query only supports read-only SELECT and PRAGMA statements.")}var I=`CREATE TABLE IF NOT EXISTS kv (
|
|
2
|
+
var CF=import.meta.require,vF=(F,X,J)=>{if(X!=null){if(typeof X!=="object"&&typeof X!=="function")throw TypeError('Object expected to be assigned to "using" declaration');let $;if(J)$=X[Symbol.asyncDispose];if($===void 0)$=X[Symbol.dispose];if(typeof $!=="function")throw TypeError("Object not disposable");F.push([J,$,X])}else if(J)F.push([J]);return X},OF=(F,X,J)=>{let $=(j)=>X=J?new SuppressedError(j,X,"An error was suppressed during disposal"):(J=!0,j),G=(j)=>{while(j=F.pop())try{var M=j[1]&&j[1].call(j[2]);if(j[0])return Promise.resolve(M).then(G,(H)=>($(H),G()))}catch(H){$(H)}if(J)throw X};return G()};function B(F,X,J){if(!F.capabilities()[X])throw Error(`Feature "${J}" requires storage capability "${X}", but this storage backend does not provide it.`)}function e(F){let X=F.capabilities(),J=[];if(X.persistence!=="local"&&X.persistence!=="remote")J.push(`persistence must be "local" or "remote" (got "${X.persistence}")`);if(X.readAfterWrite!=="linearizable")J.push(`readAfterWrite must be "linearizable" (got "${X.readAfterWrite}")`);if(X.scanConsistency!=="snapshot")J.push(`scanConsistency must be "snapshot" (got "${X.scanConsistency}")`);if(!X.atomicBatch)J.push("atomicBatch must be true");if(!X.conditionalBatch)J.push("conditionalBatch must be true");if(J.length>0)throw Error(`Storage is not durable enough for recovery: ${J.join("; ")}.`)}var C="default";async function z(F,X){return await F.get(X)!==null}async function*Q(F,X,J){for await(let[$]of F.scan(X,J))yield $}async function P(F,X){let J=0;for await(let $ of Q(F,X))J++;return J}async function A(F,X){let J=[];for await(let $ of Q(F,X))J.push({type:"delete",key:$});if(J.length===0)return 0;return await F.batch(J),J.length}async function L(F,X,J){let $=[];for await(let G of Q(F,X,J))$.push({type:"delete",key:G});if($.length===0)return 0;return await F.batch($),$.length}var o=["actrec:","archive:","async-act:","attr:","audit:bulk:","blob:","budget:","budget-charged:","child-by-parent:","ev:","fleet-event-by-workflow:","fleet-event:","fleet-event-tail","idx:","lease:","liveness:","offload:","op:","review:","schedule:","schedule-due:","schedule-run-by-schedule:","schedule-run-link:","schedule-run:","sig:","sigres:","sigseq:","start-idem:","state:","tag:","tool-effect:","upd:","upk:","upr:","wf:","wf-cleanup:","wf-cleanup-needed:","wf-concurrency:","wf-concurrency-holder:","wf-deadline:","wf-delayed:","wf-finalizer-state:","wf-has-services:","wf-headers:","wf-idx-","wf-teardown:","wf-teardown-deadletter:","wf-teardown-needed:","wf-teardown-succeeded:","wf-terminal:"];var v=1e4,SF=1e4;class q extends Error{code="StorageBatchOperationLimitExceededError";cap=v;count;target;constructor(F,X){super(`${F} count ${X} exceeds MAX_BATCH_OPERATIONS (${v}).`);this.name="StorageBatchOperationLimitExceededError",this.target=F,this.count=X}}function D(F,X){if(X>v)throw new q(F,X)}function S(F){return F.length>0?F.slice(0,-1)+String.fromCharCode(F.charCodeAt(F.length-1)+1):"\xFF"}function EF(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 E(F,X){if(F===null||X===null)return F===X;if(F.byteLength!==X.byteLength)return!1;for(let J=0;J<F.byteLength;J++)if(F[J]!==X[J])return!1;return!0}async function T(F,X){if(F.has)return F.has(X);return z(F,X)}function b(F,X,J){if(F.keys)return F.keys(X,J);return Q(F,X,J)}async function m(F,X){if(F.count)return F.count(X);return P(F,X)}async function y(F,X){if(F.deletePrefix)return F.deletePrefix(X);return A(F,X)}async function TF(F,X){D("batch operations",X.length),await F.batch(X)}async function c(F,X,J){if(D("conditionalBatch conditions",X.length),D("conditionalBatch operations",J.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(X,J)}function Z(F){return encodeURIComponent(F)}function bF(F){return decodeURIComponent(F)}function mF(F){try{return decodeURIComponent(F)}catch{return null}}var U=(F)=>String(F).padStart(16,"0"),FF="0",XF="1",K=(F,X,J,$)=>`sig:${Z(F)}:${Z(X)}:${$}:${Z(J)}`,yF={workflow:(F)=>`wf:${Z(F)}`,checkpoint:(F)=>`wf:${Z(F)}:ckpt`,checkpointHistory:(F,X)=>`wf:${Z(F)}:ckpt:${String(X).padStart(10,"0")}`,timelinePrefix:(F)=>`wf:${Z(F)}:timeline:`,timeline:(F,X)=>`wf:${Z(F)}:timeline:${String(X).padStart(10,"0")}`,schedule:(F)=>`schedule:${Z(F)}`,scheduleTick:(F,X)=>`schedule-due:${String(F).padStart(16,"0")}:${Z(X)}`,scheduleRun:(F)=>`schedule-run:${Z(F)}`,scheduleRunLink:(F)=>`schedule-run-link:${Z(F)}`,scheduleRunBySchedulePrefix:(F)=>`schedule-run-by-schedule:${Z(F)}:`,scheduleRunBySchedule:(F,X)=>`schedule-run-by-schedule:${Z(F)}:${Z(X)}`,operation:(F,X,J)=>`op:${F}:${U(X)}:${J}`,operationInflight:(F)=>`op:inflight:${F}`,operationQueued:(F)=>`op:queued:${F}`,operationResolved:(F)=>`op:resolved:${F}`,operationDeadLetterPrefix:()=>"op:dead-letter:",operationDeadLetter:(F)=>`op:dead-letter:${F}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(F,X,J)=>`audit:bulk:${U(F)}:${Z(X)}:${Z(J)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(F,X)=>`op:resolved-by-time:${U(F)}:${Z(X)}`,asyncActivity:(F,X)=>`async-act:v1:${Z(F)}:${Z(X)}`,asyncActivityResolution:(F,X)=>`async-act:v1:${Z(F)}:${Z(X)}:resolution`,activityReconciliationPrefix:(F)=>`actrec:v1:${Z(F)}:`,activityReconciliation:(F,X,J)=>`actrec:v1:${Z(F)}:${Z(X)}:${J}`,eventPrefix:(F)=>`ev:${Z(F)}:`,event:(F,X)=>`ev:${Z(F)}:${String(X).padStart(10,"0")}`,eventHead:(F)=>`ev:${Z(F)}:head`,eventWatermark:(F)=>`ev:${Z(F)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(F)=>`fleet-event:${String(F).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(F)=>`fleet-event-by-workflow:${Z(F)}:`,fleetEventByWorkflow:(F,X)=>`fleet-event-by-workflow:${Z(F)}:${String(X).padStart(10,"0")}`,signal:(F,X,J)=>K(F,X,J,XF),startSignal:(F,X,J)=>K(F,X,J,FF),signalSequence:(F)=>`sigseq:v1:${Z(F)}`,signalAcceptedResponsePrefix:(F)=>`sigres:v1:${Z(F)}:`,signalAcceptedResponse:(F,X,J)=>`sigres:v1:${Z(F)}:${Z(X)}:${Z(J)}`,deadline:(F,X)=>`wf-deadline:${U(F)}:${Z(X)}`,terminalCleanup:(F,X)=>`wf-cleanup:${U(F)}:${Z(X)}`,teardownTimer:(F,X)=>`wf-teardown:${U(F)}:${Z(X)}`,delayedStart:(F,X)=>`wf-delayed:${U(F)}:${Z(X)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(F,X)=>`wf-terminal:${U(F)}:${Z(X)}`,attribute:(F)=>`attr:${Z(F)}`,attributeIndex:(F,X,J)=>`idx:${F}:${X}:${Z(J)}`,tagIndex:(F,X)=>`tag:${Z(F)}:${Z(X)}`,updatePrefix:(F)=>`upd:${Z(F)}:`,update:(F,X)=>`upd:${Z(F)}:${X}`,updateResponse:(F)=>`upr:${F}`,updateIdempotency:(F,X)=>`upk:${Z(F)}:${X}`,startIdempotency:(F)=>`start-idem:${Z(F)}`,startIdempotencySignalId:(F)=>`start-idem:${F}`,livenessPrefix:()=>"liveness:",liveness:(F)=>`liveness:${Z(F)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",budget:(F,X,J)=>`budget:${F}:${X}:${J}`,review:(F,X)=>`review:${Z(F)}:${X}`,workflowHeaders:(F)=>`wf-headers:${Z(F)}`,childCancellationPrefix:(F)=>`child-cancel:${Z(F)}:`,childCancellation:(F,X)=>`child-cancel:${Z(F)}:${Z(X)}`,childWorkflowByParentPrefix:(F,X)=>`child-by-parent:${Z(F)}:${X===void 0?"":`${Z(X)}:`}`,childWorkflowByParent:(F,X,J)=>`child-by-parent:${Z(F)}:${X===void 0?"":`${Z(X)}:`}${Z(J)}`,terminalCleanupNeeded:(F)=>`wf-cleanup-needed:${Z(F)}`,workflowConcurrency:(F,X)=>`wf-concurrency:${Z(F)}:${Z(X)}`,workflowConcurrencyHolder:(F)=>`wf-concurrency-holder:${Z(F)}`,workflowHasServices:(F)=>`wf-has-services:${Z(F)}`,finalizerState:(F)=>`wf-finalizer-state:${Z(F)}`,teardownOwed:(F)=>`wf-teardown-needed:${Z(F)}`,teardownSucceeded:(F)=>`wf-teardown-succeeded:${Z(F)}`,teardownDeadLetter:(F)=>`wf-teardown-deadletter:${Z(F)}`,offload:(F,X)=>`offload:${Z(F)}:${X}`,archive:(F,X)=>`archive:${Z(F)}:${X}`,stateExecution:(F,X)=>`state:execution:${Z(F)}:${Z(X)}`,stateWorkflow:(F,X)=>`state:workflow-scope:${C}:${Z(F)}:${Z(X)}`,streamChunkPrefix:(F,X)=>`blob:${Z(F)}:${X}:chunk:`,streamChunk:(F,X,J)=>`blob:${Z(F)}:${X}:chunk:${String(J).padStart(10,"0")}`,streamTail:(F,X)=>`blob:${Z(F)}:${X}:tail`,streamMetadata:(F,X)=>`blob:${Z(F)}:${X}:meta`,budgetCharged:(F)=>`budget-charged:${F}`,toolEffect:(F,X,J)=>`tool-effect:${Z(F)}:${X}:${J}`,workflowVisibilityStatus:(F,X)=>`wf-idx-status:${Z(F)}:${Z(X)}`,workflowVisibilityType:(F,X)=>`wf-idx-type:${Z(F)}:${Z(X)}`,workflowVisibilityCreated:(F,X)=>`wf-idx-created:${U(F)}:${Z(X)}`,workflowVisibilityUpdated:(F,X)=>`wf-idx-updated:${U(F)}:${Z(X)}`,workflowVisibilityDeadline:(F,X)=>`wf-idx-deadline:${U(F)}:${Z(X)}`,workflowVisibilityManifest:(F)=>`wf-idx-manifest:${Z(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 N(F){let X={},J=!1;for(let G of["gt","gte","lt","lte"]){let j=F[G];if(j===void 0)continue;if(typeof j!=="string")throw Error("deleteRange bounds must be strings");X[G]=j,J=!0}if(!J)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let $=JF(F.limit);if($!==void 0)X.limit=$;return X}async function x(F,X,J){let $=N(J);if(F.deleteRange)return F.deleteRange(X,$);return L(F,X,$)}function O(F){return F.replaceAll(/:+$/g,"")}function ZF(F,X){let J=O(F),$=O(X);if(J.length===0)return $;if($.length===0)return J;return`${J}:${$}`}class _{#F;#Z;constructor(F,X){this.#F=F,this.#Z=O(X)}#X(F){if(this.#Z.length===0)return F;return F.length===0?`${this.#Z}:`:`${this.#Z}:${F}`}#J(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)}})}#$(F){if(this.#Z.length===0)return F;return F.slice(this.#Z.length+1)}#G(F={}){let X={};if(F.limit!==void 0)X.limit=F.limit;if(F.reverse!==void 0)X.reverse=F.reverse;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}#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}capabilities(){return this.#F.capabilities()}scoped(F){return new _(this.#F,ZF(this.#Z,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[J,$]of this.#F.scan(this.#X(F),this.#G(X)))yield[this.#$(J),$]}async batch(F){D("batch operations",F.length),await this.#F.batch(this.#J(F))}async conditionalBatch(F,X){return c(this.#F,F.map((J)=>({key:this.#X(J.key),expectedValue:J.expectedValue})),this.#J(X))}async has(F){return T(this.#F,this.#X(F))}async deletePrefix(F){return y(this.#F,this.#X(F))}async deleteRange(F,X){let J=this.#j(N(X));return x(this.#F,this.#X(F),J)}async*keys(F,X){for await(let J of b(this.#F,this.#X(F),this.#G(X)))yield this.#$(J)}async count(F){return m(this.#F,this.#X(F))}[Symbol.dispose](){this.#F[Symbol.dispose]()}}function u(F,X){return new _(F,X)}import{createClient as UF}from"@libsql/client";var $F=/^PRAGMA\b/iu,GF=/^PRAGMA\s+(?:[A-Z_][A-Z0-9_]*\.)?[A-Z_][A-Z0-9_]*\s*$/iu,jF=/^SELECT\b/iu;function HF(F){return F.trim().replace(/;+\s*$/u,"").trim()}function MF(F){return GF.test(F)}function g(F){let X=HF(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(jF.test(X))return;if($F.test(X)&&MF(X))return;throw Error("Storage query only supports read-only SELECT and PRAGMA statements.")}var I=`CREATE TABLE IF NOT EXISTS kv (
|
|
3
3
|
key TEXT PRIMARY KEY,
|
|
4
4
|
value BLOB NOT NULL
|
|
5
5
|
) WITHOUT ROWID`,h="SELECT value FROM kv WHERE key = ?",Y="INSERT INTO kv (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",W="DELETE FROM kv WHERE key = ?",k="SELECT 1 AS present FROM kv WHERE key = ? LIMIT 1",w="SELECT COUNT(*) AS count FROM kv WHERE key >= ? AND key < ?",f="DELETE FROM kv WHERE key >= ? AND key < ?";function R(F){return[F,S(F)]}function d(F,X){let{gt:J,gte:$,lt:G,lte:j}=X,M=["key >= ? AND key < ?"],H=R(F);if(J!==void 0)M.push("key > ?"),H.push(J);if($!==void 0)M.push("key >= ?"),H.push($);if(G!==void 0)M.push("key < ?"),H.push(G);if(j!==void 0)M.push("key <= ?"),H.push(j);return{conditions:M,parameters:H}}function l(F,X={}){let{limit:J,reverse:$}=X,{conditions:G,parameters:j}=d(F,X),M=$?"DESC":"ASC",H=J!==void 0?" LIMIT ?":"";if(J!==void 0)j.push(J);return{parameters:j,sqlSuffix:`WHERE ${G.join(" AND ")} ORDER BY key ${M}${H}`}}function p(F,X,J="kv"){let{conditions:$,parameters:G}=d(F,X),j=$.join(" AND ");if(X.limit===void 0)return{parameters:G,sql:`DELETE FROM ${J} WHERE ${j}`};return G.push(X.limit),{parameters:G,sql:`DELETE FROM ${J} WHERE key IN (SELECT key FROM ${J} WHERE ${j} ORDER BY key ASC LIMIT ?)`}}function a(F,X={}){let{parameters:J,sqlSuffix:$}=l(F,X);return{parameters:J,sql:`SELECT key, value FROM kv ${$}`}}function s(F,X={}){let{parameters:J,sqlSuffix:$}=l(F,X);return{parameters:J,sql:`SELECT key FROM kv ${$}`}}var n=`${I};`,V=10,DF=new Set(["SQLITE_BUSY","SQLITE_LOCKED"]);function i(F){return typeof F==="object"&&F!==null&&"code"in F&&typeof F.code==="string"&&DF.has(F.code)}async function QF(F){return F.transaction("write")}async function NF(F){try{await F.rollback()}catch{}}async function r(F){await new Promise((X)=>{setTimeout(X,Math.min(F*5,50))})}async function VF(F,X){for(let J=1;J<=V;J++)try{await F.batch(X,"write");return}catch($){if(!i($)||J===V)throw $;await r(J)}}async function YF(F,X){for(let J of X){let G=(await F.execute({sql:h,args:[J.key]})).rows[0]?.value,j=G===null||G===void 0?null:new Uint8Array(G);if(!E(j,J.expectedValue))return!1}return!0}async function WF(F,X){for(let J of X)if(J.type==="put")await F.execute({sql:Y,args:[J.key,J.value]});else await F.execute({sql:W,args:[J.key]})}function RF(F){if(F==="file::memory:"||F===":memory:")return"ephemeral";if(F.startsWith("file:"))return"local";return"remote"}class BF{#F;#Z;#X=!1;constructor(F){this.#Z=RF(F.url),this.#F=UF(F.authToken?{url:F.url,authToken:F.authToken}:{url:F.url})}capabilities(){return{persistence:this.#Z,readAfterWrite:"session",scanConsistency:"snapshot",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}async#J(){if(this.#X)return;await this.#F.executeMultiple(n),this.#X=!0}async get(F){await this.#J();let X=await this.#F.execute({sql:h,args:[F]});if(X.rows.length===0)return null;let J=X.rows[0].value;if(J===null||J===void 0)return null;return new Uint8Array(J)}async put(F,X){await this.#J(),await this.#F.execute({sql:Y,args:[F,X]})}async delete(F){await this.#J(),await this.#F.execute({sql:W,args:[F]})}async has(F){return await this.#J(),(await this.#F.execute({sql:k,args:[F]})).rows.length>0}async deletePrefix(F){await this.#J();let[X,J]=R(F);return(await this.#F.execute({sql:f,args:[X,J]})).rowsAffected}async deleteRange(F,X){await this.#J();let J=N(X),{parameters:$,sql:G}=p(F,J);return(await this.#F.execute({sql:G,args:$})).rowsAffected}async*scan(F,X={}){await this.#J();let{parameters:J,sql:$}=a(F,X),G=await this.#F.execute({sql:$,args:J});for(let j of G.rows){let{key:M,value:H}=j,t=new Uint8Array(H);yield[M,t]}}async*keys(F,X={}){await this.#J();let{parameters:J,sql:$}=s(F,X),G=await this.#F.execute({sql:$,args:J});for(let j of G.rows)yield j.key}async count(F){await this.#J();let[X,J]=R(F),$=await this.#F.execute({sql:w,args:[X,J]});return Number($.rows[0]?.count??0)}scoped(F){return u(this,F)}async batch(F){if(D("batch operations",F.length),F.length===0)return;await this.#J();let X=F.map((J)=>{if(J.type==="put")return{sql:Y,args:[J.key,J.value]};return{sql:W,args:[J.key]}});await VF(this.#F,X)}async conditionalBatch(F,X){D("conditionalBatch conditions",F.length),D("conditionalBatch operations",X.length),await this.#J();let J;for(let $=1;$<=V;$++){let G;try{if(G=await QF(this.#F),await G.executeMultiple(n),!await YF(G,F))return await G.rollback(),!1;return await WF(G,X),await G.commit(),!0}catch(j){if(G!==void 0)await NF(G);if(!i(j))throw j;if(J=j,$<V)await r($)}}throw Error(`conditionalBatch exhausted ${V} attempts after SQLite contention failures`,{cause:J})}async query(F,X){return await this.#J(),g(F),(await this.#F.execute({sql:F,args:X??[]})).rows}[Symbol.dispose](){this.#F.close()}}export{BF as TursoStorage};
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = "0.
|
|
1
|
+
export const VERSION = "0.15.0";
|
package/dist/web-extension.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function E(F){let J=[];for(let X=0;X<F.length;X+=512)J.push(String.fromCharCode(...F.subarray(X,X+512)));return btoa(J.join(""))}function K(F){let J=atob(F),X=new Uint8Array(J.length);for(let Z=0;Z<J.length;Z+=1)X[Z]=J.charCodeAt(Z);return X}function G(F){return typeof F==="object"&&F!==null&&!Array.isArray(F)}async function j(F,J){return await F.get(J)!==null}async function*V(F,J,X){for await(let[Z]of F.scan(J,X))yield Z}async function L(F,J){let X=0;for await(let Z of V(F,J))X++;return X}async function D(F,J){let X=[];for await(let Z of V(F,J))X.push({type:"delete",key:Z});if(X.length===0)return 0;return await F.batch(X),X.length}async function C(F,J,X){let Z=[];for await(let H of V(F,J,X))Z.push({type:"delete",key:H});if(Z.length===0)return 0;return await F.batch(Z),Z.length}function h(F,J,X){if(!F.capabilities()[J])throw Error(`Feature "${X}" requires storage capability "${J}", but this storage backend does not provide it.`)}var B=1e4;class b extends Error{code="StorageBatchOperationLimitExceededError";cap=B;count;target;constructor(F,J){super(`${F} count ${J} exceeds MAX_BATCH_OPERATIONS (${B}).`);this.name="StorageBatchOperationLimitExceededError",this.target=F,this.count=J}}function U(F,J){if(J>B)throw new b(F,J)}function v(F){return F.length>0?F.slice(0,-1)+String.fromCharCode(F.charCodeAt(F.length-1)+1):"ÿ"}function x(F,J={}){if(J.gt!==void 0&&F<=J.gt)return!1;if(J.gte!==void 0&&F<J.gte)return!1;if(J.lt!==void 0&&F>=J.lt)return!1;if(J.lte!==void 0&&F>J.lte)return!1;return!0}function QF(F,J){if(F===null||J===null)return F===J;if(F.byteLength!==J.byteLength)return!1;for(let X=0;X<F.byteLength;X++)if(F[X]!==J[X])return!1;return!0}async function m(F,J){if(F.has)return F.has(J);return j(F,J)}function g(F,J,X){if(F.keys)return F.keys(J,X);return V(F,J,X)}async function I(F,J){if(F.count)return F.count(J);return L(F,J)}async function y(F,J){if(F.deletePrefix)return F.deletePrefix(J);return D(F,J)}async function u(F,J,X){if(U("conditionalBatch conditions",J.length),U("conditionalBatch operations",X.length),h(F,"conditionalBatch","storageConditionalBatch"),!F.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return F.conditionalBatch(J,X)}function p(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 J={},X=!1;for(let H of["gt","gte","lt","lte"]){let $=F[H];if($===void 0)continue;if(typeof $!=="string")throw Error("deleteRange bounds must be strings");J[H]=$,X=!0}if(!X)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let Z=p(F.limit);if(Z!==void 0)J.limit=Z;return J}async function c(F,J,X){let Z=Q(X);if(F.deleteRange)return F.deleteRange(J,Z);return C(F,J,Z)}function s(F,J){let X={key:F,open:!1};if(J.gte!==void 0&&J.gte>X.key)X.key=J.gte,X.open=!1;if(J.gt!==void 0&&J.gt>=X.key)X.key=J.gt,X.open=!0;return X}function n(F,J){let X={key:v(F),open:!0};if(J.lt!==void 0&&J.lt<=X.key)X.key=J.lt,X.open=!0;if(J.lte!==void 0&&J.lte<X.key)X.key=J.lte,X.open=!1;return X}function jF(F,J){let X=s(F,J),Z=n(F,J);if(X.key>Z.key||X.key===Z.key&&(X.open||Z.open))return null;return{lower:X,upper:Z}}function R(F){return F.replaceAll(/:+$/g,"")}function a(F,J){let X=R(F),Z=R(J);if(X.length===0)return Z;if(Z.length===0)return X;return`${X}:${Z}`}class T{#J;#X;constructor(F,J){this.#J=F,this.#X=R(J)}#F(F){if(this.#X.length===0)return F;return F.length===0?`${this.#X}:`:`${this.#X}:${F}`}#Z(F){if(this.#X.length===0)return F;return F.slice(this.#X.length+1)}#$(F={}){let J={};if(F.limit!==void 0)J.limit=F.limit;if(F.reverse!==void 0)J.reverse=F.reverse;if(F.gt!==void 0)J.gt=this.#F(F.gt);if(F.gte!==void 0)J.gte=this.#F(F.gte);if(F.lt!==void 0)J.lt=this.#F(F.lt);if(F.lte!==void 0)J.lte=this.#F(F.lte);return J}#
|
|
1
|
+
function E(F){let J=[];for(let X=0;X<F.length;X+=512)J.push(String.fromCharCode(...F.subarray(X,X+512)));return btoa(J.join(""))}function K(F){let J=atob(F),X=new Uint8Array(J.length);for(let Z=0;Z<J.length;Z+=1)X[Z]=J.charCodeAt(Z);return X}function G(F){return typeof F==="object"&&F!==null&&!Array.isArray(F)}async function j(F,J){return await F.get(J)!==null}async function*V(F,J,X){for await(let[Z]of F.scan(J,X))yield Z}async function L(F,J){let X=0;for await(let Z of V(F,J))X++;return X}async function D(F,J){let X=[];for await(let Z of V(F,J))X.push({type:"delete",key:Z});if(X.length===0)return 0;return await F.batch(X),X.length}async function C(F,J,X){let Z=[];for await(let H of V(F,J,X))Z.push({type:"delete",key:H});if(Z.length===0)return 0;return await F.batch(Z),Z.length}function h(F,J,X){if(!F.capabilities()[J])throw Error(`Feature "${X}" requires storage capability "${J}", but this storage backend does not provide it.`)}var B=1e4;class b extends Error{code="StorageBatchOperationLimitExceededError";cap=B;count;target;constructor(F,J){super(`${F} count ${J} exceeds MAX_BATCH_OPERATIONS (${B}).`);this.name="StorageBatchOperationLimitExceededError",this.target=F,this.count=J}}function U(F,J){if(J>B)throw new b(F,J)}function v(F){return F.length>0?F.slice(0,-1)+String.fromCharCode(F.charCodeAt(F.length-1)+1):"ÿ"}function x(F,J={}){if(J.gt!==void 0&&F<=J.gt)return!1;if(J.gte!==void 0&&F<J.gte)return!1;if(J.lt!==void 0&&F>=J.lt)return!1;if(J.lte!==void 0&&F>J.lte)return!1;return!0}function QF(F,J){if(F===null||J===null)return F===J;if(F.byteLength!==J.byteLength)return!1;for(let X=0;X<F.byteLength;X++)if(F[X]!==J[X])return!1;return!0}async function m(F,J){if(F.has)return F.has(J);return j(F,J)}function g(F,J,X){if(F.keys)return F.keys(J,X);return V(F,J,X)}async function I(F,J){if(F.count)return F.count(J);return L(F,J)}async function y(F,J){if(F.deletePrefix)return F.deletePrefix(J);return D(F,J)}async function u(F,J,X){if(U("conditionalBatch conditions",J.length),U("conditionalBatch operations",X.length),h(F,"conditionalBatch","storageConditionalBatch"),!F.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return F.conditionalBatch(J,X)}function p(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 J={},X=!1;for(let H of["gt","gte","lt","lte"]){let $=F[H];if($===void 0)continue;if(typeof $!=="string")throw Error("deleteRange bounds must be strings");J[H]=$,X=!0}if(!X)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let Z=p(F.limit);if(Z!==void 0)J.limit=Z;return J}async function c(F,J,X){let Z=Q(X);if(F.deleteRange)return F.deleteRange(J,Z);return C(F,J,Z)}function s(F,J){let X={key:F,open:!1};if(J.gte!==void 0&&J.gte>X.key)X.key=J.gte,X.open=!1;if(J.gt!==void 0&&J.gt>=X.key)X.key=J.gt,X.open=!0;return X}function n(F,J){let X={key:v(F),open:!0};if(J.lt!==void 0&&J.lt<=X.key)X.key=J.lt,X.open=!0;if(J.lte!==void 0&&J.lte<X.key)X.key=J.lte,X.open=!1;return X}function jF(F,J){let X=s(F,J),Z=n(F,J);if(X.key>Z.key||X.key===Z.key&&(X.open||Z.open))return null;return{lower:X,upper:Z}}function R(F){return F.replaceAll(/:+$/g,"")}function a(F,J){let X=R(F),Z=R(J);if(X.length===0)return Z;if(Z.length===0)return X;return`${X}:${Z}`}class T{#J;#X;constructor(F,J){this.#J=F,this.#X=R(J)}#F(F){if(this.#X.length===0)return F;return F.length===0?`${this.#X}:`:`${this.#X}:${F}`}#Z(F){return F.map((J)=>{if(J.type==="put")return{type:"put",key:this.#F(J.key),value:J.value};return{type:"delete",key:this.#F(J.key)}})}#H(F){if(this.#X.length===0)return F;return F.slice(this.#X.length+1)}#$(F={}){let J={};if(F.limit!==void 0)J.limit=F.limit;if(F.reverse!==void 0)J.reverse=F.reverse;if(F.gt!==void 0)J.gt=this.#F(F.gt);if(F.gte!==void 0)J.gte=this.#F(F.gte);if(F.lt!==void 0)J.lt=this.#F(F.lt);if(F.lte!==void 0)J.lte=this.#F(F.lte);return J}#G(F){let J={};if(F.limit!==void 0)J.limit=F.limit;if(F.gt!==void 0)J.gt=this.#F(F.gt);if(F.gte!==void 0)J.gte=this.#F(F.gte);if(F.lt!==void 0)J.lt=this.#F(F.lt);if(F.lte!==void 0)J.lte=this.#F(F.lte);return J}capabilities(){return this.#J.capabilities()}scoped(F){return new T(this.#J,a(this.#X,F))}async get(F){return this.#J.get(this.#F(F))}async put(F,J){await this.#J.put(this.#F(F),J)}async delete(F){await this.#J.delete(this.#F(F))}async*scan(F,J){for await(let[X,Z]of this.#J.scan(this.#F(F),this.#$(J)))yield[this.#H(X),Z]}async batch(F){U("batch operations",F.length),await this.#J.batch(this.#Z(F))}async conditionalBatch(F,J){return u(this.#J,F.map((X)=>({key:this.#F(X.key),expectedValue:X.expectedValue})),this.#Z(J))}async has(F){return m(this.#J,this.#F(F))}async deletePrefix(F){return y(this.#J,this.#F(F))}async deleteRange(F,J){let X=this.#G(Q(J));return c(this.#J,this.#F(F),X)}async*keys(F,J){for await(let X of g(this.#J,this.#F(F),this.#$(J)))yield this.#H(X)}async count(F){return I(this.#J,this.#F(F))}[Symbol.dispose](){this.#J[Symbol.dispose]()}}function w(F,J){return new T(F,J)}var d=1,_="__weftStorageKeyspace",i=102400,r=8192;function t(F){return typeof F==="object"&&F!==null&&"then"in F&&typeof F.then==="function"}function W(F){if(!G(F))return!1;if(F.__weftStorage!==d)return!1;return typeof F.value==="string"}function o(F){if(!G(F))return!1;return Object.values(F).every(W)}function z(F){if(F!==_)return;throw Error(`WebExtensionStorage key "${_}" is reserved for adapter metadata.`)}function e(F){for(let J of F)z(J.key)}function f(F){return{__weftStorage:d,value:E(F)}}function k(F){if(!W(F))return null;return K(F.value)}function FF(F){return W(F)}function A(F){return new TextEncoder().encode(JSON.stringify(F)).byteLength}function JF(F){if(!G(F))return!1;if(F.runtime!==void 0&&!G(F.runtime))return!1;return F.storage===void 0||G(F.storage)}function XF(F=void 0){if(F!==void 0){if(!JF(F))throw Error("WebExtensionStorage injected namespace must be an object.");return F}let J=globalThis,X=J.browser??J.chrome;if(X?.storage===void 0)throw Error("WebExtensionStorage requires globalThis.browser.storage or globalThis.chrome.storage.");return X}function ZF(F,J){let X=F.storage?.[J];if(X===void 0)throw Error(`WebExtensionStorage area "${J}" is not available.`);return X}function $F(F){if(F==="session")return"ephemeral";if(F==="sync"||F==="managed")return"remote";return"local"}function HF(F){let J=F.runtime?.lastError?.message;return J===void 0?null:Error(J)}async function P(F,J,X){return new Promise((Z,H)=>{let $=!1,N=(M)=>{if($)return;let S=HF(F);if($=!0,S!==null)H(S);else Z(M)},O=(M)=>{if($)return;$=!0,H(M)},l=(M)=>N(M),q;try{q=J(l)}catch{try{q=X()}catch(M){O(M);return}}if(t(q))q.then(N,O)})}class Y{static#J=new WeakMap;#X;#F;#Z;#H;#$;constructor(F={},J=void 0){this.#Z=F.area??"local",this.#H=$F(this.#Z),this.#X=XF(J),this.#F=ZF(this.#X,this.#Z),this.#$=()=>{},this.#X.storage?.onChanged?.addListener?.(this.#$)}capabilities(){return{persistence:this.#H,readAfterWrite:"session",scanConsistency:"best-effort",atomicBatch:!1,conditionalBatch:!1,boundedRangeDelete:!1}}async#G(F){return P(this.#X,(J)=>this.#F.get(F,J),()=>this.#F.get(F))}async#Y(F){await P(this.#X,(J)=>this.#F.set(F,J),()=>this.#F.set(F))}async#Q(F){if(this.#F.getBytesInUse===void 0)return null;return P(this.#X,(J)=>this.#F.getBytesInUse?.(F,J),()=>this.#F.getBytesInUse?.(F))}async#M(){let J=(await this.#G(_))[_];if(J===void 0)return{};if(!o(J))throw Error("WebExtensionStorage keyspace is not a valid storage envelope map.");return{...J}}async#U(F){let J={[_]:F};await this.#j(J),await this.#Y(J)}async#N(F){let J=Y.#J.get(this.#F)??Promise.resolve(),X={},Z=new Promise(($)=>{X.release=$}),H=J.catch(()=>{return}).then(()=>Z);Y.#J.set(this.#F,H),await J.catch(()=>{return});try{return await F()}finally{if(X.release?.(),Y.#J.get(this.#F)===H)Y.#J.delete(this.#F)}}#V(){if(this.#Z==="managed")throw Error('WebExtensionStorage area "managed" is read-only.')}#_(F){let J=this.#F.QUOTA_BYTES_PER_ITEM??r;for(let[X,Z]of Object.entries(F)){let H=A({[X]:Z});if(H>J)throw Error(`WebExtensionStorage sync item quota exceeded for "${X}": ${String(H)} > ${String(J)}.`)}}async#q(F){let J=Object.keys(F),X=await this.#Q(null),Z=await this.#Q(J);if(X!==null&&Z!==null)return X-Z+A(F);let H=await this.#G(null);return A({...H,...F})}async#j(F){if(this.#Z!=="sync")return;this.#_(F);let J=this.#F.QUOTA_BYTES??i,X=await this.#q(F);if(X>J)throw Error(`WebExtensionStorage sync total quota exceeded: ${String(X)} > ${String(J)}.`)}async get(F){z(F);let J=await this.#M();return k(J[F])}async put(F,J){this.#V(),z(F),await this.#N(async()=>{let X=await this.#M();X[F]=f(J),await this.#U(X)})}async delete(F){this.#V(),z(F),await this.#N(async()=>{let J=await this.#M();if(!(F in J))return;delete J[F],await this.#U(J)})}async*scan(F,J={}){let X=await this.#M(),Z=Object.keys(X).filter(($)=>$.startsWith(F)).filter(($)=>x($,J)).filter(($)=>FF(X[$])).toSorted();if(J.reverse)Z=Z.toReversed();let H=0;for(let $ of Z){if(J.limit!==void 0&&H>=J.limit)break;let N=k(X[$]);if(N===null)continue;yield[$,N],H+=1}}async batch(F){if(U("batch operations",F.length),this.#V(),F.length===0)return;e(F),await this.#N(async()=>{let J=await this.#M();for(let X of F)if(X.type==="put")J[X.key]=f(X.value);else delete J[X.key];await this.#U(J)})}has(F){return j(this,F)}async*keys(F,J){yield*V(this,F,J)}count(F){return L(this,F)}async deletePrefix(F){return this.#V(),D(this,F)}async deleteRange(F,J){let X=Q(J);return this.#V(),C(this,F,X)}scoped(F){return w(this,F)}[Symbol.dispose](){this.#X.storage?.onChanged?.removeListener?.(this.#$)}}export{Y as WebExtensionStorage};
|
|
@@ -11,7 +11,7 @@ export interface TaskInfo {
|
|
|
11
11
|
input: unknown;
|
|
12
12
|
headers?: Record<string, string>;
|
|
13
13
|
workflowExecutionToken?: string;
|
|
14
|
-
attemptToken
|
|
14
|
+
attemptToken: string;
|
|
15
15
|
}
|
|
16
16
|
export interface ComposedInterceptor {
|
|
17
17
|
execute: ReturnType<typeof composeActivityInterceptors>['execute'];
|
|
@@ -21,13 +21,13 @@ export async function executeWithInterceptors(activityFunction, task, composed,
|
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
23
|
function createActivityExecutionContext(task, signal) {
|
|
24
|
-
if (signal === void 0 && task.workflowExecutionToken === void 0
|
|
24
|
+
if (signal === void 0 && task.workflowExecutionToken === void 0)
|
|
25
25
|
return;
|
|
26
26
|
return {
|
|
27
27
|
signal: signal ?? new AbortController().signal,
|
|
28
28
|
...task.workflowExecutionToken !== void 0 && {
|
|
29
29
|
workflowExecutionToken: task.workflowExecutionToken
|
|
30
30
|
},
|
|
31
|
-
|
|
31
|
+
activityAttemptToken: task.attemptToken
|
|
32
32
|
};
|
|
33
33
|
}
|
package/dist/worker/index.js
CHANGED
|
@@ -225,14 +225,14 @@ export class RemoteWorker {
|
|
|
225
225
|
this.#failSocket();
|
|
226
226
|
return;
|
|
227
227
|
}
|
|
228
|
-
const
|
|
228
|
+
const activityFunction = this.#activityTable[task.activityName];
|
|
229
229
|
if (activityFunction === void 0) {
|
|
230
230
|
this.#sendTaskResult({
|
|
231
231
|
type: "taskResult",
|
|
232
232
|
operationId: task.operationId,
|
|
233
233
|
status: "failed",
|
|
234
234
|
error: `Unknown activity: ${task.activityName}`,
|
|
235
|
-
|
|
235
|
+
attemptToken: task.attemptToken
|
|
236
236
|
});
|
|
237
237
|
return;
|
|
238
238
|
}
|
|
@@ -246,7 +246,7 @@ export class RemoteWorker {
|
|
|
246
246
|
operationId: task.operationId,
|
|
247
247
|
status: "completed",
|
|
248
248
|
value: normalizeWorkerJsonValue(result),
|
|
249
|
-
|
|
249
|
+
attemptToken: task.attemptToken
|
|
250
250
|
});
|
|
251
251
|
} catch (error) {
|
|
252
252
|
if (taskAbortController.signal.aborted)
|
|
@@ -256,7 +256,7 @@ export class RemoteWorker {
|
|
|
256
256
|
status: "cancelled",
|
|
257
257
|
cancelled: !0,
|
|
258
258
|
error: "Task cancelled",
|
|
259
|
-
|
|
259
|
+
attemptToken: task.attemptToken
|
|
260
260
|
});
|
|
261
261
|
else
|
|
262
262
|
this.#sendTaskResult({
|
|
@@ -264,7 +264,7 @@ export class RemoteWorker {
|
|
|
264
264
|
operationId: task.operationId,
|
|
265
265
|
status: "failed",
|
|
266
266
|
error: error instanceof Error ? error.message : String(error),
|
|
267
|
-
|
|
267
|
+
attemptToken: task.attemptToken
|
|
268
268
|
});
|
|
269
269
|
} finally {
|
|
270
270
|
this.#taskAbortControllers.delete(task.operationId);
|
package/dist/worker/long-poll.js
CHANGED
|
@@ -85,7 +85,6 @@ export class LongPollWorker {
|
|
|
85
85
|
}
|
|
86
86
|
async#executeTask(task, resultUrl) {
|
|
87
87
|
this.#inFlight += 1;
|
|
88
|
-
const tokenEcho = task.attemptToken !== void 0 ? { attemptToken: task.attemptToken } : {};
|
|
89
88
|
try {
|
|
90
89
|
const activityFunction = this.#options.activities[task.activityName];
|
|
91
90
|
if (activityFunction === void 0) {
|
|
@@ -95,7 +94,7 @@ export class LongPollWorker {
|
|
|
95
94
|
body: JSON.stringify({
|
|
96
95
|
operationId: task.operationId,
|
|
97
96
|
workerId: task.workerId,
|
|
98
|
-
|
|
97
|
+
attemptToken: task.attemptToken,
|
|
99
98
|
status: "failed",
|
|
100
99
|
error: `Unknown activity: ${task.activityName}`
|
|
101
100
|
}),
|
|
@@ -110,7 +109,7 @@ export class LongPollWorker {
|
|
|
110
109
|
body: JSON.stringify({
|
|
111
110
|
operationId: task.operationId,
|
|
112
111
|
workerId: task.workerId,
|
|
113
|
-
|
|
112
|
+
attemptToken: task.attemptToken,
|
|
114
113
|
status: "completed",
|
|
115
114
|
value: result
|
|
116
115
|
}),
|
|
@@ -124,7 +123,7 @@ export class LongPollWorker {
|
|
|
124
123
|
body: JSON.stringify({
|
|
125
124
|
operationId: task.operationId,
|
|
126
125
|
workerId: task.workerId,
|
|
127
|
-
|
|
126
|
+
attemptToken: task.attemptToken,
|
|
128
127
|
status: "failed",
|
|
129
128
|
error: error instanceof Error ? error.message : String(error)
|
|
130
129
|
}),
|