@lostgradient/weft 0.22.1 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cli/generated/operation-catalog.snapshot.json +112 -38
- package/dist/core/engine/errors.d.ts +1 -1
- package/dist/core/engine/errors.js +4 -1
- package/dist/core/engine/index.d.ts +1 -1
- package/dist/core/engine/index.js +1 -0
- package/dist/core/engine/persisted-data-version.js +1 -1
- package/dist/core/persisted-data-incompatible-error.d.ts +16 -2
- package/dist/core/persisted-data-incompatible-error.js +9 -1
- package/dist/core/weft-error.d.ts +1 -1
- package/dist/core/weft-error.js +1 -0
- package/dist/http.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -0
- package/dist/indexeddb.js +1 -1
- package/dist/json-schema.js +1 -1
- package/dist/server/fleet-event-feed.d.ts +14 -64
- package/dist/server/fleet-event-feed.js +228 -74
- package/dist/server/handler/index.d.ts +1 -1
- package/dist/server/index.d.ts +8 -6
- package/dist/server/operations/event-stream-contracts.js +15 -2
- package/dist/server/operations/fleet-events-sse.js +3 -0
- package/dist/server/operations/fleet-events-subscription.js +3 -0
- package/dist/server/replay-live-feed-internals.d.ts +7 -0
- package/dist/server/replay-live-feed-internals.js +107 -7
- package/dist/server/runtime/task-result-view.d.ts +31 -12
- package/dist/server/runtime/task-result-view.js +31 -9
- package/dist/server/task-ledger-transitions-cancellation.d.ts +2 -0
- package/dist/server/task-ledger-transitions-cancellation.js +1 -1
- package/dist/server/workflow-event-feed.d.ts +88 -0
- package/dist/server/workflow-event-feed.js +4 -1
- package/dist/storage/bun-sql.js +1 -0
- package/dist/storage/compressed-storage.js +1 -1
- package/dist/storage/index.d.ts +2 -1
- package/dist/storage/interface.d.ts +1 -0
- package/dist/storage/interface.js +1 -1
- package/dist/storage/key-prefixes.d.ts +1 -1
- package/dist/storage/key-prefixes.js +1 -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.js +1 -0
- package/dist/storage/postgres.js +2 -2
- package/dist/storage/resolve.js +1 -1
- package/dist/storage/scoped-storage.js +1 -1
- package/dist/storage/testing.js +1 -1
- package/dist/storage/turso.js +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/web-extension.js +1 -1
- package/package.json +1 -1
package/dist/web-extension.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function A(e){let t=[];for(let n=0;n<e.length;n+=512)t.push(String.fromCharCode(...e.subarray(n,n+512)));return btoa(t.join(""))}function T(e){let t=atob(e),n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i);return n}function g(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}async function m(e,t){return await e.get(t)!==null}async function*c(e,t,n){for await(let[i]of e.scan(t,n))yield i}async function b(e,t){let n=0;for await(let i of c(e,t))n++;return n}async function S(e,t){let n=[];for await(let i of c(e,t))n.push({type:"delete",key:i});if(n.length===0)return 0;return await e.batch(n),n.length}async function w(e,t,n){let i=[];for await(let s of c(e,t,n))i.push({type:"delete",key:s});if(i.length===0)return 0;return await e.batch(i),i.length}function D(e,t,n){if(!e.capabilities()[t])throw Error(`Feature "${n}" requires storage capability "${t}", but this storage backend does not provide it.`)}var _="default";function r(e){return encodeURIComponent(e)}var W={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${r(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${r(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var v=1e4;class N extends Error{code="StorageBatchOperationLimitExceededError";cap=v;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${v}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function u(e,t){if(t>v)throw new N(e,t)}function U(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"ÿ"}function L(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function Re(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0}async function K(e,t){if(e.has)return e.has(t);return m(e,t)}function z(e,t,n){if(e.keys)return e.keys(t,n);return c(e,t,n)}async function M(e,t){if(e.count)return e.count(t);return b(e,t)}async function H(e,t){if(e.deletePrefix)return e.deletePrefix(t);return S(e,t)}async function V(e,t,n){if(u("conditionalBatch conditions",t.length),u("conditionalBatch operations",n.length),D(e,"conditionalBatch","storageConditionalBatch"),!e.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return e.conditionalBatch(t,n)}var a=(e)=>String(e).padStart(16,"0"),X="0",Z="1",I=(e,t,n,i)=>`sig:${r(e)}:${r(t)}:${i}:${r(n)}`,Pe={workflow:(e)=>`wf:${r(e)}`,checkpoint:(e)=>`wf:${r(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${r(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${r(e)}:timeline:`,timeline:(e,t)=>`wf:${r(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${r(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${r(t)}`,scheduleRun:(e)=>`schedule-run:${r(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${r(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${r(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${r(e)}:${r(t)}`,operation:(e,t,n)=>`op:${e}:${a(t)}:${n}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,n)=>`audit:bulk:${a(e)}:${r(t)}:${r(n)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${a(e)}:${r(t)}`,asyncActivity:(e,t)=>`async-act:v1:${r(e)}:${r(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${r(e)}:${r(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${r(e)}:`,activityReconciliation:(e,t,n)=>`actrec:v1:${r(e)}:${r(t)}:${n}`,eventPrefix:(e)=>`ev:${r(e)}:`,event:(e,t)=>`ev:${r(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${r(e)}:head`,eventWatermark:(e)=>`ev:${r(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${r(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${r(e)}:${String(t).padStart(10,"0")}`,signal:(e,t,n)=>I(e,t,n,Z),startSignal:(e,t,n)=>I(e,t,n,X),signalSequence:(e)=>`sigseq:v1:${r(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${r(e)}:`,signalAcceptedResponse:(e,t,n)=>`sigres:v1:${r(e)}:${r(t)}:${r(n)}`,deadline:(e,t)=>`wf-deadline:${a(e)}:${r(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${a(e)}:${r(t)}`,teardownTimer:(e,t)=>`wf-teardown:${a(e)}:${r(t)}`,delayedStart:(e,t)=>`wf-delayed:${a(e)}:${r(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${a(e)}:${r(t)}`,attribute:(e)=>`attr:${r(e)}`,attributeIndex:(e,t,n)=>`idx:${e}:${t}:${r(n)}`,tagIndex:(e,t)=>`tag:${r(e)}:${r(t)}`,updatePrefix:(e)=>`upd:${r(e)}:`,update:(e,t)=>`upd:${r(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${r(e)}:${t}`,startIdempotency:(e)=>`start-idem:${r(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`,livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${r(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...W,budget:(e,t,n)=>`budget:${e}:${t}:${n}`,review:(e,t)=>`review:${r(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${r(e)}`,childCancellationPrefix:(e)=>`child-cancel:${r(e)}:`,childCancellation:(e,t)=>`child-cancel:${r(e)}:${r(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${r(e)}:${t===void 0?"":`${r(t)}:`}`,childWorkflowByParent:(e,t,n)=>`child-by-parent:${r(e)}:${t===void 0?"":`${r(t)}:`}${r(n)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${r(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${r(e)}:${r(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${r(e)}`,workflowHasServices:(e)=>`wf-has-services:${r(e)}`,finalizerState:(e)=>`wf-finalizer-state:${r(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${r(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${r(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${r(e)}`,offload:(e,t)=>`offload:${r(e)}:${t}`,archive:(e,t)=>`archive:${r(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${r(e)}:${r(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${_}:${r(e)}:${r(t)}`,streamChunkPrefix:(e,t)=>`blob:${r(e)}:${t}:chunk:`,streamChunk:(e,t,n)=>`blob:${r(e)}:${t}:chunk:${String(n).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${r(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${r(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,n)=>`tool-effect:${r(e)}:${t}:${n}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${r(e)}:${r(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${r(e)}:${r(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${a(e)}:${r(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${a(e)}:${r(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${a(e)}:${r(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${r(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function J(e){if(e===void 0)return;if(typeof e!=="number"||!Number.isInteger(e)||e<0)throw Error("deleteRange limit must be a finite non-negative integer");return e===0?0:e}function f(e){let t={},n=!1;for(let s of["gt","gte","lt","lte"]){let o=e[s];if(o===void 0)continue;if(typeof o!=="string")throw Error("deleteRange bounds must be strings");t[s]=o,n=!0}if(!n)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let i=J(e.limit);if(i!==void 0)t.limit=i;return t}async function Y(e,t,n){let i=f(n);if(e.deleteRange)return e.deleteRange(t,i);return w(e,t,i)}function ee(e,t){let n={key:e,open:!1};if(t.gte!==void 0&&t.gte>n.key)n.key=t.gte,n.open=!1;if(t.gt!==void 0&&t.gt>=n.key)n.key=t.gt,n.open=!0;return n}function te(e,t){let n={key:U(e),open:!0};if(t.lt!==void 0&&t.lt<=n.key)n.key=t.lt,n.open=!0;if(t.lte!==void 0&&t.lte<n.key)n.key=t.lte,n.open=!1;return n}function Ae(e,t){let n=ee(e,t),i=te(e,t);if(n.key>i.key||n.key===i.key&&(n.open||i.open))return null;return{lower:n,upper:i}}function E(e){return e.replaceAll(/:+$/g,"")}function ne(e,t){let n=E(e),i=E(t);if(n.length===0)return i;if(i.length===0)return n;return`${n}:${i}`}class k{#t;#n;constructor(e,t){this.#t=e,this.#n=E(t)}#e(e){if(this.#n.length===0)return e;return e.length===0?`${this.#n}:`:`${this.#n}:${e}`}#r(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#e(t.key),value:t.value};return{type:"delete",key:this.#e(t.key)}})}#o(e){if(this.#n.length===0)return e;return e.slice(this.#n.length+1)}#i(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#e(e.gt);if(e.gte!==void 0)t.gte=this.#e(e.gte);if(e.lt!==void 0)t.lt=this.#e(e.lt);if(e.lte!==void 0)t.lte=this.#e(e.lte);return t}#s(e={}){let t=this.#i(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#c(e){return this.#i(e)}capabilities(){return this.#t.capabilities()}scoped(e){return new k(this.#t,ne(this.#n,e))}async get(e){return this.#t.get(this.#e(e))}async put(e,t){await this.#t.put(this.#e(e),t)}async delete(e){await this.#t.delete(this.#e(e))}async*scan(e,t){for await(let[n,i]of this.#t.scan(this.#e(e),this.#s(t)))yield[this.#o(n),i]}async batch(e){u("batch operations",e.length),await this.#t.batch(this.#r(e))}async conditionalBatch(e,t){return V(this.#t,e.map((n)=>({key:this.#e(n.key),expectedValue:n.expectedValue})),this.#r(t))}async has(e){return K(this.#t,this.#e(e))}async deletePrefix(e){return H(this.#t,this.#e(e))}async deleteRange(e,t){let n=this.#c(f(t));return Y(this.#t,this.#e(e),n)}async*keys(e,t){for await(let n of z(this.#t,this.#e(e),this.#s(t)))yield this.#o(n)}async count(e){return M(this.#t,this.#e(e))}[Symbol.dispose](){this.#t[Symbol.dispose]()}}function q(e,t){return new k(e,t)}var G=1,y="__weftStorageKeyspace",re=102400,ie=8192;function oe(e){return typeof e==="object"&&e!==null&&"then"in e&&typeof e.then==="function"}function O(e){if(!g(e))return!1;if(e.__weftStorage!==G)return!1;return typeof e.value==="string"}function se(e){if(!g(e))return!1;return Object.values(e).every(O)}function x(e){if(e!==y)return;throw Error(`WebExtensionStorage key "${y}" is reserved for adapter metadata.`)}function ae(e){for(let t of e)x(t.key)}function j(e){return{__weftStorage:G,value:A(e)}}function Q(e){if(!O(e))return null;return T(e.value)}function le(e){return O(e)}function R(e){return new TextEncoder().encode(JSON.stringify(e)).byteLength}function ce(e){if(!g(e))return!1;if(e.runtime!==void 0&&!g(e.runtime))return!1;return e.storage===void 0||g(e.storage)}function ge(e){if(e!==void 0){if(!ce(e))throw Error("WebExtensionStorage injected namespace must be an object.");return e}let t=globalThis,n=t.browser??t.chrome;if(n?.storage===void 0)throw Error("WebExtensionStorage requires globalThis.browser.storage or globalThis.chrome.storage.");return n}function ue(e,t){let n=e.storage?.[t];if(n===void 0)throw Error(`WebExtensionStorage area "${t}" is not available.`);return n}function de(e){if(e==="session")return"ephemeral";if(e==="sync"||e==="managed")return"remote";return"local"}function fe(e){let t=e.runtime?.lastError?.message;return t===void 0?null:Error(t)}async function P(e,t,n){return new Promise((i,s)=>{let o=!1,d=(l)=>{if(o)return;let B=fe(e);if(o=!0,B!==null)s(B);else i(l)},C=(l)=>{if(o)return;o=!0,s(l)},F=(l)=>d(l),h;try{h=t(F)}catch{try{h=n()}catch(l){C(l);return}}if(oe(h))h.then(d,C)})}class p{static#t=new WeakMap;#n;#e;#r;#o;#i;constructor(e={},t){this.#r=e.area??"local",this.#o=de(this.#r),this.#n=ge(t),this.#e=ue(this.#n,this.#r),this.#i=()=>{},this.#n.storage?.onChanged?.addListener?.(this.#i)}capabilities(){return{persistence:this.#o,readAfterWrite:"session",scanConsistency:"best-effort",atomicBatch:!1,conditionalBatch:!1,boundedRangeDelete:!1}}async#s(e){return P(this.#n,(t)=>this.#e.get(e,t),()=>this.#e.get(e))}async#c(e){await P(this.#n,(t)=>this.#e.set(e,t),()=>this.#e.set(e))}async#d(e){if(this.#e.getBytesInUse===void 0)return null;return P(this.#n,(t)=>this.#e.getBytesInUse?.(e,t),()=>this.#e.getBytesInUse?.(e))}async#a(){let t=(await this.#s(y))[y];if(t===void 0)return{};if(!se(t))throw Error("WebExtensionStorage keyspace is not a valid storage envelope map.");return{...t}}async#g(e){let t={[y]:e};await this.#y(t),await this.#c(t)}async#u(e){let t=p.#t.get(this.#e)??Promise.resolve(),n={},i=new Promise((o)=>{n.release=o}),s=t.catch(()=>{return}).then(()=>i);p.#t.set(this.#e,s),await t.catch(()=>{return});try{return await e()}finally{if(n.release?.(),p.#t.get(this.#e)===s)p.#t.delete(this.#e)}}#l(){if(this.#r==="managed")throw Error('WebExtensionStorage area "managed" is read-only.')}#f(e){let t=this.#e.QUOTA_BYTES_PER_ITEM??ie;for(let[n,i]of Object.entries(e)){let s=R({[n]:i});if(s>t)throw Error(`WebExtensionStorage sync item quota exceeded for "${n}": ${String(s)} > ${String(t)}.`)}}async#p(e){let t=Object.keys(e),n=await this.#d(null),i=await this.#d(t);if(n!==null&&i!==null)return n-i+R(e);let s=await this.#s(null);return R({...s,...e})}async#y(e){if(this.#r!=="sync")return;this.#f(e);let t=this.#e.QUOTA_BYTES??re,n=await this.#p(e);if(n>t)throw Error(`WebExtensionStorage sync total quota exceeded: ${String(n)} > ${String(t)}.`)}async get(e){x(e);let t=await this.#a();return Q(t[e])}async put(e,t){this.#l(),x(e),await this.#u(async()=>{let n=await this.#a();n[e]=j(t),await this.#g(n)})}async delete(e){this.#l(),x(e),await this.#u(async()=>{let t=await this.#a();if(!(e in t))return;delete t[e],await this.#g(t)})}async*scan(e,t={}){let n=await this.#a(),i=Object.keys(n).filter((o)=>o.startsWith(e)).filter((o)=>L(o,t)).filter((o)=>le(n[o])).toSorted();if(t.reverse)i=i.toReversed();let s=0;for(let o of i){if(t.limit!==void 0&&s>=t.limit)break;let d=Q(n[o]);if(d===null)continue;yield[o,d],s+=1}}async batch(e){if(u("batch operations",e.length),this.#l(),e.length===0)return;ae(e),await this.#u(async()=>{let t=await this.#a();for(let n of e)if(n.type==="put")t[n.key]=j(n.value);else delete t[n.key];await this.#g(t)})}has(e){return m(this,e)}async*keys(e,t){yield*c(this,e,t)}count(e){return b(this,e)}async deletePrefix(e){return this.#l(),S(this,e)}async deleteRange(e,t){let n=f(t);return this.#l(),w(this,e,n)}scoped(e){return q(this,e)}[Symbol.dispose](){this.#n.storage?.onChanged?.removeListener?.(this.#i)}}export{p as WebExtensionStorage};
|
|
1
|
+
function A(e){let t=[];for(let n=0;n<e.length;n+=512)t.push(String.fromCharCode(...e.subarray(n,n+512)));return btoa(t.join(""))}function T(e){let t=atob(e),n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i);return n}function g(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}async function m(e,t){return await e.get(t)!==null}async function*c(e,t,n){for await(let[i]of e.scan(t,n))yield i}async function b(e,t){let n=0;for await(let i of c(e,t))n++;return n}async function S(e,t){let n=[];for await(let i of c(e,t))n.push({type:"delete",key:i});if(n.length===0)return 0;return await e.batch(n),n.length}async function w(e,t,n){let i=[];for await(let s of c(e,t,n))i.push({type:"delete",key:s});if(i.length===0)return 0;return await e.batch(i),i.length}function D(e,t,n){if(!e.capabilities()[t])throw Error(`Feature "${n}" requires storage capability "${t}", but this storage backend does not provide it.`)}var _="default";function r(e){return encodeURIComponent(e)}var W={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${r(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${r(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var v=1e4;class N extends Error{code="StorageBatchOperationLimitExceededError";cap=v;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${v}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function u(e,t){if(t>v)throw new N(e,t)}function U(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"ÿ"}function L(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function Re(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0}async function K(e,t){if(e.has)return e.has(t);return m(e,t)}function z(e,t,n){if(e.keys)return e.keys(t,n);return c(e,t,n)}async function M(e,t){if(e.count)return e.count(t);return b(e,t)}async function H(e,t){if(e.deletePrefix)return e.deletePrefix(t);return S(e,t)}async function V(e,t,n){if(u("conditionalBatch conditions",t.length),u("conditionalBatch operations",n.length),D(e,"conditionalBatch","storageConditionalBatch"),!e.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return e.conditionalBatch(t,n)}var a=(e)=>String(e).padStart(16,"0"),X="0",Z="1",I=(e,t,n,i)=>`sig:${r(e)}:${r(t)}:${i}:${r(n)}`,Pe={workflow:(e)=>`wf:${r(e)}`,checkpoint:(e)=>`wf:${r(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${r(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${r(e)}:timeline:`,timeline:(e,t)=>`wf:${r(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${r(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${r(t)}`,scheduleRun:(e)=>`schedule-run:${r(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${r(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${r(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${r(e)}:${r(t)}`,operation:(e,t,n)=>`op:${e}:${a(t)}:${n}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,n)=>`audit:bulk:${a(e)}:${r(t)}:${r(n)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${a(e)}:${r(t)}`,asyncActivity:(e,t)=>`async-act:v1:${r(e)}:${r(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${r(e)}:${r(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${r(e)}:`,activityReconciliation:(e,t,n)=>`actrec:v1:${r(e)}:${r(t)}:${n}`,eventPrefix:(e)=>`ev:${r(e)}:`,event:(e,t)=>`ev:${r(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${r(e)}:head`,eventWatermark:(e)=>`ev:${r(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventWatermark:()=>"fleet-event-watermark",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${r(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${r(e)}:${String(t).padStart(10,"0")}`,signal:(e,t,n)=>I(e,t,n,Z),startSignal:(e,t,n)=>I(e,t,n,X),signalSequence:(e)=>`sigseq:v1:${r(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${r(e)}:`,signalAcceptedResponse:(e,t,n)=>`sigres:v1:${r(e)}:${r(t)}:${r(n)}`,deadline:(e,t)=>`wf-deadline:${a(e)}:${r(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${a(e)}:${r(t)}`,teardownTimer:(e,t)=>`wf-teardown:${a(e)}:${r(t)}`,delayedStart:(e,t)=>`wf-delayed:${a(e)}:${r(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${a(e)}:${r(t)}`,attribute:(e)=>`attr:${r(e)}`,attributeIndex:(e,t,n)=>`idx:${e}:${t}:${r(n)}`,tagIndex:(e,t)=>`tag:${r(e)}:${r(t)}`,updatePrefix:(e)=>`upd:${r(e)}:`,update:(e,t)=>`upd:${r(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${r(e)}:${t}`,startIdempotency:(e)=>`start-idem:${r(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`,livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${r(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...W,budget:(e,t,n)=>`budget:${e}:${t}:${n}`,review:(e,t)=>`review:${r(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${r(e)}`,childCancellationPrefix:(e)=>`child-cancel:${r(e)}:`,childCancellation:(e,t)=>`child-cancel:${r(e)}:${r(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${r(e)}:${t===void 0?"":`${r(t)}:`}`,childWorkflowByParent:(e,t,n)=>`child-by-parent:${r(e)}:${t===void 0?"":`${r(t)}:`}${r(n)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${r(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${r(e)}:${r(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${r(e)}`,workflowHasServices:(e)=>`wf-has-services:${r(e)}`,finalizerState:(e)=>`wf-finalizer-state:${r(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${r(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${r(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${r(e)}`,offload:(e,t)=>`offload:${r(e)}:${t}`,archive:(e,t)=>`archive:${r(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${r(e)}:${r(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${_}:${r(e)}:${r(t)}`,streamChunkPrefix:(e,t)=>`blob:${r(e)}:${t}:chunk:`,streamChunk:(e,t,n)=>`blob:${r(e)}:${t}:chunk:${String(n).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${r(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${r(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,n)=>`tool-effect:${r(e)}:${t}:${n}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${r(e)}:${r(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${r(e)}:${r(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${a(e)}:${r(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${a(e)}:${r(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${a(e)}:${r(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${r(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function J(e){if(e===void 0)return;if(typeof e!=="number"||!Number.isInteger(e)||e<0)throw Error("deleteRange limit must be a finite non-negative integer");return e===0?0:e}function f(e){let t={},n=!1;for(let s of["gt","gte","lt","lte"]){let o=e[s];if(o===void 0)continue;if(typeof o!=="string")throw Error("deleteRange bounds must be strings");t[s]=o,n=!0}if(!n)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let i=J(e.limit);if(i!==void 0)t.limit=i;return t}async function Y(e,t,n){let i=f(n);if(e.deleteRange)return e.deleteRange(t,i);return w(e,t,i)}function ee(e,t){let n={key:e,open:!1};if(t.gte!==void 0&&t.gte>n.key)n.key=t.gte,n.open=!1;if(t.gt!==void 0&&t.gt>=n.key)n.key=t.gt,n.open=!0;return n}function te(e,t){let n={key:U(e),open:!0};if(t.lt!==void 0&&t.lt<=n.key)n.key=t.lt,n.open=!0;if(t.lte!==void 0&&t.lte<n.key)n.key=t.lte,n.open=!1;return n}function Ae(e,t){let n=ee(e,t),i=te(e,t);if(n.key>i.key||n.key===i.key&&(n.open||i.open))return null;return{lower:n,upper:i}}function E(e){return e.replaceAll(/:+$/g,"")}function ne(e,t){let n=E(e),i=E(t);if(n.length===0)return i;if(i.length===0)return n;return`${n}:${i}`}class k{#t;#n;constructor(e,t){this.#t=e,this.#n=E(t)}#e(e){if(this.#n.length===0)return e;return e.length===0?`${this.#n}:`:`${this.#n}:${e}`}#r(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#e(t.key),value:t.value};return{type:"delete",key:this.#e(t.key)}})}#o(e){if(this.#n.length===0)return e;return e.slice(this.#n.length+1)}#i(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#e(e.gt);if(e.gte!==void 0)t.gte=this.#e(e.gte);if(e.lt!==void 0)t.lt=this.#e(e.lt);if(e.lte!==void 0)t.lte=this.#e(e.lte);return t}#s(e={}){let t=this.#i(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#c(e){return this.#i(e)}capabilities(){return this.#t.capabilities()}scoped(e){return new k(this.#t,ne(this.#n,e))}async get(e){return this.#t.get(this.#e(e))}async put(e,t){await this.#t.put(this.#e(e),t)}async delete(e){await this.#t.delete(this.#e(e))}async*scan(e,t){for await(let[n,i]of this.#t.scan(this.#e(e),this.#s(t)))yield[this.#o(n),i]}async batch(e){u("batch operations",e.length),await this.#t.batch(this.#r(e))}async conditionalBatch(e,t){return V(this.#t,e.map((n)=>({key:this.#e(n.key),expectedValue:n.expectedValue})),this.#r(t))}async has(e){return K(this.#t,this.#e(e))}async deletePrefix(e){return H(this.#t,this.#e(e))}async deleteRange(e,t){let n=this.#c(f(t));return Y(this.#t,this.#e(e),n)}async*keys(e,t){for await(let n of z(this.#t,this.#e(e),this.#s(t)))yield this.#o(n)}async count(e){return M(this.#t,this.#e(e))}[Symbol.dispose](){this.#t[Symbol.dispose]()}}function q(e,t){return new k(e,t)}var G=1,y="__weftStorageKeyspace",re=102400,ie=8192;function oe(e){return typeof e==="object"&&e!==null&&"then"in e&&typeof e.then==="function"}function O(e){if(!g(e))return!1;if(e.__weftStorage!==G)return!1;return typeof e.value==="string"}function se(e){if(!g(e))return!1;return Object.values(e).every(O)}function x(e){if(e!==y)return;throw Error(`WebExtensionStorage key "${y}" is reserved for adapter metadata.`)}function ae(e){for(let t of e)x(t.key)}function j(e){return{__weftStorage:G,value:A(e)}}function Q(e){if(!O(e))return null;return T(e.value)}function le(e){return O(e)}function R(e){return new TextEncoder().encode(JSON.stringify(e)).byteLength}function ce(e){if(!g(e))return!1;if(e.runtime!==void 0&&!g(e.runtime))return!1;return e.storage===void 0||g(e.storage)}function ge(e){if(e!==void 0){if(!ce(e))throw Error("WebExtensionStorage injected namespace must be an object.");return e}let t=globalThis,n=t.browser??t.chrome;if(n?.storage===void 0)throw Error("WebExtensionStorage requires globalThis.browser.storage or globalThis.chrome.storage.");return n}function ue(e,t){let n=e.storage?.[t];if(n===void 0)throw Error(`WebExtensionStorage area "${t}" is not available.`);return n}function de(e){if(e==="session")return"ephemeral";if(e==="sync"||e==="managed")return"remote";return"local"}function fe(e){let t=e.runtime?.lastError?.message;return t===void 0?null:Error(t)}async function P(e,t,n){return new Promise((i,s)=>{let o=!1,d=(l)=>{if(o)return;let B=fe(e);if(o=!0,B!==null)s(B);else i(l)},C=(l)=>{if(o)return;o=!0,s(l)},F=(l)=>d(l),h;try{h=t(F)}catch{try{h=n()}catch(l){C(l);return}}if(oe(h))h.then(d,C)})}class p{static#t=new WeakMap;#n;#e;#r;#o;#i;constructor(e={},t){this.#r=e.area??"local",this.#o=de(this.#r),this.#n=ge(t),this.#e=ue(this.#n,this.#r),this.#i=()=>{},this.#n.storage?.onChanged?.addListener?.(this.#i)}capabilities(){return{persistence:this.#o,readAfterWrite:"session",scanConsistency:"best-effort",atomicBatch:!1,conditionalBatch:!1,boundedRangeDelete:!1}}async#s(e){return P(this.#n,(t)=>this.#e.get(e,t),()=>this.#e.get(e))}async#c(e){await P(this.#n,(t)=>this.#e.set(e,t),()=>this.#e.set(e))}async#d(e){if(this.#e.getBytesInUse===void 0)return null;return P(this.#n,(t)=>this.#e.getBytesInUse?.(e,t),()=>this.#e.getBytesInUse?.(e))}async#a(){let t=(await this.#s(y))[y];if(t===void 0)return{};if(!se(t))throw Error("WebExtensionStorage keyspace is not a valid storage envelope map.");return{...t}}async#g(e){let t={[y]:e};await this.#y(t),await this.#c(t)}async#u(e){let t=p.#t.get(this.#e)??Promise.resolve(),n={},i=new Promise((o)=>{n.release=o}),s=t.catch(()=>{return}).then(()=>i);p.#t.set(this.#e,s),await t.catch(()=>{return});try{return await e()}finally{if(n.release?.(),p.#t.get(this.#e)===s)p.#t.delete(this.#e)}}#l(){if(this.#r==="managed")throw Error('WebExtensionStorage area "managed" is read-only.')}#f(e){let t=this.#e.QUOTA_BYTES_PER_ITEM??ie;for(let[n,i]of Object.entries(e)){let s=R({[n]:i});if(s>t)throw Error(`WebExtensionStorage sync item quota exceeded for "${n}": ${String(s)} > ${String(t)}.`)}}async#p(e){let t=Object.keys(e),n=await this.#d(null),i=await this.#d(t);if(n!==null&&i!==null)return n-i+R(e);let s=await this.#s(null);return R({...s,...e})}async#y(e){if(this.#r!=="sync")return;this.#f(e);let t=this.#e.QUOTA_BYTES??re,n=await this.#p(e);if(n>t)throw Error(`WebExtensionStorage sync total quota exceeded: ${String(n)} > ${String(t)}.`)}async get(e){x(e);let t=await this.#a();return Q(t[e])}async put(e,t){this.#l(),x(e),await this.#u(async()=>{let n=await this.#a();n[e]=j(t),await this.#g(n)})}async delete(e){this.#l(),x(e),await this.#u(async()=>{let t=await this.#a();if(!(e in t))return;delete t[e],await this.#g(t)})}async*scan(e,t={}){let n=await this.#a(),i=Object.keys(n).filter((o)=>o.startsWith(e)).filter((o)=>L(o,t)).filter((o)=>le(n[o])).toSorted();if(t.reverse)i=i.toReversed();let s=0;for(let o of i){if(t.limit!==void 0&&s>=t.limit)break;let d=Q(n[o]);if(d===null)continue;yield[o,d],s+=1}}async batch(e){if(u("batch operations",e.length),this.#l(),e.length===0)return;ae(e),await this.#u(async()=>{let t=await this.#a();for(let n of e)if(n.type==="put")t[n.key]=j(n.value);else delete t[n.key];await this.#g(t)})}has(e){return m(this,e)}async*keys(e,t){yield*c(this,e,t)}count(e){return b(this,e)}async deletePrefix(e){return this.#l(),S(this,e)}async deleteRange(e,t){let n=f(t);return this.#l(),w(this,e,n)}scoped(e){return q(this,e)}[Symbol.dispose](){this.#n.storage?.onChanged?.removeListener?.(this.#i)}}export{p as WebExtensionStorage};
|