@loro-dev/flock-sqlite 0.1.0 → 0.4.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.cjs +7 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +50 -4
- package/dist/index.d.ts +50 -4
- package/dist/index.mjs +7 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +657 -71
- package/src/types.ts +22 -4
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
let e=require(`@loro-dev/unisqlite`);const t=16,n=17,r=18,i=32,a=33,o=34,s=35,c=36,l=37,u=new TextEncoder;function ee(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function te(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 ne(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 re(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 ie=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(te(e))}writeI64(e){this.writeRawBytes(ne(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(u.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(u.encode(e.clock.peerId))}async finish(){return re(new Uint8Array(this.chunks))}};function ae(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function oe(e){if(e!=null)return JSON.parse(e)}async function se(e){let t=oe(e.data);if(t===void 0)return null;let n=ae(e.metadata),r=new ie;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 ce(e){let t=new Uint8Array(32);for(let n of e){let e=await se(n);if(e)for(let n=0;n<t.length;n+=1)t[n]^=e[n]}return ee(t)}const le={hi:2146959360,lo:1};var ue=class extends Error{};function d(){throw new ue}const de=(e,t)=>e<t?-1:e>t?1:0,fe=(e,t)=>e===t,f=e=>BigInt(e.hi)*4294967296n+BigInt(e.lo>>>0),pe=e=>-e,me=(e,t)=>e+t,he=(e,t)=>e*t,ge=(e,t)=>e/t,_e=(e,t)=>e%t,ve=(e,t)=>e>>BigInt(t),ye=e=>Number(BigInt.asUintN(32,e))|0,be=e=>Number(BigInt.asIntN(32,e));function p(e,t){if(t<0||t>=e.length)throw Error(`Index out of bounds`)}const xe=(e,t)=>e.toString(t);function m(e,t){let n=new Uint8Array(e);return t!==0&&n.fill(t),n}const h=(e,t)=>{e.push(t)},Se={$tag:0};function Ce(e){this._0=e}Ce.prototype.$tag=1;function we(e){this._0=e}we.prototype.$tag=2;function Te(e){this._0=e}Te.prototype.$tag=3;function Ee(e){this._0=e}Ee.prototype.$tag=4;const De=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)},Oe=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)}},ke=e=>e.hi*4294967296+(e.lo>>>0),Ae=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}},je=new Uint8Array,g={hi:0,lo:255},_={hi:0,lo:0},Me={hi:-1,lo:-1},Ne={hi:-2147483648,lo:0};function Pe(e){this._0=e}Pe.prototype.$tag=0;function Fe(e){this._0=e}Fe.prototype.$tag=1;function v(e){this._0=e}v.prototype.$tag=2;const y={$tag:1},Ie={$tag:0},Le={hi:0,lo:1},Re={hi:0,lo:256};function b(e){this._0=e}b.prototype.$tag=0;function x(e){this._0=e}x.prototype.$tag=1;function ze(e){this._0=e}ze.prototype.$tag=0;function Be(e){this._0=e}Be.prototype.$tag=1;function S(e){this._0=e}S.prototype.$tag=0;function C(e){this._0=e}C.prototype.$tag=1;function w(e){this._0=e}w.prototype.$tag=2;function T(e){this._0=e}T.prototype.$tag=3;const Ve={$tag:4},He={$tag:5};function Ue(e){this._0=e}Ue.prototype.$tag=0;function We(e){this._0=e}We.prototype.$tag=1;function Ge(e){this._0=e}Ge.prototype.$tag=0;function Ke(e){this._0=e}Ke.prototype.$tag=1;function qe(e){this._0=e}qe.prototype.$tag=2;const Je={$tag:3},Ye={$tag:4},Xe=`;`,Ze=1,Qe=3,$e=4,et=Wt(le);function tt(e){return d()}function nt(e){return d()}function rt(e){return d()}function E(e){d()}function it(e){return d()}function at(e){return Ut(e)}function ot(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=M(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=M(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=St(s);if(P(u,o.str,o.start,o.end-o.start|0),Dt(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=M(e);P(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=M(e);P(u,t.str,t.start,t.end-t.start|0),P(u,o.str,o.start,o.end-o.start|0),n=a+1|0;continue}else break}}return u.val}else return``}function st(e,t){t(t=>(Nt(e,t),1))}function ct(e,t){return ot({buf:e,start:0,end:e.length},t)}function lt(e,t){return de(e,t)}function ut(e,t){return fe(e,t)}function dt(e){return pe(e)}function ft(e,t){return me(e,t)}function pt(e,t){return he(e,t)}function mt(e,t){return ge(e,t)}function ht(e,t){return _e(e,t)}function gt(e,t){return t<0&&E(`negative shift count`),ve(e,t)}function _t(e){let t=ye(gt(e,32)),n=ye(e);return $t(en(at(t),32),at(n))}function D(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 rt(`index out of bounds: the len is from 0 to ${N(e.end-e.start|0)} but the index is ${N(t)}`)}function O(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}:nt(`Invalid index for View`)}function k(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}:nt(`Invalid index for View`)}function vt(e){return t=>{let n=e.end-e.start|0,r=0;for(;;){let i=r;if(i<n){if(t(D(e,i))!==1)return 0;r=i+1|0;continue}else return 1}}}function yt(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 A(e){return cn(e.end-e.start|0,t=>dn(e,t))}function bt(e){let t=It(e);return A({buf:t,start:0,end:t.length})}function j(e){return Ut(e)}function M(e){return{str:e,start:0,end:e.length}}function xt(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 St(e){return{val:``}}function Ct(e,t){let n=e;n.val=`${n.val}${String.fromCodePoint(t)}`}function wt(e,t){let n=e;n.val=`${n.val}${t}`}function Tt(e,t){return lt(e,t)>0}function N(e){let t=St(0);return Rt(e,{self:t,method_0:wt,method_1:P,method_2:Ct}),t.val}function Et(e,t){return xe(e,t)}function Dt(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 E(`invalid surrogate pair`)}a=n+1|0,o=r+1|0;continue}else return r===t&&n===i}}function Ot(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 P(e,t,n,r){let i=e;i.val=`${i.val}${Ot(t,n,n+r|0)}`}function kt(e){return[]}function At(e){return[]}function F(e){return[]}function jt(e,t){h(e,t)}function Mt(e,t){h(e,t)}function I(e,t){h(e,t)}function L(e,t){h(e,t)}function Nt(e,t){h(e,t)}function Pt(e){return String.fromCodePoint(e)}function Ft(e,t){let n={val:Se};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 It(e){let t=[];return Ft(e,e=>{I(t,e)}),t}function Lt(e){return e()}function Rt(e,t){t.method_0(t.self,Et(e,10))}function zt(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 Bt(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}:it(`View index out of bounds`)}function Vt(e){return{hi:0,lo:e}}function Ht(e){return Vt(e)}function Ut(e){return Ht(e)}function Wt(e){return De(e)}function Gt(e){return{hi:e>>31&-1,lo:e|0}}function Kt(e){return Gt(e)}function qt(e){return e.lo}function R(e){return qt(e)&255}function Jt(e,t){return{hi:e.hi&t.hi,lo:e.lo&t.lo}}function Yt(e,t){return{hi:e.hi|t.hi,lo:e.lo|t.lo}}function Xt(e,t){return{hi:e.hi^t.hi,lo:e.lo^t.lo}}function Zt(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 Qt(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 $t(e,t){return Yt(e,t)}function en(e,t){return Zt(e,t)}function tn(e){return ke(e)}function nn(e){return tn(e)}function rn(e){return De(e)}function an(e){return Oe(e)}function on(e,t){let n=e,r=t;return n.hi===r.hi&&n.lo===r.lo}function z(e,t){return Jt(e,t)}function B(e,t){return Yt(e,t)}function V(e,t){return Xt(e,t)}function H(e,t){return Zt(e,t)}function U(e,t){return Qt(e,t)}function sn(e){return Ae(e)}function cn(e,t){if(e<=0)return je;let n=m(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 ln(e){console.log(e)}function un(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){xt(e,t,n,r,i);return}else{d();return}}function dn(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 rt(`index out of bounds: the len is from 0 to ${N(e.end-e.start|0)} but the index is ${N(t)}`)}function fn(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 pn(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=m(r,0);xt(t,0,e.data,0,e.len),e.data=t;return}else return}function W(e,t){pn(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 G(e){return A(Bt(e.data,0,e.len))}function K(e){return{data:m(e<1?1:e,0),len:0}}function mn(e,t){let n=t.length;pn(e,e.len+n|0),un(e.data,e.len,t,0,n),e.len=e.len+n|0}function hn(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 gn(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 _n(e){let t=[],n=e.color;n===void 0||L(t,gn(n));let r=e.bg_color;r===void 0||L(t,hn(r));let i=e.formats,a=i.length,o=0;for(;;){let e=o;if(e<a){switch(i[e]){case 0:L(t,`1`);break;case 1:L(t,`4`);break;case 2:L(t,`5`);break;case 3:L(t,`7`);break;case 4:L(t,`8`);break;case 5:L(t,`9`);break;default:L(t,`3`)}o=e+1|0;continue}else break}return t.length>0?`[${ct(t,{str:`;`,start:0,end:1})}m${e.str}[0m`:e.str}function vn(e){return{str:e,bg_color:void 0,color:void 0,formats:[]}}function yn(e){return{str:e.str,bg_color:e.bg_color,color:1,formats:e.formats}}function bn(e){return{str:e.str,bg_color:e.bg_color,color:3,formats:e.formats}}function xn(e){return{str:e.str,bg_color:e.bg_color,color:4,formats:e.formats}}function Sn(e){let t=e.str,n=e.bg_color,r=e.color,i=[];return Nt(i,0),st(i,zt(e.formats)),{str:t,bg_color:n,color:r,formats:i}}function Cn(e,t){let n=`${_n(yn(Sn(vn(`Panic: `))))}${_n(bn(vn(e)))} at ${_n(xn(vn(t)))}`;ln(n),E(n)}function wn(e){let t=F(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;I(t,(240|e>>18)&255),I(t,(128|e>>12&63)&255),I(t,(128|e>>6&63)&255),I(t,(128|e&63)&255),n=n+1|0}else I(t,(224|i>>12)&255),I(t,(128|i>>6&63)&255),I(t,(128|i&63)&255)}else i<128?I(t,i&255):i<2048?(I(t,(192|i>>6)&255),I(t,(128|i&63)&255)):(I(t,(224|i>>12)&255),I(t,(128|i>>6&63)&255),I(t,(128|i&63)&255));n=n+1|0}return A({buf:t,start:0,end:t.length})}function Tn(e){return{bytes:wn(e)}}function En(e){let t=0;for(;t<(e.end-e.start|0);){let n=D(e,t);if(!(n&128))t=t+1|0;else if((n&224)==192){if((t+1|0)>=(e.end-e.start|0)||(D(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=D(e,t+1|0),r=D(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=D(e,t+1|0),r=D(e,t+2|0),i=D(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 Dn(e){if(En(k(e,0,void 0)))return{bytes:bt(vt(e))}}function On(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}${Pt(a)}`,t=t+1|0}return n}function kn(e){let t=On(e.bytes);return t===void 0?d():t}function An(e){return an(e)}function jn(e){return rn(e)}function Mn(e){let t=F(0);return I(t,R(z(U(e,56),g))),I(t,R(z(U(e,48),g))),I(t,R(z(U(e,40),g))),I(t,R(z(U(e,32),g))),I(t,R(z(U(e,24),g))),I(t,R(z(U(e,16),g))),I(t,R(z(U(e,8),g))),I(t,R(z(e,g))),A({buf:t,start:0,end:t.length})}function Nn(e){e.length!==8&&Cn(`Invalid byte array length`,`/Users/zxch3n/Code/flock/moon/memcomparable/utils.mbt:28:5-28:54`);let t=_,n=t;p(e,0),t=B(n,H(j(e[0]),56));let r=t;p(e,1),t=B(r,H(j(e[1]),48));let i=t;p(e,2),t=B(i,H(j(e[2]),40));let a=t;p(e,3),t=B(a,H(j(e[3]),32));let o=t;p(e,4),t=B(o,H(j(e[4]),24));let s=t;p(e,5),t=B(s,H(j(e[5]),16));let c=t;p(e,6),t=B(c,H(j(e[6]),8));let l=t;return p(e,7),t=B(l,j(e[7])),t}function Pn(){return{parts:At(0)}}function q(e,t){jt(e.parts,t)}function Fn(e){return e===e?e:e<0?-et:et}function In(e,t){W(t,1);let n=yt(e);for(;;){let e=Lt(n);if(e===-1)break;{let n=e;W(t,n),n===0&&W(t,255);continue}}W(t,0)}function Ln(e,t){W(t,2);let n=e.bytes,r=n.length,i=0;for(;;){let e=i;if(e<r){let r=n[e];W(t,r),r===0&&W(t,255),i=e+1|0;continue}else break}W(t,0)}function Rn(e,t){W(t,33);let n=Fn(e),r=Mn(n<0?V(An(n),Me):V(An(n),Ne)),i=r.length,a=0;for(;;){let e=a;if(e<i){let n=r[e];W(t,n),a=e+1|0;continue}else return}}function zn(e){let t=[],n=e;for(;Tt(n,0n);)I(t,be(ht(n,256n))&255),n=mt(n,256n);let r=fn(t);return A({buf:r,start:0,end:r.length})}function Bn(e,t){if(ut(e,0n)){W(t,20);return}let n=Tt(e,0n),r=zn(n?e:dt(e)),i=r.length;if(n===!1){i<=8?W(t,(20-(i&255)|0)&255):(W(t,11),i>255&&E(`n is too large`),W(t,(i&255^255)&255));let e=K(0),n=0;for(;;){let t=n;if(t<r.length){p(r,t);let i=r[t];W(e,(i^255)&255),n=t+1|0;continue}else break}mn(t,G(e));return}else{i<=8?W(t,(20+(i&255)|0)&255):(W(t,29),i>255&&E(`n is too large`),W(t,i&255)),mn(t,r);return}}function Vn(e,t){switch(e.$tag){case 0:{let n=e._0;In(O(n,0,n.length),t);return}case 1:{let n=e._0;Ln(n,t);return}case 2:{let n=e._0;Bn(n,t);return}case 3:{let n=e._0;Rn(n,t);return}case 4:W(t,38);return;default:W(t,39);return}}function Hn(e){let t=K(0),n=e.parts,r=n.length,i=0;for(;;){let e=i;if(e<r){let r=n[e];Vn(r,t),i=e+1|0;continue}else break}return G(t)}function Un(e,t){let n=K(0),r=t;for(;r<(e.end-e.start|0);){let t=D(e,r);if(r=r+1|0,t===0){let t;if(t=r<(e.end-e.start|0)?D(e,r)===255:!1,t){W(n,0),r=r+1|0;continue}else{let e=G(n);return new Fe({_0:O(e,0,e.length),_1:r})}}W(n,t)}return new Pe(y)}function J(e){let t=f(_),n=f(Le),r=(e.end-e.start|0)-1|0;for(;;){let i=r;if(i>=0){let a=f(Kt(D(e,i)));t=ft(t,pt(n,a)),n=pt(n,f(Re)),r=i-1|0;continue}else break}return t}function Wn(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 b(y);let r=k(e,0,n);return new x({_0:k(e,n,void 0),_1:J(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 b(y);let r=k(e,0,n),i=k(e,n,void 0),a=K(0),o=0;for(;;){let e=o;if(e<(r.end-r.start|0)){W(a,(D(r,e)^255)&255),o=e+1|0;continue}else break}let s=G(a);return new x({_0:i,_1:dt(J(O(s,0,s.length)))})}else if(t===11){if((e.end-e.start|0)<1)return new b(y);let t=(D(e,0)^255)&255;if((e.end-e.start|0)<(t+1|0))return new b(y);let n=k(e,1,t+1|0),r=k(e,t+1|0,void 0),i=K(0),a=0;for(;;){let e=a;if(e<(n.end-n.start|0)){W(i,(D(n,e)^255)&255),a=e+1|0;continue}else break}let o=G(i);return new x({_0:r,_1:dt(J(O(o,0,o.length)))})}else if(t===29){if((e.end-e.start|0)<1)return new b(y);let t=D(e,0);if((e.end-e.start|0)<(t+1|0))return new b(y);let n=k(e,1,t+1|0);return new x({_0:k(e,t+1|0,void 0),_1:J(n)})}else return new b(new v(t))}}function Gn(e,t){if((t+8|0)>(e.end-e.start|0))return new ze(y);let n=F(0),r=0;for(;;){let i=r;if(i<8){I(n,D(e,t+i|0)),r=i+1|0;continue}else break}let i=Nn(A({buf:n,start:0,end:n.length}));return new Be({_0:on(z(i,Ne),_)?jn(V(i,Me)):jn(V(i,Ne)),_1:t+8|0})}function Kn(e){let t=Pn(),n=0;for(;n<(e.end-e.start|0);){let r=D(e,n);if(n=n+1|0,r===2){let r=Un(e,n),i;if(r.$tag===1)i=r._0;else return r;let a=i._0,o=i._1,s=Dn(a);if(s===void 0)return new Ue(Ie);q(t,new C(s)),n=o}else if(r===1){let r=Un(e,n),i;if(r.$tag===1)i=r._0;else return r;let a=i._0,o=i._1;q(t,new S(bt(vt(a)))),n=o}else if(r>=11&&r<=29){let i=Wn(k(e,n,void 0),r),a;if(i.$tag===1)a=i._0;else return i;let o=a._0,s=a._1;q(t,new w(s)),n=(e.end-e.start|0)-(o.end-o.start|0)|0}else if(r===33){let r=Gn(e,n),i;if(r.$tag===1)i=r._0;else return r;let a=i._0,o=i._1;q(t,new T(a)),n=o}else if(r===38)q(t,Ve);else if(r===39)q(t,He);else return new Ue(new v(r))}return new We(t)}function qn(e){switch(e.$tag){case 0:{let t=e._0;return new qe(t)}case 1:{let t=e._0;return new Ke(kn(t))}case 2:{let t=e._0;return new Ge(nn(_t(t)))}case 3:{let t=e._0;return new Ge(t)}case 4:return Ye;default:return Je}}function Jn(e){switch(e.$tag){case 2:{let t=e._0;return new S(t)}case 1:{let t=e._0;return new C(Tn(t))}case 0:{let t=e._0;return nn(sn(t))===t?new w(f(sn(t))):new T(t)}case 3:return He;default:return Ve}}function Yn(e){let t=Pn(),n=e.length,r=0;for(;;){let i=r;if(i<n){let n=e[i];jt(t.parts,Jn(n)),r=i+1|0;continue}else break}return Hn(t)}function Xn(e){let t;_L:{_L$2:{let n=Kn(O(e,0,e.length));if(n.$tag===1)t=n._0;else{n._0;break _L$2}break _L}t=tt(`Failed to decode key`)}let n=kt(0),r=t.parts,i=r.length,a=0;for(;;){let e=a;if(e<i){let t=r[e];Mt(n,qn(t)),a=e+1|0;continue}else break}return n}function Zn(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 Qn(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 $n(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 Qn(e._0);default:throw TypeError(`Unsupported memcomparable key part`)}}function Y(e){return Yn(e.map(Zn))}function er(e){return Xn(e).map(e=>$n(e))}function tr(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 nr(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 rr(e){return JSON.stringify(e)}const ir=new TextEncoder,ar=globalThis.structuredClone;function or(e){return ir.encode(e).length}function sr(e){return typeof e==`string`&&or(e)<128}function cr(){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 lr(e){if(e===void 0)return cr();if(!sr(e))throw TypeError(`peerId must be a UTF-8 string under 128 bytes`);return e}function X(e){return e===void 0?e:ar?ar(e):JSON.parse(JSON.stringify(e))}function Z(e){if(!(!e||typeof e!=`object`||Array.isArray(e)))return X(e)}function ur(e,t){if(!(!t||typeof t!=`object`)){if(`data`in t){let n=t.data;e.data=n===void 0?void 0:X(n)}`metadata`in t&&(e.metadata=Z(t.metadata))}}function Q(e){let t={};return ur(t,e),t}function dr(e,t){let n=Q(e);return ur(n,t),n}function $(e,t){let n={c:vr(e)};t.data!==void 0&&(n.d=X(t.data));let r=Z(t.metadata);return r!==void 0&&(n.m=r),n}function fr(e){return!e||typeof e!=`object`?{accept:!0}:`accept`in e?e.accept?{accept:!0}:{accept:!1,reason:e.reason??`rejected`}:{accept:!0}}function pr(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 mr(e){return typeof e==`object`&&!!e&&Object.prototype.hasOwnProperty.call(e,`bundle`)}function hr(e){if(e)try{let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t))return t}catch{}}function gr(e){if(e!=null)return JSON.parse(e)}function _r(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:sr(i)?i:``}}function vr(e){return`${e.physicalTime},${e.logicalCounter},${e.peerId}`}function yr(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 br(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 xr(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 Sr(e){return e.map(e=>({key:e.key,data:e.data,metadata:e.metadata,physical:e.physical,logical:e.logical,peer:e.peer}))}function Cr(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 wr(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 Tr=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(0,e.openStore)({path:n.path}),i=wr(Cr(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
|
+
let e=require(`@loro-dev/unisqlite`);const t=16,n=17,r=18,i=32,a=33,o=34,s=35,c=36,l=37,u=new TextEncoder;function ee(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}function te(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 ne(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 re(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 ie=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(te(e))}writeI64(e){this.writeRawBytes(ne(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(u.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(u.encode(e.clock.peerId))}async finish(){return re(new Uint8Array(this.chunks))}};function ae(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function oe(e){if(e!=null)return JSON.parse(e)}async function se(e){let t=oe(e.data);if(t===void 0)return null;let n=ae(e.metadata),r=new ie;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 ce(e){let t=new Uint8Array(32);for(let n of e){let e=await se(n);if(e)for(let n=0;n<t.length;n+=1)t[n]^=e[n]}return ee(t)}const le={hi:2146959360,lo:1};var ue=class extends Error{};function d(){throw new ue}const de=(e,t)=>e<t?-1:e>t?1:0,fe=(e,t)=>e===t,f=e=>BigInt(e.hi)*4294967296n+BigInt(e.lo>>>0),pe=e=>-e,me=(e,t)=>e+t,he=(e,t)=>e*t,ge=(e,t)=>e/t,_e=(e,t)=>e%t,ve=(e,t)=>e>>BigInt(t),ye=e=>Number(BigInt.asUintN(32,e))|0,be=e=>Number(BigInt.asIntN(32,e));function p(e,t){if(t<0||t>=e.length)throw Error(`Index out of bounds`)}const xe=(e,t)=>e.toString(t);function Se(e,t){let n=new Uint8Array(e);return t!==0&&n.fill(t),n}const m=(e,t)=>{e.push(t)},Ce={$tag:0};function we(e){this._0=e}we.prototype.$tag=1;function Te(e){this._0=e}Te.prototype.$tag=2;function Ee(e){this._0=e}Ee.prototype.$tag=3;function De(e){this._0=e}De.prototype.$tag=4;const Oe=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)},ke=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)}},Ae=e=>e.hi*4294967296+(e.lo>>>0),je=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}},Me=new Uint8Array,h={hi:0,lo:255},Ne={hi:0,lo:0},Pe={hi:-1,lo:-1},Fe={hi:-2147483648,lo:0};function Ie(e){this._0=e}Ie.prototype.$tag=0;function Le(e){this._0=e}Le.prototype.$tag=1;function Re(e){this._0=e}Re.prototype.$tag=2;const g={$tag:1},ze={$tag:0},Be={hi:0,lo:1},Ve={hi:0,lo:256};function _(e){this._0=e}_.prototype.$tag=0;function v(e){this._0=e}v.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=0;function Ge(e){this._0=e}Ge.prototype.$tag=1;function Ke(e){this._0=e}Ke.prototype.$tag=2;function y(e){this._0=e}y.prototype.$tag=3;const qe={$tag:4},Je={$tag:5};function Ye(e){this._0=e}Ye.prototype.$tag=0;function Xe(e){this._0=e}Xe.prototype.$tag=1;function Ze(e){this._0=e}Ze.prototype.$tag=0;function Qe(e){this._0=e}Qe.prototype.$tag=1;function $e(e){this._0=e}$e.prototype.$tag=2;const et={$tag:3},tt={$tag:4},nt=`;`,rt=1,it=3,at=4,ot=Zt(le);function st(e){return d()}function ct(e){return d()}function lt(e){return d()}function b(e){d()}function ut(e){return d()}function dt(e){return Xt(e)}function ft(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=Ot(s);if(O(u,o.str,o.start,o.end-o.start|0),Nt(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 pt(e,t){t(t=>(Bt(e,t),1))}function mt(e,t){return ft({buf:e,start:0,end:e.length},t)}function ht(e,t){return de(e,t)}function gt(e,t){return fe(e,t)}function _t(e){return pe(e)}function vt(e,t){return me(e,t)}function yt(e,t){return he(e,t)}function bt(e,t){return ge(e,t)}function xt(e,t){return _e(e,t)}function St(e,t){return t<0&&b(`negative shift count`),ve(e,t)}function Ct(e){let t=ye(St(e,32)),n=ye(e);return sn(cn(dt(t),32),dt(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 lt(`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}:ct(`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}:ct(`Invalid index for View`)}function wt(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 Tt(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 hn(e.end-e.start|0,t=>vn(e,t))}function Et(e){let t=Ut(e);return w({buf:t,start:0,end:t.length})}function T(e){return Xt(e)}function E(e){return{str:e,start:0,end:e.length}}function Dt(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 Ot(e){return{val:``}}function kt(e,t){let n=e;n.val=`${n.val}${String.fromCodePoint(t)}`}function At(e,t){let n=e;n.val=`${n.val}${t}`}function jt(e,t){return ht(e,t)>0}function D(e){let t=Ot(0);return Gt(e,{self:t,method_0:At,method_1:O,method_2:kt}),t.val}function Mt(e,t){return xe(e,t)}function Nt(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 Pt(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}${Pt(t,n,n+r|0)}`}function Ft(e){return[]}function It(e){return[]}function Lt(e){return[]}function Rt(e,t){m(e,t)}function zt(e,t){m(e,t)}function k(e,t){m(e,t)}function A(e,t){m(e,t)}function Bt(e,t){m(e,t)}function Vt(e){return String.fromCodePoint(e)}function Ht(e,t){let n={val:Ce};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 Ut(e){let t=[];return Ht(e,e=>{k(t,e)}),t}function Wt(e){return e()}function Gt(e,t){t.method_0(t.self,Mt(e,10))}function Kt(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 qt(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}:ut(`View index out of bounds`)}function Jt(e){return{hi:0,lo:e}}function Yt(e){return Jt(e)}function Xt(e){return Yt(e)}function Zt(e){return Oe(e)}function Qt(e){return{hi:e>>31&-1,lo:e|0}}function $t(e){return Qt(e)}function en(e){return e.lo}function j(e){return en(e)&255}function tn(e,t){return{hi:e.hi&t.hi,lo:e.lo&t.lo}}function nn(e,t){return{hi:e.hi|t.hi,lo:e.lo|t.lo}}function rn(e,t){return{hi:e.hi^t.hi,lo:e.lo^t.lo}}function an(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 on(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 sn(e,t){return nn(e,t)}function cn(e,t){return an(e,t)}function ln(e){return Ae(e)}function un(e){return ln(e)}function dn(e){return Oe(e)}function fn(e){return ke(e)}function pn(e,t){let n=e,r=t;return n.hi===r.hi&&n.lo===r.lo}function M(e,t){return tn(e,t)}function N(e,t){return nn(e,t)}function P(e,t){return rn(e,t)}function F(e,t){return an(e,t)}function I(e,t){return on(e,t)}function mn(e){return je(e)}function hn(e,t){if(e<=0)return Me;let n=Se(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 gn(e){console.log(e)}function _n(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){Dt(e,t,n,r,i);return}else{d();return}}function vn(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 lt(`index out of bounds: the len is from 0 to ${D(e.end-e.start|0)} but the index is ${D(t)}`)}function yn(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 bn(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=Se(r,0);Dt(t,0,e.data,0,e.len),e.data=t;return}else return}function L(e,t){bn(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(qt(e.data,0,e.len))}function z(e){return{data:Se(e<1?1:e,0),len:0}}function xn(e,t){let n=t.length;bn(e,e.len+n|0),_n(e.data,e.len,t,0,n),e.len=e.len+n|0}function Sn(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 Cn(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 wn(e){let t=[],n=e.color;n===void 0||A(t,Cn(n));let r=e.bg_color;r===void 0||A(t,Sn(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?`[${mt(t,{str:`;`,start:0,end:1})}m${e.str}[0m`:e.str}function Tn(e){return{str:e,bg_color:void 0,color:void 0,formats:[]}}function En(e){return{str:e.str,bg_color:e.bg_color,color:1,formats:e.formats}}function Dn(e){return{str:e.str,bg_color:e.bg_color,color:3,formats:e.formats}}function On(e){return{str:e.str,bg_color:e.bg_color,color:4,formats:e.formats}}function kn(e){let t=e.str,n=e.bg_color,r=e.color,i=[];return Bt(i,0),pt(i,Kt(e.formats)),{str:t,bg_color:n,color:r,formats:i}}function An(e,t){let n=`${wn(En(kn(Tn(`Panic: `))))}${wn(Dn(Tn(e)))} at ${wn(On(Tn(t)))}`;gn(n),b(n)}function jn(e){let t=Lt(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 Mn(e){return{bytes:jn(e)}}function Nn(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 Pn(e){if(Nn(C(e,0,void 0)))return{bytes:Et(wt(e))}}function Fn(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}${Vt(a)}`,t=t+1|0}return n}function In(e){let t=Fn(e.bytes);return t===void 0?d():t}function Ln(e){return fn(e)}function Rn(e){return dn(e)}function zn(e){let t=Lt(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 Bn(e){e.length!==8&&An(`Invalid byte array length`,`/Users/zxch3n/Code/flock/moon/memcomparable/utils.mbt:28:5-28:54`);let t=Ne,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 Vn(){return{parts:It(0)}}function B(e,t){Rt(e.parts,t)}function Hn(e){return e===e?e:e<0?-ot:ot}function Un(e,t){L(t,1);let n=Tt(e);for(;;){let e=Wt(n);if(e===-1)break;{let n=e;L(t,n),n===0&&L(t,255);continue}}L(t,0)}function Wn(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 Gn(e,t){L(t,33);let n=Hn(e),r=zn(n<0?P(Ln(n),Pe):P(Ln(n),Fe)),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 Kn(e){let t=[],n=e;for(;jt(n,0n);)k(t,be(xt(n,256n))&255),n=bt(n,256n);let r=yn(t);return w({buf:r,start:0,end:r.length})}function qn(e,t){if(gt(e,0n)){L(t,20);return}let n=jt(e,0n),r=Kn(n?e:_t(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}xn(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)),xn(t,r);return}}function Jn(e,t){switch(e.$tag){case 0:{let n=e._0;Un(S(n,0,n.length),t);return}case 1:{let n=e._0;Wn(n,t);return}case 2:{let n=e._0;qn(n,t);return}case 3:{let n=e._0;Gn(n,t);return}case 4:L(t,38);return;default:L(t,39);return}}function Yn(e){let t=z(0),n=e.parts,r=n.length,i=0;for(;;){let e=i;if(e<r){let r=n[e];Jn(r,t),i=e+1|0;continue}else break}return R(t)}function Xn(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 Le({_0:S(e,0,e.length),_1:r})}}L(n,t)}return new Ie(g)}function V(e){let t=f(Ne),n=f(Be),r=(e.end-e.start|0)-1|0;for(;;){let i=r;if(i>=0){let a=f($t(x(e,i)));t=vt(t,yt(n,a)),n=yt(n,f(Ve)),r=i-1|0;continue}else break}return t}function Zn(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 _(g);let r=C(e,0,n);return new v({_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 _(g);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 v({_0:i,_1:_t(V(S(s,0,s.length)))})}else if(t===11){if((e.end-e.start|0)<1)return new _(g);let t=(x(e,0)^255)&255;if((e.end-e.start|0)<(t+1|0))return new _(g);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 v({_0:r,_1:_t(V(S(o,0,o.length)))})}else if(t===29){if((e.end-e.start|0)<1)return new _(g);let t=x(e,0);if((e.end-e.start|0)<(t+1|0))return new _(g);let n=C(e,1,t+1|0);return new v({_0:C(e,t+1|0,void 0),_1:V(n)})}else return new _(new Re(t))}}function Qn(e,t){if((t+8|0)>(e.end-e.start|0))return new He(g);let n=Lt(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=Bn(w({buf:n,start:0,end:n.length}));return new Ue({_0:pn(M(i,Fe),Ne)?Rn(P(i,Pe)):Rn(P(i,Fe)),_1:t+8|0})}function $n(e){let t=Vn(),n=0;for(;n<(e.end-e.start|0);){let r=x(e,n);if(n=n+1|0,r===2){let r=Xn(e,n),i;if(r.$tag===1)i=r._0;else return r;let a=i._0,o=i._1,s=Pn(a);if(s===void 0)return new Ye(ze);B(t,new Ge(s)),n=o}else if(r===1){let r=Xn(e,n),i;if(r.$tag===1)i=r._0;else return r;let a=i._0,o=i._1;B(t,new We(Et(wt(a)))),n=o}else if(r>=11&&r<=29){let i=Zn(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 Ke(s)),n=(e.end-e.start|0)-(o.end-o.start|0)|0}else if(r===33){let r=Qn(e,n),i;if(r.$tag===1)i=r._0;else return r;let a=i._0,o=i._1;B(t,new y(a)),n=o}else if(r===38)B(t,qe);else if(r===39)B(t,Je);else return new Ye(new Re(r))}return new Xe(t)}function er(e){switch(e.$tag){case 0:{let t=e._0;return new $e(t)}case 1:{let t=e._0;return new Qe(In(t))}case 2:{let t=e._0;return new Ze(un(Ct(t)))}case 3:{let t=e._0;return new Ze(t)}case 4:return tt;default:return et}}function tr(e){switch(e.$tag){case 2:{let t=e._0;return new We(t)}case 1:{let t=e._0;return new Ge(Mn(t))}case 0:{let t=e._0;return un(mn(t))===t?new Ke(f(mn(t))):new y(t)}case 3:return Je;default:return qe}}function nr(e){let t=Vn(),n=e.length,r=0;for(;;){let i=r;if(i<n){let n=e[i];Rt(t.parts,tr(n)),r=i+1|0;continue}else break}return Yn(t)}function rr(e){let t;_L:{_L$2:{let n=$n(S(e,0,e.length));if(n.$tag===1)t=n._0;else{n._0;break _L$2}break _L}t=st(`Failed to decode key`)}let n=Ft(0),r=t.parts,i=r.length,a=0;for(;;){let e=a;if(e<i){let t=r[e];zt(n,er(t)),a=e+1|0;continue}else break}return n}function ir(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 ar(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 or(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 ar(e._0);default:throw TypeError(`Unsupported memcomparable key part`)}}function H(e){return nr(e.map(ir))}function sr(e){return rr(e).map(e=>or(e))}function cr(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 lr(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 ur(e){return JSON.stringify(e)}const dr=new TextEncoder,fr=new TextDecoder,pr=globalThis.structuredClone;function mr(e){return dr.encode(e).length}function U(e){return typeof e==`string`&&mr(e)<128}function hr(){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 gr(e){if(e===void 0)return hr();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:pr?pr(e):JSON.parse(JSON.stringify(e))}function G(e){if(!(!e||typeof e!=`object`||Array.isArray(e)))return W(e)}function _r(e){return G(e)??{}}function vr(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 vr(t,e),t}function q(e,t){let n=K(e);return vr(n,t),n}function yr(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 br(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=dr.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=yr(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 xr(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 Sr(e){let t=br(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),xr(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 Cr(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[fr.decode(o),r+n]}function wr(e){return e.length>=4&&e[0]===Y[0]&&e[1]===Y[1]&&e[2]===Y[2]&&e[3]===Y[3]}function Tr(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]=Cr(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 Er(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]=Cr(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]=Cr(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 Dr(e){return wr(e)?Er(e):Tr(e)}function Or(e){return Sr(e)}function kr(e){return Dr(e)}function Z(e,t){let n={c:Fr(e)};t.data!==void 0&&(n.d=W(t.data));let r=G(t.metadata);return r!==void 0&&(n.m=r),n}function Ar(e){return!e||typeof e!=`object`?{accept:!0}:`accept`in e?e.accept?{accept:!0}:{accept:!1,reason:e.reason??`rejected`}:{accept:!0}}function jr(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 Mr(e){return typeof e==`object`&&!!e&&Object.prototype.hasOwnProperty.call(e,`bundle`)}function Nr(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 Pr(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 Fr(e){return`${e.physicalTime},${e.logicalCounter},${e.peerId}`}function Ir(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 Lr(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 Rr(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 zr(e){return e.map(e=>({key:e.key,data:e.data,metadata:e.metadata,physical:e.physical,logical:e.logical,peer:e.peer}))}function Br(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 Vr(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 Hr=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(0,e.openStore)({path:n.path}),i=Vr(Br(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(`
|
|
2
2
|
CREATE TABLE IF NOT EXISTS ${t.kv} (
|
|
3
3
|
key BLOB PRIMARY KEY,
|
|
4
4
|
data TEXT NULL,
|
|
@@ -16,12 +16,16 @@ let e=require(`@loro-dev/unisqlite`);const t=16,n=17,r=18,i=32,a=33,o=34,s=35,c=
|
|
|
16
16
|
logical INTEGER NOT NULL,
|
|
17
17
|
peer TEXT NOT NULL,
|
|
18
18
|
superseded_at INTEGER DEFAULT (unixepoch())
|
|
19
|
-
)`),await e.exec(`CREATE TABLE IF NOT EXISTS ${t.meta} (peer_id TEXT)`),await e.exec(`CREATE INDEX IF NOT EXISTS ${t.idxKvPeerClock} ON ${t.kv}(peer, physical, logical, key)`),await e.exec(`CREATE INDEX IF NOT EXISTS ${t.idxOverriddenKey} ON ${t.overridden}(key)`),await e.exec(`CREATE INDEX IF NOT EXISTS ${t.idxOverriddenSupersededAt} ON ${t.overridden}(superseded_at)`)}static async resolvePeerId(e,t,n){let r=
|
|
19
|
+
)`),await e.exec(`CREATE TABLE IF NOT EXISTS ${t.meta} (peer_id TEXT)`),await e.exec(`CREATE INDEX IF NOT EXISTS ${t.idxKvPeerClock} ON ${t.kv}(peer, physical, logical, key)`),await e.exec(`CREATE INDEX IF NOT EXISTS ${t.idxOverriddenKey} ON ${t.overridden}(key)`),await e.exec(`CREATE INDEX IF NOT EXISTS ${t.idxOverriddenSupersededAt} ON ${t.overridden}(superseded_at)`)}static async resolvePeerId(e,t,n){let r=gr(n),i=await e.query(`SELECT peer_id FROM ${t.meta} LIMIT 1`);if(i.length>0&&typeof i[0]?.peer_id==`string`){let a=i[0].peer_id;return n&&a!==r?(await e.run(`UPDATE ${t.meta} SET peer_id = ?`,[r]),r):gr(a)}return await e.exec(`DELETE FROM ${t.meta}`),await e.run(`INSERT INTO ${t.meta}(peer_id) VALUES (?)`,[r]),r}static async loadVersionState(e,t){let n=new Map,r=await e.query(`SELECT peer, MAX(physical) AS physical, MAX(logical) AS logical FROM ${t.kv} GROUP BY peer`);for(let e of r){if(!e||typeof e.peer!=`string`)continue;let t=Lr({physicalTime:Number(e.physical??0),logicalCounter:Number(e.logical??0)});t&&n.set(e.peer,t)}let i=(await e.query(`SELECT physical, logical FROM ${t.kv} ORDER BY physical DESC, logical DESC LIMIT 1`))[0];return{vv:n,maxHlc:i&&Number.isFinite(i.physical)&&Number.isFinite(i.logical)?{physicalTime:Number(i.physical),logicalCounter:Number(i.logical)}:{physicalTime:0,logicalCounter:0}}}bumpVersion(e){let t=this.vv.get(e.peerId);(!t||Ir(e,{...t,peerId:e.peerId})>0)&&this.vv.set(e.peerId,{physicalTime:e.physicalTime,logicalCounter:e.logicalCounter}),(this.maxHlc.physicalTime<e.physicalTime||this.maxHlc.physicalTime===e.physicalTime&&this.maxHlc.logicalCounter<e.logicalCounter)&&(this.maxHlc={physicalTime:e.physicalTime,logicalCounter:e.logicalCounter})}allocateClock(e){let t=e??Date.now(),n=this.maxHlc.physicalTime,r=this.maxHlc.logicalCounter;return t>n?(n=t,r=0):r+=1,{physicalTime:n,logicalCounter:r,peerId:this.peerIdValue}}async applyOperation(e){let t=H(e.key),n=q(e.payload,{}),r=n.data===void 0?null:JSON.stringify(n.data),i=n.metadata===void 0?null:JSON.stringify(n.metadata),a=!1,o;if(await this.db.asyncTransaction(async n=>{let s=await n.query(`SELECT key, data, metadata, physical, logical, peer FROM ${this.tables.kv} WHERE key = ? LIMIT 1`,[t]);if(s.length>0){let t=s[0],n=t.data??null,a=t.metadata??null;if(e.skipSameValue&&r===n&&i===a)return}else if(e.skipSameValue&&r===null&&i===null)return;let c=e.clock??this.allocateClock(e.now);if(o=c,s.length>0){let e=s[0],a=Ir(c,{physicalTime:Number(e.physical??0),logicalCounter:Number(e.logical??0),peerId:String(e.peer??``)});if(a<0){await n.run(`INSERT INTO ${this.tables.overridden}(key, data, metadata, physical, logical, peer) VALUES (?, ?, ?, ?, ?, ?)`,[t,r,i,c.physicalTime,c.logicalCounter,c.peerId]);return}if(a>0)await n.run(`INSERT INTO ${this.tables.overridden}(key, data, metadata, physical, logical, peer) VALUES (?, ?, ?, ?, ?, ?)`,[t,e.data??null,e.metadata??null,e.physical??0,e.logical??0,e.peer??``]);else return}await n.run(`INSERT INTO ${this.tables.kv}(key, data, metadata, physical, logical, peer)
|
|
20
20
|
VALUES (?, ?, ?, ?, ?, ?)
|
|
21
21
|
ON CONFLICT(key) DO UPDATE SET
|
|
22
22
|
data=excluded.data,
|
|
23
23
|
metadata=excluded.metadata,
|
|
24
24
|
physical=excluded.physical,
|
|
25
25
|
logical=excluded.logical,
|
|
26
|
-
peer=excluded.peer`,[t,i,
|
|
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=gr(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=Pr(n.physical,n.logical,n.peer);if(!r)return;let i=_r(Nr(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=cr(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=cr(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=lr(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=>Rr(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=sr(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=Nr(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
|
+
SELECT peer, physical, logical,
|
|
28
|
+
ROW_NUMBER() OVER (PARTITION BY peer ORDER BY physical DESC, logical DESC) as rn
|
|
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=Lr(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=Nr(n.metadata);c!==void 0&&(o.metadata=c);let l=sr(n.key);i[ur(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 jr(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(Mr(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=Ar(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 ce(await zr(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)}}};exports.Flock=Hr,exports.FlockSQLite=Hr,exports.decodeVersionVector=kr,exports.encodeVersionVector=Or;
|
|
27
31
|
//# sourceMappingURL=index.cjs.map
|