@instantdb/core
Version:
Instant's core local abstraction
1 lines • 91.2 kB
JavaScript
(function(M,P){typeof exports=="object"&&typeof module<"u"?P(exports):typeof define=="function"&&define.amd?define(["exports"],P):(M=typeof globalThis<"u"?globalThis:M||self,P(M.instant={}))})(this,function(M){"use strict";var $i=Object.defineProperty;var Ni=(M,P,v)=>P in M?$i(M,P,{enumerable:!0,configurable:!0,writable:!0,value:v}):M[P]=v;var y=(M,P,v)=>Ni(M,typeof P!="symbol"?P+"":P,v);function P(t){if(typeof t=="number")return(Math.abs(t*2654435761)>>>0).toString(16);if(typeof t=="boolean")return t?"1":"0";if(t===null)return"null";if(t===void 0)return"undefined";if(typeof t=="string"){let e=2166136261;for(let n=0;n<t.length;n++)e^=t.charCodeAt(n),e+=(e<<1)+(e<<4)+(e<<7)+(e<<8)+(e<<24),e=e>>>0;return e.toString(16)}if(Array.isArray(t)){let e=2166136261;for(let n=0;n<t.length;n++){e^=(n+1)*2654435761;const r=P(t[n]);for(let s=0;s<r.length;s++)e^=r.charCodeAt(s),e*=16777619,e=e>>>0}return e.toString(16)}if(typeof t=="object"){let e=2166136261;const n=Object.keys(t).sort();for(let r=0;r<n.length;r++){const s=n[r],i=P(s);e^=parseInt(i,16),e*=16777619,e=e>>>0;const o=P(t[s]);e^=parseInt(o,16),e*=16777619,e=e>>>0}return e.toString(16)}return P(String(t))}const v={Remove:"remove",Replace:"replace",Add:"add"},_t=Symbol.for("__MUTATIVE_PROXY_DRAFT__"),Tn=Symbol("__MUTATIVE_RAW_RETURN_SYMBOL__"),de=Symbol.iterator,$={mutable:"mutable",immutable:"immutable"},Ce={};function se(t,e){return t instanceof Map?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function bt(t,e){if(e in t){let n=Reflect.getPrototypeOf(t);for(;n;){const r=Reflect.getOwnPropertyDescriptor(n,e);if(r)return r;n=Reflect.getPrototypeOf(n)}}}function ke(t){return Object.getPrototypeOf(t)===Set.prototype}function Te(t){return Object.getPrototypeOf(t)===Map.prototype}function N(t){var e;return(e=t.copy)!==null&&e!==void 0?e:t.original}function G(t){return!!m(t)}function m(t){return typeof t!="object"?null:t==null?void 0:t[_t]}function Ie(t){var e;const n=m(t);return n?(e=n.copy)!==null&&e!==void 0?e:n.original:t}function L(t,e){if(!t||typeof t!="object")return!1;let n;return Object.getPrototypeOf(t)===Object.prototype||Array.isArray(t)||t instanceof Map||t instanceof Set||!!(e!=null&&e.mark)&&((n=e.mark(t,$))===$.immutable||typeof n=="function")}function wt(t,e=[]){if(Object.hasOwnProperty.call(t,"key")){const n=t.parent.copy,r=m(Q(n,t.key));if(r!==null&&(r==null?void 0:r.original)!==t.original)return null;const s=t.parent.type===3,i=s?Array.from(t.parent.setMap.keys()).indexOf(t.key):t.key;if(!(s&&n.size>i||se(n,i)))return null;e.push(i)}if(t.parent)return wt(t.parent,e);e.reverse();try{In(t.copy,e)}catch{return null}return e}function Y(t){return Array.isArray(t)?1:t instanceof Map?2:t instanceof Set?3:0}function Q(t,e){return Y(t)===2?t.get(e):t[e]}function ie(t,e,n){Y(t)===2?t.set(e,n):t[e]=n}function Ee(t,e){const n=m(t);return(n?N(n):t)[e]}function B(t,e){return t===e?t!==0||1/t===1/e:t!==t&&e!==e}function je(t){if(t)for(;t.finalities.revoke.length>0;)t.finalities.revoke.pop()()}function X(t,e){return e?t:[""].concat(t).map(n=>{const r=`${n}`;return r.indexOf("/")===-1&&r.indexOf("~")===-1?r:r.replace(/~/g,"~0").replace(/\//g,"~1")}).join("/")}function In(t,e){for(let n=0;n<e.length-1;n+=1){const r=e[n];if(t=Q(Y(t)===3?Array.from(t):t,r),typeof t!="object")throw new Error(`Cannot resolve patch at '${e.join("/")}'.`)}return t}function En(t){const e=Object.create(Object.getPrototypeOf(t));return Reflect.ownKeys(t).forEach(n=>{let r=Reflect.getOwnPropertyDescriptor(t,n);if(r.enumerable&&r.configurable&&r.writable){e[n]=t[n];return}r.writable||(r.writable=!0,r.configurable=!0),(r.get||r.set)&&(r={configurable:!0,writable:!0,enumerable:r.enumerable,value:t[n]}),Reflect.defineProperty(e,n,r)}),e}const jn=Object.prototype.propertyIsEnumerable;function gt(t,e){let n;if(Array.isArray(t))return Array.prototype.concat.call(t);if(t instanceof Set){if(!ke(t)){const r=Object.getPrototypeOf(t).constructor;return new r(t.values())}return Set.prototype.difference?Set.prototype.difference.call(t,new Set):new Set(t.values())}else if(t instanceof Map){if(!Te(t)){const r=Object.getPrototypeOf(t).constructor;return new r(t)}return new Map(t)}else if(e!=null&&e.mark&&(n=e.mark(t,$),n!==void 0)&&n!==$.mutable){if(n===$.immutable)return En(t);if(typeof n=="function"){if(e.enablePatches||e.enableAutoFreeze)throw new Error("You can't use mark and patches or auto freeze together.");return n()}throw new Error(`Unsupported mark result: ${n}`)}else if(typeof t=="object"&&Object.getPrototypeOf(t)===Object.prototype){const r={};return Object.keys(t).forEach(s=>{r[s]=t[s]}),Object.getOwnPropertySymbols(t).forEach(s=>{jn.call(t,s)&&(r[s]=t[s])}),r}else throw new Error("Please check mark() to ensure that it is a stable marker draftable function.")}function E(t){t.copy||(t.copy=gt(t.original,t.options))}function oe(t){if(!L(t))return Ie(t);if(Array.isArray(t))return t.map(oe);if(t instanceof Map){const n=Array.from(t.entries()).map(([r,s])=>[r,oe(s)]);if(!Te(t)){const r=Object.getPrototypeOf(t).constructor;return new r(n)}return new Map(n)}if(t instanceof Set){const n=Array.from(t).map(oe);if(!ke(t)){const r=Object.getPrototypeOf(t).constructor;return new r(n)}return new Set(n)}const e=Object.create(Object.getPrototypeOf(t));for(const n in t)e[n]=oe(t[n]);return e}function he(t){return G(t)?oe(t):t}function z(t){var e;t.assignedMap=(e=t.assignedMap)!==null&&e!==void 0?e:new Map,t.operated||(t.operated=!0,t.parent&&z(t.parent))}function mt(){throw new Error("Cannot modify frozen object")}function ee(t,e,n,r,s){{n=n??new WeakMap,r=r??[],s=s??[];const o=n.has(t)?n.get(t):t;if(r.length>0){const a=r.indexOf(o);if(o&&typeof o=="object"&&a!==-1)throw r[0]===o?new Error("Forbids circular reference"):new Error(`Forbids circular reference: ~/${s.slice(0,a).map((c,u)=>{if(typeof c=="symbol")return`[${c.toString()}]`;const f=r[u];return typeof c=="object"&&(f instanceof Map||f instanceof Set)?Array.from(f.keys()).indexOf(c):c}).join("/")}`);r.push(o),s.push(e)}else r.push(o)}if(Object.isFrozen(t)||G(t)){r.pop(),s.pop();return}switch(Y(t)){case 2:for(const[a,c]of t)ee(a,a,n,r,s),ee(c,a,n,r,s);t.set=t.clear=t.delete=mt;break;case 3:for(const a of t)ee(a,a,n,r,s);t.add=t.clear=t.delete=mt;break;case 1:Object.freeze(t);let o=0;for(const a of t)ee(a,o,n,r,s),o+=1;break;default:Object.freeze(t),Object.keys(t).forEach(a=>{const c=t[a];ee(c,a,n,r,s)})}r.pop(),s.pop()}function Re(t,e){const n=Y(t);if(n===0)Reflect.ownKeys(t).forEach(r=>{e(r,t[r],t)});else if(n===1){let r=0;for(const s of t)e(r,s,t),r+=1}else t.forEach((r,s)=>e(s,r,t))}function St(t,e,n){if(G(t)||!L(t,n)||e.has(t)||Object.isFrozen(t))return;const r=t instanceof Set,s=r?new Map:void 0;if(e.add(t),Re(t,(i,o)=>{var a;if(G(o)){const c=m(o);E(c);const u=!((a=c.assignedMap)===null||a===void 0)&&a.size||c.operated?c.copy:c.original;ie(r?s:t,i,u)}else St(o,e,n)}),s){const i=t,o=Array.from(i);i.clear(),o.forEach(a=>{i.add(s.has(a)?s.get(a):a)})}}function Rn(t,e){const n=t.type===3?t.setMap:t.copy;t.finalities.revoke.length>1&&t.assignedMap.get(e)&&n&&St(Q(n,e),t.finalities.handledSet,t.options)}function xe(t){t.type===3&&t.copy&&(t.copy.clear(),t.setMap.forEach(e=>{t.copy.add(Ie(e))}))}function De(t,e,n,r){if(t.operated&&t.assignedMap&&t.assignedMap.size>0&&!t.finalized){if(n&&r){const i=wt(t);i&&e(t,i,n,r)}t.finalized=!0}}function Ue(t,e,n,r){const s=m(n);s&&(s.callbacks||(s.callbacks=[]),s.callbacks.push((i,o)=>{var a;const c=t.type===3?t.setMap:t.copy;if(B(Q(c,e),n)){let u=s.original;s.copy&&(u=s.copy),xe(t),De(t,r,i,o),t.options.enableAutoFreeze&&(t.options.updatedValues=(a=t.options.updatedValues)!==null&&a!==void 0?a:new WeakMap,t.options.updatedValues.set(u,s.original)),ie(c,e,u)}}),t.options.enableAutoFreeze&&s.finalities!==t.finalities&&(t.options.enableAutoFreeze=!1)),L(n,t.options)&&t.finalities.draft.push(()=>{const i=t.type===3?t.setMap:t.copy;B(Q(i,e),n)&&Rn(t,e)})}function xn(t,e,n,r,s){let{original:i,assignedMap:o,options:a}=t,c=t.copy;c.length<i.length&&([i,c]=[c,i],[n,r]=[r,n]);for(let u=0;u<i.length;u+=1)if(o.get(u.toString())&&c[u]!==i[u]){const f=e.concat([u]),l=X(f,s);n.push({op:v.Replace,path:l,value:he(c[u])}),r.push({op:v.Replace,path:l,value:he(i[u])})}for(let u=i.length;u<c.length;u+=1){const f=e.concat([u]),l=X(f,s);n.push({op:v.Add,path:l,value:he(c[u])})}if(i.length<c.length){const{arrayLengthAssignment:u=!0}=a.enablePatches;if(u){const f=e.concat(["length"]),l=X(f,s);r.push({op:v.Replace,path:l,value:i.length})}else for(let f=c.length;i.length<f;f-=1){const l=e.concat([f-1]),d=X(l,s);r.push({op:v.Remove,path:d})}}}function Dn({original:t,copy:e,assignedMap:n},r,s,i,o){n.forEach((a,c)=>{const u=Q(t,c),f=he(Q(e,c)),l=a?se(t,c)?v.Replace:v.Add:v.Remove;if(B(u,f)&&l===v.Replace)return;const d=r.concat(c),h=X(d,o);s.push(l===v.Remove?{op:l,path:h}:{op:l,path:h,value:f}),i.push(l===v.Add?{op:v.Remove,path:h}:l===v.Remove?{op:v.Add,path:h,value:u}:{op:v.Replace,path:h,value:u})})}function Un({original:t,copy:e},n,r,s,i){let o=0;t.forEach(a=>{if(!e.has(a)){const c=n.concat([o]),u=X(c,i);r.push({op:v.Remove,path:u,value:a}),s.unshift({op:v.Add,path:u,value:a})}o+=1}),o=0,e.forEach(a=>{if(!t.has(a)){const c=n.concat([o]),u=X(c,i);r.push({op:v.Add,path:u,value:a}),s.unshift({op:v.Remove,path:u,value:a})}o+=1})}function ae(t,e,n,r){const{pathAsArray:s=!0}=t.options.enablePatches;switch(t.type){case 0:case 2:return Dn(t,e,n,r,s);case 1:return xn(t,e,n,r,s);case 3:return Un(t,e,n,r,s)}}const pe=(t,e,n=!1)=>{if(typeof t=="object"&&t!==null&&(!L(t,e)||n))throw new Error("Strict mode: Mutable data cannot be accessed directly, please use 'unsafe(callback)' wrap.")},$e={get size(){return N(m(this)).size},has(t){return N(m(this)).has(t)},set(t,e){const n=m(this),r=N(n);return(!r.has(t)||!B(r.get(t),e))&&(E(n),z(n),n.assignedMap.set(t,!0),n.copy.set(t,e),Ue(n,t,e,ae)),this},delete(t){if(!this.has(t))return!1;const e=m(this);return E(e),z(e),e.original.has(t)?e.assignedMap.set(t,!1):e.assignedMap.delete(t),e.copy.delete(t),!0},clear(){const t=m(this);if(this.size){E(t),z(t),t.assignedMap=new Map;for(const[e]of t.original)t.assignedMap.set(e,!1);t.copy.clear()}},forEach(t,e){const n=m(this);N(n).forEach((r,s)=>{t.call(e,this.get(s),s,this)})},get(t){var e,n;const r=m(this),s=N(r).get(t),i=((n=(e=r.options).mark)===null||n===void 0?void 0:n.call(e,s,$))===$.mutable;if(r.options.strict&&pe(s,r.options,i),i||r.finalized||!L(s,r.options)||s!==r.original.get(t))return s;const o=Ce.createDraft({original:s,parentDraft:r,key:t,finalities:r.finalities,options:r.options});return E(r),r.copy.set(t,o),o},keys(){return N(m(this)).keys()},values(){const t=this.keys();return{[de]:()=>this.values(),next:()=>{const e=t.next();return e.done?e:{done:!1,value:this.get(e.value)}}}},entries(){const t=this.keys();return{[de]:()=>this.entries(),next:()=>{const e=t.next();if(e.done)return e;const n=this.get(e.value);return{done:!1,value:[e.value,n]}}}},[de](){return this.entries()}},$n=Reflect.ownKeys($e),Ot=(t,e,{isValuesIterator:n})=>()=>{var r,s;const i=e.next();if(i.done)return i;const o=i.value;let a=t.setMap.get(o);const c=m(a),u=((s=(r=t.options).mark)===null||s===void 0?void 0:s.call(r,a,$))===$.mutable;if(t.options.strict&&pe(o,t.options,u),!u&&!c&&L(o,t.options)&&!t.finalized&&t.original.has(o)){const f=Ce.createDraft({original:o,parentDraft:t,key:o,finalities:t.finalities,options:t.options});t.setMap.set(o,f),a=f}else c&&(a=c.proxy);return{done:!1,value:n?a:[a,a]}},ye={get size(){return m(this).setMap.size},has(t){const e=m(this);if(e.setMap.has(t))return!0;E(e);const n=m(t);return!!(n&&e.setMap.has(n.original))},add(t){const e=m(this);return this.has(t)||(E(e),z(e),e.assignedMap.set(t,!0),e.setMap.set(t,t),Ue(e,t,t,ae)),this},delete(t){if(!this.has(t))return!1;const e=m(this);E(e),z(e);const n=m(t);return n&&e.setMap.has(n.original)?(e.assignedMap.set(n.original,!1),e.setMap.delete(n.original)):(!n&&e.setMap.has(t)?e.assignedMap.set(t,!1):e.assignedMap.delete(t),e.setMap.delete(t))},clear(){if(!this.size)return;const t=m(this);E(t),z(t);for(const e of t.original)t.assignedMap.set(e,!1);t.setMap.clear()},values(){const t=m(this);E(t);const e=t.setMap.keys();return{[Symbol.iterator]:()=>this.values(),next:Ot(t,e,{isValuesIterator:!0})}},entries(){const t=m(this);E(t);const e=t.setMap.keys();return{[Symbol.iterator]:()=>this.entries(),next:Ot(t,e,{isValuesIterator:!1})}},keys(){return this.values()},[de](){return this.values()},forEach(t,e){const n=this.values();let r=n.next();for(;!r.done;)t.call(e,r.value,r.value,this),r=n.next()}};Set.prototype.difference&&Object.assign(ye,{intersection(t){return Set.prototype.intersection.call(new Set(this.values()),t)},union(t){return Set.prototype.union.call(new Set(this.values()),t)},difference(t){return Set.prototype.difference.call(new Set(this.values()),t)},symmetricDifference(t){return Set.prototype.symmetricDifference.call(new Set(this.values()),t)},isSubsetOf(t){return Set.prototype.isSubsetOf.call(new Set(this.values()),t)},isSupersetOf(t){return Set.prototype.isSupersetOf.call(new Set(this.values()),t)},isDisjointFrom(t){return Set.prototype.isDisjointFrom.call(new Set(this.values()),t)}});const Nn=Reflect.ownKeys(ye),Mt=new WeakSet,Pt={get(t,e,n){var r,s;const i=(r=t.copy)===null||r===void 0?void 0:r[e];if(i&&Mt.has(i))return i;if(e===_t)return t;let o;if(t.options.mark){const u=e==="size"&&(t.original instanceof Map||t.original instanceof Set)?Reflect.get(t.original,e):Reflect.get(t.original,e,n);if(o=t.options.mark(u,$),o===$.mutable)return t.options.strict&&pe(u,t.options,!0),u}const a=N(t);if(a instanceof Map&&$n.includes(e)){if(e==="size")return Object.getOwnPropertyDescriptor($e,"size").get.call(t.proxy);const u=$e[e];if(u)return u.bind(t.proxy)}if(a instanceof Set&&Nn.includes(e)){if(e==="size")return Object.getOwnPropertyDescriptor(ye,"size").get.call(t.proxy);const u=ye[e];if(u)return u.bind(t.proxy)}if(!se(a,e)){const u=bt(a,e);return u?"value"in u?u.value:(s=u.get)===null||s===void 0?void 0:s.call(t.proxy):void 0}const c=a[e];if(t.options.strict&&pe(c,t.options),t.finalized||!L(c,t.options))return c;if(c===Ee(t.original,e)){if(E(t),t.copy[e]=Ne({original:t.original[e],parentDraft:t,key:t.type===1?Number(e):e,finalities:t.finalities,options:t.options}),typeof o=="function"){const u=m(t.copy[e]);return E(u),z(u),u.copy}return t.copy[e]}return c},set(t,e,n){var r;if(t.type===3||t.type===2)throw new Error("Map/Set draft does not support any property assignment.");let s;if(t.type===1&&e!=="length"&&!(Number.isInteger(s=Number(e))&&s>=0&&(e===0||s===0||String(s)===String(e))))throw new Error("Only supports setting array indices and the 'length' property.");const i=bt(N(t),e);if(i!=null&&i.set)return i.set.call(t.proxy,n),!0;const o=Ee(N(t),e),a=m(o);return a&&B(a.original,n)?(t.copy[e]=n,t.assignedMap=(r=t.assignedMap)!==null&&r!==void 0?r:new Map,t.assignedMap.set(e,!1),!0):(B(n,o)&&(n!==void 0||se(t.original,e))||(E(t),z(t),se(t.original,e)&&B(n,t.original[e])?t.assignedMap.delete(e):t.assignedMap.set(e,!0),t.copy[e]=n,Ue(t,e,n,ae)),!0)},has(t,e){return e in N(t)},ownKeys(t){return Reflect.ownKeys(N(t))},getOwnPropertyDescriptor(t,e){const n=N(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r&&{writable:!0,configurable:t.type!==1||e!=="length",enumerable:r.enumerable,value:n[e]}},getPrototypeOf(t){return Reflect.getPrototypeOf(t.original)},setPrototypeOf(){throw new Error("Cannot call 'setPrototypeOf()' on drafts")},defineProperty(){throw new Error("Cannot call 'defineProperty()' on drafts")},deleteProperty(t,e){var n;return t.type===1?Pt.set.call(this,t,e,void 0,t.proxy):(Ee(t.original,e)!==void 0||e in t.original?(E(t),z(t),t.assignedMap.set(e,!1)):(t.assignedMap=(n=t.assignedMap)!==null&&n!==void 0?n:new Map,t.assignedMap.delete(e)),t.copy&&delete t.copy[e],!0)}};function Ne(t){const{original:e,parentDraft:n,key:r,finalities:s,options:i}=t,o=Y(e),a={type:o,finalized:!1,parent:n,original:e,copy:null,proxy:null,finalities:s,options:i,setMap:o===3?new Map(e.entries()):void 0};(r||"key"in t)&&(a.key=r);const{proxy:c,revoke:u}=Proxy.revocable(o===1?Object.assign([],a):a,Pt);if(s.revoke.push(u),Mt.add(c),a.proxy=c,n){const f=n;f.finalities.draft.push((l,d)=>{var h,p;const b=m(c);let w=f.type===3?f.setMap:f.copy;const _=Q(w,r),g=m(_);if(g){let O=g.original;g.operated&&(O=Ie(_)),xe(g),De(g,ae,l,d),f.options.enableAutoFreeze&&(f.options.updatedValues=(h=f.options.updatedValues)!==null&&h!==void 0?h:new WeakMap,f.options.updatedValues.set(O,g.original)),ie(w,r,O)}(p=b.callbacks)===null||p===void 0||p.forEach(O=>{O(l,d)})})}else{const f=m(c);f.finalities.draft.push((l,d)=>{xe(f),De(f,ae,l,d)})}return c}Ce.createDraft=Ne;function Ln(t,e,n,r,s){var i;const o=m(t),a=(i=o==null?void 0:o.original)!==null&&i!==void 0?i:t,c=!!e.length;if(o!=null&&o.operated)for(;o.finalities.draft.length>0;)o.finalities.draft.pop()(n,r);const u=c?e[0]:o?o.operated?o.copy:o.original:t;return o&&je(o),s&&ee(u,u,o==null?void 0:o.options.updatedValues),[u,n&&c?[{op:v.Replace,path:[],value:e[0]}]:n,r&&c?[{op:v.Replace,path:[],value:a}]:r]}function qn(t,e){var n;const r={draft:[],revoke:[],handledSet:new WeakSet};let s,i;e.enablePatches&&(s=[],i=[]);const a=((n=e.mark)===null||n===void 0?void 0:n.call(e,t,$))===$.mutable||!L(t,e)?t:Ne({original:t,parentDraft:null,finalities:r,options:e});return[a,(c=[])=>{const[u,f,l]=Ln(a,c,s,i,e.enableAutoFreeze);return e.enablePatches?[u,f,l]:u}]}function Le(t){const{rootDraft:e,value:n,useRawReturn:r=!1,isRoot:s=!0}=t;Re(n,(i,o,a)=>{const c=m(o);if(c&&e&&c.finalities===e.finalities){t.isContainDraft=!0;const u=c.original;if(a instanceof Set){const f=Array.from(a);a.clear(),f.forEach(l=>a.add(i===l?u:l))}else ie(a,i,u)}else typeof o=="object"&&o!==null&&(t.value=o,t.isRoot=!1,Le(t))}),s&&(t.isContainDraft||console.warn("The return value does not contain any draft, please use 'rawReturn()' to wrap the return value to improve performance."),r&&console.warn("The return value contains drafts, please don't use 'rawReturn()' to wrap the return value."))}function vt(t){var e;const n=m(t);if(!L(t,n==null?void 0:n.options))return t;const r=Y(t);if(n&&!n.operated)return n.original;let s;function i(){s=r===2?Te(t)?new Map(t):new(Object.getPrototypeOf(t)).constructor(t):r===3?Array.from(n.setMap.values()):gt(t,n==null?void 0:n.options)}if(n){n.finalized=!0;try{i()}finally{n.finalized=!1}}else s=t;if(Re(s,(o,a)=>{if(n&&B(Q(n.original,o),a))return;const c=vt(a);c!==a&&(s===t&&i(),ie(s,o,c))}),r===3){const o=(e=n==null?void 0:n.original)!==null&&e!==void 0?e:s;return ke(o)?new Set(s):new(Object.getPrototypeOf(o)).constructor(s)}return s}function At(t){if(!G(t))throw new Error(`current() is only used for Draft, parameter: ${t}`);return vt(t)}const qe=(t=>function e(n,r,s){var i,o,a;if(typeof n=="function"&&typeof r!="function")return function(S,...R){return e(S,I=>n.call(this,I,...R),r)};const c=n,u=r;let f=s;if(typeof r!="function"&&(f=r),f!==void 0&&Object.prototype.toString.call(f)!=="[object Object]")throw new Error(`Invalid options: ${f}, 'options' should be an object.`);f=Object.assign(Object.assign({},t),f);const l=G(c)?At(c):c,d=Array.isArray(f.mark)?(S,R)=>{for(const I of f.mark){if(typeof I!="function")throw new Error(`Invalid mark: ${I}, 'mark' should be a function.`);const W=I(S,R);if(W)return W}}:f.mark,h=(i=f.enablePatches)!==null&&i!==void 0?i:!1,p=(o=f.strict)!==null&&o!==void 0?o:!1,w={enableAutoFreeze:(a=f.enableAutoFreeze)!==null&&a!==void 0?a:!1,mark:d,strict:p,enablePatches:h};if(!L(l,w)&&typeof l=="object"&&l!==null)throw new Error("Invalid base state: create() only supports plain objects, arrays, Set, Map or using mark() to mark the state as immutable.");const[_,g]=qn(l,w);if(typeof r!="function"){if(!L(l,w))throw new Error("Invalid base state: create() only supports plain objects, arrays, Set, Map or using mark() to mark the state as immutable.");return[_,g]}let O;try{O=u(_)}catch(S){throw je(m(_)),S}const j=S=>{const R=m(_);if(!G(S)){if(S!==void 0&&!B(S,_)&&(R!=null&&R.operated))throw new Error("Either the value is returned as a new non-draft value, or only the draft is modified without returning any value.");const W=S==null?void 0:S[Tn];if(W){const mn=W[0];return w.strict&&typeof S=="object"&&S!==null&&Le({rootDraft:R,value:S,useRawReturn:!0}),g([mn])}if(S!==void 0)return typeof S=="object"&&S!==null&&Le({rootDraft:R,value:S}),g([S])}if(S===_||S===void 0)return g([]);const I=m(S);if(w===I.options){if(I.operated)throw new Error("Cannot return a modified child draft.");return g([At(S)])}return g([S])};return O instanceof Promise?O.then(j,S=>{throw je(m(_)),S}):j(O)})();Object.prototype.constructor.toString();function Ct(t,e){const n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&Object.keys(t).every(s=>e.hasOwnProperty(s))}function kt(t,e){return Object.keys(t).length===Object.keys(e).length&&Object.keys(t).every(n=>e.hasOwnProperty(n)&&t[n]===e[n])}function _e(t,e){return typeof t!="object"||typeof e!="object"||t===null||e===null?t===e:Ct(t,e)?Object.keys(t).every(n=>_e(t[n],e[n])):!1}function Fe(t){if(!ce(t))return t;const e={};for(const[n,r]of Object.entries(t))r!==void 0&&(e[n]=r);return e}function Tt(t,e){if(!ce(t)||!ce(e))return e;const n={...t};for(const r of Object.keys(e)){if(e[r]===void 0)continue;if(e[r]===null){delete n[r];continue}const s=ce(t[r])&&ce(e[r]);n[r]=s?Tt(t[r],e[r]):e[r]}return n}function ce(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Fn(t,e,n){if(!t||e.length===0)return;let r=t||{};for(let i=0;i<e.length-1;i++){const o=e[i];(!(o in r)||typeof r[o]!="object")&&(r[o]=typeof e[i+1]=="number"?[]:{}),r=r[o]}const s=e[e.length-1];Array.isArray(r)&&typeof s=="number"?r.splice(s,0,n):r[s]=n}function It(t,e,n){if(!t||e.length===0)return;let r=t||{};for(let s=0;s<e.length-1;s++){const i=e[s];(!(i in r)||typeof r[i]!="object")&&(r[i]=typeof e[s+1]=="number"?[]:{}),r=r[i]}r[e[e.length-1]]=n}function Et(t,e){if(!t||e.length===0)return;const[n,...r]=e;if(n in t){if(r.length===0){Array.isArray(t)?t.splice(n,1):delete t[n];return}Et(t[n],r),zn(t[n])&&delete t[n]}}function zn(t){return t&&Object.keys(t).length===0}function Vn(t){return new Date(t)}function Wn(t){return new Date(t+"Z")}function Qn(t){return new Date(t+"T00:00:00Z")}function Bn(t){const[e,n]=t.split(" ");return new Date(e+"T"+n+"Z")}function Jn(t){const[e,n]=t.split(" ");return new Date(e+"T"+n+"Z")}function Hn(t){return new Date(t)}function Kn(t){const e=/^(\w{3}) (\w{3}) (\d{2}) (\d{4})$/;if(!t.match(e))throw new Error(`Unable to parse \`${t}\` as a date.`);const r=new Date(t+" UTC");return new Date(Date.UTC(r.getUTCFullYear(),r.getUTCMonth(),r.getUTCDate(),0,0,0,0))}function Gn(t){const e=/^(.+T.+)([+-])(\d{2})$/,n=t.match(e);if(n){const[,r,s,i]=n,o=`${r}${s}${i}:00`;return new Date(o)}return null}const Yn=[Jn,Kn,Hn,Qn,Wn,Vn,Gn,Bn];function Xn(t,e){try{const n=t(e);return n instanceof Date&&!isNaN(n.getTime())?n:null}catch{return null}}function jt(t){for(const e of Yn){const n=Xn(e,t);if(n)return n}return null}function Zn(t){try{const e=JSON.parse(t);return typeof e=="string"?jt(e):null}catch{return null}}function be(t){if(t instanceof Date)return t;if(typeof t=="string"){const e=jt(t)||Zn(t);if(!e)throw new Error(`Unable to parse \`${t}\` as a date.`);return e}else if(typeof t=="number")return new Date(t);throw new Error(`Invalid date value \`${t}\`. Expected a date, number, or string, got type ${typeof t}.`)}function er(t){return t.cardinality==="one"}function ze(t){return t["value-type"]==="ref"}function Ve(t){return t["value-type"]==="blob"}function ue(t,e){return t[e]}function we(t,e){return e.reduce((n,r)=>n&&n.get(r),t)}function q(t,e){if(e.length===0)throw new Error("path must have at least one element");if(e.length===1){t.delete(e[0]);return}const[n,...r]=e;t.has(n)&&q(t.get(n),r)}function x(t,e,n){if(e.length===0)throw new Error("path must have at least one element");if(e.length===1){t.set(e[0],n);return}const[r,...s]=e;let i=t.get(r);i||(i=new Map,t.set(r,i)),x(i,s,n)}function Rt(t,e,n){const r=new Map,s=new Map,i=new Map;for(const o of e){let[a,c,u,f]=o;const l=ue(t,c);if(!l){console.warn("no such attr",a,t);continue}l["checked-data-type"]==="date"&&n&&(u=be(u),o[2]=u),ze(l)&&x(i,[u,c,a],o),x(r,[a,c,u],o),x(s,[c,a,u],o)}return{eav:r,aev:s,vae:i}}function xt(t){const e=new Map,n=new Map,r=new Map,s=new Map;for(const i of Object.values(t)){const o=i["forward-identity"],[a,c,u]=o,f=i["reverse-identity"];if(x(r,[c,u],i),Ve(i)&&x(e,[c,u],i),i["primary?"]&&x(n,[c],i),f){const[l,d,h]=f;x(s,[d,h],i)}}return{blobAttrs:e,primaryKeys:n,forwardIdents:r,revIdents:s}}function tr(t){return{__type:t.__type,attrs:t.attrs,triples:D(t.eav,3),cardinalityInference:t.cardinalityInference,linkIndex:t.linkIndex,useDateObjects:t.useDateObjects}}function nr(t){return Qe(t.attrs,t.triples,t.cardinalityInference,t.linkIndex,t.useDateObjects)}function We(t){t.attrIndexes=xt(t.attrs)}function Qe(t,e,n,r,s){const i=Rt(t,e,s);return i.useDateObjects=s,i.attrs=t,i.attrIndexes=xt(t),i.cardinalityInference=n,i.linkIndex=r,i.__type="store",i}function fe(t,e){var s,i;let n;if(Array.isArray(e[0])){const[o,a]=e[0],c=t.aev.get(o);if(!c)return null;n=(s=D(c,2).find(f=>f[2]===a))==null?void 0:s[0]}else n=e[0];if(!n)return null;const r=e[2];if(Array.isArray(r)&&r.length===2&&t.aev.get(r[0])){const[o,a]=r,c=t.aev.get(o);if(!c)return null;const f=(i=D(c,2).find(b=>b[2]===a))==null?void 0:i[0];if(!f)return null;const[l,d,h,...p]=e;return[n,d,f,...p]}else{const[o,...a]=e;return[n,...a]}}function rr(t,e){const n=fe(t,e);if(!n)return;const[r,s,i]=n,o=ue(t.attrs,s);o&&(q(t.eav,[r,s,i]),q(t.aev,[s,r,i]),ze(o)&&q(t.vae,[i,s,r]))}let sr=0;function Dt(t,e,n){const[r,s,i]=n;let o;const a=we(t.ea,[r,s,i]);return a&&(o=a[3]),o||Date.now()*10+sr++}function ir(t,e){const n=fe(t,e);if(!n)return;let[r,s,i]=n;const o=ue(t.attrs,s);if(!o)return;o["checked-data-type"]==="date"&&t.useDateObjects&&(i=be(i));const a=we(t.eav,[r,s,i]),c=(a==null?void 0:a[3])??Dt(t,o,n),u=[r,s,i,c];er(o)?(x(t.eav,[r,s],new Map([[i,u]])),x(t.aev,[s,r],new Map([[i,u]]))):(x(t.eav,[r,s,i],u),x(t.aev,[s,r,i],u)),ze(o)&&x(t.vae,[i,s,r],u)}function or(t,e){var d;const n=fe(t,e);if(!n)return;const[r,s,i]=n,o=ue(t.attrs,s);if(!o)return;if(!Ve(o))throw new Error("merge operation is not supported for links");const a=we(t.eav,[r,s]);if(!a)return;const c=(d=a.values().next())==null?void 0:d.value;if(!c)return;const u=c[2],f=Tt(u,i),l=[r,s,f,Dt(t,o,c)];x(t.eav,[r,s],new Map([[f,l]]))}function Be(t,e){var c,u;const[n,r]=e,s=fe(t,[n]);if(!s)return;const[i]=s,o=t.eav.get(i);if(o){for(const f of o.keys()){const l=t.attrs[f];l&&l["on-delete-reverse"]==="cascade"&&D(o.get(f),1).forEach(([d,h,p])=>{var b;return Be(t,[p,(b=l["reverse-identity"])==null?void 0:b[1]])}),(!r||!l||((c=l["forward-identity"])==null?void 0:c[1])===r)&&(q(t.aev,[f,i]),q(t.eav,[i,f]))}o.size===0&&q(t.eav,[i])}const a=t.vae.get(i)&&D(t.vae.get(i),2);a&&a.forEach(f=>{var b,w,_;const[l,d,h]=f,p=t.attrs[d];(!r||!p||((b=p["reverse-identity"])==null?void 0:b[1])===r)&&(q(t.eav,[l,d,h]),q(t.aev,[d,l,h]),q(t.vae,[h,d,l])),p&&p["on-delete"]==="cascade"&&((w=p["reverse-identity"])==null?void 0:w[1])===r&&Be(t,[l,(_=p["forward-identity"])==null?void 0:_[1]])}),((u=t.vae.get(i))==null?void 0:u.size)===0&&q(t.vae,[i])}function Ut(t,e){const n=Rt(t.attrs,e,t.useDateObjects);Object.keys(n).forEach(r=>{t[r]=n[r]})}function ar(t,[e]){t.attrs[e.id]=e,We(t)}function $t(t){return D(t.eav,3)}function cr(t,[e]){if(!t.attrs[e])return;const n=$t(t).filter(([r,s])=>s!==e);delete t.attrs[e],We(t),Ut(t,n)}function ur(t,[e]){const n=t.attrs[e.id];n&&(t.attrs[e.id]={...n,...e},We(t),Ut(t,$t(t)))}function fr(t,e){const[n,...r]=e;switch(n){case"add-triple":ir(t,r);break;case"deep-merge-triple":or(t,r);break;case"retract-triple":rr(t,r);break;case"delete-entity":Be(t,r);break;case"add-attr":ar(t,r);break;case"delete-attr":cr(t,r);break;case"update-attr":ur(t,r);break;case"rule-params":break;default:throw new Error(`unhandled transaction action: ${n}`)}}function D(t,e,n=[]){if(!t||e===0)return n;if(e===1){for(const r of t.values())n.push(r);return n}for(const r of t.values())D(r,e-1,n);return n}function ge(t,e,n){var i,o;const r=[];if(n!=null&&n.hasOwnProperty("$not")){for(const a of e.keys())n.$not!==a&&r.push(e.get(a));return r}if(n!=null&&n.hasOwnProperty("$isNull")){const{attrId:a,isNull:c,reverse:u}=n.$isNull;if(u)for(const f of e.keys()){const l=t.vae.get(f),d=!l||((i=l.get(a))==null?void 0:i.get(null))||!l.get(a);(c?d:!d)&&r.push(e.get(f))}else{const f=t.aev.get(a);for(const l of e.keys()){const d=!f||((o=f.get(l))==null?void 0:o.get(null))||!f.get(l);(c?d:!d)&&r.push(e.get(l))}}return r}if(n!=null&&n.$comparator)return D(e,1).filter(n.$op);const s=n.in||n.$in||[n];for(const a of s){const c=e.get(a);c&&r.push(c)}return r}function lr(t,e,n){let r="";return t!==void 0&&(r+="e"),e!==void 0&&(r+="a"),n!==void 0&&(r+="v"),r}function dr(t,[e,n,r]){var i,o;switch(lr(e,n,r)){case"e":{const a=t.eav.get(e);return D(a,2)}case"ea":{const a=(i=t.eav.get(e))==null?void 0:i.get(n);return D(a,1)}case"eav":{const a=(o=t.eav.get(e))==null?void 0:o.get(n);return a?ge(t,a,r):[]}case"ev":{const a=t.eav.get(e);if(!a)return[];const c=[];for(const u of a.values())c.push(...ge(t,u,r));return c}case"a":{const a=t.aev.get(n);return D(a,2)}case"av":{const a=t.aev.get(n);if(!a)return[];const c=[];for(const u of a.values())c.push(...ge(t,u,r));return c}case"v":{const a=[];for(const c of t.eav.values())for(const u of c.values())a.push(...ge(t,u,r));return a}default:return D(t.eav,3)}}function hr(t,e,n){var s;const r={};for(const[i,o]of e.entries()){const a=(s=t.eav.get(n))==null?void 0:s.get(o.id),c=D(a,1);for(const u of c)r[i]=u[2]}return r}function te(t,e,n){var r;return(r=t.attrIndexes.forwardIdents.get(e))==null?void 0:r.get(n)}function Nt(t,e,n){var r;return(r=t.attrIndexes.revIdents.get(e))==null?void 0:r.get(n)}function pr(t,e){return t.attrIndexes.blobAttrs.get(e)}function yr(t,e){var r;const n=t.attrIndexes.primaryKeys.get(e);return n||((r=t.attrIndexes.forwardIdents.get(e))==null?void 0:r.get("id"))}function _r(t,e){const n=fe(t,e);if(!n)return;const[r,s,i]=n;if(ue(t.attrs,s))return we(t.eav,[r,s])}function br(t,e){const n=e.filter(([r,...s])=>{var a;if(r!=="add-triple"&&r!=="deep-merge-triple")return!0;const i=(a=s[3])==null?void 0:a.mode;if(i!=="create"&&i!=="update")return!0;const o=_r(t,s);return!(i==="create"&&o||i==="update"&&!o)});return qe(t,r=>{n.forEach(s=>{fr(r,s)})})}function wr(t){return typeof t=="string"&&t.startsWith("?")}function gr(t,e,n){if(n.hasOwnProperty(t)){const r=n[t];return qt(r,e,n)}return{...n,[t]:e}}function Lt(t,e,n){return t===e?n:null}function mr(t){switch(typeof t){case"string":return t.startsWith("?")?gr:Lt;default:return Lt}}const Sr=["in","$in","$not","$isNull","$comparator"];function Or(t){for(const e of Sr)if(t.hasOwnProperty(e))return!0;return!1}function qt(t,e,n){return n?typeof t=="object"?Or(t)?n:null:mr(t)(t,e,n):null}function Mr(t,e,n){return t.reduce((r,s,i)=>{const o=e[i];return qt(s,o,r)},n)}function Pr(t,e,n){return Cr(t,e,n).map(r=>Mr(e,r,n)).filter(r=>r)}function vr(t,e,n){return e.or?e.or.patterns.flatMap(r=>Je(t,r,n)):e.and?e.and.patterns.reduce((r,s)=>Je(t,s,r),n):n.flatMap(r=>Pr(t,e,r))}function Je(t,e,n=[{}]){return e.reduce((r,s)=>vr(t,s,r),n)}function He(t,e){return Array.isArray(e)?e.map(n=>He(t,n)):wr(e)?t[e]:e}function Ar(t,{find:e,where:n}){return Je(t,n).map(s=>He(s,e))}function Cr(t,e,n){return dr(t,He(n,e))}const C=[];for(let t=0;t<256;++t)C.push((t+256).toString(16).slice(1));function kr(t,e=0){return(C[t[e+0]]+C[t[e+1]]+C[t[e+2]]+C[t[e+3]]+"-"+C[t[e+4]]+C[t[e+5]]+"-"+C[t[e+6]]+C[t[e+7]]+"-"+C[t[e+8]]+C[t[e+9]]+"-"+C[t[e+10]]+C[t[e+11]]+C[t[e+12]]+C[t[e+13]]+C[t[e+14]]+C[t[e+15]]).toLowerCase()}let Ke;const Tr=new Uint8Array(16);function Ir(){if(!Ke){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Ke=crypto.getRandomValues.bind(crypto)}return Ke(Tr)}const Ft={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Er(t,e,n){var s;if(Ft.randomUUID&&!t)return Ft.randomUUID();t=t||{};const r=t.random??((s=t.rng)==null?void 0:s.call(t))??Ir();if(r.length<16)throw new Error("Random bytes length must be >= 16");return r[6]=r[6]&15|64,r[8]=r[8]&63|128,kr(r)}function zt(t){const e=t.replace(/-/g,""),n=[];for(let r=0;r<e.length;r+=2)n.push(parseInt(e.substring(r,r+2),16));return n}function jr(t,e){for(let n=0;n<t.length;n++){if(t[n]<e[n])return-1;if(t[n]>e[n])return 1}return 0}function Rr(t,e){return jr(zt(t),zt(e))}function k(){return Er()}let xr=0;function le(t){return me(`_${t}`,xr++)}function me(t,e){return`?${t}-${e}`}class ne extends Error{constructor(e){super(e),this.name="AttrNotFoundError"}}function Dr(t,e){const n=yr(t,e);if(!n)throw new ne(`Could not find id attr for ${e}`);return n}function Vt(t,e,n,r){return[Ur(t,e,n,r)]}function Ur(t,e,n,r){return[t(n,r),Dr(e,n).id,t(n,r),t("time",r)]}function $r(t,e,n){return t.map(r=>r===e?n:r)}function Wt(t,e,n,r,s){const i=te(e,n,s),o=Nt(e,n,s),a=i||o;if(!a)throw new ne(`Could not find attr for ${[n,s]}`);if(a["value-type"]!=="ref")throw new Error(`Attr ${a.id} is not a ref`);const[c,u]=a["forward-identity"],[f,l]=a["reverse-identity"],d=r+1,h=i?[t(u,r),a.id,t(l,d),le("time")]:[t(u,d),a.id,t(l,r),le("time")];return[i?l:u,d,h,a,!!i]}function Qt(t,e){if(typeof e!="string")return function(o){return!1};const r=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,"."),s=new RegExp(`^${r}$`,t?void 0:"i");return function(o){return typeof o!="string"?!1:s.test(o)}}function Nr(t,e){if(typeof e!="object"||e.hasOwnProperty("$in")||e.hasOwnProperty("in"))return e;const n=t["checked-data-type"]==="date";if(e.hasOwnProperty("$gt"))return{$comparator:!0,$op:n?function(s){return new Date(s[2])>new Date(e.$gt)}:function(s){return s[2]>e.$gt}};if(e.hasOwnProperty("$gte"))return{$comparator:!0,$op:n?function(s){return new Date(s[2])>=new Date(e.$gte)}:function(s){return s[2]>=e.$gte}};if(e.hasOwnProperty("$lt"))return{$comparator:!0,$op:n?function(s){return new Date(s[2])<new Date(e.$lt)}:function(s){return s[2]<e.$lt}};if(e.hasOwnProperty("$lte"))return{$comparator:!0,$op:n?function(s){return new Date(s[2])<=new Date(e.$lte)}:function(s){return s[2]<=e.$lte}};if(e.hasOwnProperty("$like")){const r=Qt(!0,e.$like);return{$comparator:!0,$op:function(i){return r(i[2])}}}if(e.hasOwnProperty("$ilike")){const r=Qt(!1,e.$ilike);return{$comparator:!0,$op:function(i){return r(i[2])}}}return e}function Lr(t,e,n,r,s,i){const o=te(e,n,s),a=Nt(e,n,s),c=o||a;if(!c)throw new ne(`No attr for etype = ${n} label = ${s}`);if(i!=null&&i.hasOwnProperty("$isNull")){const u=te(e,n,"id");if(!u)throw new ne(`No attr for etype = ${n} label = id`);return[t(n,r),u.id,{$isNull:{attrId:c.id,isNull:i.$isNull,reverse:!o}},le("time")]}return o?[t(n,r),c.id,Nr(c,i),le("time")]:[i,c.id,t(n,r),le("time")]}function qr(t,e,n,r,s){const[i,o,a]=s.reduce((c,u)=>{const[f,l,d]=c,[h,p,b]=Wt(t,e,f,l,u);return[h,p,[...d,b]]},[n,r,[]]);return[i,o,a]}function Ge(t,e,n,r,s,i){const o=s.slice(0,s.length-1),a=s[s.length-1],[c,u,f]=qr(t,e,n,r,o),l=Lr(t,e,c,u,a,i);return f.concat([l])}function Fr(t,e){return e?[e].concat(t):t}function zr([t,e]){return t==="or"&&Array.isArray(e)}function Vr([t,e]){return t==="and"&&Array.isArray(e)}function Wr(t,e,n){return(r,s)=>{const i=t(r,s);return e==i?i:`${i}-${n}`}}function Bt(t,e,n,r,s,i){const o=t(r,s),a=i.map((c,u)=>{const f=Wr(t,o,u);return Ht(f,n,r,s,c)});return{[e]:{patterns:a,joinSym:o}}}function Qr(t){const e=[];for(let n=1;n<=t.length;n++)e.push(t.slice(0,n));return e}function Jt(t,e,n,r,s){return Qr(s).map(i=>Ge(t,e,n,r,i,{$isNull:!0}))}function Ht(t,e,n,r,s){return Object.entries(s).flatMap(([i,o])=>{if(zr([i,o]))return Bt(t,"or",e,n,r,o);if(Vr([i,o]))return Bt(t,"and",e,n,r,o);if(i==="$entityIdStartsWith")return[];const a=i.split(".");if(o!=null&&o.hasOwnProperty("$not")){const c=Ge(t,e,n,r,a,o),u=Jt(t,e,n,r,a);return[{or:{patterns:[c,...u],joinSym:t(n,r)}}]}return o!=null&&o.hasOwnProperty("$isNull")&&o.$isNull===!0&&a.length>1?[{or:{patterns:Jt(t,e,n,r,a),joinSym:t(n,r)}}]:Ge(t,e,n,r,a,o)})}function Br(t,e,n,r){const s=me;return r?Ht(s,t,e,n,r).concat(Vt(s,t,e,n)):Vt(s,t,e,n)}function Jr(t,e,n){return[t(e,n),t("time",n)]}function Hr(t,e,n,r,s,i){const[o,a,c,u,f]=Wt(t,e,n,r,s),l=$r(c,t(n,r),i);return[o,a,l,u,f]}function Kr(t,e,{etype:n,level:r,form:s},i){const o=Object.keys(s).filter(a=>a!=="$");return o.length?Object.entries(i).map(function([c,u]){return o.map(function(d){var p,b,w;const h=!!(e.cardinalityInference&&((w=(b=(p=e.linkIndex)==null?void 0:p[n])==null?void 0:b[d])!=null&&w.isSingular));try{const[_,g,O]=Hr(t,e,n,r,d,c),j=Kt(e,{etype:_,level:g,form:s[d],join:O}),S=h?j[0]:j;return{[d]:S}}catch(_){if(_ instanceof ne)return{[d]:h?void 0:[]};throw _}}).reduce(function(d,h){return{...d,...h}},u)}):Object.values(i)}function Se([t,e],[n,r]){return e===r||e==null&&r==null?Rr(t,n):r==null?1:e==null?-1:e>r?1:-1}function Ye(t){return t==null?t:new Date(t).getTime()}function Gr(t,e,n,r){var h;const[s,i,o,a]=t,c=n==="desc"?1:-1;if(((h=e["forward-identity"])==null?void 0:h[2])==="id")return Se(r,[s,a])===c;const[u,f]=r,l=e["checked-data-type"]==="date"?Ye(f):f,d=e["checked-data-type"]==="date"?Ye(o):o;return Se([u,l],[s,d])===c}function Yr(t,e){const n=e[1];return t.attrs[n]}function Xr(t,e,n){const r=Object.keys(n)[0];return te(t,e,r)}function Zr(t,e,n,r){if(n)return Yr(t,n);if(r)return Xr(t,e,r)}function es(t,e,n){var s,i;if(!Array.isArray(n.fields))return pr(t,e);const r=new Map;for(const o of n.fields){const a=te(t,e,o),c=(s=a==null?void 0:a["forward-identity"])==null?void 0:s[2];c&&Ve(a)&&r.set(c,a)}if(!r.has("id")){const o=te(t,e,"id"),a=(i=o==null?void 0:o["forward-identity"])==null?void 0:i[2];a&&r.set(a,o)}return r}function ts(t,e,n,r,s,i){var l;let o=Ar(t,i);const a=r==null?void 0:r["start-cursor"],c=Zr(t,e,a,s);if(c&&((l=c==null?void 0:c["forward-identity"])==null?void 0:l[2])!=="id"){const d=c["checked-data-type"]==="date",h=c.id;o=o.map(([p])=>{var w,_,g,O,j;let b=(j=(O=(g=(_=(w=t.eav.get(p))==null?void 0:w.get(h))==null?void 0:_.values())==null?void 0:g.next())==null?void 0:O.value)==null?void 0:j[2];return d&&(b=Ye(b)),[p,b]})}o.sort(n==="asc"?function(h,p){return Se(h,p)}:function(h,p){return Se(p,h)});let u={};const f=es(t,e,i);for(const d of o){const[h]=d;if(u[h]||a&&c&&Gr(a,c,n,d))continue;const p=hr(t,f,h);p&&(u[h]=p)}return u}function ns(t){var n;const e=(n=t.$)==null?void 0:n.order;return e&&e[Object.keys(e)[0]]||"asc"}function rs(t,{etype:e,level:n,form:r,join:s,pageInfo:i}){var b,w,_,g,O,j,S,R,I;const o=((b=r.$)==null?void 0:b.limit)||((w=r.$)==null?void 0:w.first)||((_=r.$)==null?void 0:_.last),a=(g=r.$)==null?void 0:g.offset,c=(O=r.$)==null?void 0:O.before,u=(j=r.$)==null?void 0:j.after,f=(S=r.$)==null?void 0:S.order,l=(R=r.$)==null?void 0:R.fields;if((a||c||u)&&(!i||!i["start-cursor"]))return[];const d=Fr(Br(t,e,n,(I=r.$)==null?void 0:I.where),s),h=Jr(me,e,n),p=ts(t,e,ns(r),i,f,{where:d,find:h,fields:l});if(o!=null){const W=Object.entries(p);return W.length<=o?p:Object.fromEntries(W.slice(0,o))}return p}function ss(t,e){try{return rs(t,e)}catch(n){if(n instanceof ne)return{};throw n}}function Kt(t,e){const n=ss(t,e);return Kr(me,t,e,n)}function is(t){const e={};for(const[n,r]of Object.entries(t))e[n]={startCursor:r["start-cursor"],endCursor:r["end-cursor"],hasNextPage:r["has-next-page?"],hasPreviousPage:r["has-previous-page?"]};return e}function os({store:t,pageInfo:e,aggregate:n},r){const i={data:Object.keys(r).reduce(function(a,c){return n!=null&&n[c]||c==="$$ruleParams"||(a[c]=Kt(t,{etype:c,form:r[c],level:0,pageInfo:e==null?void 0:e[c]})),a},{})};return e&&(i.pageInfo=is(e)),n&&(i.aggregate=n),i}function as(){const e={__etype:1,__ops:1,create:1,update:1,link:1,unlink:1,delete:1,merge:1,ruleParams:1};return new Set(Object.keys(e))}const cs=as();function Xe(t,e,n){const r={__etype:t,__ops:n};return new Proxy(r,{get:(s,i)=>{if(i==="__ops")return n;if(i==="__etype")return t;if(cs.has(i))return(o,a)=>Xe(t,e,[...n,a?[i,t,e,o,a]:[i,t,e,o]])}})}function us(t,e){return`lookup__${t}__${JSON.stringify(e)}`}function Ze(t){return t.startsWith("lookup__")}function Gt(t){const[e,n,...r]=t.split("__");return[n,JSON.parse(r.join("__"))]}function fs(t){return new Proxy({__etype:t},{get(e,n){if(n==="__etype")return t;const r=n;return Ze(r)?Xe(t,Gt(r),[]):Xe(t,r,[])}})}function et(){return new Proxy({},{get(t,e){return fs(e)}})}const ls=et();function Yt(t){return t.__ops}function ds(t,e){const{attrIdMap:n,refSwapAttrIds:r}=t,s=[];for(const o of e){const a=n[o];if(a)s.push(a);else if(Array.isArray(o)&&o.length==2&&n[o[0]]){const[c,u]=o;s.push([n[c],u])}else s.push(o)}const[i]=e;if((i==="add-triple"||i==="retract-triple")&&r.has(e[2])){const o=s[1];s[1]=s[3],s[3]=o}return s}function T(t,e,n){return Object.values(t).find(r=>{const[s,i,o]=r["forward-identity"];return i===e&&o===n})}function Z(t,e,n){return Object.values(t).find(r=>{const s=r["reverse-identity"];if(!s)return!1;const[i,o,a]=s;return o===e&&a===n})}function hs(t){if(Array.isArray(t))return t;const e=Object.entries(t);if(e.length!==1)throw new Error("lookup must be an object with a single unique attr and value.");return e[0]}function tt(t,e,n){return n.indexOf(".")!==-1&&!T(t,e,n)}function nt(t){const[e,n,...r]=t.split(".");if(r.length>0||n!=="id")throw new Error(`${t} is not a valid lookup attribute.`);return e}function ps(t,e,n){if(!tt(t,e,n))return T(t,e,n);const r=nt(n),s=T(t,e,r)||Z(t,e,r);if(s&&s["value-type"]!=="ref")throw new Error(`${n} does not reference a valid link attribute.`);return s}function rt(t){return typeof t=="string"&&!Ze(t)?null:typeof t=="string"&&Ze(t)?Gt(t):hs(t)}function U(t,e,n){const r=rt(n);if(r===null)return n;const[s,i]=r,o=ps(t,e,s);if(!o||!o["unique?"])throw new Error(`${s} is not a unique attribute.`);return[o.id,i]}function Xt(t,e,n,r){const s=U(t,e,n);return Array.isArray(s)?[["add-triple",s,T(t,e,"id").id,s]].concat(r):r}function ys({attrs:t},[e,n,r]){const s=Object.entries(r).flatMap(([i,o])=>{const a=Array.isArray(o)?o:[o],c=T(t,e,i),u=Z(t,e,i);return a.map(f=>c?["add-triple",U(t,e,n),c.id,U(t,c["reverse-identity"][1],f)]:["add-triple",U(t,u["forward-identity"][1],f),u.id,U(t,e,n)])});return Xt(t,e,n,s)}function _s({attrs:t},[e,n,r]){const s=Object.entries(r).flatMap(([i,o])=>{const a=Array.isArray(o)?o:[o],c=T(t,e,i),u=Z(t,e,i);return a.map(f=>c?["retract-triple",U(t,e,n),c.id,U(t,c["reverse-identity"][1],f)]:["retract-triple",U(t,u["forward-identity"][1],f),u.id,U(t,e,n)])});return Xt(t,e,n,s)}function bs(t,e,n){if(Array.isArray(n)){const[r,s]=n;for(const i of t||[]){const o=i==null?void 0:i.aev.get(r);if(o){for(const[a,c,u]of D(o,2))if(u===s)return!0}}}else for(const r of t||[]){const s=r==null?void 0:r.eav.get(n);if(s){for(const i of s.keys())if(r.attrs[i]["forward-identity"][1]==e)return!0}}return!1}function Zt({stores:t,attrs:e},[n,r,s,i]){return(i==null?void 0:i.upsert)===!1?{mode:"update"}:(i==null?void 0:i.upsert)===!0?null:bs(t,n,r)?{mode:"update"}:null}function ws(t,e){const{attrs:n}=t,[r,s,i,o]=e,a=Fe(i),c=U(n,r,s);return[["id",c]].concat(Object.entries(a)).map(([f,l])=>{const d=T(n,r,f);return d["checked-data-type"]==="date"&&t.useDateObjects&&(l=be(l)),["add-triple",c,d.id,l,{mode:"create"}]})}function gs(t,e){const{attrs:n}=t,[r,s,i,o]=e,a=Fe(i),c=U(n,r,s),u=Zt(t,[r,c,i,o]);return[["id",c]].concat(Object.entries(a)).map(([l,d])=>{const h=T(n,r,l);return h["checked-data-type"]==="date"&&t.useDateObjects&&(d=be(d)),["add-triple",c,h.id,d,...u?[u]:[]]})}function ms({attrs:t},[e,n]){return[["delete-entity",U(t,e,n),e]]}function Ss(t,e){const{attrs:n}=t,[r,s,i,o]=e,a=Fe(i),c=U(n,r,s),u=Zt(t,[r,c,i,o]),f=Object.entries(a).map(([d,h])=>{const p=T(n,r,d);return["deep-merge-triple",c,p.id,h,...u?[u]:[]]});return[["add-triple",c,T(n,r,"id").id,c,...u?[u]:[]]].concat(f)}function Os({attrs:t},[e,n,r]){return[["rule-params",U(t,e,n),e,r]]}function Ms(t){const[e,n,r,s,i]=t;if(!s)return t;const o={...s};return delete o.id,[e,n,r,o,...i?[i]:[]]}function Ps(t,e){const[n,...r]=Ms(e);switch(n){case"merge":return Ss(t,r);case"create":return ws(t,r);case"update":return gs(t,r);case"link":return ys(t,r);case"unlink":return _s(t,r);case"delete":return ms(t,r);case"ruleParams":return Os(t,r);default:throw new Error(`unsupported action ${n}`)}}function vs(t){switch(t){case"string":case"date":case"boolean":case"number":return t;default:return}}function As(t,e,n){var a,c;const r=(c=(a=t.entities[e])==null?void 0:a.attrs)==null?void 0:c[n];if(n==="id")return null;if(!r)throw new Error(`${e}.${n} does not exist in your schema`);const{unique:s,indexed:i}=r==null?void 0:r.config,o=vs(r==null?void 0:r.valueType);return{"index?":i,"unique?":s,"checked-data-type":o}}function st(t,e,n,r){const s=t?As(t,e,n):null,i=k(),a=[k(),e,n];return{id:i,"forward-identity":a,"value-type":"blob",cardinality:"one","unique?":!1,"index?":!1,isUnsynced:!0,...s||{},...r||{}}}function Cs(t,e,n){return Object.values(t.links).find(s=>s.forward.on===e&&s.forward.label===n||s.reverse.on===e&&s.reverse.label===n)}function ks(t,e,n){const r=Cs(t,e,n);if(!r)throw new Error(`Couldn't find the link ${e}.${n} in your schema`);const{forward:s,reverse:i}=r;return{"forward-identity":[k(),s.on,s.label],"reverse-identity":[k(),i.on,i.label],cardinality:s.has==="one"?"one":"many","unique?":i.has==="one","on-delete":s.onDelete,"on-delete-reverse":i.onDelete}}function en(t,e,n,r){const s=t?ks(t,e,n):null,i=k(),o=[k(),e,n],a=[k(),n,e];return{id:i,"forward-identity":o,"reverse-identity":a,"value-type":"ref",cardinality:"many","unique?":!1,"index?":!1,isUnsynced:!0,...s||{},...r||{}}}const Ts=new Set(["create","update","merge","link","unlink"]),Is=new Set(["link","unlink"]),Es=new Set(["create","update","merge"]),js=new Set(["link","unlink","create","update","merge","delete","ruleParams"]),it={"unique?":!0,"index?":!0},Rs={...it,cardinality:"one"};function xs(t){const e=[],[n,r,s,i]=t;if(!js.has(n))return e;const o=rt(s);if(o&&e.push({etype:r,lookupPair:o}),n==="link")for(const[a,c]of Object.entries(i)){const u=Array.isArray(c)?c:[c];for(const f of u){const l=rt(f);l&&e.push({etype:r,lookupPair:l,linkLabel:a})}}return e}function Ds({attrs:t,schema:e},n){var u,f;const[r,s,i]=[new Set,{...t},[]];function o(l){s[l.id]=l,i.push(["add-attr",l]),r.add(l.id)}function a(l){l!=null&&l.isUnsynced&&!r.has(l.id)&&(i.push(["add-attr",l]),r.add(l.id))}function c(l,d){const h=T(s,l,d),p=Z(s,l,d);a(h),a(p),!h&&!p&&o(en(e,l,d,Rs))}for(const l of n)for(const{etype:d,lookupPair:h,linkLabel:p}of xs(l)){const b=h[0];if(p){c(d,p);const w=T(s,d,p),_=Z(s,d,p);a(w),a(_);const g=((u=w==null?void 0:w["reverse-identity"])==null?void 0:u[1])||((f=_==null?void 0:_["forward-identity"])==null?void 0:f[1])||p;if(tt(s,g,b))c(g,nt(b));else{const O=T(s,g,b);O||o(st(e,g,b,it)),a(O)}}else if(tt(s,d,b))c(d,nt(b));else{const w=T(s,d,b);w||o(st(e,d,b,it)),a(w)}}for(const l of n){const[d,h,p,b]=l;if(Ts.has(d)){const w=Object.keys(b);w.push("id");for(const _ of w){const g=T(s,h,_);if(a(g),Es.has(d)&&(g||o(st(e,h,_,_==="id"?{"unique?":!0}:null))),Is.has(d)){const O=Z(s,h,_);!g&&!O&&o(en(e,h,_)),a(O)}}}}return[s,i]}function Us(t,e){const r=(Array.isArray(e)?e:[e]).flatMap(c=>Yt(c)),[s,i]=Ds(t,r),o={...t,attrs:s},a=r.flatMap(c=>Ps(o,c));return[...i,...a]}class ot{constructor(e){this.dbName=e,this._storeName="kv",this._dbPromise=this._init()}_init(){return new Promise((e,n)=>{const r=indexedDB.open(this.dbName,1);r.onerror=s=>{n(s)},r.onsuccess=s=>{e(s.target.result)},r.onupgradeneeded=s=>{s.target.result.createObjectStore(this._storeName)}})}async getItem(e){const n=await this._dbPromise;return new Promise((r,s)=>{const a=n.transaction([this._storeName],"readonly").objectStore(this._storeName).get(e);a.onerror=c=>{s(c)},a.onsuccess=c=>{a.result?r(a.result):r(null)}})}async setItem(e,n){const r=await this._dbPromise;return new Promise((s,i)=>{const c=r.transaction([this._storeName],"readwrite").objectStore(this._storeName).put(n,e);c.onerror=u=>{i(u)},c.onsuccess=u=>{s()}})}}class at{static async getIsOnline(){return navigator.onLine}static listen(e){const n=()=>{e(!0)},r=()=>{e(!1)};return addEventListener("online",n),addEventListener("offline",r),()=>{removeEventListener("online",n),removeEventListener("offline",r)}}}class Oe extends Error{constructor(e){var s;const n=((s=e.body)==null?void 0:s.message)||`API Error (${e.status})`;super(n);const r=new.target.prototype;Object.setPrototypeOf&&Object.setPrototypeOf(this,r),Error.captureStackTrace&&Error.captureStackTrace(this,Oe),this.name="InstantAPIError",this.status=e.status,this.body=e.body}get[Symbol.toStringTag](){return"InstantAPIError"}}async function V(t,e){const n=await fetch(t,e),r=await n.json();return n.status===200?Promise.resolve(r):Promise.reject(new Oe({status:n.status,body:r}))}function $s({apiURI:t,appId:e,email:n}){return V(`${t}/runtime/auth/send_magic_code`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({"app-id":e,email:n})})}async function Ns({apiURI:t,appId:e,email:n,code:r}){return await V(`${t}/runtime/auth/verify_magic_code`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({"app-id":e,email:n,code:r})})}async function Ls({apiURI:t,appId:e,refreshToken:n}){return await V(`${t}/runtime/auth/verify_refresh_token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({"app-id":e,"refresh-token":n})})}async function tn({apiURI:t,appId:e,code:n,codeVerifier:r}){return await V(`${t}/runtime/oauth/token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({app_id:e,code:n,code_verifier:r})})}async function qs({apiURI:t,appId:e,nonce:n,idToken:r,clientName:s,refreshToken:i}){return await V(`${t}/runtime/oauth/id_token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({app_id:e,nonce:n,id_token