@loro-dev/flock-sqlite 0.4.0 → 0.6.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/dist/index.d.mts CHANGED
@@ -135,6 +135,10 @@ declare class FlockSQLite {
135
135
  private maxHlc;
136
136
  private listeners;
137
137
  private tables;
138
+ /** Transaction state: undefined when not in transaction, array when accumulating */
139
+ private txnEventSink;
140
+ /** Debounce state for autoDebounceCommit */
141
+ private debounceState;
138
142
  private constructor();
139
143
  static open(options: FlockSQLiteOptions): Promise<FlockSQLite>;
140
144
  static fromJson(options: FlockSQLiteOptions & {
@@ -147,6 +151,7 @@ declare class FlockSQLite {
147
151
  private bumpVersion;
148
152
  private allocateClock;
149
153
  private applyOperation;
154
+ private resetDebounceTimer;
150
155
  private emitEvents;
151
156
  put(key: KeyPart[], value: Value, now?: number): Promise<void>;
152
157
  putWithMeta(key: KeyPart[], value: Value, options?: PutWithMetaOptions): Promise<void>;
@@ -215,6 +220,77 @@ declare class FlockSQLite {
215
220
  static checkConsistency(a: FlockSQLite, b: FlockSQLite): Promise<boolean>;
216
221
  checkInvariants(): void;
217
222
  subscribe(listener: (batch: EventBatch) => void): () => void;
223
+ /**
224
+ * Execute operations within a transaction. All put/delete operations inside
225
+ * the callback will be batched and emitted as a single EventBatch when the
226
+ * transaction commits successfully.
227
+ *
228
+ * If the callback throws or rejects, the transaction is rolled back and no
229
+ * events are emitted. Note: Database operations are NOT rolled back - only
230
+ * event emission is affected.
231
+ *
232
+ * @param callback - Async function containing put/delete operations
233
+ * @returns The return value of the callback
234
+ * @throws Error if nested transaction attempted
235
+ * @throws Error if called while autoDebounceCommit is active
236
+ *
237
+ * @example
238
+ * ```ts
239
+ * await flock.txn(async () => {
240
+ * await flock.put(["a"], 1);
241
+ * await flock.put(["b"], 2);
242
+ * await flock.put(["c"], 3);
243
+ * });
244
+ * // Subscribers receive a single EventBatch with 3 events
245
+ * ```
246
+ */
247
+ txn<T>(callback: () => Promise<T>): Promise<T>;
248
+ /**
249
+ * Check if a transaction is currently active.
250
+ */
251
+ isInTxn(): boolean;
252
+ /**
253
+ * Enable auto-debounce mode. Events will be accumulated and emitted after
254
+ * the specified timeout of inactivity. Each new operation resets the timer.
255
+ *
256
+ * Use `commit()` to force immediate emission of pending events.
257
+ * Use `disableAutoDebounceCommit()` to disable and emit pending events.
258
+ *
259
+ * Import operations will automatically call `commit()` before proceeding.
260
+ *
261
+ * @param timeout - Debounce timeout in milliseconds
262
+ * @param options - Optional configuration object with maxDebounceTime (default: 10000ms)
263
+ * @throws Error if called while a transaction is active
264
+ * @throws Error if autoDebounceCommit is already active
265
+ *
266
+ * @example
267
+ * ```ts
268
+ * flock.autoDebounceCommit(100);
269
+ * await flock.put(["a"], 1);
270
+ * await flock.put(["b"], 2);
271
+ * // No events emitted yet...
272
+ * // After 100ms of inactivity, subscribers receive single EventBatch
273
+ * // If operations keep coming, commit happens after maxDebounceTime (10s default)
274
+ * ```
275
+ */
276
+ autoDebounceCommit(timeout: number, options?: {
277
+ maxDebounceTime?: number;
278
+ }): void;
279
+ /**
280
+ * Disable auto-debounce mode and emit any pending events immediately.
281
+ * No-op if autoDebounceCommit is not active.
282
+ */
283
+ disableAutoDebounceCommit(): void;
284
+ /**
285
+ * Force immediate emission of any pending debounced events.
286
+ * Does not disable auto-debounce mode - new operations will continue to be debounced.
287
+ * No-op if autoDebounceCommit is not active or no events are pending.
288
+ */
289
+ commit(): void;
290
+ /**
291
+ * Check if auto-debounce mode is currently active.
292
+ */
293
+ isAutoDebounceActive(): boolean;
218
294
  }
219
295
  //#endregion
220
296
  export { type EntryInfo, type Event, type EventBatch, type EventListener, type ExportBundle, type ExportHooks, type ExportOptions, type ExportPayload, type ExportRecord, FlockSQLite as Flock, FlockSQLite, FlockSQLiteOptions, type ImportHooks, type ImportOptions, type ImportReport, type KeyPart, type MetadataMap, type PutHooks, type PutWithMetaOptions, type ScanBound, type ScanOptions, type ScanRow, type Value, VersionVector, type VersionVectorEntry, decodeVersionVector, encodeVersionVector };
package/dist/index.d.ts CHANGED
@@ -135,6 +135,10 @@ declare class FlockSQLite {
135
135
  private maxHlc;
136
136
  private listeners;
137
137
  private tables;
138
+ /** Transaction state: undefined when not in transaction, array when accumulating */
139
+ private txnEventSink;
140
+ /** Debounce state for autoDebounceCommit */
141
+ private debounceState;
138
142
  private constructor();
139
143
  static open(options: FlockSQLiteOptions): Promise<FlockSQLite>;
140
144
  static fromJson(options: FlockSQLiteOptions & {
@@ -147,6 +151,7 @@ declare class FlockSQLite {
147
151
  private bumpVersion;
148
152
  private allocateClock;
149
153
  private applyOperation;
154
+ private resetDebounceTimer;
150
155
  private emitEvents;
151
156
  put(key: KeyPart[], value: Value, now?: number): Promise<void>;
152
157
  putWithMeta(key: KeyPart[], value: Value, options?: PutWithMetaOptions): Promise<void>;
@@ -215,6 +220,77 @@ declare class FlockSQLite {
215
220
  static checkConsistency(a: FlockSQLite, b: FlockSQLite): Promise<boolean>;
216
221
  checkInvariants(): void;
217
222
  subscribe(listener: (batch: EventBatch) => void): () => void;
223
+ /**
224
+ * Execute operations within a transaction. All put/delete operations inside
225
+ * the callback will be batched and emitted as a single EventBatch when the
226
+ * transaction commits successfully.
227
+ *
228
+ * If the callback throws or rejects, the transaction is rolled back and no
229
+ * events are emitted. Note: Database operations are NOT rolled back - only
230
+ * event emission is affected.
231
+ *
232
+ * @param callback - Async function containing put/delete operations
233
+ * @returns The return value of the callback
234
+ * @throws Error if nested transaction attempted
235
+ * @throws Error if called while autoDebounceCommit is active
236
+ *
237
+ * @example
238
+ * ```ts
239
+ * await flock.txn(async () => {
240
+ * await flock.put(["a"], 1);
241
+ * await flock.put(["b"], 2);
242
+ * await flock.put(["c"], 3);
243
+ * });
244
+ * // Subscribers receive a single EventBatch with 3 events
245
+ * ```
246
+ */
247
+ txn<T>(callback: () => Promise<T>): Promise<T>;
248
+ /**
249
+ * Check if a transaction is currently active.
250
+ */
251
+ isInTxn(): boolean;
252
+ /**
253
+ * Enable auto-debounce mode. Events will be accumulated and emitted after
254
+ * the specified timeout of inactivity. Each new operation resets the timer.
255
+ *
256
+ * Use `commit()` to force immediate emission of pending events.
257
+ * Use `disableAutoDebounceCommit()` to disable and emit pending events.
258
+ *
259
+ * Import operations will automatically call `commit()` before proceeding.
260
+ *
261
+ * @param timeout - Debounce timeout in milliseconds
262
+ * @param options - Optional configuration object with maxDebounceTime (default: 10000ms)
263
+ * @throws Error if called while a transaction is active
264
+ * @throws Error if autoDebounceCommit is already active
265
+ *
266
+ * @example
267
+ * ```ts
268
+ * flock.autoDebounceCommit(100);
269
+ * await flock.put(["a"], 1);
270
+ * await flock.put(["b"], 2);
271
+ * // No events emitted yet...
272
+ * // After 100ms of inactivity, subscribers receive single EventBatch
273
+ * // If operations keep coming, commit happens after maxDebounceTime (10s default)
274
+ * ```
275
+ */
276
+ autoDebounceCommit(timeout: number, options?: {
277
+ maxDebounceTime?: number;
278
+ }): void;
279
+ /**
280
+ * Disable auto-debounce mode and emit any pending events immediately.
281
+ * No-op if autoDebounceCommit is not active.
282
+ */
283
+ disableAutoDebounceCommit(): void;
284
+ /**
285
+ * Force immediate emission of any pending debounced events.
286
+ * Does not disable auto-debounce mode - new operations will continue to be debounced.
287
+ * No-op if autoDebounceCommit is not active or no events are pending.
288
+ */
289
+ commit(): void;
290
+ /**
291
+ * Check if auto-debounce mode is currently active.
292
+ */
293
+ isAutoDebounceActive(): boolean;
218
294
  }
219
295
  //#endregion
220
296
  export { type EntryInfo, type Event, type EventBatch, type EventListener, type ExportBundle, type ExportHooks, type ExportOptions, type ExportPayload, type ExportRecord, FlockSQLite as Flock, FlockSQLite, FlockSQLiteOptions, type ImportHooks, type ImportOptions, type ImportReport, type KeyPart, type MetadataMap, type PutHooks, type PutWithMetaOptions, type ScanBound, type ScanOptions, type ScanRow, type Value, VersionVector, type VersionVectorEntry, decodeVersionVector, encodeVersionVector };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import{openStore as e}from"@loro-dev/unisqlite";const t=new TextEncoder;function n(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function r(e){let t=BigInt(e),n=[];do{let e=Number(t&127n);t>>=7n,t!==0n&&(e|=128),n.push(e)}while(t!==0n);return new Uint8Array(n)}function i(e){let t=BigInt(e),n=[],r=!0;for(;r;){let e=Number(t&127n);t>>=7n;let i=(e&64)!=0;t===0n&&!i||t===-1n&&i?r=!1:e|=128,n.push(e)}return new Uint8Array(n)}async function a(e){let t=typeof crypto<`u`?crypto:void 0;if(t?.subtle){let n=new ArrayBuffer(e.byteLength);new Uint8Array(n).set(e);let r=await t.subtle.digest(`SHA-256`,n);return new Uint8Array(r)}try{let{createHash:t}=await import(`crypto`),n=t(`sha256`);return n.update(e),new Uint8Array(n.digest())}catch{throw Error(`No crypto implementation available for digest`)}}var o=class{chunks=[];writeTag(e){this.chunks.push(e&255)}writeBool(e){this.chunks.push(e?1:0)}writeBytes(e){this.writeLen(e.length);for(let t=0;t<e.length;t+=1)this.chunks.push(e[t])}writeRawBytes(e){for(let t=0;t<e.length;t+=1)this.chunks.push(e[t])}writeLen(e){this.writeRawBytes(r(e))}writeI64(e){this.writeRawBytes(i(e))}writeF64(e){let t=new DataView(new ArrayBuffer(8));t.setFloat64(0,e,!1);let n=new Uint8Array(t.buffer);this.writeRawBytes(n)}writeString(e){this.writeBytes(t.encode(e))}writeJson(e){if(e===null){this.writeTag(32);return}if(typeof e==`boolean`){this.writeTag(33),this.writeBool(e);return}if(typeof e==`number`){this.writeTag(34),this.writeF64(e);return}if(typeof e==`string`){this.writeTag(35),this.writeString(e);return}if(Array.isArray(e)){this.writeTag(36),this.writeLen(e.length);for(let t of e)this.writeJson(t);return}if(e&&typeof e==`object`){let t=Object.entries(e).sort(([e],[t])=>e<t?-1:e>t?1:0);this.writeTag(37),this.writeLen(t.length);for(let[e,n]of t)this.writeString(e),this.writeJson(n);return}throw TypeError(`Unsupported JSON value in digest`)}writeRawValue(e){if(this.writeTag(16),e.data===void 0?this.writeBool(!1):(this.writeBool(!0),this.writeJson(e.data)),this.writeTag(18),!e.metadata||typeof e.metadata!=`object`)this.writeBool(!1);else{let t=Object.entries(e.metadata).sort(([e],[t])=>e<t?-1:e>t?1:0);this.writeBool(!0),this.writeLen(t.length);for(let[e,n]of t)this.writeString(e),this.writeJson(n)}this.writeTag(17),this.writeF64(e.clock.physicalTime),this.writeI64(Math.trunc(e.clock.logicalCounter)),this.writeBytes(t.encode(e.clock.peerId))}async finish(){return a(new Uint8Array(this.chunks))}};function s(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function c(e){if(e!=null)return JSON.parse(e)}async function l(e){let t=c(e.data);if(t===void 0)return null;let n=s(e.metadata),r=new o;return r.writeBytes(e.key),r.writeRawValue({data:t,metadata:n,clock:{physicalTime:Number(e.physical),logicalCounter:Number(e.logical),peerId:String(e.peer)}}),r.finish()}async function u(e){let t=new Uint8Array(32);for(let n of e){let e=await l(n);if(e)for(let n=0;n<t.length;n+=1)t[n]^=e[n]}return n(t)}const ee={hi:2146959360,lo:1};var te=class extends Error{};function d(){throw new te}const ne=(e,t)=>e<t?-1:e>t?1:0,re=(e,t)=>e===t,f=e=>BigInt(e.hi)*4294967296n+BigInt(e.lo>>>0),ie=e=>-e,ae=(e,t)=>e+t,oe=(e,t)=>e*t,se=(e,t)=>e/t,ce=(e,t)=>e%t,le=(e,t)=>e>>BigInt(t),ue=e=>Number(BigInt.asUintN(32,e))|0,de=e=>Number(BigInt.asIntN(32,e));function p(e,t){if(t<0||t>=e.length)throw Error(`Index out of bounds`)}const fe=(e,t)=>e.toString(t);function pe(e,t){let n=new Uint8Array(e);return t!==0&&n.fill(t),n}const m=(e,t)=>{e.push(t)},me={$tag:0};function he(e){this._0=e}he.prototype.$tag=1;function ge(e){this._0=e}ge.prototype.$tag=2;function _e(e){this._0=e}_e.prototype.$tag=3;function ve(e){this._0=e}ve.prototype.$tag=4;const ye=function e(t){let n=e._view;return n===void 0&&(n=e._view=new DataView(new ArrayBuffer(8))),n.setUint32(0,t.hi),n.setUint32(4,t.lo),n.getFloat64(0)},be=function e(t){let n=e._view;return n===void 0&&(n=e._view=new DataView(new ArrayBuffer(8))),n.setFloat64(0,t),{hi:n.getInt32(0),lo:n.getInt32(4)}},xe=e=>e.hi*4294967296+(e.lo>>>0),Se=e=>{if(isNaN(e))return{hi:0,lo:0};if(e>=0x8000000000000000)return{hi:2147483647,lo:4294967295};if(e<=-0x8000000000000000)return{hi:-2147483648,lo:0};let t=!1;e<0&&(t=!0,e=-e);let n=1/4294967296*e|0,r=e>>>0;return t&&(r===0?n=~n+1:(n=~n,r=~r+1)),{hi:n,lo:r}},Ce=new Uint8Array,h={hi:0,lo:255},we={hi:0,lo:0},Te={hi:-1,lo:-1},g={hi:-2147483648,lo:0};function Ee(e){this._0=e}Ee.prototype.$tag=0;function De(e){this._0=e}De.prototype.$tag=1;function Oe(e){this._0=e}Oe.prototype.$tag=2;const _={$tag:1},ke={$tag:0},Ae={hi:0,lo:1},je={hi:0,lo:256};function v(e){this._0=e}v.prototype.$tag=0;function y(e){this._0=e}y.prototype.$tag=1;function Me(e){this._0=e}Me.prototype.$tag=0;function Ne(e){this._0=e}Ne.prototype.$tag=1;function Pe(e){this._0=e}Pe.prototype.$tag=0;function Fe(e){this._0=e}Fe.prototype.$tag=1;function Ie(e){this._0=e}Ie.prototype.$tag=2;function Le(e){this._0=e}Le.prototype.$tag=3;const Re={$tag:4},ze={$tag:5};function Be(e){this._0=e}Be.prototype.$tag=0;function Ve(e){this._0=e}Ve.prototype.$tag=1;function He(e){this._0=e}He.prototype.$tag=0;function Ue(e){this._0=e}Ue.prototype.$tag=1;function We(e){this._0=e}We.prototype.$tag=2;const Ge={$tag:3},Ke={$tag:4},qe=Rt(ee);function Je(e){return d()}function Ye(e){return d()}function Xe(e){return d()}function b(e){d()}function Ze(e){return d()}function Qe(e){return Lt(e)}function $e(e,t){if(e.end-e.start|0){let n=e.buf[e.start],r=e.buf,i=1+e.start|0,a={buf:r,start:i,end:e.end},o=E(n),s=o.end-o.start|0,c=a.end-a.start|0,l=0;for(;;){let e=l;if(e<c){let n=r[i+e|0],a=s,o=E(n);s=a+((o.end-o.start|0)+(t.end-t.start|0)|0)|0,l=e+1|0;continue}else break}s<<=1;let u=ht(s);if(O(u,o.str,o.start,o.end-o.start|0),bt(t.str,0,t.start,t.end)){let e=a.end-a.start|0,t=0;for(;;){let n=t;if(n<e){let e=r[i+n|0],a=E(e);O(u,a.str,a.start,a.end-a.start|0),t=n+1|0;continue}else break}}else{let e=a.end-a.start|0,n=0;for(;;){let a=n;if(a<e){let e=r[i+a|0],o=E(e);O(u,t.str,t.start,t.end-t.start|0),O(u,o.str,o.start,o.end-o.start|0),n=a+1|0;continue}else break}}return u.val}else return``}function et(e,t){t(t=>(Dt(e,t),1))}function tt(e,t){return $e({buf:e,start:0,end:e.length},t)}function nt(e,t){return ne(e,t)}function rt(e,t){return re(e,t)}function it(e){return ie(e)}function at(e,t){return ae(e,t)}function ot(e,t){return oe(e,t)}function st(e,t){return se(e,t)}function ct(e,t){return ce(e,t)}function lt(e,t){return t<0&&b(`negative shift count`),le(e,t)}function ut(e){let t=ue(lt(e,32)),n=ue(e);return qt(Jt(Qe(t),32),Qe(n))}function x(e,t){if(t>=0&&t<(e.end-e.start|0)){let n=e.bytes,r=e.start+t|0;return p(n,r),n[r]}else return Xe(`index out of bounds: the len is from 0 to ${D(e.end-e.start|0)} but the index is ${D(t)}`)}function S(e,t,n){let r=e.length,i;if(n===void 0)i=r;else{let e=n;i=e<0?r+e|0:e}let a=t<0?r+t|0:t;return a>=0&&a<=i&&i<=r?{bytes:e,start:a,end:i}:Ye(`Invalid index for View`)}function C(e,t,n){let r=e.end-e.start|0,i;if(n===void 0)i=r;else{let e=n;i=e<0?r+e|0:e}let a=t<0?r+t|0:t;return a>=0&&a<=i&&i<=r?{bytes:e.bytes,start:e.start+a|0,end:(e.start+a|0)+(i-a|0)|0}:Ye(`Invalid index for View`)}function dt(e){return t=>{let n=e.end-e.start|0,r=0;for(;;){let i=r;if(i<n){if(t(x(e,i))!==1)return 0;r=i+1|0;continue}else return 1}}}function ft(e){let t={val:0},n=e.end-e.start|0;return()=>{if(t.val<n){let n=t.val,r=e.bytes,i=e.start+n|0;p(r,i);let a=r[i];return t.val=t.val+1|0,a}else return-1}}function w(e){return tn(e.end-e.start|0,t=>an(e,t))}function pt(e){let t=At(e);return w({buf:t,start:0,end:t.length})}function T(e){return Lt(e)}function E(e){return{str:e,start:0,end:e.length}}function mt(e,t,n,r,i){if(e===n&&t<r){let a=0;for(;;){let o=a;if(o<i){let i=t+o|0,s=r+o|0;p(n,s),p(e,i),e[i]=n[s],a=o+1|0;continue}else return}}else{let a=i-1|0;for(;;){let i=a;if(i>=0){let o=t+i|0,s=r+i|0;p(n,s),p(e,o),e[o]=n[s],a=i-1|0;continue}else return}}}function ht(e){return{val:``}}function gt(e,t){let n=e;n.val=`${n.val}${String.fromCodePoint(t)}`}function _t(e,t){let n=e;n.val=`${n.val}${t}`}function vt(e,t){return nt(e,t)>0}function D(e){let t=ht(0);return Mt(e,{self:t,method_0:_t,method_1:O,method_2:gt}),t.val}function yt(e,t){return fe(e,t)}function bt(e,t,n,r){let i;i=r===void 0?e.length:r;let a=n,o=0;for(;;){let n=a,r=o;if(n<i&&r<t){let t=e.charCodeAt(n);if(55296<=t&&t<=56319&&(n+1|0)<i){let t=n+1|0,i=e.charCodeAt(t);if(56320<=i&&i<=57343){a=n+2|0,o=r+1|0;continue}else b(`invalid surrogate pair`)}a=n+1|0,o=r+1|0;continue}else return r===t&&n===i}}function xt(e,t,n){let r=e.length,i;return i=n===void 0?r:n,t>=0&&t<=i&&i<=r?e.substring(t,i):d()}function O(e,t,n,r){let i=e;i.val=`${i.val}${xt(t,n,n+r|0)}`}function St(e){return[]}function Ct(e){return[]}function wt(e){return[]}function Tt(e,t){m(e,t)}function Et(e,t){m(e,t)}function k(e,t){m(e,t)}function A(e,t){m(e,t)}function Dt(e,t){m(e,t)}function Ot(e){return String.fromCodePoint(e)}function kt(e,t){let n={val:me};e(e=>(t(e),1));let r=n.val;switch(r.$tag){case 0:return;case 1:r._0;return;case 2:return r._0;case 3:d();return;default:d();return}}function At(e){let t=[];return kt(e,e=>{k(t,e)}),t}function jt(e){return e()}function Mt(e,t){t.method_0(t.self,yt(e,10))}function Nt(e){return t=>{let n=e.length,r=0;for(;;){let i=r;if(i<n){let n=e[i];if(t(n)!==1)return 0;r=i+1|0;continue}else return 1}}}function Pt(e,t,n){let r=e.length,i;if(n===void 0)i=r;else{let e=n;i=e<0?r+e|0:e}let a=t<0?r+t|0:t;return a>=0&&a<=i&&i<=r?{buf:e,start:a,end:i}:Ze(`View index out of bounds`)}function Ft(e){return{hi:0,lo:e}}function It(e){return Ft(e)}function Lt(e){return It(e)}function Rt(e){return ye(e)}function zt(e){return{hi:e>>31&-1,lo:e|0}}function Bt(e){return zt(e)}function Vt(e){return e.lo}function j(e){return Vt(e)&255}function Ht(e,t){return{hi:e.hi&t.hi,lo:e.lo&t.lo}}function Ut(e,t){return{hi:e.hi|t.hi,lo:e.lo|t.lo}}function Wt(e,t){return{hi:e.hi^t.hi,lo:e.lo^t.lo}}function Gt(e,t){let n=t&63;if(n===0)return e;if(n<32){let t=e.hi,r=e.lo,i=t,a=r;return{hi:i<<n|a>>>(32-n|0)|0,lo:a<<n}}else return{hi:e.lo<<(n-32|0),lo:0}}function Kt(e,t){let n=t&63;return n===0?e:n<32?{hi:e.hi>>>n|0,lo:e.lo>>>n|e.hi<<(32-n|0)}:{hi:0,lo:e.hi>>>(n-32|0)|0}}function qt(e,t){return Ut(e,t)}function Jt(e,t){return Gt(e,t)}function Yt(e){return xe(e)}function Xt(e){return Yt(e)}function Zt(e){return ye(e)}function Qt(e){return be(e)}function $t(e,t){let n=e,r=t;return n.hi===r.hi&&n.lo===r.lo}function M(e,t){return Ht(e,t)}function N(e,t){return Ut(e,t)}function P(e,t){return Wt(e,t)}function F(e,t){return Gt(e,t)}function I(e,t){return Kt(e,t)}function en(e){return Se(e)}function tn(e,t){if(e<=0)return Ce;let n=pe(e,t(0)),r=1;for(;;){let i=r;if(i<e){p(n,i),n[i]=t(i),r=i+1|0;continue}else break}return n}function nn(e){console.log(e)}function rn(e,t,n,r,i){let a=(t+i|0)-1|0,o=(r+i|0)-1|0,s=e.length,c=n.length;if(i>=0&&t>=0&&a<s&&r>=0&&o<c){mt(e,t,n,r,i);return}else{d();return}}function an(e,t){if(t>=0&&t<(e.end-e.start|0)){let n=e.buf,r=e.start+t|0;return p(n,r),n[r]}else return Xe(`index out of bounds: the len is from 0 to ${D(e.end-e.start|0)} but the index is ${D(t)}`)}function on(e){let t=e.length,n=Array(t),r=0;for(;;){let i=r;if(i<t){n[i]=e[(t-i|0)-1|0],r=i+1|0;continue}else break}return n}function sn(e,t){let n=e.data.length<=0?1:e.data.length,r,i=n;for(;;){let e=i;if(e>=t){r=e;break}i=Math.imul(e,2)|0}if(r!==e.data.length){let t=pe(r,0);mt(t,0,e.data,0,e.len),e.data=t;return}else return}function L(e,t){sn(e,e.len+1|0);let n=e.data,r=e.len;p(n,r),n[r]=t,e.len=e.len+1|0}function R(e){return w(Pt(e.data,0,e.len))}function z(e){return{data:pe(e<1?1:e,0),len:0}}function cn(e,t){let n=t.length;sn(e,e.len+n|0),rn(e.data,e.len,t,0,n),e.len=e.len+n|0}function ln(e){switch(e){case 0:return`40`;case 1:return`41`;case 2:return`42`;case 3:return`43`;case 4:return`44`;case 5:return`45`;case 6:return`46`;case 7:return`47`;default:return`49`}}function un(e){switch(e){case 0:return`30`;case 1:return`31`;case 2:return`32`;case 3:return`33`;case 4:return`34`;case 5:return`35`;case 6:return`36`;case 7:return`37`;default:return`39`}}function dn(e){let t=[],n=e.color;n===void 0||A(t,un(n));let r=e.bg_color;r===void 0||A(t,ln(r));let i=e.formats,a=i.length,o=0;for(;;){let e=o;if(e<a){switch(i[e]){case 0:A(t,`1`);break;case 1:A(t,`4`);break;case 2:A(t,`5`);break;case 3:A(t,`7`);break;case 4:A(t,`8`);break;case 5:A(t,`9`);break;default:A(t,`3`)}o=e+1|0;continue}else break}return t.length>0?`[${tt(t,{str:`;`,start:0,end:1})}m${e.str}[0m`:e.str}function fn(e){return{str:e,bg_color:void 0,color:void 0,formats:[]}}function pn(e){return{str:e.str,bg_color:e.bg_color,color:1,formats:e.formats}}function mn(e){return{str:e.str,bg_color:e.bg_color,color:3,formats:e.formats}}function hn(e){return{str:e.str,bg_color:e.bg_color,color:4,formats:e.formats}}function gn(e){let t=e.str,n=e.bg_color,r=e.color,i=[];return Dt(i,0),et(i,Nt(e.formats)),{str:t,bg_color:n,color:r,formats:i}}function _n(e,t){let n=`${dn(pn(gn(fn(`Panic: `))))}${dn(mn(fn(e)))} at ${dn(hn(fn(t)))}`;nn(n),b(n)}function vn(e){let t=wt(0),n=0;for(;n<e.length;){let r=n;p(e,r);let i=e.charCodeAt(r);if(i>=55296&&i<=56319&&(n+1|0)<e.length){let r=n+1|0;p(e,r);let a=e.charCodeAt(r);if(a>=56320&&a<=57343){let e=(65536+(i-55296<<10)|0)+(a-56320|0)|0;k(t,(240|e>>18)&255),k(t,(128|e>>12&63)&255),k(t,(128|e>>6&63)&255),k(t,(128|e&63)&255),n=n+1|0}else k(t,(224|i>>12)&255),k(t,(128|i>>6&63)&255),k(t,(128|i&63)&255)}else i<128?k(t,i&255):i<2048?(k(t,(192|i>>6)&255),k(t,(128|i&63)&255)):(k(t,(224|i>>12)&255),k(t,(128|i>>6&63)&255),k(t,(128|i&63)&255));n=n+1|0}return w({buf:t,start:0,end:t.length})}function yn(e){return{bytes:vn(e)}}function bn(e){let t=0;for(;t<(e.end-e.start|0);){let n=x(e,t);if(!(n&128))t=t+1|0;else if((n&224)==192){if((t+1|0)>=(e.end-e.start|0)||(x(e,t+1|0)&192)!=128)return!1;t=t+2|0}else if((n&240)==224){if((t+2|0)>=(e.end-e.start|0))return!1;let n=x(e,t+1|0),r=x(e,t+2|0),i;if(i=(n&192)==128?(r&192)!=128:!0,i)return!1;t=t+3|0}else if((n&248)==240){if((t+3|0)>=(e.end-e.start|0))return!1;let n=x(e,t+1|0),r=x(e,t+2|0),i=x(e,t+3|0),a;if((n&192)!=128)a=!0;else{let e;e=(r&192)==128?(i&192)!=128:!0,a=e}if(a)return!1;t=t+4|0}else return!1}return!0}function xn(e){if(bn(C(e,0,void 0)))return{bytes:pt(dt(e))}}function Sn(e){let t=0,n=``;for(;t<e.length;){let r=t;p(e,r);let i=e[r],a;if(!(i&128))a=i;else if((i&224)==192){if((t+1|0)>=e.length)return;let n=t+1|0;p(e,n);let r=e[n];if((r&192)!=128)return;t=t+1|0,a=(i&31)<<6|r&63}else if((i&240)==224){if((t+2|0)>=e.length)return;let n=t+1|0;p(e,n);let r=e[n],o=t+2|0;p(e,o);let s=e[o],c;if(c=(r&192)==128?(s&192)!=128:!0,c)return;t=t+2|0,a=(i&15)<<12|(r&63)<<6|s&63}else if((i&248)==240){if((t+3|0)>=e.length)return;let n=t+1|0;p(e,n);let r=e[n],o=t+2|0;p(e,o);let s=e[o],c=t+3|0;p(e,c);let l=e[c],u;if((r&192)!=128)u=!0;else{let e;e=(s&192)==128?(l&192)!=128:!0,u=e}if(u)return;t=t+3|0,a=(i&7)<<18|(r&63)<<12|(s&63)<<6|l&63}else return;n=`${n}${Ot(a)}`,t=t+1|0}return n}function Cn(e){let t=Sn(e.bytes);return t===void 0?d():t}function wn(e){return Qt(e)}function Tn(e){return Zt(e)}function En(e){let t=wt(0);return k(t,j(M(I(e,56),h))),k(t,j(M(I(e,48),h))),k(t,j(M(I(e,40),h))),k(t,j(M(I(e,32),h))),k(t,j(M(I(e,24),h))),k(t,j(M(I(e,16),h))),k(t,j(M(I(e,8),h))),k(t,j(M(e,h))),w({buf:t,start:0,end:t.length})}function Dn(e){e.length!==8&&_n(`Invalid byte array length`,`/Users/zxch3n/Code/flock/moon/memcomparable/utils.mbt:28:5-28:54`);let t=we,n=t;p(e,0),t=N(n,F(T(e[0]),56));let r=t;p(e,1),t=N(r,F(T(e[1]),48));let i=t;p(e,2),t=N(i,F(T(e[2]),40));let a=t;p(e,3),t=N(a,F(T(e[3]),32));let o=t;p(e,4),t=N(o,F(T(e[4]),24));let s=t;p(e,5),t=N(s,F(T(e[5]),16));let c=t;p(e,6),t=N(c,F(T(e[6]),8));let l=t;return p(e,7),t=N(l,T(e[7])),t}function On(){return{parts:Ct(0)}}function B(e,t){Tt(e.parts,t)}function kn(e){return e===e?e:e<0?-qe:qe}function An(e,t){L(t,1);let n=ft(e);for(;;){let e=jt(n);if(e===-1)break;{let n=e;L(t,n),n===0&&L(t,255);continue}}L(t,0)}function jn(e,t){L(t,2);let n=e.bytes,r=n.length,i=0;for(;;){let e=i;if(e<r){let r=n[e];L(t,r),r===0&&L(t,255),i=e+1|0;continue}else break}L(t,0)}function Mn(e,t){L(t,33);let n=kn(e),r=En(n<0?P(wn(n),Te):P(wn(n),g)),i=r.length,a=0;for(;;){let e=a;if(e<i){let n=r[e];L(t,n),a=e+1|0;continue}else return}}function Nn(e){let t=[],n=e;for(;vt(n,0n);)k(t,de(ct(n,256n))&255),n=st(n,256n);let r=on(t);return w({buf:r,start:0,end:r.length})}function Pn(e,t){if(rt(e,0n)){L(t,20);return}let n=vt(e,0n),r=Nn(n?e:it(e)),i=r.length;if(n===!1){i<=8?L(t,(20-(i&255)|0)&255):(L(t,11),i>255&&b(`n is too large`),L(t,(i&255^255)&255));let e=z(0),n=0;for(;;){let t=n;if(t<r.length){p(r,t);let i=r[t];L(e,(i^255)&255),n=t+1|0;continue}else break}cn(t,R(e));return}else{i<=8?L(t,(20+(i&255)|0)&255):(L(t,29),i>255&&b(`n is too large`),L(t,i&255)),cn(t,r);return}}function Fn(e,t){switch(e.$tag){case 0:{let n=e._0;An(S(n,0,n.length),t);return}case 1:{let n=e._0;jn(n,t);return}case 2:{let n=e._0;Pn(n,t);return}case 3:{let n=e._0;Mn(n,t);return}case 4:L(t,38);return;default:L(t,39);return}}function In(e){let t=z(0),n=e.parts,r=n.length,i=0;for(;;){let e=i;if(e<r){let r=n[e];Fn(r,t),i=e+1|0;continue}else break}return R(t)}function Ln(e,t){let n=z(0),r=t;for(;r<(e.end-e.start|0);){let t=x(e,r);if(r=r+1|0,t===0){let t;if(t=r<(e.end-e.start|0)?x(e,r)===255:!1,t){L(n,0),r=r+1|0;continue}else{let e=R(n);return new De({_0:S(e,0,e.length),_1:r})}}L(n,t)}return new Ee(_)}function V(e){let t=f(we),n=f(Ae),r=(e.end-e.start|0)-1|0;for(;;){let i=r;if(i>=0){let a=f(Bt(x(e,i)));t=at(t,ot(n,a)),n=ot(n,f(je)),r=i-1|0;continue}else break}return t}function Rn(e,t){let n;if(n=20<=t?t<=28:!1,n){let n=(t-20|0)&255;if((e.end-e.start|0)<n)return new v(_);let r=C(e,0,n);return new y({_0:C(e,n,void 0),_1:V(r)})}else{let n;if(n=12<=t?t<20:!1,n){let n=(20-t|0)&255;if((e.end-e.start|0)<n)return new v(_);let r=C(e,0,n),i=C(e,n,void 0),a=z(0),o=0;for(;;){let e=o;if(e<(r.end-r.start|0)){L(a,(x(r,e)^255)&255),o=e+1|0;continue}else break}let s=R(a);return new y({_0:i,_1:it(V(S(s,0,s.length)))})}else if(t===11){if((e.end-e.start|0)<1)return new v(_);let t=(x(e,0)^255)&255;if((e.end-e.start|0)<(t+1|0))return new v(_);let n=C(e,1,t+1|0),r=C(e,t+1|0,void 0),i=z(0),a=0;for(;;){let e=a;if(e<(n.end-n.start|0)){L(i,(x(n,e)^255)&255),a=e+1|0;continue}else break}let o=R(i);return new y({_0:r,_1:it(V(S(o,0,o.length)))})}else if(t===29){if((e.end-e.start|0)<1)return new v(_);let t=x(e,0);if((e.end-e.start|0)<(t+1|0))return new v(_);let n=C(e,1,t+1|0);return new y({_0:C(e,t+1|0,void 0),_1:V(n)})}else return new v(new Oe(t))}}function zn(e,t){if((t+8|0)>(e.end-e.start|0))return new Me(_);let n=wt(0),r=0;for(;;){let i=r;if(i<8){k(n,x(e,t+i|0)),r=i+1|0;continue}else break}let i=Dn(w({buf:n,start:0,end:n.length}));return new Ne({_0:$t(M(i,g),we)?Tn(P(i,Te)):Tn(P(i,g)),_1:t+8|0})}function Bn(e){let t=On(),n=0;for(;n<(e.end-e.start|0);){let r=x(e,n);if(n=n+1|0,r===2){let r=Ln(e,n),i;if(r.$tag===1)i=r._0;else return r;let a=i._0,o=i._1,s=xn(a);if(s===void 0)return new Be(ke);B(t,new Fe(s)),n=o}else if(r===1){let r=Ln(e,n),i;if(r.$tag===1)i=r._0;else return r;let a=i._0,o=i._1;B(t,new Pe(pt(dt(a)))),n=o}else if(r>=11&&r<=29){let i=Rn(C(e,n,void 0),r),a;if(i.$tag===1)a=i._0;else return i;let o=a._0,s=a._1;B(t,new Ie(s)),n=(e.end-e.start|0)-(o.end-o.start|0)|0}else if(r===33){let r=zn(e,n),i;if(r.$tag===1)i=r._0;else return r;let a=i._0,o=i._1;B(t,new Le(a)),n=o}else if(r===38)B(t,Re);else if(r===39)B(t,ze);else return new Be(new Oe(r))}return new Ve(t)}function Vn(e){switch(e.$tag){case 0:{let t=e._0;return new We(t)}case 1:{let t=e._0;return new Ue(Cn(t))}case 2:{let t=e._0;return new He(Xt(ut(t)))}case 3:{let t=e._0;return new He(t)}case 4:return Ke;default:return Ge}}function Hn(e){switch(e.$tag){case 2:{let t=e._0;return new Pe(t)}case 1:{let t=e._0;return new Fe(yn(t))}case 0:{let t=e._0;return Xt(en(t))===t?new Ie(f(en(t))):new Le(t)}case 3:return ze;default:return Re}}function Un(e){let t=On(),n=e.length,r=0;for(;;){let i=r;if(i<n){let n=e[i];Tt(t.parts,Hn(n)),r=i+1|0;continue}else break}return In(t)}function Wn(e){let t;_L:{_L$2:{let n=Bn(S(e,0,e.length));if(n.$tag===1)t=n._0;else{n._0;break _L$2}break _L}t=Je(`Failed to decode key`)}let n=St(0),r=t.parts,i=r.length,a=0;for(;;){let e=a;if(e<i){let t=r[e];Et(n,Vn(t)),a=e+1|0;continue}else break}return n}function Gn(e){if(typeof e==`number`){if(!Number.isFinite(e))throw TypeError(`Key parts must be finite numbers`);return{$tag:0,_0:e}}if(typeof e==`string`)return{$tag:1,_0:e};if(e===!0)return{$tag:3};if(e===!1)return{$tag:4};throw TypeError(`Key parts must be strings, numbers, or booleans`)}function Kn(e){if(e instanceof Uint8Array)return e;if(e&&typeof e==`object`){let t=e.buf;if(t instanceof Uint8Array){let n=e.start??0,r=e.end??t.length;return t.subarray(n,r)}}throw TypeError(`Invalid bytes payload in memcomparable decode`)}function qn(e){switch(e?.$tag){case 0:return e._0;case 1:return e._0;case 3:return!0;case 4:return!1;case 2:return Kn(e._0);default:throw TypeError(`Unsupported memcomparable key part`)}}function H(e){return Un(e.map(Gn))}function Jn(e){return Wn(e).map(e=>qn(e))}function Yn(e,t){let n=Math.min(e.length,t.length);for(let r=0;r<n;r+=1)if(e[r]!==t[r])return e[r]<t[r]?-1:1;return e.length===t.length?0:e.length<t.length?-1:1}function Xn(e){if(e.length===0)return;let t=Array.from(e);for(let e=t.length-1;e>=0;--e){let n=t[e];if(n<255)return t[e]=n+1,new Uint8Array(t.slice(0,e+1))}}function Zn(e){return JSON.stringify(e)}const Qn=new TextEncoder,$n=new TextDecoder,er=globalThis.structuredClone;function tr(e){return Qn.encode(e).length}function U(e){return typeof e==`string`&&tr(e)<128}function nr(){let e=new Uint8Array(32),t=typeof crypto<`u`?crypto:void 0;if(t?.getRandomValues)t.getRandomValues(e);else if(t?.randomBytes){let n=t.randomBytes(32);e.set(n)}else for(let t=0;t<32;t+=1)e[t]=Math.floor(Math.random()*256);return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function rr(e){if(e===void 0)return nr();if(!U(e))throw TypeError(`peerId must be a UTF-8 string under 128 bytes`);return e}function W(e){return e===void 0?e:er?er(e):JSON.parse(JSON.stringify(e))}function G(e){if(!(!e||typeof e!=`object`||Array.isArray(e)))return W(e)}function ir(e){return G(e)??{}}function ar(e,t){if(!(!t||typeof t!=`object`)){if(`data`in t){let n=t.data;e.data=n===void 0?void 0:W(n)}`metadata`in t&&(e.metadata=G(t.metadata))}}function K(e){let t={};return ar(t,e),t}function q(e,t){let n=K(e);return ar(n,t),n}function or(e,t){if(e===t)return 0;let n=Math.min(e.length,t.length);for(let r=0;r<n;r+=1){let n=e[r]-t[r];if(n!==0)return n}return e.length-t.length}function sr(e){if(!e||typeof e!=`object`)return[];let t=[];for(let[n,r]of Object.entries(e)){if(!r||!U(n))continue;let{physicalTime:e,logicalCounter:i}=r;if(typeof e!=`number`||!Number.isFinite(e)||typeof i!=`number`||!Number.isFinite(i))continue;let a=Qn.encode(n);t.push({peer:n,peerBytes:a,timestamp:Math.trunc(e),counter:Math.max(0,Math.trunc(i))})}return t.sort((e,t)=>{if(e.timestamp!==t.timestamp)return e.timestamp-t.timestamp;let n=or(e.peerBytes,t.peerBytes);return n===0?e.counter-t.counter:n}),t}function J(e,t){if(!Number.isFinite(e)||e<0)throw TypeError(`leb128 values must be finite and non-negative`);let n=Math.trunc(e);if(n===0){t.push(0);return}for(;n>0;){let e=n%128;n=Math.floor(n/128),t.push(n>0?e|128:e)}}function cr(e,t){J(e.length,t);for(let n=0;n<e.length;n+=1)t.push(e[n])}const Y=new Uint8Array([86,69,86,69]);function lr(e){let t=sr(e),n=Array.from(Y);if(t.length===0)return Uint8Array.from(n);let r=0;for(let e=0;e<t.length;e+=1){let i=t[e];if(i.timestamp<0)throw TypeError(`timestamp must be non-negative`);if(e===0)J(i.timestamp,n),r=i.timestamp;else{let e=i.timestamp-r;if(e<0)throw TypeError(`version vector timestamps must be non-decreasing`);J(e,n),r=i.timestamp}J(i.counter,n),cr(i.peerBytes,n)}return Uint8Array.from(n)}function X(e,t){let n=0,r=1,i=0;for(;t+i<e.length;){let a=e[t+i];if(i+=1,n+=(a&127)*r,!(a&128))break;r*=128}return[n,i]}function ur(e,t){let[n,r]=X(e,t),i=t+r,a=i+n;if(a>e.length)throw TypeError(`varString length exceeds buffer`);let o=e.subarray(i,a);return[$n.decode(o),r+n]}function dr(e){return e.length>=4&&e[0]===Y[0]&&e[1]===Y[1]&&e[2]===Y[2]&&e[3]===Y[3]}function fr(e){let t=0,[n,r]=X(e,t);t+=r;let[i,a]=X(e,t);t+=a;let o={};for(let r=0;r<n;r+=1){let[n,r]=ur(e,t);if(t+=r,!U(n))throw TypeError(`invalid peer id in encoded version vector`);let[a,s]=X(e,t);t+=s;let[c,l]=X(e,t);t+=l,o[n]={physicalTime:i+a,logicalCounter:c}}return o}function pr(e){let t=4,n={};if(t===e.length)return n;let[r,i]=X(e,t);t+=i;let[a,o]=X(e,t);t+=o;let[s,c]=ur(e,t);if(t+=c,!U(s))throw TypeError(`invalid peer id in encoded version vector`);n[s]={physicalTime:r,logicalCounter:a};let l=r;for(;t<e.length;){let[r,i]=X(e,t);t+=i;let[a,o]=X(e,t);t+=o;let[s,c]=ur(e,t);if(t+=c,!U(s))throw TypeError(`invalid peer id in encoded version vector`);let u=l+r;if(u<l)throw TypeError(`version vector timestamps must be non-decreasing`);n[s]={physicalTime:u,logicalCounter:a},l=u}return n}function mr(e){return dr(e)?pr(e):fr(e)}function hr(e){return lr(e)}function gr(e){return mr(e)}function Z(e,t){let n={c:Sr(e)};t.data!==void 0&&(n.d=W(t.data));let r=G(t.metadata);return r!==void 0&&(n.m=r),n}function _r(e){return!e||typeof e!=`object`?{accept:!0}:`accept`in e?e.accept?{accept:!0}:{accept:!1,reason:e.reason??`rejected`}:{accept:!0}}function vr(e){return typeof e==`object`&&!!e&&(Object.prototype.hasOwnProperty.call(e,`hooks`)||Object.prototype.hasOwnProperty.call(e,`from`)||Object.prototype.hasOwnProperty.call(e,`pruneTombstonesBefore`)||Object.prototype.hasOwnProperty.call(e,`peerId`))}function yr(e){return typeof e==`object`&&!!e&&Object.prototype.hasOwnProperty.call(e,`bundle`)}function br(e){if(e)try{let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t))return t}catch{}}function Q(e){if(e!=null)return JSON.parse(e)}function $(e){let t=e.split(`,`);if(t.length<3)return{physicalTime:0,logicalCounter:0,peerId:``};let n=Number(t[0]),r=Number(t[1]),i=t.slice(2).join(`,`);return{physicalTime:Number.isFinite(n)?n:0,logicalCounter:Number.isFinite(r)?Math.trunc(r):0,peerId:U(i)?i:``}}function xr(e,t,n){if(!(typeof e!=`number`||typeof t!=`number`||typeof n!=`string`)&&U(n)&&!(!Number.isFinite(e)||!Number.isFinite(t)))return{physicalTime:e,logicalCounter:Math.trunc(t),peerId:n}}function Sr(e){return`${e.physicalTime},${e.logicalCounter},${e.peerId}`}function Cr(e,t){return e.physicalTime===t.physicalTime?e.logicalCounter===t.logicalCounter?e.peerId===t.peerId?0:e.peerId>t.peerId?1:-1:e.logicalCounter>t.logicalCounter?1:-1:e.physicalTime>t.physicalTime?1:-1}function wr(e){if(!e)return;let{physicalTime:t,logicalCounter:n}=e;if(!(!Number.isFinite(t)||!Number.isFinite(n)))return{physicalTime:t,logicalCounter:Math.trunc(n)}}function Tr(e,t){if(t.length===0)return!0;if(e.length<t.length)return!1;for(let n=0;n<t.length;n+=1)if(e[n]!==t[n])return!1;return!0}async function Er(e){return e.map(e=>({key:e.key,data:e.data,metadata:e.metadata,physical:e.physical,logical:e.logical,peer:e.peer}))}function Dr(e){if(!e)return``;if(typeof e!=`string`)throw TypeError(`tablePrefix must be a string`);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw TypeError(`tablePrefix must start with a letter/underscore and use only letters, digits, or underscores`);return e}function Or(e){return{kv:`${e}kv`,overridden:`${e}overridden`,meta:`${e}meta`,idxKvPeerClock:`${e}idx_kv_peer_clock_key`,idxOverriddenKey:`${e}idx_overridden_key`,idxOverriddenSupersededAt:`${e}idx_overridden_superseded_at`}}var kr=class t{db;peerIdValue;vv;maxHlc;listeners;tables;constructor(e,t,n,r,i){this.db=e,this.peerIdValue=t,this.vv=n,this.maxHlc=r,this.listeners=new Set,this.tables=i}static async open(n){let r=n.connection??await e({path:n.path}),i=Or(Dr(n.tablePrefix));await t.ensureSchema(r,i);let a=await t.resolvePeerId(r,i,n.peerId),{vv:o,maxHlc:s}=await t.loadVersionState(r,i);return new t(r,a,o,s,i)}static async fromJson(e){let n=await t.open(e);return await n.importJson(e.bundle),n}async close(){await this.db.close()}static async ensureSchema(e,t){await e.exec(`
1
+ import{openStore as e}from"@loro-dev/unisqlite";const t=new TextEncoder;function n(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function r(e){let t=BigInt(e),n=[];do{let e=Number(t&127n);t>>=7n,t!==0n&&(e|=128),n.push(e)}while(t!==0n);return new Uint8Array(n)}function i(e){let t=BigInt(e),n=[],r=!0;for(;r;){let e=Number(t&127n);t>>=7n;let i=(e&64)!=0;t===0n&&!i||t===-1n&&i?r=!1:e|=128,n.push(e)}return new Uint8Array(n)}async function a(e){let t=typeof crypto<`u`?crypto:void 0;if(t?.subtle){let n=new ArrayBuffer(e.byteLength);new Uint8Array(n).set(e);let r=await t.subtle.digest(`SHA-256`,n);return new Uint8Array(r)}try{let{createHash:t}=await import(`crypto`),n=t(`sha256`);return n.update(e),new Uint8Array(n.digest())}catch{throw Error(`No crypto implementation available for digest`)}}var o=class{chunks=[];writeTag(e){this.chunks.push(e&255)}writeBool(e){this.chunks.push(e?1:0)}writeBytes(e){this.writeLen(e.length);for(let t=0;t<e.length;t+=1)this.chunks.push(e[t])}writeRawBytes(e){for(let t=0;t<e.length;t+=1)this.chunks.push(e[t])}writeLen(e){this.writeRawBytes(r(e))}writeI64(e){this.writeRawBytes(i(e))}writeF64(e){let t=new DataView(new ArrayBuffer(8));t.setFloat64(0,e,!1);let n=new Uint8Array(t.buffer);this.writeRawBytes(n)}writeString(e){this.writeBytes(t.encode(e))}writeJson(e){if(e===null){this.writeTag(32);return}if(typeof e==`boolean`){this.writeTag(33),this.writeBool(e);return}if(typeof e==`number`){this.writeTag(34),this.writeF64(e);return}if(typeof e==`string`){this.writeTag(35),this.writeString(e);return}if(Array.isArray(e)){this.writeTag(36),this.writeLen(e.length);for(let t of e)this.writeJson(t);return}if(e&&typeof e==`object`){let t=Object.entries(e).sort(([e],[t])=>e<t?-1:e>t?1:0);this.writeTag(37),this.writeLen(t.length);for(let[e,n]of t)this.writeString(e),this.writeJson(n);return}throw TypeError(`Unsupported JSON value in digest`)}writeRawValue(e){if(this.writeTag(16),e.data===void 0?this.writeBool(!1):(this.writeBool(!0),this.writeJson(e.data)),this.writeTag(18),!e.metadata||typeof e.metadata!=`object`)this.writeBool(!1);else{let t=Object.entries(e.metadata).sort(([e],[t])=>e<t?-1:e>t?1:0);this.writeBool(!0),this.writeLen(t.length);for(let[e,n]of t)this.writeString(e),this.writeJson(n)}this.writeTag(17),this.writeF64(e.clock.physicalTime),this.writeI64(Math.trunc(e.clock.logicalCounter)),this.writeBytes(t.encode(e.clock.peerId))}async finish(){return a(new Uint8Array(this.chunks))}};function s(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function c(e){if(e!=null)return JSON.parse(e)}async function l(e){let t=c(e.data);if(t===void 0)return null;let n=s(e.metadata),r=new o;return r.writeBytes(e.key),r.writeRawValue({data:t,metadata:n,clock:{physicalTime:Number(e.physical),logicalCounter:Number(e.logical),peerId:String(e.peer)}}),r.finish()}async function u(e){let t=new Uint8Array(32);for(let n of e){let e=await l(n);if(e)for(let n=0;n<t.length;n+=1)t[n]^=e[n]}return n(t)}const ee={hi:2146959360,lo:1};var te=class extends Error{};function d(){throw new te}const ne=(e,t)=>e<t?-1:e>t?1:0,re=(e,t)=>e===t,f=e=>BigInt(e.hi)*4294967296n+BigInt(e.lo>>>0),ie=e=>-e,ae=(e,t)=>e+t,oe=(e,t)=>e*t,se=(e,t)=>e/t,ce=(e,t)=>e%t,le=(e,t)=>e>>BigInt(t),ue=e=>Number(BigInt.asUintN(32,e))|0,de=e=>Number(BigInt.asIntN(32,e));function p(e,t){if(t<0||t>=e.length)throw Error(`Index out of bounds`)}const fe=(e,t)=>e.toString(t);function pe(e,t){let n=new Uint8Array(e);return t!==0&&n.fill(t),n}const m=(e,t)=>{e.push(t)},me={$tag:0};function he(e){this._0=e}he.prototype.$tag=1;function ge(e){this._0=e}ge.prototype.$tag=2;function _e(e){this._0=e}_e.prototype.$tag=3;function ve(e){this._0=e}ve.prototype.$tag=4;const ye=function e(t){let n=e._view;return n===void 0&&(n=e._view=new DataView(new ArrayBuffer(8))),n.setUint32(0,t.hi),n.setUint32(4,t.lo),n.getFloat64(0)},be=function e(t){let n=e._view;return n===void 0&&(n=e._view=new DataView(new ArrayBuffer(8))),n.setFloat64(0,t),{hi:n.getInt32(0),lo:n.getInt32(4)}},xe=e=>e.hi*4294967296+(e.lo>>>0),Se=e=>{if(isNaN(e))return{hi:0,lo:0};if(e>=0x8000000000000000)return{hi:2147483647,lo:4294967295};if(e<=-0x8000000000000000)return{hi:-2147483648,lo:0};let t=!1;e<0&&(t=!0,e=-e);let n=1/4294967296*e|0,r=e>>>0;return t&&(r===0?n=~n+1:(n=~n,r=~r+1)),{hi:n,lo:r}},Ce=new Uint8Array,h={hi:0,lo:255},we={hi:0,lo:0},Te={hi:-1,lo:-1},g={hi:-2147483648,lo:0};function Ee(e){this._0=e}Ee.prototype.$tag=0;function De(e){this._0=e}De.prototype.$tag=1;function Oe(e){this._0=e}Oe.prototype.$tag=2;const _={$tag:1},ke={$tag:0},Ae={hi:0,lo:1},je={hi:0,lo:256};function v(e){this._0=e}v.prototype.$tag=0;function y(e){this._0=e}y.prototype.$tag=1;function Me(e){this._0=e}Me.prototype.$tag=0;function Ne(e){this._0=e}Ne.prototype.$tag=1;function Pe(e){this._0=e}Pe.prototype.$tag=0;function Fe(e){this._0=e}Fe.prototype.$tag=1;function Ie(e){this._0=e}Ie.prototype.$tag=2;function Le(e){this._0=e}Le.prototype.$tag=3;const Re={$tag:4},ze={$tag:5};function Be(e){this._0=e}Be.prototype.$tag=0;function Ve(e){this._0=e}Ve.prototype.$tag=1;function He(e){this._0=e}He.prototype.$tag=0;function Ue(e){this._0=e}Ue.prototype.$tag=1;function We(e){this._0=e}We.prototype.$tag=2;const Ge={$tag:3},Ke={$tag:4},qe=Rt(ee);function Je(e){return d()}function Ye(e){return d()}function Xe(e){return d()}function b(e){d()}function Ze(e){return d()}function Qe(e){return Lt(e)}function $e(e,t){if(e.end-e.start|0){let n=e.buf[e.start],r=e.buf,i=1+e.start|0,a={buf:r,start:i,end:e.end},o=E(n),s=o.end-o.start|0,c=a.end-a.start|0,l=0;for(;;){let e=l;if(e<c){let n=r[i+e|0],a=s,o=E(n);s=a+((o.end-o.start|0)+(t.end-t.start|0)|0)|0,l=e+1|0;continue}else break}s<<=1;let u=ht(s);if(O(u,o.str,o.start,o.end-o.start|0),bt(t.str,0,t.start,t.end)){let e=a.end-a.start|0,t=0;for(;;){let n=t;if(n<e){let e=r[i+n|0],a=E(e);O(u,a.str,a.start,a.end-a.start|0),t=n+1|0;continue}else break}}else{let e=a.end-a.start|0,n=0;for(;;){let a=n;if(a<e){let e=r[i+a|0],o=E(e);O(u,t.str,t.start,t.end-t.start|0),O(u,o.str,o.start,o.end-o.start|0),n=a+1|0;continue}else break}}return u.val}else return``}function et(e,t){t(t=>(Dt(e,t),1))}function tt(e,t){return $e({buf:e,start:0,end:e.length},t)}function nt(e,t){return ne(e,t)}function rt(e,t){return re(e,t)}function it(e){return ie(e)}function at(e,t){return ae(e,t)}function ot(e,t){return oe(e,t)}function st(e,t){return se(e,t)}function ct(e,t){return ce(e,t)}function lt(e,t){return t<0&&b(`negative shift count`),le(e,t)}function ut(e){let t=ue(lt(e,32)),n=ue(e);return qt(Jt(Qe(t),32),Qe(n))}function x(e,t){if(t>=0&&t<(e.end-e.start|0)){let n=e.bytes,r=e.start+t|0;return p(n,r),n[r]}else return Xe(`index out of bounds: the len is from 0 to ${D(e.end-e.start|0)} but the index is ${D(t)}`)}function S(e,t,n){let r=e.length,i;if(n===void 0)i=r;else{let e=n;i=e<0?r+e|0:e}let a=t<0?r+t|0:t;return a>=0&&a<=i&&i<=r?{bytes:e,start:a,end:i}:Ye(`Invalid index for View`)}function C(e,t,n){let r=e.end-e.start|0,i;if(n===void 0)i=r;else{let e=n;i=e<0?r+e|0:e}let a=t<0?r+t|0:t;return a>=0&&a<=i&&i<=r?{bytes:e.bytes,start:e.start+a|0,end:(e.start+a|0)+(i-a|0)|0}:Ye(`Invalid index for View`)}function dt(e){return t=>{let n=e.end-e.start|0,r=0;for(;;){let i=r;if(i<n){if(t(x(e,i))!==1)return 0;r=i+1|0;continue}else return 1}}}function ft(e){let t={val:0},n=e.end-e.start|0;return()=>{if(t.val<n){let n=t.val,r=e.bytes,i=e.start+n|0;p(r,i);let a=r[i];return t.val=t.val+1|0,a}else return-1}}function w(e){return tn(e.end-e.start|0,t=>an(e,t))}function pt(e){let t=At(e);return w({buf:t,start:0,end:t.length})}function T(e){return Lt(e)}function E(e){return{str:e,start:0,end:e.length}}function mt(e,t,n,r,i){if(e===n&&t<r){let a=0;for(;;){let o=a;if(o<i){let i=t+o|0,s=r+o|0;p(n,s),p(e,i),e[i]=n[s],a=o+1|0;continue}else return}}else{let a=i-1|0;for(;;){let i=a;if(i>=0){let o=t+i|0,s=r+i|0;p(n,s),p(e,o),e[o]=n[s],a=i-1|0;continue}else return}}}function ht(e){return{val:``}}function gt(e,t){let n=e;n.val=`${n.val}${String.fromCodePoint(t)}`}function _t(e,t){let n=e;n.val=`${n.val}${t}`}function vt(e,t){return nt(e,t)>0}function D(e){let t=ht(0);return Mt(e,{self:t,method_0:_t,method_1:O,method_2:gt}),t.val}function yt(e,t){return fe(e,t)}function bt(e,t,n,r){let i;i=r===void 0?e.length:r;let a=n,o=0;for(;;){let n=a,r=o;if(n<i&&r<t){let t=e.charCodeAt(n);if(55296<=t&&t<=56319&&(n+1|0)<i){let t=n+1|0,i=e.charCodeAt(t);if(56320<=i&&i<=57343){a=n+2|0,o=r+1|0;continue}else b(`invalid surrogate pair`)}a=n+1|0,o=r+1|0;continue}else return r===t&&n===i}}function xt(e,t,n){let r=e.length,i;return i=n===void 0?r:n,t>=0&&t<=i&&i<=r?e.substring(t,i):d()}function O(e,t,n,r){let i=e;i.val=`${i.val}${xt(t,n,n+r|0)}`}function St(e){return[]}function Ct(e){return[]}function wt(e){return[]}function Tt(e,t){m(e,t)}function Et(e,t){m(e,t)}function k(e,t){m(e,t)}function A(e,t){m(e,t)}function Dt(e,t){m(e,t)}function Ot(e){return String.fromCodePoint(e)}function kt(e,t){let n={val:me};e(e=>(t(e),1));let r=n.val;switch(r.$tag){case 0:return;case 1:r._0;return;case 2:return r._0;case 3:d();return;default:d();return}}function At(e){let t=[];return kt(e,e=>{k(t,e)}),t}function jt(e){return e()}function Mt(e,t){t.method_0(t.self,yt(e,10))}function Nt(e){return t=>{let n=e.length,r=0;for(;;){let i=r;if(i<n){let n=e[i];if(t(n)!==1)return 0;r=i+1|0;continue}else return 1}}}function Pt(e,t,n){let r=e.length,i;if(n===void 0)i=r;else{let e=n;i=e<0?r+e|0:e}let a=t<0?r+t|0:t;return a>=0&&a<=i&&i<=r?{buf:e,start:a,end:i}:Ze(`View index out of bounds`)}function Ft(e){return{hi:0,lo:e}}function It(e){return Ft(e)}function Lt(e){return It(e)}function Rt(e){return ye(e)}function zt(e){return{hi:e>>31&-1,lo:e|0}}function Bt(e){return zt(e)}function Vt(e){return e.lo}function j(e){return Vt(e)&255}function Ht(e,t){return{hi:e.hi&t.hi,lo:e.lo&t.lo}}function Ut(e,t){return{hi:e.hi|t.hi,lo:e.lo|t.lo}}function Wt(e,t){return{hi:e.hi^t.hi,lo:e.lo^t.lo}}function Gt(e,t){let n=t&63;if(n===0)return e;if(n<32){let t=e.hi,r=e.lo,i=t,a=r;return{hi:i<<n|a>>>(32-n|0)|0,lo:a<<n}}else return{hi:e.lo<<(n-32|0),lo:0}}function Kt(e,t){let n=t&63;return n===0?e:n<32?{hi:e.hi>>>n|0,lo:e.lo>>>n|e.hi<<(32-n|0)}:{hi:0,lo:e.hi>>>(n-32|0)|0}}function qt(e,t){return Ut(e,t)}function Jt(e,t){return Gt(e,t)}function Yt(e){return xe(e)}function Xt(e){return Yt(e)}function Zt(e){return ye(e)}function Qt(e){return be(e)}function $t(e,t){let n=e,r=t;return n.hi===r.hi&&n.lo===r.lo}function M(e,t){return Ht(e,t)}function N(e,t){return Ut(e,t)}function P(e,t){return Wt(e,t)}function F(e,t){return Gt(e,t)}function I(e,t){return Kt(e,t)}function en(e){return Se(e)}function tn(e,t){if(e<=0)return Ce;let n=pe(e,t(0)),r=1;for(;;){let i=r;if(i<e){p(n,i),n[i]=t(i),r=i+1|0;continue}else break}return n}function nn(e){console.log(e)}function rn(e,t,n,r,i){let a=(t+i|0)-1|0,o=(r+i|0)-1|0,s=e.length,c=n.length;if(i>=0&&t>=0&&a<s&&r>=0&&o<c){mt(e,t,n,r,i);return}else{d();return}}function an(e,t){if(t>=0&&t<(e.end-e.start|0)){let n=e.buf,r=e.start+t|0;return p(n,r),n[r]}else return Xe(`index out of bounds: the len is from 0 to ${D(e.end-e.start|0)} but the index is ${D(t)}`)}function on(e){let t=e.length,n=Array(t),r=0;for(;;){let i=r;if(i<t){n[i]=e[(t-i|0)-1|0],r=i+1|0;continue}else break}return n}function sn(e,t){let n=e.data.length<=0?1:e.data.length,r,i=n;for(;;){let e=i;if(e>=t){r=e;break}i=Math.imul(e,2)|0}if(r!==e.data.length){let t=pe(r,0);mt(t,0,e.data,0,e.len),e.data=t;return}else return}function L(e,t){sn(e,e.len+1|0);let n=e.data,r=e.len;p(n,r),n[r]=t,e.len=e.len+1|0}function R(e){return w(Pt(e.data,0,e.len))}function z(e){return{data:pe(e<1?1:e,0),len:0}}function cn(e,t){let n=t.length;sn(e,e.len+n|0),rn(e.data,e.len,t,0,n),e.len=e.len+n|0}function ln(e){switch(e){case 0:return`40`;case 1:return`41`;case 2:return`42`;case 3:return`43`;case 4:return`44`;case 5:return`45`;case 6:return`46`;case 7:return`47`;default:return`49`}}function un(e){switch(e){case 0:return`30`;case 1:return`31`;case 2:return`32`;case 3:return`33`;case 4:return`34`;case 5:return`35`;case 6:return`36`;case 7:return`37`;default:return`39`}}function dn(e){let t=[],n=e.color;n===void 0||A(t,un(n));let r=e.bg_color;r===void 0||A(t,ln(r));let i=e.formats,a=i.length,o=0;for(;;){let e=o;if(e<a){switch(i[e]){case 0:A(t,`1`);break;case 1:A(t,`4`);break;case 2:A(t,`5`);break;case 3:A(t,`7`);break;case 4:A(t,`8`);break;case 5:A(t,`9`);break;default:A(t,`3`)}o=e+1|0;continue}else break}return t.length>0?`[${tt(t,{str:`;`,start:0,end:1})}m${e.str}[0m`:e.str}function fn(e){return{str:e,bg_color:void 0,color:void 0,formats:[]}}function pn(e){return{str:e.str,bg_color:e.bg_color,color:1,formats:e.formats}}function mn(e){return{str:e.str,bg_color:e.bg_color,color:3,formats:e.formats}}function hn(e){return{str:e.str,bg_color:e.bg_color,color:4,formats:e.formats}}function gn(e){let t=e.str,n=e.bg_color,r=e.color,i=[];return Dt(i,0),et(i,Nt(e.formats)),{str:t,bg_color:n,color:r,formats:i}}function _n(e,t){let n=`${dn(pn(gn(fn(`Panic: `))))}${dn(mn(fn(e)))} at ${dn(hn(fn(t)))}`;nn(n),b(n)}function vn(e){let t=wt(0),n=0;for(;n<e.length;){let r=n;p(e,r);let i=e.charCodeAt(r);if(i>=55296&&i<=56319&&(n+1|0)<e.length){let r=n+1|0;p(e,r);let a=e.charCodeAt(r);if(a>=56320&&a<=57343){let e=(65536+(i-55296<<10)|0)+(a-56320|0)|0;k(t,(240|e>>18)&255),k(t,(128|e>>12&63)&255),k(t,(128|e>>6&63)&255),k(t,(128|e&63)&255),n=n+1|0}else k(t,(224|i>>12)&255),k(t,(128|i>>6&63)&255),k(t,(128|i&63)&255)}else i<128?k(t,i&255):i<2048?(k(t,(192|i>>6)&255),k(t,(128|i&63)&255)):(k(t,(224|i>>12)&255),k(t,(128|i>>6&63)&255),k(t,(128|i&63)&255));n=n+1|0}return w({buf:t,start:0,end:t.length})}function yn(e){return{bytes:vn(e)}}function bn(e){let t=0;for(;t<(e.end-e.start|0);){let n=x(e,t);if(!(n&128))t=t+1|0;else if((n&224)==192){if((t+1|0)>=(e.end-e.start|0)||(x(e,t+1|0)&192)!=128)return!1;t=t+2|0}else if((n&240)==224){if((t+2|0)>=(e.end-e.start|0))return!1;let n=x(e,t+1|0),r=x(e,t+2|0),i;if(i=(n&192)==128?(r&192)!=128:!0,i)return!1;t=t+3|0}else if((n&248)==240){if((t+3|0)>=(e.end-e.start|0))return!1;let n=x(e,t+1|0),r=x(e,t+2|0),i=x(e,t+3|0),a;if((n&192)!=128)a=!0;else{let e;e=(r&192)==128?(i&192)!=128:!0,a=e}if(a)return!1;t=t+4|0}else return!1}return!0}function xn(e){if(bn(C(e,0,void 0)))return{bytes:pt(dt(e))}}function Sn(e){let t=0,n=``;for(;t<e.length;){let r=t;p(e,r);let i=e[r],a;if(!(i&128))a=i;else if((i&224)==192){if((t+1|0)>=e.length)return;let n=t+1|0;p(e,n);let r=e[n];if((r&192)!=128)return;t=t+1|0,a=(i&31)<<6|r&63}else if((i&240)==224){if((t+2|0)>=e.length)return;let n=t+1|0;p(e,n);let r=e[n],o=t+2|0;p(e,o);let s=e[o],c;if(c=(r&192)==128?(s&192)!=128:!0,c)return;t=t+2|0,a=(i&15)<<12|(r&63)<<6|s&63}else if((i&248)==240){if((t+3|0)>=e.length)return;let n=t+1|0;p(e,n);let r=e[n],o=t+2|0;p(e,o);let s=e[o],c=t+3|0;p(e,c);let l=e[c],u;if((r&192)!=128)u=!0;else{let e;e=(s&192)==128?(l&192)!=128:!0,u=e}if(u)return;t=t+3|0,a=(i&7)<<18|(r&63)<<12|(s&63)<<6|l&63}else return;n=`${n}${Ot(a)}`,t=t+1|0}return n}function Cn(e){let t=Sn(e.bytes);return t===void 0?d():t}function wn(e){return Qt(e)}function Tn(e){return Zt(e)}function En(e){let t=wt(0);return k(t,j(M(I(e,56),h))),k(t,j(M(I(e,48),h))),k(t,j(M(I(e,40),h))),k(t,j(M(I(e,32),h))),k(t,j(M(I(e,24),h))),k(t,j(M(I(e,16),h))),k(t,j(M(I(e,8),h))),k(t,j(M(e,h))),w({buf:t,start:0,end:t.length})}function Dn(e){e.length!==8&&_n(`Invalid byte array length`,`/Users/zxch3n/Code/flock/moon/memcomparable/utils.mbt:28:5-28:54`);let t=we,n=t;p(e,0),t=N(n,F(T(e[0]),56));let r=t;p(e,1),t=N(r,F(T(e[1]),48));let i=t;p(e,2),t=N(i,F(T(e[2]),40));let a=t;p(e,3),t=N(a,F(T(e[3]),32));let o=t;p(e,4),t=N(o,F(T(e[4]),24));let s=t;p(e,5),t=N(s,F(T(e[5]),16));let c=t;p(e,6),t=N(c,F(T(e[6]),8));let l=t;return p(e,7),t=N(l,T(e[7])),t}function On(){return{parts:Ct(0)}}function B(e,t){Tt(e.parts,t)}function kn(e){return e===e?e:e<0?-qe:qe}function An(e,t){L(t,1);let n=ft(e);for(;;){let e=jt(n);if(e===-1)break;{let n=e;L(t,n),n===0&&L(t,255);continue}}L(t,0)}function jn(e,t){L(t,2);let n=e.bytes,r=n.length,i=0;for(;;){let e=i;if(e<r){let r=n[e];L(t,r),r===0&&L(t,255),i=e+1|0;continue}else break}L(t,0)}function Mn(e,t){L(t,33);let n=kn(e),r=En(n<0?P(wn(n),Te):P(wn(n),g)),i=r.length,a=0;for(;;){let e=a;if(e<i){let n=r[e];L(t,n),a=e+1|0;continue}else return}}function Nn(e){let t=[],n=e;for(;vt(n,0n);)k(t,de(ct(n,256n))&255),n=st(n,256n);let r=on(t);return w({buf:r,start:0,end:r.length})}function Pn(e,t){if(rt(e,0n)){L(t,20);return}let n=vt(e,0n),r=Nn(n?e:it(e)),i=r.length;if(n===!1){i<=8?L(t,(20-(i&255)|0)&255):(L(t,11),i>255&&b(`n is too large`),L(t,(i&255^255)&255));let e=z(0),n=0;for(;;){let t=n;if(t<r.length){p(r,t);let i=r[t];L(e,(i^255)&255),n=t+1|0;continue}else break}cn(t,R(e));return}else{i<=8?L(t,(20+(i&255)|0)&255):(L(t,29),i>255&&b(`n is too large`),L(t,i&255)),cn(t,r);return}}function Fn(e,t){switch(e.$tag){case 0:{let n=e._0;An(S(n,0,n.length),t);return}case 1:{let n=e._0;jn(n,t);return}case 2:{let n=e._0;Pn(n,t);return}case 3:{let n=e._0;Mn(n,t);return}case 4:L(t,38);return;default:L(t,39);return}}function In(e){let t=z(0),n=e.parts,r=n.length,i=0;for(;;){let e=i;if(e<r){let r=n[e];Fn(r,t),i=e+1|0;continue}else break}return R(t)}function Ln(e,t){let n=z(0),r=t;for(;r<(e.end-e.start|0);){let t=x(e,r);if(r=r+1|0,t===0){let t;if(t=r<(e.end-e.start|0)?x(e,r)===255:!1,t){L(n,0),r=r+1|0;continue}else{let e=R(n);return new De({_0:S(e,0,e.length),_1:r})}}L(n,t)}return new Ee(_)}function V(e){let t=f(we),n=f(Ae),r=(e.end-e.start|0)-1|0;for(;;){let i=r;if(i>=0){let a=f(Bt(x(e,i)));t=at(t,ot(n,a)),n=ot(n,f(je)),r=i-1|0;continue}else break}return t}function Rn(e,t){let n;if(n=20<=t?t<=28:!1,n){let n=(t-20|0)&255;if((e.end-e.start|0)<n)return new v(_);let r=C(e,0,n);return new y({_0:C(e,n,void 0),_1:V(r)})}else{let n;if(n=12<=t?t<20:!1,n){let n=(20-t|0)&255;if((e.end-e.start|0)<n)return new v(_);let r=C(e,0,n),i=C(e,n,void 0),a=z(0),o=0;for(;;){let e=o;if(e<(r.end-r.start|0)){L(a,(x(r,e)^255)&255),o=e+1|0;continue}else break}let s=R(a);return new y({_0:i,_1:it(V(S(s,0,s.length)))})}else if(t===11){if((e.end-e.start|0)<1)return new v(_);let t=(x(e,0)^255)&255;if((e.end-e.start|0)<(t+1|0))return new v(_);let n=C(e,1,t+1|0),r=C(e,t+1|0,void 0),i=z(0),a=0;for(;;){let e=a;if(e<(n.end-n.start|0)){L(i,(x(n,e)^255)&255),a=e+1|0;continue}else break}let o=R(i);return new y({_0:r,_1:it(V(S(o,0,o.length)))})}else if(t===29){if((e.end-e.start|0)<1)return new v(_);let t=x(e,0);if((e.end-e.start|0)<(t+1|0))return new v(_);let n=C(e,1,t+1|0);return new y({_0:C(e,t+1|0,void 0),_1:V(n)})}else return new v(new Oe(t))}}function zn(e,t){if((t+8|0)>(e.end-e.start|0))return new Me(_);let n=wt(0),r=0;for(;;){let i=r;if(i<8){k(n,x(e,t+i|0)),r=i+1|0;continue}else break}let i=Dn(w({buf:n,start:0,end:n.length}));return new Ne({_0:$t(M(i,g),we)?Tn(P(i,Te)):Tn(P(i,g)),_1:t+8|0})}function Bn(e){let t=On(),n=0;for(;n<(e.end-e.start|0);){let r=x(e,n);if(n=n+1|0,r===2){let r=Ln(e,n),i;if(r.$tag===1)i=r._0;else return r;let a=i._0,o=i._1,s=xn(a);if(s===void 0)return new Be(ke);B(t,new Fe(s)),n=o}else if(r===1){let r=Ln(e,n),i;if(r.$tag===1)i=r._0;else return r;let a=i._0,o=i._1;B(t,new Pe(pt(dt(a)))),n=o}else if(r>=11&&r<=29){let i=Rn(C(e,n,void 0),r),a;if(i.$tag===1)a=i._0;else return i;let o=a._0,s=a._1;B(t,new Ie(s)),n=(e.end-e.start|0)-(o.end-o.start|0)|0}else if(r===33){let r=zn(e,n),i;if(r.$tag===1)i=r._0;else return r;let a=i._0,o=i._1;B(t,new Le(a)),n=o}else if(r===38)B(t,Re);else if(r===39)B(t,ze);else return new Be(new Oe(r))}return new Ve(t)}function Vn(e){switch(e.$tag){case 0:{let t=e._0;return new We(t)}case 1:{let t=e._0;return new Ue(Cn(t))}case 2:{let t=e._0;return new He(Xt(ut(t)))}case 3:{let t=e._0;return new He(t)}case 4:return Ke;default:return Ge}}function Hn(e){switch(e.$tag){case 2:{let t=e._0;return new Pe(t)}case 1:{let t=e._0;return new Fe(yn(t))}case 0:{let t=e._0;return Xt(en(t))===t?new Ie(f(en(t))):new Le(t)}case 3:return ze;default:return Re}}function Un(e){let t=On(),n=e.length,r=0;for(;;){let i=r;if(i<n){let n=e[i];Tt(t.parts,Hn(n)),r=i+1|0;continue}else break}return In(t)}function Wn(e){let t;_L:{_L$2:{let n=Bn(S(e,0,e.length));if(n.$tag===1)t=n._0;else{n._0;break _L$2}break _L}t=Je(`Failed to decode key`)}let n=St(0),r=t.parts,i=r.length,a=0;for(;;){let e=a;if(e<i){let t=r[e];Et(n,Vn(t)),a=e+1|0;continue}else break}return n}function Gn(e){if(typeof e==`number`){if(!Number.isFinite(e))throw TypeError(`Key parts must be finite numbers`);return{$tag:0,_0:e}}if(typeof e==`string`)return{$tag:1,_0:e};if(e===!0)return{$tag:3};if(e===!1)return{$tag:4};throw TypeError(`Key parts must be strings, numbers, or booleans`)}function Kn(e){if(e instanceof Uint8Array)return e;if(e&&typeof e==`object`){let t=e.buf;if(t instanceof Uint8Array){let n=e.start??0,r=e.end??t.length;return t.subarray(n,r)}}throw TypeError(`Invalid bytes payload in memcomparable decode`)}function qn(e){switch(e?.$tag){case 0:return e._0;case 1:return e._0;case 3:return!0;case 4:return!1;case 2:return Kn(e._0);default:throw TypeError(`Unsupported memcomparable key part`)}}function H(e){return Un(e.map(Gn))}function Jn(e){return Wn(e).map(e=>qn(e))}function Yn(e,t){let n=Math.min(e.length,t.length);for(let r=0;r<n;r+=1)if(e[r]!==t[r])return e[r]<t[r]?-1:1;return e.length===t.length?0:e.length<t.length?-1:1}function Xn(e){if(e.length===0)return;let t=Array.from(e);for(let e=t.length-1;e>=0;--e){let n=t[e];if(n<255)return t[e]=n+1,new Uint8Array(t.slice(0,e+1))}}function Zn(e){return JSON.stringify(e)}const Qn=new TextEncoder,$n=new TextDecoder,er=globalThis.structuredClone;function tr(e){return Qn.encode(e).length}function U(e){return typeof e==`string`&&tr(e)<128}function nr(){let e=new Uint8Array(32),t=typeof crypto<`u`?crypto:void 0;if(t?.getRandomValues)t.getRandomValues(e);else if(t?.randomBytes){let n=t.randomBytes(32);e.set(n)}else for(let t=0;t<32;t+=1)e[t]=Math.floor(Math.random()*256);return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function rr(e){if(e===void 0)return nr();if(!U(e))throw TypeError(`peerId must be a UTF-8 string under 128 bytes`);return e}function W(e){return e===void 0?e:er?er(e):JSON.parse(JSON.stringify(e))}function G(e){if(!(!e||typeof e!=`object`||Array.isArray(e)))return W(e)}function ir(e){return G(e)??{}}function ar(e,t){if(!(!t||typeof t!=`object`)){if(`data`in t){let n=t.data;e.data=n===void 0?void 0:W(n)}`metadata`in t&&(e.metadata=G(t.metadata))}}function K(e){let t={};return ar(t,e),t}function q(e,t){let n=K(e);return ar(n,t),n}function or(e,t){if(e===t)return 0;let n=Math.min(e.length,t.length);for(let r=0;r<n;r+=1){let n=e[r]-t[r];if(n!==0)return n}return e.length-t.length}function sr(e){if(!e||typeof e!=`object`)return[];let t=[];for(let[n,r]of Object.entries(e)){if(!r||!U(n))continue;let{physicalTime:e,logicalCounter:i}=r;if(typeof e!=`number`||!Number.isFinite(e)||typeof i!=`number`||!Number.isFinite(i))continue;let a=Qn.encode(n);t.push({peer:n,peerBytes:a,timestamp:Math.trunc(e),counter:Math.max(0,Math.trunc(i))})}return t.sort((e,t)=>{if(e.timestamp!==t.timestamp)return e.timestamp-t.timestamp;let n=or(e.peerBytes,t.peerBytes);return n===0?e.counter-t.counter:n}),t}function J(e,t){if(!Number.isFinite(e)||e<0)throw TypeError(`leb128 values must be finite and non-negative`);let n=Math.trunc(e);if(n===0){t.push(0);return}for(;n>0;){let e=n%128;n=Math.floor(n/128),t.push(n>0?e|128:e)}}function cr(e,t){J(e.length,t);for(let n=0;n<e.length;n+=1)t.push(e[n])}const Y=new Uint8Array([86,69,86,69]);function lr(e){let t=sr(e),n=Array.from(Y);if(t.length===0)return Uint8Array.from(n);let r=0;for(let e=0;e<t.length;e+=1){let i=t[e];if(i.timestamp<0)throw TypeError(`timestamp must be non-negative`);if(e===0)J(i.timestamp,n),r=i.timestamp;else{let e=i.timestamp-r;if(e<0)throw TypeError(`version vector timestamps must be non-decreasing`);J(e,n),r=i.timestamp}J(i.counter,n),cr(i.peerBytes,n)}return Uint8Array.from(n)}function X(e,t){let n=0,r=1,i=0;for(;t+i<e.length;){let a=e[t+i];if(i+=1,n+=(a&127)*r,!(a&128))break;r*=128}return[n,i]}function ur(e,t){let[n,r]=X(e,t),i=t+r,a=i+n;if(a>e.length)throw TypeError(`varString length exceeds buffer`);let o=e.subarray(i,a);return[$n.decode(o),r+n]}function dr(e){return e.length>=4&&e[0]===Y[0]&&e[1]===Y[1]&&e[2]===Y[2]&&e[3]===Y[3]}function fr(e){let t=0,[n,r]=X(e,t);t+=r;let[i,a]=X(e,t);t+=a;let o={};for(let r=0;r<n;r+=1){let[n,r]=ur(e,t);if(t+=r,!U(n))throw TypeError(`invalid peer id in encoded version vector`);let[a,s]=X(e,t);t+=s;let[c,l]=X(e,t);t+=l,o[n]={physicalTime:i+a,logicalCounter:c}}return o}function pr(e){let t=4,n={};if(t===e.length)return n;let[r,i]=X(e,t);t+=i;let[a,o]=X(e,t);t+=o;let[s,c]=ur(e,t);if(t+=c,!U(s))throw TypeError(`invalid peer id in encoded version vector`);n[s]={physicalTime:r,logicalCounter:a};let l=r;for(;t<e.length;){let[r,i]=X(e,t);t+=i;let[a,o]=X(e,t);t+=o;let[s,c]=ur(e,t);if(t+=c,!U(s))throw TypeError(`invalid peer id in encoded version vector`);let u=l+r;if(u<l)throw TypeError(`version vector timestamps must be non-decreasing`);n[s]={physicalTime:u,logicalCounter:a},l=u}return n}function mr(e){return dr(e)?pr(e):fr(e)}function hr(e){return lr(e)}function gr(e){return mr(e)}function Z(e,t){let n={c:Sr(e)};t.data!==void 0&&(n.d=W(t.data));let r=G(t.metadata);return r!==void 0&&(n.m=r),n}function _r(e){return!e||typeof e!=`object`?{accept:!0}:`accept`in e?e.accept?{accept:!0}:{accept:!1,reason:e.reason??`rejected`}:{accept:!0}}function vr(e){return typeof e==`object`&&!!e&&(Object.prototype.hasOwnProperty.call(e,`hooks`)||Object.prototype.hasOwnProperty.call(e,`from`)||Object.prototype.hasOwnProperty.call(e,`pruneTombstonesBefore`)||Object.prototype.hasOwnProperty.call(e,`peerId`))}function yr(e){return typeof e==`object`&&!!e&&Object.prototype.hasOwnProperty.call(e,`bundle`)}function br(e){if(e)try{let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t))return t}catch{}}function Q(e){if(e!=null)return JSON.parse(e)}function $(e){let t=e.split(`,`);if(t.length<3)return{physicalTime:0,logicalCounter:0,peerId:``};let n=Number(t[0]),r=Number(t[1]),i=t.slice(2).join(`,`);return{physicalTime:Number.isFinite(n)?n:0,logicalCounter:Number.isFinite(r)?Math.trunc(r):0,peerId:U(i)?i:``}}function xr(e,t,n){if(!(typeof e!=`number`||typeof t!=`number`||typeof n!=`string`)&&U(n)&&!(!Number.isFinite(e)||!Number.isFinite(t)))return{physicalTime:e,logicalCounter:Math.trunc(t),peerId:n}}function Sr(e){return`${e.physicalTime},${e.logicalCounter},${e.peerId}`}function Cr(e,t){return e.physicalTime===t.physicalTime?e.logicalCounter===t.logicalCounter?e.peerId===t.peerId?0:e.peerId>t.peerId?1:-1:e.logicalCounter>t.logicalCounter?1:-1:e.physicalTime>t.physicalTime?1:-1}function wr(e){if(!e)return;let{physicalTime:t,logicalCounter:n}=e;if(!(!Number.isFinite(t)||!Number.isFinite(n)))return{physicalTime:t,logicalCounter:Math.trunc(n)}}function Tr(e,t){if(t.length===0)return!0;if(e.length<t.length)return!1;for(let n=0;n<t.length;n+=1)if(e[n]!==t[n])return!1;return!0}async function Er(e){return e.map(e=>({key:e.key,data:e.data,metadata:e.metadata,physical:e.physical,logical:e.logical,peer:e.peer}))}function Dr(e){if(!e)return``;if(typeof e!=`string`)throw TypeError(`tablePrefix must be a string`);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw TypeError(`tablePrefix must start with a letter/underscore and use only letters, digits, or underscores`);return e}function Or(e){return{kv:`${e}kv`,overridden:`${e}overridden`,meta:`${e}meta`,idxKvPeerClock:`${e}idx_kv_peer_clock_key`,idxOverriddenKey:`${e}idx_overridden_key`,idxOverriddenSupersededAt:`${e}idx_overridden_superseded_at`}}var kr=class t{db;peerIdValue;vv;maxHlc;listeners;tables;txnEventSink;debounceState;constructor(e,t,n,r,i){this.db=e,this.peerIdValue=t,this.vv=n,this.maxHlc=r,this.listeners=new Set,this.tables=i,this.txnEventSink=void 0,this.debounceState=void 0}static async open(n){let r=n.connection??await e({path:n.path}),i=Or(Dr(n.tablePrefix));await t.ensureSchema(r,i);let a=await t.resolvePeerId(r,i,n.peerId),{vv:o,maxHlc:s}=await t.loadVersionState(r,i);return new t(r,a,o,s,i)}static async fromJson(e){let n=await t.open(e);return await n.importJson(e.bundle),n}async close(){if(this.debounceState!==void 0&&this.disableAutoDebounceCommit(),this.txnEventSink!==void 0){let e=this.txnEventSink;this.txnEventSink=void 0,e.length>0&&this.emitEvents(`local`,e)}await this.db.close()}static async ensureSchema(e,t){await e.exec(`
2
2
  CREATE TABLE IF NOT EXISTS ${t.kv} (
3
3
  key BLOB PRIMARY KEY,
4
4
  data TEXT NULL,
@@ -23,9 +23,9 @@ import{openStore as e}from"@loro-dev/unisqlite";const t=new TextEncoder;function
23
23
  metadata=excluded.metadata,
24
24
  physical=excluded.physical,
25
25
  logical=excluded.logical,
26
- peer=excluded.peer`,[t,r,i,c.physicalTime,c.logicalCounter,c.peerId]),a=!0}),o&&this.bumpVersion(o),a){let t={key:e.key.slice(),payload:n,source:e.source};e.eventSink?e.eventSink.push(t):this.emitEvents(e.source,[t])}return a}emitEvents(e,t){if(this.listeners.size===0||t.length===0)return;let n={source:e,events:t.map(e=>({key:W(e.key),value:e.payload.data===void 0?void 0:W(e.payload.data),metadata:G(e.payload.metadata),payload:K(e.payload)}))};this.listeners.forEach(e=>{e(n)})}async put(e,t,n){await this.applyOperation({key:e,payload:{data:W(t)},now:n,skipSameValue:!0,source:`local`})}async putWithMeta(e,t,n={}){let r={data:W(t)};n.metadata&&(r.metadata=G(n.metadata));let i=n.hooks?.transform;if(i){let t=K(r),a=q(r,await i({key:e.slice(),now:n.now},t)??t);if(a.data===void 0)throw TypeError(`putWithMeta requires a data value`);await this.applyOperation({key:e,payload:a,now:n.now,skipSameValue:!0,source:`local`});return}await this.applyOperation({key:e,payload:r,now:n.now,skipSameValue:!0,source:`local`})}async delete(e,t){await this.applyOperation({key:e,payload:{},now:t,skipSameValue:!0,source:`local`})}async forcePut(e,t,n){await this.applyOperation({key:e,payload:{data:W(t)},now:n,skipSameValue:!1,source:`local`})}async forcePutWithMeta(e,t,n={}){let r={data:W(t)};n.metadata&&(r.metadata=G(n.metadata));let i=n.hooks?.transform;if(i){let t=K(r),a=q(r,await i({key:e.slice(),now:n.now},t)??t);if(a.data===void 0)throw TypeError(`forcePutWithMeta requires a data value`);await this.applyOperation({key:e,payload:a,now:n.now,skipSameValue:!1,source:`local`});return}await this.applyOperation({key:e,payload:r,now:n.now,skipSameValue:!1,source:`local`})}async forceDelete(e,t){await this.applyOperation({key:e,payload:{},now:t,skipSameValue:!1,source:`local`})}async set(e,t,n){await this.put(e,t,n)}async setPeerId(e){let t=rr(e);await this.db.exec(`DELETE FROM ${this.tables.meta}`),await this.db.run(`INSERT INTO ${this.tables.meta}(peer_id) VALUES (?)`,[t]),this.peerIdValue=t}async get(e){let t=H(e),n=(await this.db.query(`SELECT data FROM ${this.tables.kv} WHERE key = ? LIMIT 1`,[t]))[0];if(n)return Q(n.data)}async getEntry(e){let t;try{t=H(e)}catch{return}let n=(await this.db.query(`SELECT data, metadata, physical, logical, peer FROM ${this.tables.kv} WHERE key = ? LIMIT 1`,[t]))[0];if(!n)return;let r=xr(n.physical,n.logical,n.peer);if(!r)return;let i=ir(br(n.metadata)),a=Q(n.data),o={metadata:i,clock:r};return a!==void 0&&(o.data=a),o}async getMvr(e){let t=await this.scan({prefix:e}),n=[];for(let r of t)r.raw.d===!0&&r.key.length===e.length+1&&n.push(r.key[r.key.length-1]);return n}async putMvr(e,t,n){if(t===null||typeof t==`object`)throw TypeError(`putMvr only accepts scalar values`);let r=await this.scan({prefix:e});for(let e of r)e.raw.d===!0&&await this.delete(e.key,n);let i=e.slice();i.push(t),await this.put(i,!0,n)}buildScanBounds(e){let t,n,r,i=e=>{if(!t){t=e;return}let n=Yn(e.value,t.value);n>0?t=e:n===0&&(t={value:t.value,inclusive:t.inclusive&&e.inclusive})},a=e=>{if(!n){n=e;return}let t=Yn(e.value,n.value);t<0?n=e:t===0&&(n={value:n.value,inclusive:n.inclusive&&e.inclusive})};try{if(e.prefix){let t=H(e.prefix);r=t,i({value:t,inclusive:!0});let n=Xn(t);n&&a({value:n,inclusive:!1})}e.start&&e.start.kind!==`unbounded`&&i({value:H(e.start.key),inclusive:e.start.kind===`inclusive`}),e.end&&e.end.kind!==`unbounded`&&a({value:H(e.end.key),inclusive:e.end.kind===`inclusive`})}catch{return{where:[],params:[],empty:!0}}let o=[],s=[];return t&&(o.push(`key ${t.inclusive?`>=`:`>`} ?`),s.push(t.value)),n&&(o.push(`key ${n.inclusive?`<=`:`<`} ?`),s.push(n.value)),{where:o,params:s,postFilter:r?(e=>t=>Tr(t,e))(r):void 0}}async scan(e={}){let t=this.buildScanBounds(e);if(t.empty)return[];let n=t.where.length>0?`WHERE ${t.where.join(` AND `)}`:``,r=await this.db.query(`SELECT key, data, metadata, physical, logical, peer FROM ${this.tables.kv} ${n} ORDER BY key ASC`,t.params),i=[];for(let e of r){let n=e.key;if(t.postFilter&&!t.postFilter(n))continue;let r=Jn(n),a={physicalTime:Number(e.physical??0),logicalCounter:Number(e.logical??0),peerId:String(e.peer??``)},o={},s=Q(e.data);s!==void 0&&(o.data=s);let c=br(e.metadata);c!==void 0&&(o.metadata=c);let l=Z(a,o);i.push({key:r,raw:l,value:o.data})}return i}async version(){let e=await this.db.query(`SELECT peer, physical, logical FROM (
26
+ peer=excluded.peer`,[t,r,i,c.physicalTime,c.logicalCounter,c.peerId]),a=!0}),o&&this.bumpVersion(o),a){let t={key:e.key.slice(),payload:n,source:e.source};e.eventSink?e.eventSink.push(t):this.txnEventSink?this.txnEventSink.push(t):this.debounceState?(this.debounceState.pendingEvents.push(t),this.resetDebounceTimer()):this.emitEvents(e.source,[t])}return a}resetDebounceTimer(){this.debounceState!==void 0&&(this.debounceState.timerId!==void 0&&clearTimeout(this.debounceState.timerId),this.debounceState.timerId=setTimeout(()=>{this.commit()},this.debounceState.timeout),this.debounceState.maxTimerId===void 0&&this.debounceState.pendingEvents.length===1&&(this.debounceState.maxTimerId=setTimeout(()=>{this.commit()},this.debounceState.maxDebounceTime)))}emitEvents(e,t){if(this.listeners.size===0||t.length===0)return;let n={source:e,events:t.map(e=>({key:W(e.key),value:e.payload.data===void 0?void 0:W(e.payload.data),metadata:G(e.payload.metadata),payload:K(e.payload)}))};this.listeners.forEach(e=>{e(n)})}async put(e,t,n){await this.applyOperation({key:e,payload:{data:W(t)},now:n,skipSameValue:!0,source:`local`})}async putWithMeta(e,t,n={}){let r={data:W(t)};n.metadata&&(r.metadata=G(n.metadata));let i=n.hooks?.transform;if(i){let t=K(r),a=q(r,await i({key:e.slice(),now:n.now},t)??t);if(a.data===void 0)throw TypeError(`putWithMeta requires a data value`);await this.applyOperation({key:e,payload:a,now:n.now,skipSameValue:!0,source:`local`});return}await this.applyOperation({key:e,payload:r,now:n.now,skipSameValue:!0,source:`local`})}async delete(e,t){await this.applyOperation({key:e,payload:{},now:t,skipSameValue:!0,source:`local`})}async forcePut(e,t,n){await this.applyOperation({key:e,payload:{data:W(t)},now:n,skipSameValue:!1,source:`local`})}async forcePutWithMeta(e,t,n={}){let r={data:W(t)};n.metadata&&(r.metadata=G(n.metadata));let i=n.hooks?.transform;if(i){let t=K(r),a=q(r,await i({key:e.slice(),now:n.now},t)??t);if(a.data===void 0)throw TypeError(`forcePutWithMeta requires a data value`);await this.applyOperation({key:e,payload:a,now:n.now,skipSameValue:!1,source:`local`});return}await this.applyOperation({key:e,payload:r,now:n.now,skipSameValue:!1,source:`local`})}async forceDelete(e,t){await this.applyOperation({key:e,payload:{},now:t,skipSameValue:!1,source:`local`})}async set(e,t,n){await this.put(e,t,n)}async setPeerId(e){let t=rr(e);await this.db.exec(`DELETE FROM ${this.tables.meta}`),await this.db.run(`INSERT INTO ${this.tables.meta}(peer_id) VALUES (?)`,[t]),this.peerIdValue=t}async get(e){let t=H(e),n=(await this.db.query(`SELECT data FROM ${this.tables.kv} WHERE key = ? LIMIT 1`,[t]))[0];if(n)return Q(n.data)}async getEntry(e){let t;try{t=H(e)}catch{return}let n=(await this.db.query(`SELECT data, metadata, physical, logical, peer FROM ${this.tables.kv} WHERE key = ? LIMIT 1`,[t]))[0];if(!n)return;let r=xr(n.physical,n.logical,n.peer);if(!r)return;let i=ir(br(n.metadata)),a=Q(n.data),o={metadata:i,clock:r};return a!==void 0&&(o.data=a),o}async getMvr(e){let t=await this.scan({prefix:e}),n=[];for(let r of t)r.raw.d===!0&&r.key.length===e.length+1&&n.push(r.key[r.key.length-1]);return n}async putMvr(e,t,n){if(t===null||typeof t==`object`)throw TypeError(`putMvr only accepts scalar values`);let r=await this.scan({prefix:e});for(let e of r)e.raw.d===!0&&await this.delete(e.key,n);let i=e.slice();i.push(t),await this.put(i,!0,n)}buildScanBounds(e){let t,n,r,i=e=>{if(!t){t=e;return}let n=Yn(e.value,t.value);n>0?t=e:n===0&&(t={value:t.value,inclusive:t.inclusive&&e.inclusive})},a=e=>{if(!n){n=e;return}let t=Yn(e.value,n.value);t<0?n=e:t===0&&(n={value:n.value,inclusive:n.inclusive&&e.inclusive})};try{if(e.prefix){let t=H(e.prefix);r=t,i({value:t,inclusive:!0});let n=Xn(t);n&&a({value:n,inclusive:!1})}e.start&&e.start.kind!==`unbounded`&&i({value:H(e.start.key),inclusive:e.start.kind===`inclusive`}),e.end&&e.end.kind!==`unbounded`&&a({value:H(e.end.key),inclusive:e.end.kind===`inclusive`})}catch{return{where:[],params:[],empty:!0}}let o=[],s=[];return t&&(o.push(`key ${t.inclusive?`>=`:`>`} ?`),s.push(t.value)),n&&(o.push(`key ${n.inclusive?`<=`:`<`} ?`),s.push(n.value)),{where:o,params:s,postFilter:r?(e=>t=>Tr(t,e))(r):void 0}}async scan(e={}){let t=this.buildScanBounds(e);if(t.empty)return[];let n=t.where.length>0?`WHERE ${t.where.join(` AND `)}`:``,r=await this.db.query(`SELECT key, data, metadata, physical, logical, peer FROM ${this.tables.kv} ${n} ORDER BY key ASC`,t.params),i=[];for(let e of r){let n=e.key;if(t.postFilter&&!t.postFilter(n))continue;let r=Jn(n),a={physicalTime:Number(e.physical??0),logicalCounter:Number(e.logical??0),peerId:String(e.peer??``)},o={},s=Q(e.data);s!==void 0&&(o.data=s);let c=br(e.metadata);c!==void 0&&(o.metadata=c);let l=Z(a,o);i.push({key:r,raw:l,value:o.data})}return i}async version(){let e=await this.db.query(`SELECT peer, physical, logical FROM (
27
27
  SELECT peer, physical, logical,
28
28
  ROW_NUMBER() OVER (PARTITION BY peer ORDER BY physical DESC, logical DESC) as rn
29
29
  FROM ${this.tables.kv}
30
- ) WHERE rn = 1`),t={};for(let n of e)t[n.peer]={physicalTime:n.physical,logicalCounter:n.logical};return t}inclusiveVersion(){let e={};for(let[t,n]of this.vv.entries())e[t]={...n};return e}peerId(){return this.peerIdValue}getMaxPhysicalTime(){return this.maxHlc.physicalTime}async exportInternal(e,t,n){let r=new Map;if(e)for(let[t,n]of Object.entries(e)){let e=wr(n);e&&r.set(t,e)}let i={},a=n?[n]:Array.from(this.vv.keys()),o=[];for(let e of a){let t=this.vv.get(e),n=r.get(e);t&&n&&(t.physicalTime<n.physicalTime||t.physicalTime===n.physicalTime&&t.logicalCounter<=n.logicalCounter)||o.push({peer:e,fromEntry:n})}if(n&&o.every(e=>e.peer!==n)&&o.push({peer:n,fromEntry:r.get(n)}),o.length===0)return{version:0,entries:i};for(let e of o){let n=[e.peer],r=`WHERE peer = ?`;e.fromEntry&&(r+=` AND physical >= ?`,n.push(e.fromEntry.physicalTime));let a=await this.db.query(`SELECT key, data, metadata, physical, logical, peer FROM ${this.tables.kv} ${r} ORDER BY physical, logical, key`,n);for(let n of a){let r={physicalTime:Number(n.physical??0),logicalCounter:Number(n.logical??0),peerId:String(n.peer??``)},a=e.fromEntry;if(a&&(r.physicalTime<a.physicalTime||r.physicalTime===a.physicalTime&&r.logicalCounter<=a.logicalCounter)||t!==void 0&&Number.isFinite(t)&&n.data===null&&r.physicalTime<t)continue;let o={},s=Q(n.data);s!==void 0&&(o.data=s);let c=br(n.metadata);c!==void 0&&(o.metadata=c);let l=Jn(n.key);i[Zn(l)]=Z(r,o)}}return{version:0,entries:i}}async exportWithHooks(e){let t=await this.exportInternal(e.from,e.pruneTombstonesBefore,e.peerId),n=e.hooks?.transform;if(!n)return t;let r={version:t.version,entries:{}};for(let[e,i]of Object.entries(t.entries)){let t=$(i.c),a={key:JSON.parse(e),clock:t,raw:{...i}},o={};i.d!==void 0&&(o.data=W(i.d));let s=G(i.m);s!==void 0&&(o.metadata=s);let c=K(o),l=q(o,await n(a,c)??c);r.entries[e]=Z(t,l)}return r}exportJson(e,t){return vr(e)?this.exportWithHooks(e):this.exportInternal(e,t)}async importInternal(e){if(e.version!==0)throw TypeError(`Unsupported bundle version`);let t=0,n=[],r=[];for(let[i,a]of Object.entries(e.entries)){let e;try{let t=JSON.parse(i);e=Array.isArray(t)?t:[]}catch{n.push({key:[],reason:`invalid key`});continue}let o=$(a.c),s={};a.d!==void 0&&(s.data=W(a.d));let c=G(a.m);c!==void 0&&(s.metadata=c),t+=1,await this.applyOperation({key:e,payload:s,clock:o,skipSameValue:!1,source:`import`,eventSink:r})}return r.length>0&&this.emitEvents(`import`,r),{accepted:t,skipped:n}}async importJson(e){if(yr(e)){let t=e.hooks?.preprocess,n=t?{version:e.bundle.version,entries:{...e.bundle.entries}}:e.bundle,r=[];if(t)for(let[e,i]of Object.entries(n.entries)){let a=JSON.parse(e),o=$(i.c),s={};i.d!==void 0&&(s.data=W(i.d));let c=G(i.m);c!==void 0&&(s.metadata=c);let l=_r(await t({key:a,clock:o,raw:i},K(s)));l.accept?n.entries[e]=Z(o,s):(r.push({key:a,reason:l.reason??`rejected`}),delete n.entries[e])}let i=await this.importInternal(n);return{accepted:i.accepted,skipped:r.concat(i.skipped)}}return this.importInternal(e)}async importJsonStr(e){let t=JSON.parse(e);return this.importJson(t)}async digest(){return u(await Er(await this.db.query(`SELECT key, data, metadata, physical, logical, peer FROM ${this.tables.kv} ORDER BY key ASC`)))}async kvToJson(){return this.exportInternal()}async merge(e){let t=await e.exportJson();await this.importJson(t)}static async checkConsistency(e,t){let[n,r]=await Promise.all([e.digest(),t.digest()]);return n===r}checkInvariants(){}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}};export{kr as Flock,kr as FlockSQLite,gr as decodeVersionVector,hr as encodeVersionVector};
30
+ ) WHERE rn = 1`),t={};for(let n of e)t[n.peer]={physicalTime:n.physical,logicalCounter:n.logical};return t}inclusiveVersion(){let e={};for(let[t,n]of this.vv.entries())e[t]={...n};return e}peerId(){return this.peerIdValue}getMaxPhysicalTime(){return this.maxHlc.physicalTime}async exportInternal(e,t,n){let r=new Map;if(e)for(let[t,n]of Object.entries(e)){let e=wr(n);e&&r.set(t,e)}let i={},a=n?[n]:Array.from(this.vv.keys()),o=[];for(let e of a){let t=this.vv.get(e),n=r.get(e);t&&n&&(t.physicalTime<n.physicalTime||t.physicalTime===n.physicalTime&&t.logicalCounter<=n.logicalCounter)||o.push({peer:e,fromEntry:n})}if(n&&o.every(e=>e.peer!==n)&&o.push({peer:n,fromEntry:r.get(n)}),o.length===0)return{version:0,entries:i};for(let e of o){let n=[e.peer],r=`WHERE peer = ?`;e.fromEntry&&(r+=` AND physical >= ?`,n.push(e.fromEntry.physicalTime));let a=await this.db.query(`SELECT key, data, metadata, physical, logical, peer FROM ${this.tables.kv} ${r} ORDER BY physical, logical, key`,n);for(let n of a){let r={physicalTime:Number(n.physical??0),logicalCounter:Number(n.logical??0),peerId:String(n.peer??``)},a=e.fromEntry;if(a&&(r.physicalTime<a.physicalTime||r.physicalTime===a.physicalTime&&r.logicalCounter<=a.logicalCounter)||t!==void 0&&Number.isFinite(t)&&n.data===null&&r.physicalTime<t)continue;let o={},s=Q(n.data);s!==void 0&&(o.data=s);let c=br(n.metadata);c!==void 0&&(o.metadata=c);let l=Jn(n.key);i[Zn(l)]=Z(r,o)}}return{version:0,entries:i}}async exportWithHooks(e){let t=await this.exportInternal(e.from,e.pruneTombstonesBefore,e.peerId),n=e.hooks?.transform;if(!n)return t;let r={version:t.version,entries:{}};for(let[e,i]of Object.entries(t.entries)){let t=$(i.c),a={key:JSON.parse(e),clock:t,raw:{...i}},o={};i.d!==void 0&&(o.data=W(i.d));let s=G(i.m);s!==void 0&&(o.metadata=s);let c=K(o),l=q(o,await n(a,c)??c);r.entries[e]=Z(t,l)}return r}exportJson(e,t){return vr(e)?this.exportWithHooks(e):this.exportInternal(e,t)}async importInternal(e){if(this.txnEventSink!==void 0){let e=this.txnEventSink;throw this.txnEventSink=void 0,e.length>0&&this.emitEvents(`local`,e),Error(`import called during transaction - transaction was auto-committed`)}if(this.debounceState!==void 0&&this.commit(),e.version!==0)throw TypeError(`Unsupported bundle version`);let t=0,n=[],r=[];for(let[i,a]of Object.entries(e.entries)){let e;try{let t=JSON.parse(i);e=Array.isArray(t)?t:[]}catch{n.push({key:[],reason:`invalid key`});continue}let o=$(a.c),s={};a.d!==void 0&&(s.data=W(a.d));let c=G(a.m);c!==void 0&&(s.metadata=c),t+=1,await this.applyOperation({key:e,payload:s,clock:o,skipSameValue:!1,source:`import`,eventSink:r})}return r.length>0&&this.emitEvents(`import`,r),{accepted:t,skipped:n}}async importJson(e){if(yr(e)){let t=e.hooks?.preprocess,n=t?{version:e.bundle.version,entries:{...e.bundle.entries}}:e.bundle,r=[];if(t)for(let[e,i]of Object.entries(n.entries)){let a=JSON.parse(e),o=$(i.c),s={};i.d!==void 0&&(s.data=W(i.d));let c=G(i.m);c!==void 0&&(s.metadata=c);let l=_r(await t({key:a,clock:o,raw:i},K(s)));l.accept?n.entries[e]=Z(o,s):(r.push({key:a,reason:l.reason??`rejected`}),delete n.entries[e])}let i=await this.importInternal(n);return{accepted:i.accepted,skipped:r.concat(i.skipped)}}return this.importInternal(e)}async importJsonStr(e){let t=JSON.parse(e);return this.importJson(t)}async digest(){return u(await Er(await this.db.query(`SELECT key, data, metadata, physical, logical, peer FROM ${this.tables.kv} ORDER BY key ASC`)))}async kvToJson(){return this.exportInternal()}async merge(e){let t=await e.exportJson();await this.importJson(t)}static async checkConsistency(e,t){let[n,r]=await Promise.all([e.digest(),t.digest()]);return n===r}checkInvariants(){}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async txn(e){if(this.txnEventSink!==void 0)throw Error(`Nested transactions are not supported`);if(this.debounceState!==void 0)throw Error(`Cannot start transaction while autoDebounceCommit is active`);let t=[];this.txnEventSink=t;try{let n=await e();return t.length>0&&this.emitEvents(`local`,t),n}finally{this.txnEventSink=void 0}}isInTxn(){return this.txnEventSink!==void 0}autoDebounceCommit(e,t){if(this.txnEventSink!==void 0)throw Error(`Cannot enable autoDebounceCommit while transaction is active`);if(this.debounceState!==void 0)throw Error(`autoDebounceCommit is already active`);this.debounceState={timeout:e,maxDebounceTime:t?.maxDebounceTime??1e4,timerId:void 0,maxTimerId:void 0,pendingEvents:[]}}disableAutoDebounceCommit(){if(this.debounceState===void 0)return;let{timerId:e,maxTimerId:t,pendingEvents:n}=this.debounceState;e!==void 0&&clearTimeout(e),t!==void 0&&clearTimeout(t),this.debounceState=void 0,n.length>0&&this.emitEvents(`local`,n)}commit(){if(this.debounceState===void 0)return;let{timerId:e,maxTimerId:t,pendingEvents:n}=this.debounceState;e!==void 0&&(clearTimeout(e),this.debounceState.timerId=void 0),t!==void 0&&(clearTimeout(t),this.debounceState.maxTimerId=void 0),n.length>0&&(this.emitEvents(`local`,n),this.debounceState.pendingEvents=[])}isAutoDebounceActive(){return this.debounceState!==void 0}};export{kr as Flock,kr as FlockSQLite,gr as decodeVersionVector,hr as encodeVersionVector};
31
31
  //# sourceMappingURL=index.mjs.map