@instantdb/react 0.22.133 → 0.22.134

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.
@@ -1,10 +1,10 @@
1
- (function(j,A){typeof exports=="object"&&typeof module<"u"?A(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],A):(j=typeof globalThis<"u"?globalThis:j||self,A(j.instantReact={},j.React))})(this,function(j,A){"use strict";var Ou=Object.defineProperty;var Au=(j,A,L)=>A in j?Ou(j,A,{enumerable:!0,configurable:!0,writable:!0,value:L}):j[A]=L;var p=(j,A,L)=>Au(j,typeof A!="symbol"?A+"":A,L);function L(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=L(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=L(s);e^=parseInt(i,16),e*=16777619,e=e>>>0;const o=L(t[s]);e^=parseInt(o,16),e*=16777619,e=e>>>0}return e.toString(16)}return L(String(t))}const F={Remove:"remove",Replace:"replace",Add:"add"},zn=Symbol.for("__MUTATIVE_PROXY_DRAFT__"),Ws=Symbol("__MUTATIVE_RAW_RETURN_SYMBOL__"),ut=Symbol.iterator,re={mutable:"mutable",immutable:"immutable"},$t={};function We(t,e){return t instanceof Map?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function qn(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 Ut(t){return Object.getPrototypeOf(t)===Set.prototype}function Lt(t){return Object.getPrototypeOf(t)===Map.prototype}function se(t){var e;return(e=t.copy)!==null&&e!==void 0?e:t.original}function me(t){return!!P(t)}function P(t){return typeof t!="object"?null:t==null?void 0:t[zn]}function Ft(t){var e;const n=P(t);return n?(e=n.copy)!==null&&e!==void 0?e:n.original:t}function ae(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,re))===re.immutable||typeof n=="function")}function Vn(t,e=[]){if(Object.hasOwnProperty.call(t,"key")){const n=t.parent.copy,r=P(pe(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||We(n,i)))return null;e.push(i)}if(t.parent)return Vn(t.parent,e);e.reverse();try{zs(t.copy,e)}catch{return null}return e}function Se(t){return Array.isArray(t)?1:t instanceof Map?2:t instanceof Set?3:0}function pe(t,e){return Se(t)===2?t.get(e):t[e]}function ze(t,e,n){Se(t)===2?t.set(e,n):t[e]=n}function Nt(t,e){const n=P(t);return(n?se(n):t)[e]}function ye(t,e){return t===e?t!==0||1/t===1/e:t!==t&&e!==e}function Kt(t){if(t)for(;t.finalities.revoke.length>0;)t.finalities.revoke.pop()()}function ve(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 zs(t,e){for(let n=0;n<e.length-1;n+=1){const r=e[n];if(t=pe(Se(t)===3?Array.from(t):t,r),typeof t!="object")throw new Error(`Cannot resolve patch at '${e.join("/")}'.`)}return t}function qs(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 Vs=Object.prototype.propertyIsEnumerable;function Bn(t,e){let n;if(Array.isArray(t))return Array.prototype.concat.call(t);if(t instanceof Set){if(!Ut(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(!Lt(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,re),n!==void 0)&&n!==re.mutable){if(n===re.immutable)return qs(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=>{Vs.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 Q(t){t.copy||(t.copy=Bn(t.original,t.options))}function qe(t){if(!ae(t))return Ft(t);if(Array.isArray(t))return t.map(qe);if(t instanceof Map){const n=Array.from(t.entries()).map(([r,s])=>[r,qe(s)]);if(!Lt(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(qe);if(!Ut(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]=qe(t[n]);return e}function lt(t){return me(t)?qe(t):t}function de(t){var e;t.assignedMap=(e=t.assignedMap)!==null&&e!==void 0?e:new Map,t.operated||(t.operated=!0,t.parent&&de(t.parent))}function Gn(){throw new Error("Cannot modify frozen object")}function Pe(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 l=r[u];return typeof c=="object"&&(l instanceof Map||l instanceof Set)?Array.from(l.keys()).indexOf(c):c}).join("/")}`);r.push(o),s.push(e)}else r.push(o)}if(Object.isFrozen(t)||me(t)){r.pop(),s.pop();return}switch(Se(t)){case 2:for(const[a,c]of t)Pe(a,a,n,r,s),Pe(c,a,n,r,s);t.set=t.clear=t.delete=Gn;break;case 3:for(const a of t)Pe(a,a,n,r,s);t.add=t.clear=t.delete=Gn;break;case 1:Object.freeze(t);let o=0;for(const a of t)Pe(a,o,n,r,s),o+=1;break;default:Object.freeze(t),Object.keys(t).forEach(a=>{const c=t[a];Pe(c,a,n,r,s)})}r.pop(),s.pop()}function Wt(t,e){const n=Se(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 Qn(t,e,n){if(me(t)||!ae(t,n)||e.has(t)||Object.isFrozen(t))return;const r=t instanceof Set,s=r?new Map:void 0;if(e.add(t),Wt(t,(i,o)=>{var a;if(me(o)){const c=P(o);Q(c);const u=!((a=c.assignedMap)===null||a===void 0)&&a.size||c.operated?c.copy:c.original;ze(r?s:t,i,u)}else Qn(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 Bs(t,e){const n=t.type===3?t.setMap:t.copy;t.finalities.revoke.length>1&&t.assignedMap.get(e)&&n&&Qn(pe(n,e),t.finalities.handledSet,t.options)}function zt(t){t.type===3&&t.copy&&(t.copy.clear(),t.setMap.forEach(e=>{t.copy.add(Ft(e))}))}function qt(t,e,n,r){if(t.operated&&t.assignedMap&&t.assignedMap.size>0&&!t.finalized){if(n&&r){const i=Vn(t);i&&e(t,i,n,r)}t.finalized=!0}}function Vt(t,e,n,r){const s=P(n);s&&(s.callbacks||(s.callbacks=[]),s.callbacks.push((i,o)=>{var a;const c=t.type===3?t.setMap:t.copy;if(ye(pe(c,e),n)){let u=s.original;s.copy&&(u=s.copy),zt(t),qt(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)),ze(c,e,u)}}),t.options.enableAutoFreeze&&s.finalities!==t.finalities&&(t.options.enableAutoFreeze=!1)),ae(n,t.options)&&t.finalities.draft.push(()=>{const i=t.type===3?t.setMap:t.copy;ye(pe(i,e),n)&&Bs(t,e)})}function Gs(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 l=e.concat([u]),f=ve(l,s);n.push({op:F.Replace,path:f,value:lt(c[u])}),r.push({op:F.Replace,path:f,value:lt(i[u])})}for(let u=i.length;u<c.length;u+=1){const l=e.concat([u]),f=ve(l,s);n.push({op:F.Add,path:f,value:lt(c[u])})}if(i.length<c.length){const{arrayLengthAssignment:u=!0}=a.enablePatches;if(u){const l=e.concat(["length"]),f=ve(l,s);r.push({op:F.Replace,path:f,value:i.length})}else for(let l=c.length;i.length<l;l-=1){const f=e.concat([l-1]),h=ve(f,s);r.push({op:F.Remove,path:h})}}}function Qs({original:t,copy:e,assignedMap:n},r,s,i,o){n.forEach((a,c)=>{const u=pe(t,c),l=lt(pe(e,c)),f=a?We(t,c)?F.Replace:F.Add:F.Remove;if(ye(u,l)&&f===F.Replace)return;const h=r.concat(c),y=ve(h,o);s.push(f===F.Remove?{op:f,path:y}:{op:f,path:y,value:l}),i.push(f===F.Add?{op:F.Remove,path:y}:f===F.Remove?{op:F.Add,path:y,value:u}:{op:F.Replace,path:y,value:u})})}function Hs({original:t,copy:e},n,r,s,i){let o=0;t.forEach(a=>{if(!e.has(a)){const c=n.concat([o]),u=ve(c,i);r.push({op:F.Remove,path:u,value:a}),s.unshift({op:F.Add,path:u,value:a})}o+=1}),o=0,e.forEach(a=>{if(!t.has(a)){const c=n.concat([o]),u=ve(c,i);r.push({op:F.Add,path:u,value:a}),s.unshift({op:F.Remove,path:u,value:a})}o+=1})}function Ve(t,e,n,r){const{pathAsArray:s=!0}=t.options.enablePatches;switch(t.type){case 0:case 2:return Qs(t,e,n,r,s);case 1:return Gs(t,e,n,r,s);case 3:return Hs(t,e,n,r,s)}}const ft=(t,e,n=!1)=>{if(typeof t=="object"&&t!==null&&(!ae(t,e)||n))throw new Error("Strict mode: Mutable data cannot be accessed directly, please use 'unsafe(callback)' wrap.")},Bt={get size(){return se(P(this)).size},has(t){return se(P(this)).has(t)},set(t,e){const n=P(this),r=se(n);return(!r.has(t)||!ye(r.get(t),e))&&(Q(n),de(n),n.assignedMap.set(t,!0),n.copy.set(t,e),Vt(n,t,e,Ve)),this},delete(t){if(!this.has(t))return!1;const e=P(this);return Q(e),de(e),e.original.has(t)?e.assignedMap.set(t,!1):e.assignedMap.delete(t),e.copy.delete(t),!0},clear(){const t=P(this);if(this.size){Q(t),de(t),t.assignedMap=new Map;for(const[e]of t.original)t.assignedMap.set(e,!1);t.copy.clear()}},forEach(t,e){const n=P(this);se(n).forEach((r,s)=>{t.call(e,this.get(s),s,this)})},get(t){var e,n;const r=P(this),s=se(r).get(t),i=((n=(e=r.options).mark)===null||n===void 0?void 0:n.call(e,s,re))===re.mutable;if(r.options.strict&&ft(s,r.options,i),i||r.finalized||!ae(s,r.options)||s!==r.original.get(t))return s;const o=$t.createDraft({original:s,parentDraft:r,key:t,finalities:r.finalities,options:r.options});return Q(r),r.copy.set(t,o),o},keys(){return se(P(this)).keys()},values(){const t=this.keys();return{[ut]:()=>this.values(),next:()=>{const e=t.next();return e.done?e:{done:!1,value:this.get(e.value)}}}},entries(){const t=this.keys();return{[ut]:()=>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]}}}},[ut](){return this.entries()}},Js=Reflect.ownKeys(Bt),Hn=(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=P(a),u=((s=(r=t.options).mark)===null||s===void 0?void 0:s.call(r,a,re))===re.mutable;if(t.options.strict&&ft(o,t.options,u),!u&&!c&&ae(o,t.options)&&!t.finalized&&t.original.has(o)){const l=$t.createDraft({original:o,parentDraft:t,key:o,finalities:t.finalities,options:t.options});t.setMap.set(o,l),a=l}else c&&(a=c.proxy);return{done:!1,value:n?a:[a,a]}},dt={get size(){return P(this).setMap.size},has(t){const e=P(this);if(e.setMap.has(t))return!0;Q(e);const n=P(t);return!!(n&&e.setMap.has(n.original))},add(t){const e=P(this);return this.has(t)||(Q(e),de(e),e.assignedMap.set(t,!0),e.setMap.set(t,t),Vt(e,t,t,Ve)),this},delete(t){if(!this.has(t))return!1;const e=P(this);Q(e),de(e);const n=P(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=P(this);Q(t),de(t);for(const e of t.original)t.assignedMap.set(e,!1);t.setMap.clear()},values(){const t=P(this);Q(t);const e=t.setMap.keys();return{[Symbol.iterator]:()=>this.values(),next:Hn(t,e,{isValuesIterator:!0})}},entries(){const t=P(this);Q(t);const e=t.setMap.keys();return{[Symbol.iterator]:()=>this.entries(),next:Hn(t,e,{isValuesIterator:!1})}},keys(){return this.values()},[ut](){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(dt,{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 Ys=Reflect.ownKeys(dt),Jn=new WeakSet,Yn={get(t,e,n){var r,s;const i=(r=t.copy)===null||r===void 0?void 0:r[e];if(i&&Jn.has(i))return i;if(e===zn)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,re),o===re.mutable)return t.options.strict&&ft(u,t.options,!0),u}const a=se(t);if(a instanceof Map&&Js.includes(e)){if(e==="size")return Object.getOwnPropertyDescriptor(Bt,"size").get.call(t.proxy);const u=Bt[e];if(u)return u.bind(t.proxy)}if(a instanceof Set&&Ys.includes(e)){if(e==="size")return Object.getOwnPropertyDescriptor(dt,"size").get.call(t.proxy);const u=dt[e];if(u)return u.bind(t.proxy)}if(!We(a,e)){const u=qn(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&&ft(c,t.options),t.finalized||!ae(c,t.options))return c;if(c===Nt(t.original,e)){if(Q(t),t.copy[e]=Gt({original:t.original[e],parentDraft:t,key:t.type===1?Number(e):e,finalities:t.finalities,options:t.options}),typeof o=="function"){const u=P(t.copy[e]);return Q(u),de(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=qn(se(t),e);if(i!=null&&i.set)return i.set.call(t.proxy,n),!0;const o=Nt(se(t),e),a=P(o);return a&&ye(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):(ye(n,o)&&(n!==void 0||We(t.original,e))||(Q(t),de(t),We(t.original,e)&&ye(n,t.original[e])?t.assignedMap.delete(e):t.assignedMap.set(e,!0),t.copy[e]=n,Vt(t,e,n,Ve)),!0)},has(t,e){return e in se(t)},ownKeys(t){return Reflect.ownKeys(se(t))},getOwnPropertyDescriptor(t,e){const n=se(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?Yn.set.call(this,t,e,void 0,t.proxy):(Nt(t.original,e)!==void 0||e in t.original?(Q(t),de(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 Gt(t){const{original:e,parentDraft:n,key:r,finalities:s,options:i}=t,o=Se(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,Yn);if(s.revoke.push(u),Jn.add(c),a.proxy=c,n){const l=n;l.finalities.draft.push((f,h)=>{var y,b;const g=P(c);let w=l.type===3?l.setMap:l.copy;const S=pe(w,r),_=P(S);if(_){let m=_.original;_.operated&&(m=Ft(S)),zt(_),qt(_,Ve,f,h),l.options.enableAutoFreeze&&(l.options.updatedValues=(y=l.options.updatedValues)!==null&&y!==void 0?y:new WeakMap,l.options.updatedValues.set(m,_.original)),ze(w,r,m)}(b=g.callbacks)===null||b===void 0||b.forEach(m=>{m(f,h)})})}else{const l=P(c);l.finalities.draft.push((f,h)=>{zt(l),qt(l,Ve,f,h)})}return c}$t.createDraft=Gt;function Zs(t,e,n,r,s){var i;const o=P(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&&Kt(o),s&&Pe(u,u,o==null?void 0:o.options.updatedValues),[u,n&&c?[{op:F.Replace,path:[],value:e[0]}]:n,r&&c?[{op:F.Replace,path:[],value:a}]:r]}function Xs(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,re))===re.mutable||!ae(t,e)?t:Gt({original:t,parentDraft:null,finalities:r,options:e});return[a,(c=[])=>{const[u,l,f]=Zs(a,c,s,i,e.enableAutoFreeze);return e.enablePatches?[u,l,f]:u}]}function Qt(t){const{rootDraft:e,value:n,useRawReturn:r=!1,isRoot:s=!0}=t;Wt(n,(i,o,a)=>{const c=P(o);if(c&&e&&c.finalities===e.finalities){t.isContainDraft=!0;const u=c.original;if(a instanceof Set){const l=Array.from(a);a.clear(),l.forEach(f=>a.add(i===f?u:f))}else ze(a,i,u)}else typeof o=="object"&&o!==null&&(t.value=o,t.isRoot=!1,Qt(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 Zn(t){var e;const n=P(t);if(!ae(t,n==null?void 0:n.options))return t;const r=Se(t);if(n&&!n.operated)return n.original;let s;function i(){s=r===2?Lt(t)?new Map(t):new(Object.getPrototypeOf(t)).constructor(t):r===3?Array.from(n.setMap.values()):Bn(t,n==null?void 0:n.options)}if(n){n.finalized=!0;try{i()}finally{n.finalized=!1}}else s=t;if(Wt(s,(o,a)=>{if(n&&ye(pe(n.original,o),a))return;const c=Zn(a);c!==a&&(s===t&&i(),ze(s,o,c))}),r===3){const o=(e=n==null?void 0:n.original)!==null&&e!==void 0?e:s;return Ut(o)?new Set(s):new(Object.getPrototypeOf(o)).constructor(s)}return s}function Xn(t){if(!me(t))throw new Error(`current() is only used for Draft, parameter: ${t}`);return Zn(t)}const ht=(t=>function e(n,r,s){var i,o,a;if(typeof n=="function"&&typeof r!="function")return function(E,...x){return e(E,V=>n.call(this,V,...x),r)};const c=n,u=r;let l=s;if(typeof r!="function"&&(l=r),l!==void 0&&Object.prototype.toString.call(l)!=="[object Object]")throw new Error(`Invalid options: ${l}, 'options' should be an object.`);l=Object.assign(Object.assign({},t),l);const f=me(c)?Xn(c):c,h=Array.isArray(l.mark)?(E,x)=>{for(const V of l.mark){if(typeof V!="function")throw new Error(`Invalid mark: ${V}, 'mark' should be a function.`);const J=V(E,x);if(J)return J}}:l.mark,y=(i=l.enablePatches)!==null&&i!==void 0?i:!1,b=(o=l.strict)!==null&&o!==void 0?o:!1,w={enableAutoFreeze:(a=l.enableAutoFreeze)!==null&&a!==void 0?a:!1,mark:h,strict:b,enablePatches:y};if(!ae(f,w)&&typeof f=="object"&&f!==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[S,_]=Xs(f,w);if(typeof r!="function"){if(!ae(f,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[S,_]}let m;try{m=u(S)}catch(E){throw Kt(P(S)),E}const k=E=>{const x=P(S);if(!me(E)){if(E!==void 0&&!ye(E,S)&&(x!=null&&x.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 J=E==null?void 0:E[Ws];if(J){const we=J[0];return w.strict&&typeof E=="object"&&E!==null&&Qt({rootDraft:x,value:E,useRawReturn:!0}),_([we])}if(E!==void 0)return typeof E=="object"&&E!==null&&Qt({rootDraft:x,value:E}),_([E])}if(E===S||E===void 0)return _([]);const V=P(E);if(w===V.options){if(V.operated)throw new Error("Cannot return a modified child draft.");return _([Xn(E)])}return _([E])};return m instanceof Promise?m.then(k,E=>{throw Kt(P(S)),E}):k(m)})();Object.prototype.constructor.toString();function er(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 tr(t,e){return Object.keys(t).length===Object.keys(e).length&&Object.keys(t).every(n=>e.hasOwnProperty(n)&&t[n]===e[n])}function pt(t,e){return typeof t!="object"||typeof e!="object"||t===null||e===null?t===e:er(t,e)?Object.keys(t).every(n=>pt(t[n],e[n])):!1}function Ht(t){if(!Be(t))return t;const e={};for(const[n,r]of Object.entries(t))r!==void 0&&(e[n]=r);return e}function nr(t,e){if(!Be(t)||!Be(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=Be(t[r])&&Be(e[r]);n[r]=s?nr(t[r],e[r]):e[r]}return n}function Be(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ei(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 rr(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 sr(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}sr(t[n],r),ti(t[n])&&delete t[n]}}function ti(t){return t&&Object.keys(t).length===0}const ir=/ZULU|YEKT|YEKST|YAPT|YAKT|YAKST|XJT|WGT|WGST|WFT|WETDST|WET|WDT|WAT|WAST|WAKT|WADT|VUT|VOLT|VLAT|VLAST|VET|UZT|UZST|UYT|UYST|UTC|UT|ULAT|ULAST|UCT|TVT|TRUT|TOT|TMT|TKT|TJT|TFT|TAHT|SGT|SCT|SAST|SADT|RET|PYT|PYST|PWT|PST|PONT|PMST|PMDT|PKT|PKST|PHT|PGT|PETT|PETST|PET|PDT|OMST|OMSST|NZT|NZST|NZDT|NUT|NST|NPT|NOVT|NOVST|NFT|NDT|MYT|MVT|MUT|MUST|MST|MSK|MSD|MPT|MMT|MHT|MEZ|METDST|MET|MESZ|MEST|MDT|MAWT|MART|MAGT|MAGST|LKT|LINT|LIGT|LHST|LHDT|KST|KRAT|KRAST|KOST|KGT|KGST|KDT|JST|JAYT|IST|IRT|IRKT|IRKST|IOT|IDT|ICT|HST|HKT|GYT|GMT|GILT|GFT|GET|GEST|GAMT|GALT|FNT|FNST|FKT|FKST|FJT|FJST|FET|EST|EGT|EGST|EETDST|EET|EEST|EDT|EAT|EAST|EASST|DDUT|DAVT|CXT|CST|COT|CLT|CLST|CKT|CHUT|CHAST|CHADT|CETDST|CET|CEST|CDT|CCT|CAST|CADT|BTT|BST|BRT|BRST|BRA|BOT|BORT|BNT|BDT|BDST|AZT|AZST|AZOT|AZOST|AWST|AWSST|AST|ART|ARST|ANAT|ANAST|AMT|AMST|ALMT|ALMST|AKST|AKDT|AFT|AEST|AESST|AEDT|ADT|ACWST|ACT|ACST|ACSST|ACDT$/,ni={ZULU:0,YEKT:18e3,YEKST:21600,YAPT:36e3,YAKT:32400,YAKST:32400,XJT:21600,WGT:-10800,WGST:-7200,WFT:43200,WETDST:3600,WET:0,WDT:32400,WAT:3600,WAST:25200,WAKT:43200,WADT:28800,VUT:39600,VOLT:10800,VLAT:36e3,VLAST:36e3,VET:-14400,UZT:18e3,UZST:21600,UYT:-10800,UYST:-7200,UTC:0,UT:0,ULAT:28800,ULAST:32400,UCT:0,TVT:43200,TRUT:36e3,TOT:46800,TMT:18e3,TKT:46800,TJT:18e3,TFT:18e3,TAHT:-36e3,SGT:28800,SCT:14400,SAST:7200,SADT:37800,RET:14400,PYT:-14400,PYST:-10800,PWT:32400,PST:-28800,PONT:39600,PMST:-10800,PMDT:-7200,PKT:18e3,PKST:21600,PHT:28800,PGT:36e3,PETT:43200,PETST:43200,PET:-18e3,PDT:-25200,OMST:21600,OMSST:21600,NZT:43200,NZST:43200,NZDT:46800,NUT:-39600,NST:-12600,NPT:20700,NOVT:25200,NOVST:25200,NFT:-12600,NDT:-9e3,MYT:28800,MVT:18e3,MUT:14400,MUST:18e3,MST:-25200,MSK:10800,MSD:14400,MPT:36e3,MMT:23400,MHT:43200,MEZ:3600,METDST:7200,MET:3600,MESZ:7200,MEST:7200,MDT:-21600,MAWT:18e3,MART:-34200,MAGT:39600,MAGST:39600,LKT:19800,LINT:50400,LIGT:36e3,LHST:37800,LHDT:37800,KST:32400,KRAT:25200,KRAST:25200,KOST:39600,KGT:21600,KGST:21600,KDT:36e3,JST:32400,JAYT:32400,IST:7200,IRT:12600,IRKT:28800,IRKST:28800,IOT:21600,IDT:10800,ICT:25200,HST:-36e3,HKT:28800,GYT:-14400,GMT:0,GILT:43200,GFT:-10800,GET:14400,GEST:14400,GAMT:-32400,GALT:-21600,FNT:-7200,FNST:-3600,FKT:-10800,FKST:-10800,FJT:43200,FJST:46800,FET:10800,EST:-18e3,EGT:-3600,EGST:0,EETDST:10800,EET:7200,EEST:10800,EDT:-14400,EAT:10800,EAST:-21600,EASST:-21600,DDUT:36e3,DAVT:25200,CXT:25200,CST:-21600,COT:-18e3,CLT:-14400,CLST:-10800,CKT:-36e3,CHUT:36e3,CHAST:45900,CHADT:49500,CETDST:7200,CET:3600,CEST:7200,CDT:-18e3,CCT:28800,CAST:34200,CADT:37800,BTT:21600,BST:3600,BRT:-10800,BRST:-7200,BRA:-10800,BOT:-14400,BORT:28800,BNT:28800,BDT:21600,BDST:7200,AZT:14400,AZST:14400,AZOT:-3600,AZOST:0,AWST:28800,AWSST:32400,AST:-14400,ART:-10800,ARST:-10800,ANAT:43200,ANAST:43200,AMT:-14400,AMST:14400,ALMT:21600,ALMST:25200,AKST:-32400,AKDT:-28800,AFT:16200,AEST:36e3,AESST:39600,AEDT:39600,ADT:-10800,ACWST:31500,ACT:-18e3,ACST:34200,ACSST:37800,ACDT:37800};function ri(t){return new Date(t)}function si(t){return new Date(t+"Z")}const ii=/^(\d+)[\./-](\d+)[\./-](\d+)$/;function oi(t){const e=t.match(ii);if(!e)return null;const[n,r,s,i]=e;return r<=0||s<=0||i<=0?null:r>999?new Date(Date.UTC(r,s-1,i,0,0,0,0)):new Date(Date.UTC(i,r-1,s,0,0,0,0))}function ai(t){const[e,n]=t.split(" ");return new Date(e+"T"+n+"Z")}function ci(t){const[e,n]=t.split(" ");return new Date(e+"T"+n+"Z")}function ui(t){return new Date(t)}function li(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 fi(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}function di(t){const e=/^(\d+)-(\d{1,2})-(\d{1,2})([ T])(.+)$/,n=t.match(e);if(n){const[,r,s,i,o,a]=n,c=s.padStart(2,"0"),u=i.padStart(2,"0"),l=`${r}-${c}-${u}T${a}`;return new Date(l)}return null}function hi(t){const[e,n]=t.split(", "),[r,s,i]=e.split("/").map(Number),o=n.match(/(\d{1,2}):(\d{2}):(\d{2}) (AM|PM)/);if(!o)throw new Error(`Unable to parse time from: ${t}`);let[,a,c,u,l]=o;return a=Number(a),c=Number(c),u=Number(u),l==="PM"&&a!==12?a+=12:l==="AM"&&a===12&&(a=0),new Date(Date.UTC(i,r-1,s,a,c,u))}function pi(t){switch(t){case"epoch":return new Date(0);case"infinity":case"-infinity":case"today":case"tomorrow":case"yesterday":return null}}function yi(t){const e=t.match(ir);if(!e)return null;const[n]=e,r=ni[n],s=new Date(t.replace(ir,"Z"));return new Date(s.getTime()-r*1e3)}const bi=[oi,ci,li,hi,ui,si,fi,ai,ri,pi,yi,di];function gi(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 bi){const n=gi(e,t);if(n)return n}return null}function _i(t){try{const e=JSON.parse(t);return typeof e=="string"?Jt(e):null}catch{return null}}function yt(t){if(t!==void 0){if(t===null)return null;if(t instanceof Date)return t;if(typeof t=="string"){const e=Jt(t)||_i(t)||Jt(t.trim());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}.`)}}class Ee{constructor(e,n){p(this,"attrs");p(this,"linkIndex");p(this,"_blobAttrs",null);p(this,"_primaryKeys",null);p(this,"_forwardIdents",null);p(this,"_revIdents",null);this.attrs=e,this.linkIndex=n}resetAttrIndexes(){this._blobAttrs=null,this._primaryKeys=null,this._forwardIdents=null,this._revIdents=null}addAttr(e){this.attrs[e.id]=e,this.resetAttrIndexes()}deleteAttr(e){delete this.attrs[e],this.resetAttrIndexes()}updateAttr(e){const n=this.attrs[e.id];n&&(this.attrs[e.id]={...n,...e},this.resetAttrIndexes())}getAttr(e){return this.attrs[e]}get blobAttrs(){if(this._blobAttrs)return this._blobAttrs;this._blobAttrs=new Map;for(const e of Object.values(this.attrs))if(Zt(e)){const[n,r,s]=e["forward-identity"];Z(this.blobAttrs,[r,s],e)}return this._blobAttrs}get primaryKeys(){if(this._primaryKeys)return this._primaryKeys;this._primaryKeys=new Map;for(const e of Object.values(this.attrs))if(e["primary?"]){const[n,r]=e["forward-identity"];Z(this._primaryKeys,[r],e)}return this._primaryKeys}get forwardIdents(){if(this._forwardIdents)return this._forwardIdents;this._forwardIdents=new Map;for(const e of Object.values(this.attrs)){const n=e["forward-identity"],[r,s,i]=n;Z(this._forwardIdents,[s,i],e)}return this._forwardIdents}get revIdents(){if(this._revIdents)return this._revIdents;this._revIdents=new Map;for(const e of Object.values(this.attrs)){const n=e["reverse-identity"];if(n){const[r,s,i]=n;Z(this._revIdents,[s,i],e)}}return this._revIdents}toJSON(){return{attrs:this.attrs,linkIndex:this.linkIndex}}}function wi(t){return t.cardinality==="one"}function Yt(t){return t["value-type"]==="ref"}function Zt(t){return t["value-type"]==="blob"}function Ie(t,e){return e.reduce((n,r)=>n&&n.get(r),t)}function ce(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)&&ce(t.get(n),r)}function Z(t,e,n){let r=t;const s=e.length-1;for(let i=0;i<s;i++){const o=e[i];let a=r.get(o);a===void 0&&(a=new Map,r.set(o,a)),r=a}s>-1&&r.set(e[s],n)}function or(t,e,n){const r=new Map,s=new Map,i=new Map;for(const o of e){let[a,c,u]=o;const l=t.getAttr(c);if(!l){console.warn("no such attr",c,a);continue}l["checked-data-type"]==="date"&&n&&(u=yt(u),o[2]=u),Yt(l)&&Z(i,[u,c,a],o),Z(r,[a,c,u],o),Z(s,[c,a,u],o)}return{eav:r,aev:s,vae:i}}function ar(t){return{triples:X(t.eav,3),cardinalityInference:t.cardinalityInference,useDateObjects:t.useDateObjects,version:1}}function cr(t,e){return Ge(t,e.triples,e.cardinalityInference,e.useDateObjects)}function ur(t,e){if(t)return new Ee(t.attrs,t.linkIndex);if(e&&"__type"in e)return new Ee(e.attrs,e.linkIndex)}function Ti(t,e){return Ie(t.eav,[e])!==void 0}function Ge(t,e,n,r){const s=or(t,e,r);return s.cardinalityInference=n,s.useDateObjects=r,s}function Qe(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=X(c,2).find(l=>l[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 l=(i=X(c,2).find(g=>g[2]===a))==null?void 0:i[0];if(!l)return null;const[f,h,y,...b]=e;return[n,h,l,...b]}else{const[o,...a]=e;return[n,...a]}}function lr(t,e,n){const r=Qe(t,n);if(!r)return;const[s,i,o]=r,a=e.getAttr(i);a&&(ce(t.eav,[s,i,o]),ce(t.aev,[i,s,o]),Yt(a)&&ce(t.vae,[o,i,s]))}let mi=0;function fr(t,e,n){const[r,s,i]=n;let o;const a=Ie(t.eav,[r,s,i]);return a&&(o=a[3]),o||Date.now()*10+mi++}function dr(t,e,n){const r=Qe(t,n);if(!r)return;let[s,i,o]=r;const a=e.getAttr(i);if(!a)return;a["checked-data-type"]==="date"&&t.useDateObjects&&(o=yt(o));const c=Ie(t.eav,[s,i,o]),u=(c==null?void 0:c[3])??fr(t,a,r),l=[s,i,o,u];wi(a)?(Z(t.eav,[s,i],new Map([[o,l]])),Z(t.aev,[i,s],new Map([[o,l]]))):(Z(t.eav,[s,i,o],l),Z(t.aev,[i,s,o],l)),Yt(a)&&Z(t.vae,[o,i,s],l)}function Si(t,e,n){var y;const r=Qe(t,n);if(!r)return;const[s,i,o]=r,a=e.getAttr(i);if(!a)return;if(!Zt(a))throw new Error("merge operation is not supported for links");const c=Ie(t.eav,[s,i]);if(!c)return;const u=(y=c.values().next())==null?void 0:y.value;if(!u)return;const l=u[2],f=nr(l,o),h=[s,i,f,fr(t,a,u)];Z(t.eav,[s,i],new Map([[f,h]])),Z(t.aev,[i,s],new Map([[f,h]]))}function Xt(t,e,n){var u,l;const[r,s]=n,i=Qe(t,[r]);if(!i)return;const[o]=i,a=t.eav.get(o);if(a){for(const f of a.keys()){const h=e.getAttr(f);h&&h["on-delete-reverse"]==="cascade"&&X(a.get(f),1).forEach(([y,b,g])=>{var w;return Xt(t,e,[g,(w=h["reverse-identity"])==null?void 0:w[1]])}),(!s||!h||((u=h["forward-identity"])==null?void 0:u[1])===s)&&(ce(t.aev,[f,o]),ce(t.eav,[o,f]))}a.size===0&&ce(t.eav,[o])}const c=t.vae.get(o)&&X(t.vae.get(o),2);c&&c.forEach(f=>{var w,S,_;const[h,y,b]=f,g=e.getAttr(y);(!s||!g||((w=g["reverse-identity"])==null?void 0:w[1])===s)&&(ce(t.eav,[h,y,b]),ce(t.aev,[y,h,b]),ce(t.vae,[b,y,h])),g&&g["on-delete"]==="cascade"&&((S=g["reverse-identity"])==null?void 0:S[1])===s&&Xt(t,e,[h,(_=g["forward-identity"])==null?void 0:_[1]])}),((l=t.vae.get(o))==null?void 0:l.size)===0&&ce(t.vae,[o])}function hr(t,e,n){const r=or(e,n,t.useDateObjects);Object.keys(r).forEach(s=>{t[s]=r[s]})}function vi(t,[e]){t.addAttr(e)}function pr(t){return X(t.eav,3)}function Ei(t,e,[n]){if(!e.getAttr(n))return;const r=pr(t).filter(([s,i])=>i!==n);e.deleteAttr(n),hr(t,e,r)}function Oi(t,e,[n]){e.getAttr(n.id)&&(e.updateAttr(n),hr(t,e,pr(t)))}function Ai(t,e,n){const[r,...s]=n;switch(r){case"add-triple":dr(t,e,s);break;case"deep-merge-triple":Si(t,e,s);break;case"retract-triple":lr(t,e,s);break;case"delete-entity":Xt(t,e,s);break;case"add-attr":vi(e,s);break;case"delete-attr":Ei(t,e,s);break;case"update-attr":Oi(t,e,s);break;case"restore-attr":break;case"rule-params":break;default:throw new Error(`unhandled transaction action: ${r}`)}}function X(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())X(r,e-1,n);return n}function bt(t,e,n){var i;const r=[];if(n!=null&&n.hasOwnProperty("$not")){for(const o of e.keys())n.$not!==o&&r.push(e.get(o));return r}if(n!=null&&n.hasOwnProperty("$isNull")){const{attrId:o,isNull:a,reverse:c}=n.$isNull;if(c)for(const u of e.keys()){const l=t.vae.get(u),f=!l||!l.get(o);(a?f:!f)&&r.push(e.get(u))}else{const u=t.aev.get(o);for(const l of e.keys()){const f=!u||((i=u.get(l))==null?void 0:i.get(null))||!u.get(l);(a?f:!f)&&r.push(e.get(l))}}return r}if(n!=null&&n.$comparator)return X(e,1).filter(n.$op);const s=n.in||n.$in||[n];for(const o of s){const a=e.get(o);a&&r.push(a)}return r}function ki(t,e,n){let r="";return t!==void 0&&(r+="e"),e!==void 0&&(r+="a"),n!==void 0&&(r+="v"),r}function Ci(t,[e,n,r]){var i,o;switch(ki(e,n,r)){case"e":{const a=t.eav.get(e);return X(a,2)}case"ea":{const a=(i=t.eav.get(e))==null?void 0:i.get(n);return X(a,1)}case"eav":{const a=(o=t.eav.get(e))==null?void 0:o.get(n);return a?bt(t,a,r):[]}case"ev":{const a=t.eav.get(e);if(!a)return[];const c=[];for(const u of a.values())c.push(...bt(t,u,r));return c}case"a":{const a=t.aev.get(n);return X(a,2)}case"av":{const a=t.aev.get(n);if(!a)return[];const c=[];for(const u of a.values())c.push(...bt(t,u,r));return c}case"v":{const a=[];for(const c of t.eav.values())for(const u of c.values())a.push(...bt(t,u,r));return a}default:return X(t.eav,3)}}function Pi(t,e,n){var s;const r={};if(!e)return r;for(const[i,o]of e.entries()){const a=(s=t.eav.get(n))==null?void 0:s.get(o.id),c=X(a,1);for(const u of c)r[i]=u[2]}return r}function K(t,e,n){var r;return(r=t.forwardIdents.get(e))==null?void 0:r.get(n)}function Oe(t,e,n){var r;return(r=t.revIdents.get(e))==null?void 0:r.get(n)}function Ii(t,e){return t.blobAttrs.get(e)}function yr(t,e){var r;const n=t.primaryKeys.get(e);return n||((r=t.forwardIdents.get(e))==null?void 0:r.get("id"))}function Mi(t,e,n){const r=Qe(t,n);if(!r)return;const[s,i,o]=r;if(e.getAttr(i))return Ie(t.eav,[s,i])}function ji(t,e,n){const r=n.filter(([s,i,o,a,c])=>{if(s!=="add-triple"&&s!=="deep-merge-triple")return!0;const u=c==null?void 0:c.mode;if(u!=="create"&&u!=="update")return!0;let l=!1;const f=e.getAttr(o);if(f){const h=yr(e,f["forward-identity"][1]);l=!!Mi(t,e,[i,h==null?void 0:h.id,i])}return!(u==="create"&&l||u==="update"&&!l)});return ht({store:t,attrsStore:e},s=>{r.forEach(i=>{Ai(s.store,s.attrsStore,i)})},{mark:s=>{if(s instanceof Ee)return"immutable"}})}function Ri(t){return typeof t=="string"&&t.startsWith("?")}function xi(t,e,n){if(n.hasOwnProperty(t)){const r=n[t];return gr(r,e,n)}return{...n,[t]:e}}function br(t,e,n){return t===e?n:null}function Di(t){switch(typeof t){case"string":return t.startsWith("?")?xi:br;default:return br}}const $i=["in","$in","$not","$isNull","$comparator"];function Ui(t){for(const e of $i)if(t.hasOwnProperty(e))return!0;return!1}function gr(t,e,n){return n?typeof t=="object"?Ui(t)?n:null:Di(t)(t,e,n):null}function Li(t,e,n){return t.reduce((r,s,i)=>{const o=e[i];return gr(s,o,r)},n)}function Fi(t,e,n){return Wi(t,e,n).map(r=>Li(e,r,n)).filter(r=>r)}function Ni(t,e,n){return e.or?e.or.patterns.flatMap(r=>en(t,r,n)):e.and?e.and.patterns.reduce((r,s)=>en(t,s,r),n):n.flatMap(r=>Fi(t,e,r))}function en(t,e,n=[{}]){return e.reduce((r,s)=>Ni(t,s,r),n)}function tn(t,e){return Array.isArray(e)?e.map(n=>tn(t,n)):Ri(e)?t[e]:e}function Ki(t,{find:e,where:n}){return en(t,n).map(s=>tn(s,e))}function Wi(t,e,n){return Ci(t,tn(n,e))}const zi=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;function Me(t){return typeof t=="string"&&zi.test(t)}const B=[];for(let t=0;t<256;++t)B.push((t+256).toString(16).slice(1));function qi(t,e=0){return(B[t[e+0]]+B[t[e+1]]+B[t[e+2]]+B[t[e+3]]+"-"+B[t[e+4]]+B[t[e+5]]+"-"+B[t[e+6]]+B[t[e+7]]+"-"+B[t[e+8]]+B[t[e+9]]+"-"+B[t[e+10]]+B[t[e+11]]+B[t[e+12]]+B[t[e+13]]+B[t[e+14]]+B[t[e+15]]).toLowerCase()}let nn;const Vi=new Uint8Array(16);function Bi(){if(!nn){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");nn=crypto.getRandomValues.bind(crypto)}return nn(Vi)}const _r={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Gi(t,e,n){var s;if(_r.randomUUID&&!t)return _r.randomUUID();t=t||{};const r=t.random??((s=t.rng)==null?void 0:s.call(t))??Bi();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,qi(r)}function wr(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 Qi(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 Hi(t,e){return Qi(wr(t),wr(e))}function z(){return Gi()}function Ji(t,e){return t.localeCompare(e)}function Yi(){let t=Ji;if(typeof Intl=="object"&&Intl.hasOwnProperty("Collator"))try{t=Intl.Collator("en-US").compare}catch{}return t}const Zi=Yi();let Xi=0;function He(t){return gt(`_${t}`,Xi++)}function gt(t,e){return`?${t}-${e}`}class je extends Error{constructor(e){super(e),this.name="AttrNotFoundError"}}function eo(t,e){const n=yr(t,e);if(!n)throw new je(`Could not find id attr for ${e}`);return n}function Tr(t,e,n,r){return[to(t,e,n,r)]}function to(t,e,n,r){return[t(n,r),eo(e,n).id,t(n,r),t("time",r)]}function no(t,e,n){return t.map(r=>r===e?n:r)}function mr(t,e,n,r,s){const i=K(e,n,s),o=Oe(e,n,s),a=i||o;if(!a)throw new je(`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"],[l,f]=a["reverse-identity"],h=r+1,y=i?[t(u,r),a.id,t(f,h),He("time")]:[t(u,h),a.id,t(f,r),He("time")];return[i?f:u,h,y,a,!!i]}function Sr(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 ro(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=Sr(!0,e.$like);return{$comparator:!0,$op:function(i){return r(i[2])}}}if(e.hasOwnProperty("$ilike")){const r=Sr(!1,e.$ilike);return{$comparator:!0,$op:function(i){return r(i[2])}}}return e}function so(t,e,n,r,s,i){const o=K(e,n,s),a=Oe(e,n,s),c=o||a;if(!c)throw new je(`No attr for etype = ${n} label = ${s}`);if(i!=null&&i.hasOwnProperty("$isNull")){const u=K(e,n,"id");if(!u)throw new je(`No attr for etype = ${n} label = id`);return[t(n,r),u.id,{$isNull:{attrId:c.id,isNull:i.$isNull,reverse:!o}},He("time")]}return o?[t(n,r),c.id,ro(c,i),He("time")]:[i,c.id,t(n,r),He("time")]}function io(t,e,n,r,s){const[i,o,a]=s.reduce((c,u)=>{const[l,f,h]=c,[y,b,g]=mr(t,e,l,f,u);return[y,b,[...h,g]]},[n,r,[]]);return[i,o,a]}function rn(t,e,n,r,s,i){const o=s.slice(0,s.length-1),a=s[s.length-1],[c,u,l]=io(t,e,n,r,o),f=so(t,e,c,u,a,i);return l.concat([f])}function oo(t,e){return e?[e].concat(t):t}function ao([t,e]){return t==="or"&&Array.isArray(e)}function co([t,e]){return t==="and"&&Array.isArray(e)}function uo(t,e,n){return(r,s)=>{const i=t(r,s);return e==i?i:`${i}-${n}`}}function vr(t,e,n,r,s,i){const o=t(r,s),a=i.map((c,u)=>{const l=uo(t,o,u);return Or(l,n,r,s,c)});return{[e]:{patterns:a,joinSym:o}}}function lo(t){const e=[];for(let n=1;n<=t.length;n++)e.push(t.slice(0,n));return e}function Er(t,e,n,r,s){return lo(s).map(i=>rn(t,e,n,r,i,{$isNull:!0}))}function Or(t,e,n,r,s){return Object.entries(s).flatMap(([i,o])=>{if(ao([i,o]))return vr(t,"or",e,n,r,o);if(co([i,o]))return vr(t,"and",e,n,r,o);if(i==="$entityIdStartsWith")return[];const a=i.split(".");if(o!=null&&o.hasOwnProperty("$ne")&&(o={...o,$not:o.$ne},delete o.$ne),o!=null&&o.hasOwnProperty("$not")){const c=rn(t,e,n,r,a,o),u=Er(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:Er(t,e,n,r,a),joinSym:t(n,r)}}]:rn(t,e,n,r,a,o)})}function fo(t,e,n,r){const s=gt;return r?Or(s,t,e,n,r).concat(Tr(s,t,e,n)):Tr(s,t,e,n)}function ho(t,e,n){return[t(e,n),t("time",n)]}function po(t,e,n,r,s,i){const[o,a,c,u,l]=mr(t,e,n,r,s),f=no(c,t(n,r),i);return[o,a,f,u,l]}function yo(t,e,n,{etype:r,level:s,form:i},o){const a=Object.keys(i).filter(c=>c!=="$");return a.length?Object.entries(o).map(function([u,l]){return a.map(function(y){var g,w,S;const b=!!(e.cardinalityInference&&((S=(w=(g=n.linkIndex)==null?void 0:g[r])==null?void 0:w[y])!=null&&S.isSingular));try{const[_,m,k]=po(t,n,r,s,y,u),E=kr(e,n,{etype:_,level:m,form:i[y],join:k}),x=b?E[0]:E;return{[y]:x}}catch(_){if(_ instanceof je)return{[y]:b?void 0:[]};throw _}}).reduce(function(y,b){return{...y,...b}},l)}):Object.values(o)}function bo(t,e,n){return n==="string"?Zi(t,e):t>e?1:-1}function Je(t,e,n,r,s){return e===r||e==null&&r==null?Hi(t,n):r==null?1:e==null?-1:bo(e,r,s)}function _t([t,e],[n,r],s){return Je(t,e,n,r,s)}function sn(t){return t==null?t:new Date(t).getTime()}function go(t,e,n,r){var b;const[s,i,o,a]=t,c=n==="desc"?1:-1;if(((b=e["forward-identity"])==null?void 0:b[2])==="id")return _t(r,[s,a],null)===c;const[u,l]=r,f=e["checked-data-type"],h=f==="date"?sn(l):l,y=f==="date"?sn(o):o;return _t([u,h],[s,y],f)===c}function _o(t,e){const n=e[1];return t.getAttr(n)}function wo(t,e,n){const r=Object.keys(n)[0];return K(t,e,r)}function To(t,e,n,r){if(n)return _o(t,n);if(r)return wo(t,e,r)}function mo(t,e,n){var s,i;if(!Array.isArray(n.fields))return Ii(t,e);const r=new Map;for(const o of n.fields){const a=K(t,e,o),c=(s=a==null?void 0:a["forward-identity"])==null?void 0:s[2];c&&Zt(a)&&r.set(c,a)}if(!r.has("id")){const o=K(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 So(t,e,{etype:n,pageInfo:r,dq:s,form:i}){var b,g;const o=(b=i==null?void 0:i.$)==null?void 0:b.order,a=Ar(i),c=vo(i);let u=Ki(t,s);const l=r==null?void 0:r["start-cursor"],f=To(e,n,l,o);if(f&&((g=f==null?void 0:f["forward-identity"])==null?void 0:g[2])!=="id"){const w=f["checked-data-type"]==="date",S=f.id;u=u.map(([_])=>{var k,E,x,V,J;let m=(J=(V=(x=(E=(k=t.eav.get(_))==null?void 0:k.get(S))==null?void 0:E.values())==null?void 0:x.next())==null?void 0:V.value)==null?void 0:J[2];return w&&(m=sn(m)),[_,m]})}u.sort(c==="asc"?function(S,_){return _t(S,_,f==null?void 0:f["checked-data-type"])}:function(S,_){return _t(_,S,f==null?void 0:f["checked-data-type"])});let h={};const y=mo(e,n,s);for(const w of u){const[S]=w;if(h[S]||!a&&l&&f&&go(l,f,c,w))continue;const _=Pi(t,y,S);_&&(h[S]=_)}return h}function vo(t){var n;const e=(n=t.$)==null?void 0:n.order;return e&&e[Object.keys(e)[0]]||"asc"}function Ar(t){var s,i,o;const e=(s=t.$)==null?void 0:s.offset,n=(i=t.$)==null?void 0:i.before,r=(o=t.$)==null?void 0:o.after;return!e&&!n&&!r}function Eo(t,e,{etype:n,level:r,form:s,join:i,pageInfo:o}){var h,y,b,g,w;if(!Ar(s)&&(!o||!o["start-cursor"]))return[];const a=oo(fo(e,n,r,(h=s.$)==null?void 0:h.where),i),c=ho(gt,n,r),u=(y=s.$)==null?void 0:y.fields,l=So(t,e,{etype:n,pageInfo:o,form:s,dq:{where:a,find:c,fields:u}}),f=((b=s.$)==null?void 0:b.limit)||((g=s.$)==null?void 0:g.first)||((w=s.$)==null?void 0:w.last);if(f!=null){r>0&&console.warn("WARNING: Limits in child queries are only run client-side. Data returned from the server will not have a limit.");const S=Object.entries(l);return S.length<=f?l:Object.fromEntries(S.slice(0,f))}return l}function Oo(t,e,n){try{return Eo(t,e,n)}catch(r){if(r instanceof je)return{};throw r}}function kr(t,e,n){const r=Oo(t,e,n);return yo(gt,t,e,n,r)}function Ao(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 Cr({store:t,attrsStore:e,pageInfo:n,aggregate:r},s){const o={data:Object.keys(s).reduce(function(c,u){return r!=null&&r[u]||u==="$$ruleParams"||(c[u]=kr(t,e,{etype:u,form:s[u],level:0,pageInfo:n==null?void 0:n[u]})),c},{})};return n&&(o.pageInfo=Ao(n)),r&&(o.aggregate=r),o}function ko(){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 Co=ko();function wt(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(Co.has(i))return(o,a)=>wt(t,e,[...n,a?[i,t,e,o,a]:[i,t,e,o]])}})}function Pr(t,e){return`lookup__${t}__${JSON.stringify(e)}`}function Tt(t){return t.startsWith("lookup__")}function on(t){const[e,n,...r]=t.split("__");return[n,JSON.parse(r.join("__"))]}function Po(t){return new Proxy({__etype:t},{get(e,n){if(n==="lookup")return(s,i)=>wt(t,on(Pr(s,i)),[]);if(n==="__etype")return t;const r=n;return Tt(r)?wt(t,on(r),[]):wt(t,r,[])}})}function an(){return new Proxy({},{get(t,e){return Po(e)}})}const Io=an();function Mo(t){return t.__ops}function jo(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 Ro(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 xo(t,e,n){return n.indexOf(".")!==-1&&!K(t,e,n)}function cn(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 Do(t,e,n){if(!xo(t,e,n))return K(t,e,n);const r=cn(n),s=K(t,e,r)||Oe(t,e,r);if(s&&s["value-type"]!=="ref")throw new Error(`${n} does not reference a valid link attribute.`);return s}function un(t){return typeof t=="string"&&!Tt(t)?null:typeof t=="string"&&Tt(t)?on(t):Ro(t)}function ee(t,e,n){const r=un(n);if(r===null)return n;const[s,i]=r,o=Do(t,e,s);if(!o||!o["unique?"])throw new Error(`${s} is not a unique attribute.`);return[o.id,i]}function Ir(t,e,n,r){var o;const s=ee(t,e,n);return Array.isArray(s)?[["add-triple",s,(o=K(t,e,"id"))==null?void 0:o.id,s]].concat(r):r}function $o({attrsStore:t},[e,n,r]){const s=Object.entries(r).flatMap(([i,o])=>{const a=Array.isArray(o)?o:[o],c=K(t,e,i),u=Oe(t,e,i);return a.map(l=>c?["add-triple",ee(t,e,n),c.id,ee(t,c["reverse-identity"][1],l)]:["add-triple",ee(t,u["forward-identity"][1],l),u==null?void 0:u.id,ee(t,e,n)])});return Ir(t,e,n,s)}function Uo({attrsStore:t},[e,n,r]){const s=Object.entries(r).flatMap(([i,o])=>{const a=Array.isArray(o)?o:[o],c=K(t,e,i),u=Oe(t,e,i);return a.map(l=>c?["retract-triple",ee(t,e,n),c.id,ee(t,c["reverse-identity"][1],l)]:["retract-triple",ee(t,u["forward-identity"][1],l),u.id,ee(t,e,n)])});return Ir(t,e,n,s)}function Lo(t,e,n,r){var s;if(Array.isArray(r)){const[i,o]=r;for(const a of t||[]){const c=a==null?void 0:a.aev.get(i);if(c){for(const[u,l,f]of X(c,2))if(f===o)return!0}}}else for(const i of t||[]){const o=i==null?void 0:i.eav.get(r);if(o){for(const a of o.keys())if(((s=e.getAttr(a))==null?void 0:s["forward-identity"][1])==n)return!0}}return!1}function Mr({stores:t,attrsStore:e},[n,r,s,i]){return(i==null?void 0:i.upsert)===!1?{mode:"update"}:(i==null?void 0:i.upsert)===!0?null:Lo(t,e,n,r)?{mode:"update"}:null}function Fo(t,e){const{attrsStore:n}=t,[r,s,i,o]=e,a=Ht(i),c=ee(n,r,s);return[["id",c]].concat(Object.entries(a)).map(([l,f])=>{const h=K(n,r,l);return h["checked-data-type"]==="date"&&t.useDateObjects&&(f=yt(f)),["add-triple",c,h.id,f,{mode:"create"}]})}function No(t,e){const{attrsStore:n}=t,[r,s,i,o]=e,a=Ht(i),c=ee(n,r,s),u=Mr(t,[r,c,i,o]);return[["id",c]].concat(Object.entries(a)).map(([f,h])=>{const y=K(n,r,f);return y["checked-data-type"]==="date"&&t.useDateObjects&&(h=yt(h)),["add-triple",c,y.id,h,...u?[u]:[]]})}function Ko({attrsStore:t},[e,n]){return[["delete-entity",ee(t,e,n),e]]}function Wo(t,e){const{attrsStore:n}=t,[r,s,i,o]=e,a=Ht(i),c=ee(n,r,s),u=Mr(t,[r,c,i,o]),l=Object.entries(a).map(([h,y])=>{const b=K(n,r,h);return["deep-merge-triple",c,b.id,y,...u?[u]:[]]});return[["add-triple",c,K(n,r,"id").id,c,...u?[u]:[]]].concat(l)}function zo({attrsStore:t},[e,n,r]){return[["rule-params",ee(t,e,n),e,r]]}function qo(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 Vo(t,e){const[n,...r]=qo(e);switch(n){case"merge":return Wo(t,r);case"create":return Fo(t,r);case"update":return No(t,r);case"link":return $o(t,r);case"unlink":return Uo(t,r);case"delete":return Ko(t,r);case"ruleParams":return zo(t,r);default:throw new Error(`unsupported action ${n}`)}}function Bo(t){switch(t){case"string":case"date":case"boolean":case"number":return t;default:return}}function Go(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=Bo(r==null?void 0:r.valueType);return{"index?":i,"unique?":s,"checked-data-type":o}}function mt(t,e,n,r){const s=t?Go(t,e,n):null,i=z(),a=[z(),e,n];return{id:i,"forward-identity":a,"value-type":"blob",cardinality:"one","unique?":!1,"index?":!1,isUnsynced:!0,...s||{},...r||{}}}function Qo(t,e,n){return Object.values(t.links).find(i=>i.forward.on===e&&i.forward.label===n||i.reverse.on===e&&i.reverse.label===n)}function Ho(t,e,n){const r=Qo(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":[z(),s.on,s.label],"reverse-identity":[z(),i.on,i.label],cardinality:s.has==="one"?"one":"many","unique?":i.has==="one","on-delete":s.onDelete,"on-delete-reverse":i.onDelete}}function jr(t,e,n,r){const s=t?Ho(t,e,n):null,i=z(),o=[z(),e,n],a=[z(),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 Jo=new Set(["create","update","merge","link","unlink"]),Yo=new Set(["link","unlink"]),Zo=new Set(["create","update","merge"]),Xo=new Set(["link","unlink","create","update","merge","delete","ruleParams"]),ln={"unique?":!0,"index?":!0},ea={...ln,cardinality:"one"};function ta(t){const e=[],[n,r,s,i]=t;if(!Xo.has(n))return e;const o=un(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 l of u){const f=un(l);f&&e.push({etype:r,lookupPair:f,linkLabel:a})}}return e}function na({attrsStore:t,schema:e},n){var h,y;const r=new Set,s=[],i=[];function o(b,g){return K(t,b,g)||s.find(w=>w["forward-identity"][1]===b&&w["forward-identity"][2]===g)}function a(b,g){return Oe(t,b,g)||s.find(w=>{var S,_;return((S=w["reverse-identity"])==null?void 0:S[1])===b&&((_=w["reverse-identity"])==null?void 0:_[2])===g})}function c(b){s.push(b),i.push(["add-attr",b]),r.add(b.id)}function u(b){b&&"isUnsynced"in b&&b.isUnsynced&&!r.has(b.id)&&(s.push(b),i.push(["add-attr",b]),r.add(b.id))}function l(b,g){return g.indexOf(".")!==-1&&!o(b,g)}function f(b,g){const w=o(b,g),S=a(b,g);u(w),u(S),!w&&!S&&c(jr(e,b,g,ea))}for(const b of n)for(const{etype:g,lookupPair:w,linkLabel:S}of ta(b)){const _=w[0];if(S){f(g,S);const m=o(g,S),k=a(g,S);u(m),u(k);const E=((h=m==null?void 0:m["reverse-identity"])==null?void 0:h[1])||((y=k==null?void 0:k["forward-identity"])==null?void 0:y[1])||S;if(l(E,_))f(E,cn(_));else{const x=o(E,_);x||c(mt(e,E,_,ln)),u(x)}}else if(l(g,_))f(g,cn(_));else{const m=o(g,_);m||c(mt(e,g,_,ln)),u(m)}}for(const b of n){const[g,w,S,_]=b;if(Jo.has(g)){const m=o(w,"id");u(m),m||c(mt(e,w,"id",{"unique?":!0}));for(const k of Object.keys(_)){const E=o(w,k);if(u(E),Zo.has(g)&&(E||c(mt(e,w,k,k==="id"?{"unique?":!0}:null))),Yo.has(g)){const x=a(w,k);!E&&!x&&c(jr(e,w,k)),u(x)}}}}if(s.length){const b={...t.attrs};for(const g of s)b[g.id]=g;return[new Ee(b,t.linkIndex),i]}return[t,i]}function ra(t,e){const r=(Array.isArray(e)?e:[e]).flatMap(c=>Mo(c)),[s,i]=na(t,r),o={...t,attrsStore:s},a=r.flatMap(c=>Vo(o,c));return[...i,...a]}function Rr(t,e){typeof requestIdleCallback>"u"?t():requestIdleCallback(t,{timeout:e})}const Ye="__meta";class xr{constructor(e,n){}}class fn{constructor(e){p(this,"currentValue");p(this,"_subs",[]);p(this,"_persister");p(this,"_merge");p(this,"serialize");p(this,"parse");p(this,"_saveThrottleMs");p(this,"_idleCallbackMaxWaitMs");p(this,"_nextSave",null);p(this,"_nextGc",null);p(this,"_pendingSaveKeys",new Set);p(this,"_loadedKeys",new Set);p(this,"_loadingKeys");p(this,"_objectSize");p(this,"_log");p(this,"onKeyLoaded");p(this,"_version",0);p(this,"_meta",{isLoading:!0,onLoadCbs:[],value:null,error:null,attempts:0});p(this,"_gcOpts");this._persister=e.persister,this._merge=e.merge,this.serialize=e.serialize,this.parse=e.parse,this._objectSize=e.objectSize,this._log=e.logger,this._saveThrottleMs=e.saveThrottleMs??100,this._idleCallbackMaxWaitMs=e.idleCallbackMaxWaitMs??1e3,this._gcOpts=e.gc,this.currentValue={},this._loadedKeys=new Set,this._loadingKeys={},this._initMeta(),e.preloadEntryCount&&this._preloadEntries(e.preloadEntryCount)}async _initMeta(){var e;this._meta.loadingPromise&&await this._meta.loadingPromise;try{const n=this._persister.getItem(Ye);this._meta.loadingPromise=n;const r=await n;this._meta.isLoading=!1,this._meta.error=null,this._meta.loadingPromise=null,this._meta.attempts=0;const s=((e=this._meta.value)==null?void 0:e.objects)??{},i=r??{},o=i.objects??{};this._meta.value={...i,objects:{...s,...o}}}catch(n){this._meta.error=n,this._meta.attempts++,this._meta.loadingPromise=null}}async _getMeta(){return this._meta.value?this._meta.value:this._meta.loadingPromise?(await this._meta.loadingPromise,this._meta.value):(this._initMeta(),await this._meta.loadingPromise,this._meta.value)}async _refreshMeta(){return await this._initMeta(),this._meta.value}async _preloadEntries(e){const n=await this.waitForMetaToLoad();if(!n)return;const r=Object.entries(n.objects);r.sort(([s,i],[o,a])=>a.updatedAt-i.updatedAt);for(const[s]of r.slice(0,e))this._loadKey(s)}async _getFromStorage(e){try{const n=await this._persister.getItem(e);return n&&this.parse(e,n)}catch(n){return console.error(`Unable to read from storage for key=${e}`,n),null}}async waitForKeyToLoad(e){return this._loadedKeys.has(e)?this.currentValue[e]:(await(this._loadingKeys[e]||this._loadKey(e)),this.currentValue[e])}async waitForMetaToLoad(){return this._getMeta()}unloadKey(e){this._loadedKeys.delete(e),delete this._loadingKeys[e],delete this.currentValue[e]}async _loadKey(e){if(this._loadedKeys.has(e)||e in this._loadingKeys)return;const n=this._getFromStorage(e);this._loadingKeys[e]=n;const r=await n;if(delete this._loadingKeys[e],this._loadedKeys.add(e),r){const s=this._merge(e,r,this.currentValue[e]);s&&(this.currentValue[e]=s)}this.onKeyLoaded&&this.onKeyLoaded(e)}_writeToStorage(e){const n=[],r=e==null?void 0:e.skipGc;if(this._meta.isLoading){const f=new Promise((h,y)=>{setTimeout(()=>this._enqueuePersist(e?{...e,attempts:(e.attempts||0)+1}:{attempts:1}).then(h).catch(y),10+((e==null?void 0:e.attempts)??0)*1e3)});return n.push(f),Promise.all(n).then(h=>h.reduce((y,b)=>y+b,0))}const s=this._meta.value;if(!s)return Promise.resolve(0);const i=[],o=[];for(const f of this._pendingSaveKeys)f in this.currentValue?o.push(f):(i.push(f),delete s.objects[f]);for(const f of i){const h=this._persister.removeItem(f);n.push(h.then(()=>1)),this._loadedKeys.delete(f),this._pendingSaveKeys.delete(f)}const a=[],c=[[Ye,s]],u=s.objects??{};s.objects=u;for(const f of o)if(this._loadedKeys.has(f)){const h=this.serialize(f,this.currentValue[f]);c.push([f,h]);const y=this._objectSize(h),b=u[f]??{createdAt:Date.now(),updatedAt:Date.now(),size:y};b.updatedAt=Date.now(),b.size=y,u[f]=b,this._pendingSaveKeys.delete(f)}else a.push(f);const l=this._persister.multiSet(c);n.push(l.then(()=>1));for(const f of a){const h=this._loadKey(f).then(()=>this._enqueuePersist(e));n.push(h)}return r||this.gc(),Promise.all(n).then(f=>f.reduce((h,y)=>h+y,0))}async flush(){return this._nextSave?(clearTimeout(this._nextSave),this._nextSave=null,this._writeToStorage()):void 0}async _gc(){if(!this._gcOpts)return;const e=new Set(await this._persister.getAllKeys());e.delete(Ye);const n=new Set(Object.keys(this.currentValue));for(const h of Object.keys(this._loadingKeys))n.add(h);for(const h of this._loadedKeys)n.add(h);const r=await this._refreshMeta();if(!r){this._log.info("Could not gc because we were not able to load meta");return}const s=[],i={gcOpts:this._gcOpts,keys:e,sacredKeys:n,removed:[],metaRemoved:[],removedMissingCount:0,removedOldCount:0,removedThresholdCount:0,removedSizeCount:0};for(const h of e)n.has(h)||h in r.objects||(this._log.info("Lost track of key in meta",h),s.push(this._persister.removeItem(h)),i.removed.push(h),i.removedMissingCount++);const o=Date.now();for(const[h,y]of Object.entries(r.objects))!n.has(h)&&y.updatedAt<o-this._gcOpts.maxAgeMs&&(s.push(this._persister.removeItem(h)),delete r.objects[h],i.removed.push(h),i.removedOldCount++);const a=Object.entries(r.objects);a.sort(([h,y],[b,g])=>y.updatedAt-g.updatedAt);const c=a.filter(([h])=>!n.has(h));if(a.length>this._gcOpts.maxEntries)for(const[h]of c.slice(0,a.length-this._gcOpts.maxEntries))s.push(this._persister.removeItem(h)),delete r.objects[h],i.removed.push(h),i.removedThresholdCount++;const u=Object.entries(r.objects);u.sort(([h,y],[b,g])=>y.updatedAt-g.updatedAt);const l=u.filter(([h])=>!n.has(h));let f=u.reduce((h,[y,b])=>h+b.size,0);for(;f>0&&f>this._gcOpts.maxSize&&l.length;){const[[h,y]]=l.splice(0,1);f-=y.size,s.push(this._persister.removeItem(h)),delete r.objects[h],i.removed.push(h),i.removedSizeCount++}for(const h of Object.keys(r.objects))!e.has(h)&&!n.has(h)&&delete r.objects[h];return(i.removed.length||i.metaRemoved.length)&&s.push(this._enqueuePersist({skipGc:!0})),this._log.info("Completed GC",i),await Promise.all(s),i}gc(){this._nextGc||(this._nextGc=setTimeout(()=>{Rr(()=>{this._nextGc=null,this._gc()},30*1e3)},1e3*60+Math.random()*500))}_enqueuePersist(e){return new Promise((n,r)=>{if(this._nextSave){n(0);return}this._nextSave=setTimeout(()=>{Rr(()=>{this._nextSave=null,this._writeToStorage(e).then(n).catch(r)},this._idleCallbackMaxWaitMs)},this._saveThrottleMs)})}version(){return this._version}updateInPlace(e){this._version++;const[n,r]=ht(this.currentValue,e,{enablePatches:!0});for(const s of r){const i=s.path[0];i&&typeof i=="string"&&(this._pendingSaveKeys.add(i),this._loadedKeys.has(i)||this._loadKey(i))}this.currentValue=n,this._enqueuePersist();for(const s of this._subs)s(this.currentValue);return n}subscribe(e){return this._subs.push(e),e(this.currentValue),()=>{this._subs=this._subs.filter(n=>n!==e)}}}const sa=6,ia=["kv","querySubs","syncSubs"];function oa(t){return function(n){console.error("Error in IndexedDB event",{source:t,event:n})}}async function aa(t){return new Promise(e=>{const n=indexedDB.open(t);n.onerror=r=>{e(null)},n.onsuccess=r=>{const i=r.target.result;e(i)},n.onupgradeneeded=r=>{var i;(i=r.target.transaction)==null||i.abort(),e(null)}})}async function ca(t,e,n){const r=typeof e=="string"?JSON.parse(e):e;if(!r)return;const s=new Set;return new Promise((i,o)=>{var l,f,h;const a={};for(const[y,b]of Object.entries(r)){const g=typeof b=="string"?JSON.parse(b):b;if(g.lastAccessed){const S={createdAt:g.lastAccessed,updatedAt:g.lastAccessed,size:((h=(f=(l=g.result)==null?void 0:l.store)==null?void 0:f.triples)==null?void 0:h.length)??0};a[y]=S}const w=n.put(g,y);s.add(w)}const c={objects:a},u=n.put(c,Ye);s.add(u);for(const y of s)y.onsuccess=()=>{s.delete(y),s.size===0&&i()},y.onerror=b=>{o(b)}})}async function Dr(t,e,n){const r=n.put(e,t);return new Promise((s,i)=>{r.onsuccess=()=>s(),r.onerror=o=>i(o)})}async function ua(t,e){const n=await aa(`instant_${t}_5`);if(!n)return;const r=await new Promise((l,f)=>{const b=n.transaction(["kv"],"readonly").objectStore("kv").openCursor();b.onerror=w=>{f(w)};const g=[];b.onsuccess=()=>{const w=b.result;if(w){const S=w.key,_=w.value;g.push([S,_]),w.continue()}else l(g)},b.onerror=w=>{f(w)}}),s=e.transaction(["kv","querySubs"],"readwrite"),i=s.objectStore("kv"),o=s.objectStore("querySubs"),a=[],c={objects:{}};for(const[l,f]of r)switch(l){case"querySubs":{const h=ca(l,f,o);a.push(h);break}default:{const h=Dr(l,f,i);a.push(h);const y={createdAt:Date.now(),updatedAt:Date.now(),size:0};c.objects[l]=y;break}}const u=Dr(Ye,c,i);a.push(u),await Promise.all(a),await new Promise((l,f)=>{s.oncomplete=h=>l(h),s.onerror=h=>f(h),s.onabort=h=>f(h)})}const $r=new Map;class Ur extends xr{constructor(n,r){super(n,r);p(this,"dbName");p(this,"_storeName");p(this,"_appId");p(this,"_prefix");p(this,"_dbPromise");this.dbName=`instant_${n}_${sa}`,this._storeName=r,this._appId=n,this._dbPromise=this._init()}_init(){return new Promise((n,r)=>{let s=!1;const i=indexedDB.open(this.dbName,1);i.onerror=o=>{r(o)},i.onsuccess=o=>{const c=o.target.result;if(s){const u=ua(this._appId,c).catch(l=>{oa("Error upgrading store from version 5 to 6.")(l)});$r.set(this.dbName,u),u.then(()=>n(c)).catch(()=>n(c))}else{const u=$r.get(this.dbName);u?u.then(()=>n(c)).catch(()=>n(c)):n(c)}},i.onupgradeneeded=o=>{s=!0,this._upgradeStore(o)}})}_upgradeStore(n){const s=n.target.result;for(const i of ia)s.objectStoreNames.contains(i)||s.createObjectStore(i)}async getItem(n){const r=await this._dbPromise;return new Promise((s,i)=>{const c=r.transaction([this._storeName],"readonly").objectStore(this._storeName).get(n);c.onerror=u=>{i(u)},c.onsuccess=u=>{c.result?s(c.result):s(null)}})}async setItem(n,r){const s=await this._dbPromise;return new Promise((i,o)=>{const u=s.transaction([this._storeName],"readwrite").objectStore(this._storeName).put(r,n);u.onerror=l=>{o(l)},u.onsuccess=l=>{i()}})}async multiSet(n){const r=await this._dbPromise;return new Promise((s,i)=>{const o=r.transaction([this._storeName],"readwrite"),a=o.objectStore(this._storeName),c=new Set;for(const[u,l]of n){const f=a.put(l,u);c.add(f)}for(const u of c)u.onerror=l=>{o.abort(),i(l)},u.onsuccess=l=>{c.delete(u),c.size===0&&s()}})}async removeItem(n){const r=await this._dbPromise;return new Promise((s,i)=>{const c=r.transaction([this._storeName],"readwrite").objectStore(this._storeName).delete(n);c.onerror=u=>{i(u)},c.onsuccess=u=>{s()}})}async getAllKeys(){const n=await this._dbPromise;return new Promise((r,s)=>{const a=n.transaction([this._storeName],"readonly").objectStore(this._storeName).getAllKeys();a.onerror=c=>{s(c)},a.onsuccess=c=>{r(a.result.filter(u=>typeof u=="string"))}})}}class Lr{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 Re extends Error{constructor(n,r){super(n);p(this,"hint");this.hint=r;const s=new.target.prototype;Object.setPrototypeOf&&Object.setPrototypeOf(this,s),Error.captureStackTrace&&Error.captureStackTrace(this,Re),this.name="InstantError"}get[Symbol.toStringTag](){return"InstantError"}}class Ze extends Re{constructor(n){var i;const r=((i=n.body)==null?void 0:i.message)||`API Error (${n.status})`;super(r,n.body.hint);p(this,"body");p(this,"status");const s=new.target.prototype;Object.setPrototypeOf&&Object.setPrototypeOf(this,s),Error.captureStackTrace&&Error.captureStackTrace(this,Ze),this.name="InstantAPIError",this.status=n.status,this.body=n.body}get[Symbol.toStringTag](){return"InstantAPIError"}}async function ue(t,e){const n=await fetch(t,e),r=await n.json();return n.status===200?Promise.resolve(r):Promise.reject(new Ze({status:n.status,body:r}))}function la({apiURI:t,appId:e,email:n}){return ue(`${t}/runtime/auth/send_magic_code`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({"app-id":e,email:n})})}async function fa({apiURI:t,appId:e,email:n,code:r,refreshToken:s}){return await ue(`${t}/runtime/auth/verify_magic_code`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({"app-id":e,email:n,code:r,...s?{"refresh-token":s}:{}})})}async function da({apiURI:t,appId:e,refreshToken:n}){return await ue(`${t}/runtime/auth/verify_refresh_token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({"app-id":e,"refresh-token":n})})}async function ha({apiURI:t,appId:e}){return await ue(`${t}/runtime/auth/sign_in_guest`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({"app-id":e})})}async function Fr({apiURI:t,appId:e,code:n,codeVerifier:r,refreshToken:s}){return await ue(`${t}/runtime/oauth/token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({app_id:e,code:n,code_verifier:r,refresh_token:s})})}async function pa({apiURI:t,appId:e,nonce:n,idToken:r,clientName:s,refreshToken:i}){return await ue(`${t}/runtime/oauth/id_token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({app_id:e,nonce:n,id_token:r,client_name:s,refresh_token:i})})}async function ya({apiURI:t,appId:e,refreshToken:n}){return await ue(`${t}/runtime/signout`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({app_id:e,refresh_token:n})})}async function ba({apiURI:t,appId:e,path:n,file:r,refreshToken:s,contentType:i,contentDisposition:o}){const a={app_id:e,path:n,authorization:`Bearer ${s}`,"content-type":i||r.type};return o&&(a["content-disposition"]=o),await ue(`${t}/storage/upload`,{method:"PUT",headers:a,body:r})}async function ga({apiURI:t,appId:e,path:n,refreshToken:r}){const{data:s}=await ue(`${t}/storage/files?app_id=${e}&filename=${encodeURIComponent(n)}`,{method:"DELETE",headers:{"content-type":"application/json",authorization:`Bearer ${r}`}});return s}async function _a({apiURI:t,appId:e,fileName:n,refreshToken:r,metadata:s={}}){const{data:i}=await ue(`${t}/storage/signed-upload-url`,{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${r}`},body:JSON.stringify({app_id:e,filename:n})});return i}async function wa(t,e){return(await fetch(t,{method:"PUT",body:e,headers:{"Content-Type":e.type}})).ok}async function Ta({apiURI:t,appId:e,path:n,refreshToken:r}){const{data:s}=await ue(`${t}/storage/signed-download-url?app_id=${e}&filename=${encodeURIComponent(n)}`,{method:"GET",headers:{"content-type":"application/json",authorization:`Bearer ${r}`}});return s}let dn=!1,Nr=!1,Kr=!1;typeof window<"u"&&typeof window.localStorage<"u"&&(dn=!!window.localStorage.getItem("devBackend"),Nr=!!window.localStorage.getItem("__instantLogging"),Kr=!!window.localStorage.getItem("__devtoolLocalDash"));function Wr(t,e){if(!e)return t;const n={};return e.forEach(r=>{n[r]=t[r]}),n}function ma(t,e,n){const r={peers:{}};if(e&&"user"in e?e.user:!0){const i=Wr(t.user??{},e==null?void 0:e.keys);r.user={...i,peerId:n}}for(const i of Object.keys(t.peers??{})){const o=(e==null?void 0:e.peers)===void 0,a=Array.isArray(e==null?void 0:e.peers)&&(e==null?void 0:e.peers.includes(i));if(o||a){const c=Wr(t.peers[i],e==null?void 0:e.keys);r.peers[i]={...c,peerId:i}}}return r}function Sa(t,e){if(t.isLoading!==e.isLoading||t.error!==e.error||(t.user||e.user)&&(!t.user||!e.user||!tr(t.user,e.user))||!er(t.peers,e.peers))return!0;for(const r of Object.keys(t.peers))if(!tr(t.peers[r],e.peers[r]))return!0;return!1}class zr{constructor(){p(this,"promise");p(this,"_resolve");p(this,"_reject");this.promise=new Promise((e,n)=>{this._resolve=e,this._reject=n})}resolve(e){this._resolve(e)}reject(e){this._reject(e)}}function qr(t,e=[]){t.forEach(n=>{const{data:r}=n,{"datalog-result":s}=r,{"join-rows":i}=s;for(const o of i)for(const a of o)e.push(a);qr(n["child-nodes"],e)})}function Vr(t){const e=[];return qr(t,e),e}function Br(t){return Object.values(t.links).reduce((e,n)=>{var r,s;return e[r=n.forward.on]??(e[r]={}),e[n.forward.on][n.forward.label]={isForward:!0,isSingular:n.forward.has==="one",link:n},e[s=n.reverse.on]??(e[s]={}),e[n.reverse.on][n.reverse.label]={isForward:!1,isSingular:n.reverse.has==="one",link:n},e},{})}const hn="v0.22.133";function va(t,e){return{info:t?(...n)=>console.info(...n,e()):()=>{},debug:t?(...n)=>console.debug(...n,e()):()=>{},error:t?(...n)=>console.error(...n,e()):()=>{}}}class H{constructor(e,n,r,s={indexed:!1,unique:!1}){p(this,"valueType");p(this,"required");p(this,"isIndexed");p(this,"config");p(this,"metadata",{});this.valueType=e,this.required=n,this.isIndexed=r,this.config=s}clientRequired(){return new H(this.valueType,!1,this.isIndexed,this.config)}optional(){return new H(this.valueType,!1,this.isIndexed,this.config)}unique(){return new H(this.valueType,this.required,this.isIndexed,{...this.config,unique:!0})}indexed(){return new H(this.valueType,this.required,!0,{...this.config,indexed:!0})}}class St{constructor(e,n){p(this,"attrs");p(this,"links");this.attrs=e,this.links=n}asType(){return new St(this.attrs,this.links)}}class vt{constructor(e,n,r){p(this,"entities");p(this,"links");p(this,"rooms");this.entities=e,this.links=n,this.rooms=r}withRoomSchema(){return new vt(this.entities,this.links,{})}}class $ extends Error{constructor(e,n){const r=n?`At path '${n}': ${e}`:e;super(r),this.name="QueryValidationError"}}const Gr=["where","order","limit","last","first","offset","after","before","fields","aggregate"],Ea=t=>t.valueType||"unknown",Qr=(t,e,n=!1)=>{if(n||t==null)return!0;switch(e){case"string":return typeof t=="string";case"number":return typeof t=="number"&&!isNaN(t);case"boolean":return typeof t=="boolean";case"date":return t instanceof Date||typeof t=="string"||typeof t=="number";default:return!0}},Oa=(t,e,n,r,s,i,o)=>{const a=i.valueType==="json",c=(u,l,f)=>{if(!Qr(f,l,a))throw new $(`Invalid value for operator '${u}' on attribute '${r}' in entity '${s}'. Expected ${l}, but received: ${typeof f}`,o)};switch(t){case"in":case"$in":if(!Array.isArray(e))throw new $(`Operator '${t}' for attribute '${r}' in entity '${s}' must be an array, but received: ${typeof e}`,o);for(const u of e)c(t,n,u);break;case"$not":case"$ne":case"$gt":case"$lt":case"$gte":case"$lte":c(t,n,e);break;case"$like":case"$ilike":if(c(t,"string",e),t==="$ilike"&&!i.isIndexed)throw new $(`Operator '${t}' can only be used with indexed attributes, but '${r}' in entity '${s}' is not indexed`,o);break;case"$isNull":c(t,"boolean",e);break;default:throw new $(`Unknown operator '${t}' for attribute '${r}' in entity '${s}'`,o)}},xe=(t,e,n,r,s)=>{const i=Ea(n),o=n.valueType==="json";if(typeof t=="object"&&t!==null&&!Array.isArray(t)){if(o)return;const c=t;for(const[u,l]of Object.entries(c))Oa(u,l,i,e,r,n,`${s}.${u}`)}else if(!Qr(t,i,o))throw new $(`Invalid value for attribute '${e}' in entity '${r}'. Expected ${i}, but received: ${typeof t}`,s)},Aa=(t,e,n,r,s)=>{const i=t.split(".");if(i.length<2)throw new $(`Invalid dot notation path '${t}'. Must contain at least one dot.`,s);let o=n;for(let l=0;l<i.length-1;l++){const f=i[l],h=r.entities[o];if(!h)throw new $(`Entity '${o}' does not exist in schema while traversing dot notation path '${t}'.`,s);const y=h.links[f];if(!y){const b=Object.keys(h.links);throw new $(`Link '${f}' does not exist on entity '${o}' in dot notation path '${t}'. Available links: ${b.length>0?b.join(", "):"none"}`,s)}o=y.entityName}const a=i[i.length-1],c=r.entities[o];if(!c)throw new $(`Target entity '${o}' does not exist in schema for dot notation path '${t}'.`,s);if(a==="id"){if(typeof e=="string"&&!Me(e))throw new $(`Invalid value for id field in entity '${o}'. Expected a UUID, but received: ${e}`,s);xe(e,t,new H("string",!1,!0),n,s);return}const u=c.attrs[a];if(Object.keys(c.links).includes(a)){if(typeof e=="string"&&!Me(e))throw new $(`Invalid value for link '${a}' in entity '${o}'. Expected a UUID, but received: ${e}`,s);xe(e,t,new H("string",!1,!0),n,s);return}if(!u){const l=Object.keys(c.attrs);throw new $(`Attribute '${a}' does not exist on entity '${o}' in dot notation path '${t}'. Available attributes: ${l.length>0?l.join(", ")+", id":"id"}`,s)}xe(e,t,u,n,s)},Hr=(t,e,n,r)=>{for(const[s,i]of Object.entries(t)){if(s==="or"||s==="and"){if(Array.isArray(i))for(const u of i)typeof u=="object"&&u!==null&&Hr(u,e,n,`${r}.${s}[${u}]`);continue}if(s==="id"){xe(i,"id",new H("string",!1,!0),e,`${r}.id`);continue}if(s.includes(".")){Aa(s,i,e,n,`${r}.${s}`);continue}const o=n.entities[e];if(!o)continue;const a=o.attrs[s],c=o.links[s];if(!a&&!c){const u=Object.keys(o.attrs),l=Object.keys(o.links);throw new $(`Attribute or link '${s}' does not exist on entity '${e}'. Available attributes: ${u.length>0?u.join(", "):"none"}. Available links: ${l.length>0?l.join(", "):"none"}`,`${r}.${s}`)}if(a)xe(i,s,a,e,`${r}.${s}`);else if(c){if(typeof i=="string"&&!Me(i))throw new $(`Invalid value for link '${s}' in entity '${e}'. Expected a UUID, but received: ${i}`,`${r}.${s}`);const u=new H("string",!1,!0);xe(i,s,u,e,`${r}.${s}`)}}},ka=(t,e,n,r,s=0)=>{for(const o of Object.keys(t))if(!Gr.includes(o))throw new $(`Invalid query parameter '${o}' in $ object. Valid parameters are: ${Gr.join(", ")}. Found: ${o}`,r);const i=["offset","before","after","first","last"];for(const o of i)if(t[o]!==void 0&&s>0)throw new $(`'${o}' can only be used on top-level namespaces. It cannot be used in nested queries.`,r);if(t.where&&n){if(typeof t.where!="object"||t.where===null)throw new $(`'where' clause must be an object in entity '${e}', but received: ${typeof t.where}`,r?`${r}.where`:void 0);Hr(t.where,e,n,r?`${r}.where`:"where")}},Jr=(t,e,n,r,s=0)=>{var i;if(!t||typeof t!="object")throw new $(`Query part for entity '${e}' must be an object, but received: ${typeof t}`,r);for(const o of Object.keys(t))if(o!=="$"){if(n&&!(o in n.entities[e].links)){const c=Object.keys(n.entities[e].links);throw new $(`Link '${o}' does not exist on entity '${e}'. Available links: ${c.length>0?c.join(", "):"none"}`,`${r}.${o}`)}const a=t[o];if(typeof a=="object"&&a!==null){const c=(i=n==null?void 0:n.entities[e].links[o])==null?void 0:i.entityName;c&&Jr(a,c,n,`${r}.${o}`,s+1)}}else{const a=t[o];if(typeof a!="object"||a===null)throw new $(`Query parameter '$' must be an object in entity '${e}', but received: ${typeof a}`,`${r}.$`);ka(a,e,n,`${r}.$`,s)}},Yr=(t,e)=>{if(typeof t!="object"||t===null)throw new $(`Query must be an object, but received: ${typeof t}${t===null?" (null)":""}`);if(Array.isArray(t))throw new $(`Query must be an object, but received: ${typeof t}`);const n=t;for(const r of Object.keys(n)){if(Array.isArray(t[r]))throw new $(`Query keys must be strings, but found key of type: ${typeof r}`,r);if(typeof r!="string")throw new $(`Query keys must be strings, but found key of type: ${typeof r}`,r);if(r!=="$$ruleParams"){if(e&&!e.entities[r]){const s=Object.keys(e.entities);throw new $(`Entity '${r}' does not exist in schema. Available entities: ${s.length>0?s.join(", "):"none"}`,r)}Jr(n[r],r,e,r,0)}}},Zr=t=>typeof t!="string"?!1:Tt(t)?!0:Me(t);class ie extends Error{constructor(e){super(e),this.name="TransactionValidationError"}}const Xr=t=>t.length>0?t.join(", "):"none",Ca=(t,e)=>new ie(`Entity '${t}' does not exist in schema. Available entities: ${Xr(e)}`),pn={string:t=>typeof t=="string",number:t=>typeof t=="number"&&!isNaN(t),boolean:t=>typeof t=="boolean",date:t=>t instanceof Date||typeof t=="string"||typeof t=="number",json:()=>!0},Pa=(t,e)=>{var n;return t==null?!0:((n=pn[e.valueType])==null?void 0:n.call(pn,t))??!1},es=(t,e)=>{const n=e.entities[t];if(!n)throw Ca(t,Object.keys(e.entities));return n},yn=(t,e,n)=>{const r=es(t,n);if(typeof e!="object"||e===null)throw new ie(`Arguments for data operation on entity '${t}' must be an object, but received: ${typeof e}`);for(const[s,i]of Object.entries(e)){if(s==="id")continue;const o=r.attrs[s];if(o&&!Pa(i,o))throw new ie(`Invalid value for attribute '${s}' in entity '${t}'. Expected ${o.valueType}, but received: ${typeof i}`)}},ts=(t,e,n)=>{const r=es(t,n);if(typeof e!="object"||e===null)throw new ie(`Arguments for link operation on entity '${t}' must be an object, but received: ${typeof e}`);for(const[s,i]of Object.entries(e)){if(!r.links[s]){const a=Object.keys(r.links);throw new ie(`Link '${s}' does not exist on entity '${t}'. Available links: ${Xr(a)}`)}if(i!=null){if(Array.isArray(i)){for(const a of i)if(!Zr(a))throw new ie(`Invalid entity ID in link '${s}' for entity '${t}'. Expected a UUID or a lookup, but received: ${a}`)}else if(!Zr(i))throw new ie(`Invalid UUID in link '${s}' for entity '${t}'. Expected a UUID, but received: ${i}`)}}},Ia={create:yn,update:yn,merge:yn,link:ts,unlink:ts,delete:()=>{}},Ma=(t,e)=>{if(!e)return;const[n,r,s,i]=t;if(!Array.isArray(s)&&!Me(s))throw new ie(`Invalid id for entity '${r}'. Expected a UUID, but received: ${s}`);if(typeof r!="string")throw new ie(`Entity name must be a string, but received: ${typeof r}`);const o=Ia[n];o&&i!==void 0&&o(r,i,e)},ja=(t,e)=>{const n=Array.isArray(t)?t:[t];for(const r of n){if(!r||typeof r!="object")throw new ie(`Transaction chunk must be an object, but received: ${typeof r}`);if(!Array.isArray(r.__ops))throw new ie(`Transaction chunk must have __ops array, but received: ${typeof r.__ops}`);for(const s of r.__ops){if(!Array.isArray(s))throw new ie(`Transaction operation must be an array, but received: ${typeof s}`);Ma(s,e)}}};let ns=0;class rs{constructor(e){p(this,"type","ws");p(this,"conn");p(this,"id");p(this,"onopen");p(this,"onmessage");p(this,"onclose");p(this,"onerror");this.id=`${this.type}_${ns++}`,this.conn=new WebSocket(e),this.conn.onopen=n=>{this.onopen&&this.onopen({target:this})},this.conn.onmessage=n=>{this.onmessage&&this.onmessage({target:this,message:JSON.parse(n.data.toString())})},this.conn.onclose=n=>{this.onclose&&this.onclose({target:this})},this.conn.onerror=n=>{this.onerror&&this.onerror({target:this})}}close(){this.conn.close()}isOpen(){return this.conn.readyState===(WebSocket.OPEN??1)}isConnecting(){return this.conn.readyState===(WebSocket.CONNECTING??0)}send(e){return this.conn.send(JSON.stringify(e))}}class Ra{constructor(e,n){p(this,"type","sse");p(this,"initParams",null);p(this,"sendQueue",[]);p(this,"sendPromise");p(this,"closeFired",!1);p(this,"sseInitTimeout");p(this,"ES");p(this,"conn");p(this,"url");p(this,"id");p(this,"onopen");p(this,"onmessage");p(this,"onclose");p(this,"onerror");this.id=`${this.type}_${ns++}`,this.url=n,this.ES=e,this.conn=new e(n),this.sseInitTimeout=setTimeout(()=>{this.initParams||this.handleError()},1e4),this.conn.onmessage=r=>{const s=JSON.parse(r.data);if(Array.isArray(s))for(const i of s)this.handleMessage(i);else this.handleMessage(s)},this.conn.onerror=r=>{this.handleError()}}handleMessage(e){if(e.op==="sse-init"){this.initParams={machineId:e["machine-id"],sessionId:e["session-id"],sseToken:e["sse-token"]},this.onopen&&this.onopen({target:this}),clearTimeout(this.sseInitTimeout);return}this.onmessage&&this.onmessage({target:this,message:e})}handleError(){try{this.onerror&&this.onerror({target:this})}finally{this.handleClose()}}handleClose(){this.conn.close(),this.onclose&&!this.closeFired&&(this.closeFired=!0,this.onclose({target:this}))}async postMessages(e){var n,r,s;try{(await fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({machine_id:(n=this.initParams)==null?void 0:n.machineId,session_id:(r=this.initParams)==null?void 0:r.sessionId,sse_token:(s=this.initParams)==null?void 0:s.sseToken,messages:e})})).ok||this.handleError()}catch{this.handleError()}}async flushQueue(){if(this.sendPromise||!this.sendQueue.length)return;const e=this.sendQueue;this.sendQueue=[];const n=this.postMessages(e);this.sendPromise=n,n.then(()=>{this.sendPromise=null,this.flushQueue()})}send(e){if(!this.isOpen()||!this.initParams)throw this.isConnecting()?new Error("Failed to execute 'send' on 'EventSource': Still in CONNECTING state."):this.conn.readyState===this.ES.CLOSED?new Error("EventSource is already in CLOSING or CLOSED state."):new Error("EventSource is in invalid state.");this.sendQueue.push(e),this.flushQueue()}isOpen(){return this.conn.readyState===this.ES.OPEN&&this.initParams!==null}isConnecting(){return this.conn.readyState===this.ES.CONNECTING||this.conn.readyState===this.ES.OPEN&&this.initParams===null}close(){this.handleClose()}}function xa(t,e){const n=t.values;if(n){const r=ur(n.attrsStore,null);if(r){for(const s of n.entities||[])s.store.useDateObjects=e,s.store=cr(r,s.store);n.attrsStore=r}}return t}function Da(t,e){var n;if(e.values){const r=[];for(const s of(n=e.values)==null?void 0:n.entities){const i=ar(s.store);r.push({...s,store:i})}return{...e,values:{attrsStore:e.values.attrsStore.toJSON(),entities:r}}}else return e}function $a(t,e,n){var i,o;const r=(i=e==null?void 0:e.state)==null?void 0:i.txId,s=(o=n==null?void 0:n.state)==null?void 0:o.txId;return r&&(!s||r>s)?e:s&&(!r||s>r)?n:e||n}function bn(t,e,n){return Cr({store:e,attrsStore:n,pageInfo:null,aggregate:null},t.query).data[t.table][0]}function ss(t,e,n,r){var o;const s=(o=K(n,t.table,"id"))==null?void 0:o.id;if(!s)return-1;const i=Ie(e.eav,[r,s,r]);return i?i[3]:-1}function is(t,e,n){for(const{action:r,triple:s}of n)switch(r){case"added":dr(t,e,s);break;case"removed":lr(t,e,s);break}}function Ua(t,e,n){var s,i;const r={};for(const{action:o,triple:a}of n){const[c,u,l]=a,f=(i=(s=e.getAttr(u))==null?void 0:s["forward-identity"])==null?void 0:i[2];if(!f)continue;const h=r[c]??{};r[c]=h;const y=h[f]??{};switch(o){case"added":y.newValue=l;break;case"removed":y.oldValue===void 0&&(y.oldValue=l);break}h[f]=y}for(const[o,a]of Object.entries(r))for(const[c,{oldValue:u,newValue:l}]of Object.entries(a))u===l&&delete a[c];return r}function Et(t,e){return{[t.table]:e.map(n=>n.entity)}}function La(t,e){var r;if(t.orderFieldType)return t.orderFieldType;const n=t.orderField==="serverCreatedAt"?"number":(r=K(e(),t.table,t.orderField))==null?void 0:r["checked-data-type"];return t.orderFieldType=n,n}function Fa(t,e,n){const r=e;if(t.orderField==="serverCreatedAt"){n.sort(t.orderDirection==="asc"?function(o,a){return Je(o.entity.id,o.serverCreatedAt,a.entity.id,a.serverCreatedAt,r)}:function(o,a){return Je(a.entity.id,a.serverCreatedAt,o.entity.id,o.serverCreatedAt,r)});return}const s=t.orderField;n.sort(t.orderDirection==="asc"?function(o,a){return Je(o.entity.id,o.entity[s],a.entity.id,a.entity[s],r)}:function(o,a){return Je(a.entity.id,a.entity[s],o.entity.id,o.entity[s],r)})}j.SyncTableCallbackEventType=void 0,function(t){t.InitialSyncBatch="InitialSyncBatch",t.InitialSyncComplete="InitialSyncComplete",t.LoadFromStorage="LoadFromStorage",t.SyncTransaction="SyncTransaction",t.Error="Error"}(j.SyncTableCallbackEventType||(j.SyncTableCallbackEventType={}));class Na{constructor(e,n,r,s,i,o){p(this,"trySend");p(this,"subs");p(this,"callbacks",{});p(this,"config");p(this,"idToHash",{});p(this,"log");p(this,"createStore");p(this,"getAttrs");this.trySend=e,this.config=r,this.log=s,this.createStore=i,this.getAttrs=o,this.subs=new fn({persister:n,merge:$a,serialize:Da,parse:(a,c)=>xa(c,this.config.useDateObjects),objectSize:a=>{var c;return((c=a.values)==null?void 0:c.entities.length)||0},logger:s,gc:{maxAgeMs:1e3*60*60*24*7*52,maxEntries:1e3,maxSize:1e6}})}beforeUnload(){this.subs.flush()}subscribe(e,n){const r=L(e);return this.callbacks[r]=this.callbacks[r]||[],this.callbacks[r].push(n),this.initSubscription(e,r,n),s=>{this.unsubscribe(r,n,s==null?void 0:s.keepSubscription)}}unsubscribe(e,n,r){const s=(this.callbacks[e]||[]).filter(i=>i!==n);if(this.callbacks[e]=s,!s.length){delete this.callbacks[e];const i=this.subs.currentValue[e];i!=null&&i.state&&this.clearSubscriptionData(i.state.subscriptionId,!!r),r||this.subs.updateInPlace(o=>{delete o[e]})}}sendStart(e){this.trySend(z(),{op:"start-sync",q:e})}sendResync(e,n,r){this.idToHash[n.subscriptionId]=e.hash,this.trySend(n.subscriptionId,{op:"resync-table","subscription-id":n.subscriptionId,"tx-id":r,token:n.token})}sendRemove(e,n){this.trySend(z(),{op:"remove-sync","subscription-id":e.subscriptionId,"keep-subscription":n})}async initSubscription(e,n,r){var u,l,f,h;await this.subs.waitForKeyToLoad(n);const s=this.subs.currentValue[n];if(s&&s.state&&s.state.txId){this.sendResync(s,s.state,s.state.txId),(u=s.values)!=null&&u.entities&&r&&r({type:j.SyncTableCallbackEventType.LoadFromStorage,data:Et(s,(l=s.values)==null?void 0:l.entities)});return}const i=Object.keys(e)[0],o=((h=(f=e[i])==null?void 0:f.$)==null?void 0:h.order)||{serverCreatedAt:"asc"},[a,c]=Object.entries(o)[0];this.subs.updateInPlace(y=>{y[n]={query:e,hash:n,table:i,orderDirection:c,orderField:a,createdAt:Date.now(),updatedAt:Date.now()}}),this.sendStart(e)}async flushPending(){for(const e of Object.keys(this.callbacks)){await this.subs.waitForKeyToLoad(e);const n=this.subs.currentValue[e];n?await this.initSubscription(n.query,n.hash):this.log.error("Missing sub for hash in flushPending",e)}}onStartSyncOk(e){const n=e["subscription-id"],r=e.q,s=L(r);this.idToHash[n]=s,this.subs.updateInPlace(i=>{const o=i[s];if(!o)return this.log.error("Missing sub for hash",s,"subscription-id",n,"query",r),i;o.state={subscriptionId:n,token:e.token}})}notifyCbs(e,n){for(const r of this.callbacks[e]||[])r(n)}onSyncLoadBatch(e){const n=e["subscription-id"],r=e["join-rows"],s=this.idToHash[n];if(!s){this.log.error("Missing hash for subscription",e);return}const i=[],o=this.subs.currentValue[s];if(!o){this.log.error("Missing sub for hash",s,e);return}const a=o.values??{entities:[],attrsStore:this.getAttrs()};o.values=a;const c=a.entities;for(const u of r){const l=this.createStore(u),f=bn(o,l,a.attrsStore);c.push({store:l,entity:f,serverCreatedAt:ss(o,l,a.attrsStore,f.id)}),i.push(f)}this.subs.updateInPlace(u=>{u[s]=o,u[s].updatedAt=Date.now()}),o.values&&this.notifyCbs(s,{type:j.SyncTableCallbackEventType.InitialSyncBatch,data:Et(o,o.values.entities),batch:i})}onSyncInitFinish(e){var i;const n=e["subscription-id"],r=this.idToHash[n];if(!r){this.log.error("Missing hash for subscription",e);return}this.subs.updateInPlace(o=>{const a=o[r];if(!a){this.log.error("Missing sub for hash",r,e);return}const c=a.state;if(!c)return this.log.error("Sub never set init, missing result",a,e),o;c.txId=e["tx-id"],a.updatedAt=Date.now()});const s=this.subs.currentValue[r];s&&this.notifyCbs(r,{type:j.SyncTableCallbackEventType.InitialSyncComplete,data:Et(s,((i=s.values)==null?void 0:i.entities)||[])})}onSyncUpdateTriples(e){var o;const n=e["subscription-id"],r=this.idToHash[n];if(!r){this.log.error("Missing hash for subscription",e);return}const s=this.subs.currentValue[r];if(!s){this.log.error("Missing sub for hash",r,e);return}const i=s.state;if(!i){this.log.error("Missing state for sub",s,e);return}for(const a of e.txes){if(i.txId&&i.txId>=a["tx-id"])continue;i.txId=a["tx-id"];const c=[],u={};for(const w of a.changes){const S=u[w.triple[0]]??[];u[w.triple[0]]=S,S.push(w)}const l=s.values??{entities:[],attrsStore:this.getAttrs()},f=l.entities;s.values=l;const h=[];e:for(const[w,S]of Object.entries(u))for(let _=0;_<f.length;_++){const m=f[_];if(Ti(m.store,w)){is(m.store,l.attrsStore,S);const k=bn(s,m.store,l.attrsStore),E=Ua(m.store,l.attrsStore,S)[w];k?(h.push({oldEntity:m.entity,newEntity:k,changedFields:E||{}}),m.entity=k):c.push(_),delete u[w];continue e}}const y=[];for(const[w,S]of Object.entries(u)){const _=this.createStore([]);is(_,l.attrsStore,S);const m=bn(s,_,l.attrsStore);if(!m){this.log.error("No entity found after applying change",{sub:s,changes:S,store:_});continue}f.push({store:_,entity:m,serverCreatedAt:ss(s,_,l.attrsStore,m.id)}),y.push(m)}const b=[];for(const w of c.sort().reverse())b.push(f[w].entity),f.splice(w,1);const g=La(s,this.getAttrs);Fa(s,g,f),this.notifyCbs(r,{type:j.SyncTableCallbackEventType.SyncTransaction,data:Et(s,(o=s.values)==null?void 0:o.entities),added:y,removed:b,updated:h})}this.subs.updateInPlace(a=>{a[r]=s,a[r].updatedAt=Date.now()})}clearSubscriptionData(e,n){const r=this.idToHash[e];if(r){delete this.idToHash[e];const s=this.subs.currentValue[r];if(s.state&&this.sendRemove(s.state,n),n?this.subs.unloadKey(r):this.subs.updateInPlace(i=>{delete i[r]}),s)return s}}onStartSyncError(e){const n=L(e["original-event"].q),r={message:e.message||"Uh-oh, something went wrong. Ping Joe & Stopa.",status:e.status,type:e.type,hint:e.hint},s=Object.keys(e["original-event"].q)[0];this.notifyCbs(n,{type:j.SyncTableCallbackEventType.Error,data:{[s]:[]},error:r})}onResyncError(e){const n=e["original-event"]["subscription-id"],r=this.clearSubscriptionData(n,!1);r&&this.initSubscription(r.query,r.hash)}}const be={CONNECTING:"connecting",OPENED:"opened",AUTHENTICATED:"authenticated",CLOSED:"closed",ERRORED:"errored"},Ka=3e4,Wa=3e4,za=200,qa=1e3*60,Va={apiURI:"https://api.instantdb.com",websocketURI:"wss://api.instantdb.com/runtime/session"},gn="_instant_oauth_redirect",Xe="currentUser";function Ba({transportType:t,appId:e,apiURI:n,wsURI:r,EventSourceImpl:s}){if(!s)return new rs(`${r}?app_id=${e}`);switch(t){case"ws":return new rs(`${r}?app_id=${e}`);case"sse":return new Ra(s,`${n}/runtime/sse?app_id=${e}`);default:throw new Error("Unknown transport type "+t)}}function Ga(){return typeof window<"u"||typeof chrome<"u"}const os={"set-presence":!0,"set-presence-ok":!0,"refresh-presence":!0,"patch-presence":!0};function Qa(t,e){var r;const n=typeof t=="string"?JSON.parse(t):t;if((r=n==null?void 0:n.result)!=null&&r.store){const s=ur(n.result.attrsStore,n.result.store);if(s){const i=n.result.store;n.result.store=cr(s,{...i,useDateObjects:e}),n.result.attrsStore=s}}return n}function Ha(t,e){const{result:n,...r}=e,s=r;if(n){const i={...n,store:ar(n.store),attrsStore:n.attrsStore.toJSON()};s.result=i}return s}function Ja(t,e){switch(t){case"pendingMutations":return new Map(typeof e=="string"?JSON.parse(e):e);default:return e}}function Ya(t,e){switch(t){case"pendingMutations":return[...e.entries()];default:return e}}function Za(t,e,n){const r=e==null?void 0:e.result,s=n==null?void 0:n.result;return r&&!s&&n&&(n.result=r),n||e}function _n(t){return[...t].sort((e,n)=>{const[r,s]=e,[i,o]=n,a=s.order||0,c=o.order||0;return a==c?r<i?-1:r>i?1:0:a-c})}class Xa{constructor(e,n=Ur,r=Lr,s,i){p(this,"attrs");p(this,"_isOnline",!0);p(this,"_isShutdown",!1);p(this,"status",be.CONNECTING);p(this,"querySubs");p(this,"kv");p(this,"_syncTable");p(this,"queryCbs",{});p(this,"queryOnceDfds",{});p(this,"authCbs",[]);p(this,"attrsCbs",[]);p(this,"mutationErrorCbs",[]);p(this,"connectionStatusCbs",[]);p(this,"config");p(this,"mutationDeferredStore",new Map);p(this,"_reconnectTimeoutId",null);p(this,"_reconnectTimeoutMs",0);p(this,"_transport");p(this,"_transportType","ws");p(this,"_EventSource");p(this,"_wsOk",null);p(this,"_localIdPromises",{});p(this,"_errorMessage",null);p(this,"_oauthCallbackResponse",null);p(this,"_linkIndex",null);p(this,"_broadcastChannel");p(this,"_rooms",{});p(this,"_roomsPendingLeave",{});p(this,"_presence",{});p(this,"_broadcastQueue",[]);p(this,"_broadcastSubs",{});p(this,"_currentUserCached",{isLoading:!0,error:void 0,user:void 0});p(this,"_beforeUnloadCbs",[]);p(this,"_dataForQueryCache",{});p(this,"_log");p(this,"_pendingTxCleanupTimeout");p(this,"_pendingMutationCleanupThreshold");p(this,"_inFlightMutationEventIds",new Set);p(this,"_onMergeKv",(e,n,r)=>{switch(e){case"pendingMutations":{const s=(n==null?void 0:n.entries())??[],i=(r==null?void 0:r.entries())??[],o=new Map([...s,...i]);return(n?this._rewriteMutationsSorted(this.attrs,n):[]).forEach(([c,u])=>{var l;!((l=r==null?void 0:r.pendingMutations)!=null&&l.has(c))&&!u["tx-id"]&&this._sendMutation(c,u)}),o}default:return r||n}});p(this,"getPreviousResult",e=>{var r;const n=L(e);return(r=this.dataForQuery(n))==null?void 0:r.data});p(this,"notifyOne",e=>{var i;const n=this.queryCbs[e]??[],r=(i=this._dataForQueryCache[e])==null?void 0:i.data,s=this.dataForQuery(e);s!=null&&s.data&&(this._dataForQueryCache[e]=s,!pt(s.data,r)&&n.forEach(o=>o.cb(s.data)))});p(this,"notifyOneQueryOnce",e=>{var s;const n=this.queryOnceDfds[e]??[],r=(s=this.dataForQuery(e))==null?void 0:s.data;n.forEach(i=>{this._completeQueryOnce(i.q,e,i.dfd),i.dfd.resolve(r)})});p(this,"notifyQueryError",(e,n)=>{(this.queryCbs[e]||[]).forEach(s=>s.cb({error:n}))});p(this,"pushTx",e=>{this.config.disableValidation||ja(e,this.config.schema);try{const n=ra({attrsStore:this.optimisticAttrs(),schema:this.config.schema,stores:Object.values(this.querySubs.currentValue).map(r=>{var s;return(s=r==null?void 0:r.result)==null?void 0:s.store}),useDateObjects:this.config.useDateObjects},e);return this.pushOps(n)}catch(n){return this.pushOps([],n)}});p(this,"pushOps",(e,n)=>{const r=z(),s=[...this._pendingMutations().values()],i=Math.max(0,...s.map(c=>c.order||0))+1,o={op:"transact","tx-steps":e,created:Date.now(),error:n,order:i};this._updatePendingMutations(c=>{c.set(r,o)});const a=new zr;return this.mutationDeferredStore.set(r,a),this._sendMutation(r,o),this.notifyAll(),a.promise});p(this,"_transportOnOpen",e=>{const n=e.target;if(this._transport!==n){this._log.info("[socket][open]",n.id,"skip; this is no longer the current transport");return}this._log.info("[socket][open]",this._transport.id),this._setStatus(be.OPENED),this.getCurrentUser().then(r=>{var s;this._trySend(z(),{op:"init","app-id":this.config.appId,"refresh-token":(s=r.user)==null?void 0:s.refresh_token,versions:this.versions,"__admin-token":this.config.__adminToken})}).catch(r=>{this._log.error("[socket][error]",n.id,r)})});p(this,"_transportOnMessage",e=>{const n=e.target,r=e.message;if(this._transport!==n){this._log.info("[socket][message]",n.id,r,"skip; this is no longer the current transport");return}if(!this._wsOk&&n.type==="ws"&&(this._wsOk=!0),this._transportType="ws",Array.isArray(e.message))for(const s of e.message)this._handleReceive(n.id,s);else this._handleReceive(n.id,e.message)});p(this,"_transportOnError",e=>{const n=e.target;if(this._transport!==n){this._log.info("[socket][error]",n.id,"skip; this is no longer the current transport");return}this._log.error("[socket][error]",n.id,e)});p(this,"_scheduleReconnect",()=>{!this._wsOk&&this._transportType!=="sse"&&(this._transportType="sse",this._reconnectTimeoutMs=0),setTimeout(()=>{if(this._reconnectTimeoutMs=Math.min(this._reconnectTimeoutMs+1e3,1e4),!this._isOnline){this._log.info("[socket][close]",this._transport.id,"we are offline, no need to start socket");return}this._startSocket()},this._reconnectTimeoutMs)});p(this,"_transportOnClose",e=>{const n=e.target;if(this._transport!==n){this._log.info("[socket][close]",n.id,"skip; this is no longer the current transport");return}this._setStatus(be.CLOSED);for(const r of Object.values(this._rooms))r.isConnected=!1;if(this._isShutdown){this._log.info("[socket][close]",n.id,"Reactor has been shut down and will not reconnect");return}this._log.info("[socket][close]",n.id,"schedule reconnect, ms =",this._reconnectTimeoutMs),this._scheduleReconnect()});if(this._EventSource=i,this.config={...Va,...e},this.queryCacheLimit=this.config.queryCacheLimit??10,this._pendingTxCleanupTimeout=this.config.pendingTxCleanupTimeout??Wa,this._pendingMutationCleanupThreshold=this.config.pendingMutationCleanupThreshold??za,this._log=va(e.verbose||dn||Nr,()=>this._reactorStats()),this.versions={...s||{},"@instantdb/core":hn},this.config.schema&&(this._linkIndex=Br(this.config.schema)),!!Ga()){if(!e.appId)throw new Error("Instant must be initialized with an appId.");if(!Me(e.appId))throw new Error(`Instant must be initialized with a valid appId. \`${e.appId}\` is not a valid uuid.`);typeof BroadcastChannel=="function"&&(this._broadcastChannel=new BroadcastChannel("@instantdb"),this._broadcastChannel.addEventListener("message",async o=>{var a;try{if(((a=o.data)==null?void 0:a.type)==="auth"){const c=await this.getCurrentUser();await this.updateUser(c.user).catch(u=>{this._log.error("[error] update user",u)})}}catch(c){this._log.error("[error] handle broadcast channel",c)}})),this._initStorage(n),this._syncTable=new Na(this._trySendAuthed.bind(this),new n(this.config.appId,"syncSubs"),{useDateObjects:this.config.useDateObjects},this._log,o=>Ge(this.ensureAttrs(),o,this.config.enableCardinalityInference,this.config.useDateObjects),()=>this.ensureAttrs()),this._oauthCallbackResponse=this._oauthLoginInit(),this.getCurrentUser().then(o=>{this.syncUserToEndpoint(o.user)}),setInterval(async()=>{const o=await this.getCurrentUser();this.syncUserToEndpoint(o.user)},qa),r.getIsOnline().then(o=>{this._isOnline=o,this._startSocket(),r.listen(a=>{a!==this._isOnline&&(this._log.info("[network] online =",a),this._isOnline=a,this._isOnline?this._startSocket():(this._log.info("Changing status from",this.status,"to",be.CLOSED),this._setStatus(be.CLOSED)))})}),typeof addEventListener<"u"&&(this._beforeUnload=this._beforeUnload.bind(this),addEventListener("beforeunload",this._beforeUnload))}}ensureAttrs(){if(!this.attrs)throw new Error("attrs have not loaded.");return this.attrs}updateSchema(e){this.config={...this.config,schema:e,cardinalityInference:!!e},this._linkIndex=e?Br(this.config.schema):null}_reactorStats(){return{inFlightMutationCount:this._inFlightMutationEventIds.size,storedMutationCount:this._pendingMutations().size,transportType:this._transportType}}_onQuerySubLoaded(e){this.kv.waitForKeyToLoad("pendingMutations").then(()=>this.notifyOne(e))}_initStorage(e){this.querySubs=new fn({persister:new e(this.config.appId,"querySubs"),merge:Za,serialize:Ha,parse:(n,r)=>Qa(r,this.config.useDateObjects),objectSize:n=>{var r,s,i;return((i=(s=(r=n==null?void 0:n.result)==null?void 0:r.store)==null?void 0:s.triples)==null?void 0:i.length)??0},logger:this._log,preloadEntryCount:10,gc:{maxAgeMs:1e3*60*60*24*7*52,maxEntries:1e3,maxSize:1e6}}),this.querySubs.onKeyLoaded=n=>this._onQuerySubLoaded(n),this.kv=new fn({persister:new e(this.config.appId,"kv"),merge:this._onMergeKv,serialize:Ya,parse:Ja,objectSize:()=>0,logger:this._log,saveThrottleMs:100,idleCallbackMaxWaitMs:100,gc:null}),this.kv.onKeyLoaded=n=>{n==="pendingMutations"&&this.notifyAll()},this.kv.waitForKeyToLoad("pendingMutations"),this.kv.waitForKeyToLoad(Xe),this._beforeUnloadCbs.push(()=>{this.kv.flush(),this.querySubs.flush()})}_beforeUnload(){for(const e of this._beforeUnloadCbs)e();this._syncTable.beforeUnload()}_finishTransaction(e,n,r){const s=this.mutationDeferredStore.get(n);this.mutationDeferredStore.delete(n);const i=e!=="error"&&e!=="timeout";if(!s&&!i&&console.error("Mutation failed",{status:e,eventId:n,...r}),!!s)if(i)s.resolve({status:e,eventId:n});else if(r!=null&&r.type){const{status:o,...a}=r;s.reject(new Ze({body:a,status:o??0}))}else s.reject(new Re((r==null?void 0:r.message)||"Unknown error",r==null?void 0:r.hint))}_setStatus(e,n){this.status=e,this._errorMessage=n,this.notifyConnectionStatusSubs(e)}_flushEnqueuedRoomData(e){var s,i;const n=(i=(s=this._presence[e])==null?void 0:s.result)==null?void 0:i.user,r=this._broadcastQueue[e];if(this._broadcastQueue[e]=[],n&&this._trySetPresence(e,n),r)for(const o of r){const{topic:a,roomType:c,data:u}=o;this._tryBroadcast(e,c,a,u)}}_addQueryData(e,n,r){if(!this.attrs)throw new Error("Attrs in reactor have not been set");const s=L(e),i=this.ensureAttrs(),o=Ge(this.attrs,n.triples,r,this.config.useDateObjects);this.querySubs.updateInPlace(a=>{a[s]={result:{store:o,attrsStore:i,pageInfo:n.pageInfo,processedTxId:void 0,isExternal:!0},q:e}}),this._cleanupPendingMutationsQueries(),this.notifyOne(s),this.notifyOneQueryOnce(s),this._cleanupPendingMutationsTimeout()}_handleReceive(e,n){var s,i,o,a,c,u,l;const r=!!this.config.schema&&("cardinalityInference"in this.config?!!this.config.cardinalityInference:!0);switch(os[n.op]||this._log.info("[receive]",e,n.op,n),n.op){case"init-ok":{this._setStatus(be.AUTHENTICATED),this._reconnectTimeoutMs=0,this._setAttrs(n.attrs),this._flushPendingMessages(),this._sessionId=n["session-id"];for(const y of Object.keys(this._rooms)){const b=(i=(s=this._presence[y])==null?void 0:s.result)==null?void 0:i.user,g=(o=this._rooms[y])==null?void 0:o.roomType;this._tryJoinRoom(g,y,b)}break}case"add-query-exists":{this.notifyOneQueryOnce(L(n.q));break}case"add-query-ok":{const{q:y,result:b}=n,g=L(y);if(!this._hasQueryListeners()&&!this.querySubs.currentValue[g])break;const w=(c=(a=b==null?void 0:b[0])==null?void 0:a.data)==null?void 0:c["page-info"],S=(l=(u=b==null?void 0:b[0])==null?void 0:u.data)==null?void 0:l.aggregate,_=Vr(b),m=this.ensureAttrs(),k=Ge(m,_,r,this.config.useDateObjects);this.querySubs.updateInPlace(E=>{if(!E[g]){this._log.info("Missing value in querySubs",{hash:g,q:y});return}E[g].result={store:k,attrsStore:m,pageInfo:w,aggregate:S,processedTxId:n["processed-tx-id"]}}),this._cleanupPendingMutationsQueries(),this.notifyOne(g),this.notifyOneQueryOnce(g),this._cleanupPendingMutationsTimeout();break}case"start-sync-ok":{this._syncTable.onStartSyncOk(n);break}case"sync-load-batch":{this._syncTable.onSyncLoadBatch(n);break}case"sync-init-finish":{this._syncTable.onSyncInitFinish(n);break}case"sync-update-triples":{this._syncTable.onSyncUpdateTriples(n);break}case"refresh-ok":{const{computations:y,attrs:b}=n,g=n["processed-tx-id"];b&&this._setAttrs(b),this._cleanupPendingMutationsTimeout();const w=this._rewriteMutations(this.ensureAttrs(),this._pendingMutations(),g);w!==this._pendingMutations()&&this.kv.updateInPlace(m=>{m.pendingMutations=w});const S=_n(w.entries()),_=y.map(m=>{var fe,he,Te,at;const k=m["instaql-query"],E=m["instaql-result"],x=L(k),V=Vr(E),J=this.ensureAttrs(),we=Ge(J,V,r,this.config.useDateObjects),{store:It,attrsStore:Rn}=this._applyOptimisticUpdates(we,J,S,g),xn=(he=(fe=E==null?void 0:E[0])==null?void 0:fe.data)==null?void 0:he["page-info"],Mt=(at=(Te=E==null?void 0:E[0])==null?void 0:Te.data)==null?void 0:at.aggregate;return{q:k,hash:x,store:It,attrsStore:Rn,pageInfo:xn,aggregate:Mt}});_.forEach(({hash:m,q:k,store:E,attrsStore:x,pageInfo:V,aggregate:J})=>{this.querySubs.updateInPlace(we=>{if(!we[m]){this._log.error("Missing value in querySubs",{hash:m,q:k});return}we[m].result={store:E,attrsStore:x,pageInfo:V,aggregate:J,processedTxId:g}})}),this._cleanupPendingMutationsQueries(),_.forEach(({hash:m})=>{this.notifyOne(m)});break}case"transact-ok":{const{"client-event-id":y,"tx-id":b}=n;this._inFlightMutationEventIds.delete(y);const w=this._rewriteMutations(this.ensureAttrs(),this._pendingMutations()).get(y);if(!w)break;this._updatePendingMutations(_=>{_.set(y,{..._.get(y),"tx-id":b,confirmed:Date.now()})});const S=[];for(const _ of w["tx-steps"])if(_[0]==="add-attr"){const m=_[1];S.push(m)}if(S.length){const _=Object.values(this.ensureAttrs().attrs);this._setAttrs([..._,...S])}this._finishTransaction("synced",y),this._cleanupPendingMutationsTimeout();break}case"patch-presence":{const y=n["room-id"];this._trySetRoomConnected(y,!0),this._patchPresencePeers(y,n.edits),this._notifyPresenceSubs(y);break}case"refresh-presence":{const y=n["room-id"];this._trySetRoomConnected(y,!0),this._setPresencePeers(y,n.data),this._notifyPresenceSubs(y);break}case"server-broadcast":{const y=n["room-id"],b=n.topic;this._trySetRoomConnected(y,!0),this._notifyBroadcastSubs(y,b,n);break}case"join-room-ok":{const y=n["room-id"];if(!this._rooms[y]){this._roomsPendingLeave[y]&&(this._tryLeaveRoom(y),delete this._roomsPendingLeave[y]);break}this._trySetRoomConnected(y,!0),this._flushEnqueuedRoomData(y);break}case"leave-room-ok":{const y=n["room-id"];this._trySetRoomConnected(y,!1);break}case"join-room-error":const f=n["room-id"],h=this._rooms[f];h&&(h.error=n.error),this._notifyPresenceSubs(f);break;case"error":this._handleReceiveError(n);break;default:this._log.info("Uknown op",n.op,n);break}}_pendingMutations(){return this.kv.currentValue.pendingMutations??new Map}_updatePendingMutations(e){this.kv.updateInPlace(n=>{const r=n.pendingMutations??new Map;n.pendingMutations=r,e(r)})}_handleMutationError(e,n,r){const s=this._pendingMutations().get(n);if(s&&(e!=="timeout"||!s["tx-id"])){this._updatePendingMutations(o=>(o.delete(n),o)),this._inFlightMutationEventIds.delete(n);const i={message:r.message,hint:r.hint};this.notifyAll(),this.notifyAttrsSubs(),this.notifyMutationErrorSubs(i),this._finishTransaction(e,n,r)}}_handleReceiveError(e){var a,c,u,l,f,h,y;console.log("error",e);const n=e["client-event-id"];this._inFlightMutationEventIds.delete(n);const r=this._pendingMutations().get(n),s={message:e.message||"Uh-oh, something went wrong. Ping Joe & Stopa."};if(e.hint&&(s.hint=e.hint),r){this._handleMutationError("error",n,e);return}if((a=e["original-event"])!=null&&a.hasOwnProperty("q")&&((c=e["original-event"])==null?void 0:c.op)==="add-query"){const b=(u=e["original-event"])==null?void 0:u.q,g=L(b);this.notifyQueryError(L(b),s),this.notifyQueryOnceError(b,g,n,s);return}if(((l=e["original-event"])==null?void 0:l.op)==="init"){if(e.type==="record-not-found"&&((f=e.hint)==null?void 0:f["record-type"])==="app-user"){this.changeCurrentUser(null);return}this._setStatus(be.ERRORED,s),this.notifyAll();return}if(((h=e["original-event"])==null?void 0:h.op)==="resync-table"){this._syncTable.onResyncError(e);return}if(((y=e["original-event"])==null?void 0:y.op)==="start-sync"){this._syncTable.onStartSyncError(e);return}const o={...e};delete o.message,delete o.hint,console.error(e.message,o),e.hint&&console.error(`This error comes with some debugging information. Here it is:
2
- `,e.hint)}notifyQueryOnceError(e,n,r,s){var o;const i=(o=this.queryOnceDfds[n])==null?void 0:o.find(a=>a.eventId===r);i&&(i.dfd.reject(s),this._completeQueryOnce(e,n,i.dfd))}_setAttrs(e){this.attrs=new Ee(e.reduce((n,r)=>(n[r.id]=r,n),{}),this._linkIndex),this.notifyAttrsSubs()}_startQuerySub(e,n){const r=z();return this.querySubs.updateInPlace(s=>{s[n]=s[n]||{q:e,result:null,eventId:r},s[n].lastAccessed=Date.now()}),this._trySendAuthed(r,{op:"add-query",q:e}),r}subscribeTable(e,n){return this._syncTable.subscribe(e,n)}subscribeQuery(e,n,r){this.config.disableValidation||Yr(e,this.config.schema),r&&"ruleParams"in r&&(e={$$ruleParams:r.ruleParams,...e});const s=L(e),i=this.getPreviousResult(e);return i&&n(i),this.queryCbs[s]=this.queryCbs[s]??[],this.queryCbs[s].push({q:e,cb:n}),this._startQuerySub(e,s),()=>{this._unsubQuery(e,s,n)}}queryOnce(e,n){this.config.disableValidation||Yr(e,this.config.schema),n&&"ruleParams"in n&&(e={$$ruleParams:n.ruleParams,...e});const r=new zr;if(!this._isOnline)return r.reject(new Error("We can't run `queryOnce`, because the device is offline.")),r.promise;if(!this.querySubs)return r.reject(new Error("We can't run `queryOnce` on the backend. Use adminAPI.query instead: https://www.instantdb.com/docs/backend#query")),r.promise;const s=L(e),i=this._startQuerySub(e,s);return this.queryOnceDfds[s]=this.queryOnceDfds[s]??[],this.queryOnceDfds[s].push({q:e,dfd:r,eventId:i}),setTimeout(()=>r.reject(new Error("Query timed out")),Ka),r.promise}_completeQueryOnce(e,n,r){this.queryOnceDfds[n]&&(this.queryOnceDfds[n]=this.queryOnceDfds[n].filter(s=>s.dfd!==r),this._cleanupQuery(e,n))}_unsubQuery(e,n,r){this.queryCbs[n]&&(this.queryCbs[n]=this.queryCbs[n].filter(s=>s.cb!==r),this._cleanupQuery(e,n))}_hasQueryListeners(e){var n,r;return!!((n=this.queryCbs[e])!=null&&n.length||(r=this.queryOnceDfds[e])!=null&&r.length)}_cleanupQuery(e,n){this._hasQueryListeners(n)||(delete this.queryCbs[n],delete this.queryOnceDfds[n],delete this._dataForQueryCache[n],this.querySubs.unloadKey(n),this._trySendAuthed(z(),{op:"remove-query",q:e}))}_rewriteMutations(e,n,r){if(!e)return n;if(!n)return new Map;const s=l=>{const[f,h,y]=l["forward-identity"];return K(e,h,y)},i=l=>{const[f,h,y]=l["forward-identity"];return Oe(e,h,y)},o={attrIdMap:{},refSwapAttrIds:new Set};let a=!1;const c=(l,f)=>{const h=[];for(const y of l){const[b]=y;if(b==="add-attr"){const[w,S]=y,_=s(S);if(_&&S.id!==_.id){o.attrIdMap[S.id]=_.id,a=!0;continue}if(S["value-type"]==="ref"){const m=i(S);if(m){o.attrIdMap[S.id]=m.id,o.refSwapAttrIds.add(S.id),a=!0;continue}}}if(r&&f&&r>=f&&b==="add-attr"||b==="update-attr"||b==="delete-attr"){a=!0;continue}const g=a?jo(o,y):y;h.push(g)}return a?h:l},u=new Map;for(const[l,f]of n.entries())u.set(l,{...f,"tx-steps":c(f["tx-steps"],f["tx-id"])});return a?u:n}_rewriteMutationsSorted(e,n){return _n(this._rewriteMutations(e,n).entries())}optimisticAttrs(){var i,o;const e=[...this._pendingMutations().values()].flatMap(a=>a["tx-steps"]),n=new Set(e.filter(([a,c])=>a==="delete-attr").map(([a,c])=>c)),r=[];for(const[a,c]of e)if(a==="add-attr")r.push(c);else if(a==="update-attr"&&c.id&&((i=this.attrs)!=null&&i.getAttr(c.id))){const u={...this.attrs.getAttr(c.id),...c};r.push(u)}if(!n.size&&!r.length)return this.attrs||new Ee({},this._linkIndex);const s={...((o=this.attrs)==null?void 0:o.attrs)||{}};for(const a of r)s[a.id]=a;for(const a of n)delete s[a];return new Ee(s,this._linkIndex)}dataForQuery(e,n=!0){const r=this._errorMessage;if(r)return{error:r};if(!this.querySubs||!this.kv.currentValue.pendingMutations)return;const s=this.querySubs.version(),i=this.querySubs.currentValue,o=this.kv.version(),a=this._pendingMutations(),{q:c,result:u}=i[e]||{};if(!u)return;const l=this._dataForQueryCache[e];if(l&&s===l.querySubVersion&&o===l.pendingMutationsVersion)return l;let f=u.store,h=u.attrsStore;const{pageInfo:y,aggregate:b,processedTxId:g}=u,w=this._rewriteMutationsSorted(h,a);if(n){const _=this._applyOptimisticUpdates(f,h,w,g);f=_.store,h=_.attrsStore}return{data:Cr({store:f,attrsStore:h,pageInfo:y,aggregate:b},c),querySubVersion:s,pendingMutationsVersion:o}}_applyOptimisticUpdates(e,n,r,s){for(const[i,o]of r)if(!o["tx-id"]||s&&o["tx-id"]>s){const a=ji(e,n,o["tx-steps"]);e=a.store,n=a.attrsStore}return{store:e,attrsStore:n}}notifyAll(){Object.keys(this.queryCbs).forEach(e=>{this.querySubs.waitForKeyToLoad(e).then(()=>this.notifyOne(e)).catch(()=>this.notifyOne(e))})}loadedNotifyAll(){this.kv.waitForKeyToLoad("pendingMutations").then(()=>this.notifyAll()).catch(()=>this.notifyAll())}shutdown(){var e;this._log.info("[shutdown]",this.config.appId),this._isShutdown=!0,(e=this._transport)==null||e.close()}_sendMutation(e,n){if(n.error){this._handleMutationError("error",e,{message:n.error.message});return}if(this.status!==be.AUTHENTICATED){this._finishTransaction("enqueued",e);return}const r=Math.max(6e3,Math.min(this._inFlightMutationEventIds.size+1,this._pendingMutations().size+1)*6e3);this._isOnline?(this._trySend(e,n),setTimeout(()=>{this._isOnline&&this._handleMutationError("timeout",e,{message:"transaction timed out"})},r)):this._finishTransaction("enqueued",e)}_flushPendingMessages(){Object.keys(this.queryCbs).map(i=>this.querySubs.currentValue[i]).filter(i=>i).forEach(({eventId:i,q:o})=>{this._trySendAuthed(i,{op:"add-query",q:o})}),Object.values(this.queryOnceDfds).flat().forEach(({eventId:i,q:o})=>{this._trySendAuthed(i,{op:"add-query",q:o})});const r=this._rewriteMutations(this.ensureAttrs(),this._pendingMutations());r!==this._pendingMutations()&&this.kv.updateInPlace(i=>{i.pendingMutations=r}),_n(r.entries()).forEach(([i,o])=>{o["tx-id"]||this._sendMutation(i,o)}),this._syncTable.flushPending()}_cleanupPendingMutationsQueries(){let e=Number.MAX_SAFE_INTEGER;for(const{result:n}of Object.values(this.querySubs.currentValue))n!=null&&n.processedTxId&&(e=Math.min(e,n==null?void 0:n.processedTxId));this._updatePendingMutations(n=>{for(const[r,s]of Array.from(n.entries()))s["tx-id"]&&s["tx-id"]<=e&&n.delete(r)})}_cleanupPendingMutationsTimeout(){if(this._pendingMutations().size<this._pendingMutationCleanupThreshold)return;const e=Date.now();this._updatePendingMutations(n=>{for(const[r,s]of Array.from(n.entries()))s.confirmed&&s.confirmed+this._pendingTxCleanupTimeout<e&&n.delete(r)})}_trySendAuthed(...e){this.status===be.AUTHENTICATED&&this._trySend(...e)}_trySend(e,n,r){if(this._transport.isOpen()){switch(os[n.op]||this._log.info("[send]",this._transport.id,n.op,n),n.op){case"transact":{this._inFlightMutationEventIds.add(e);break}case"init":this._inFlightMutationEventIds.clear()}this._transport.send({"client-event-id":e,...n})}}_startSocket(){if(this._wsOk=null,this._isShutdown){this._log.info("[socket][start]",this.config.appId,"Reactor has been shut down and will not start a new socket");return}if(this._transport&&this._transport.isConnecting()){this._log.info("[socket][start]",this._transport.id,"maintained as current transport, we were still in a connecting state");return}const e=this._transport;this._transport=Ba({transportType:this._transportType,appId:this.config.appId,apiURI:this.config.apiURI,wsURI:this.config.websocketURI,EventSourceImpl:this._EventSource}),this._transport.onopen=this._transportOnOpen,this._transport.onmessage=this._transportOnMessage,this._transport.onclose=this._transportOnClose,this._transport.onerror=this._transportOnError,this._log.info("[socket][start]",this._transport.id),e!=null&&e.isOpen()&&(this._log.info("[socket][start]",this._transport.id,"close previous transport id = ",e.id),e.close())}async getLocalId(e){const n=`localToken_${e}`;if(this.kv.currentValue[n])return this.kv.currentValue[n];const r=await this.kv.waitForKeyToLoad(n);if(r)return r;const s=z();return this.kv.updateInPlace(i=>{i[n]||(i[n]=s)}),await this.kv.waitForKeyToLoad(n)}_replaceUrlAfterOAuth(){if(typeof URL>"u")return;const e=new URL(window.location.href);if(e.searchParams.get(gn)){const n=e.toString();e.searchParams.delete(gn),e.searchParams.delete("code"),e.searchParams.delete("error");const r=e.pathname+(e.searchParams.size?"?"+e.searchParams:"")+e.hash;if(history.replaceState(history.state,"",r),typeof navigation=="object"&&typeof navigation.addEventListener=="function"&&typeof navigation.removeEventListener=="function"){let s=!1;const i=o=>{var a;s||(s=!0,navigation.removeEventListener("navigate",i),!o.userInitiated&&o.navigationType==="replace"&&((a=o.destination)==null?void 0:a.url)===n&&history.replaceState(history.state,"",r))};navigation.addEventListener("navigate",i)}}}async _oauthLoginInit(){var s,i,o,a;if(typeof window>"u"||typeof window.location>"u"||typeof URLSearchParams>"u")return null;const e=new URLSearchParams(window.location.search);if(!e.get(gn))return null;const n=e.get("error");if(n)return this._replaceUrlAfterOAuth(),{error:{message:n}};const r=e.get("code");if(!r)return null;this._replaceUrlAfterOAuth();try{const c=await this._getCurrentUser(),u=(c==null?void 0:c.type)==="guest",{user:l}=await Fr({apiURI:this.config.apiURI,appId:this.config.appId,code:r,refreshToken:u?c.refresh_token:void 0});return this.setCurrentUser(l),null}catch(c){return((s=c==null?void 0:c.body)==null?void 0:s.type)==="record-not-found"&&((o=(i=c==null?void 0:c.body)==null?void 0:i.hint)==null?void 0:o["record-type"])==="app-oauth-code"&&await this._hasCurrentUser()?null:{error:{message:((a=c==null?void 0:c.body)==null?void 0:a.message)||"Error logging in."}}}}async _waitForOAuthCallbackResponse(){return await this._oauthCallbackResponse}__subscribeMutationErrors(e){return this.mutationErrorCbs.push(e),()=>{this.mutationErrorCbs=this.mutationErrorCbs.filter(n=>n!==e)}}subscribeAuth(e){this.authCbs.push(e);const n=this._currentUserCached;n.isLoading||e(this._currentUserCached);let r=!1;return this.getCurrentUser().then(s=>{r||pt(s,n)||e(s)}),()=>{r=!0,this.authCbs=this.authCbs.filter(s=>s!==e)}}async getAuth(){const{user:e,error:n}=await this.getCurrentUser();if(n)throw new Re("Could not get current user: "+n.message);return e}subscribeConnectionStatus(e){return this.connectionStatusCbs.push(e),()=>{this.connectionStatusCbs=this.connectionStatusCbs.filter(n=>n!==e)}}subscribeAttrs(e){return this.attrsCbs.push(e),this.attrs&&e(this.attrs.attrs),()=>{this.attrsCbs=this.attrsCbs.filter(n=>n!==e)}}notifyAuthSubs(e){this.authCbs.forEach(n=>n(e))}notifyMutationErrorSubs(e){this.mutationErrorCbs.forEach(n=>n(e))}notifyAttrsSubs(){if(!this.attrs)return;const e=this.optimisticAttrs();this.attrsCbs.forEach(n=>n(e.attrs))}notifyConnectionStatusSubs(e){this.connectionStatusCbs.forEach(n=>n(e))}async setCurrentUser(e){this.kv.updateInPlace(n=>{n[Xe]=e}),await this.kv.waitForKeyToLoad(Xe)}getCurrentUserCached(){return this._currentUserCached}async _getCurrentUser(){const e=await this.kv.waitForKeyToLoad(Xe);return typeof e=="string"?JSON.parse(e):e}async getCurrentUser(){const e=await this._waitForOAuthCallbackResponse();if(e!=null&&e.error){const n={error:e.error,user:void 0};return this._currentUserCached={isLoading:!1,...n},n}try{const r={user:await this._getCurrentUser(),error:void 0};return this._currentUserCached={isLoading:!1,...r},r}catch(n){return{user:void 0,isLoading:!1,error:{message:(n==null?void 0:n.message)||"Error loading user"}}}}async _hasCurrentUser(){const e=await this.kv.waitForKeyToLoad(Xe);return typeof e=="string"?JSON.parse(e)!=null:e!=null}async changeCurrentUser(e){var r;const{user:n}=await this.getCurrentUser();if(!pt(n,e)){await this.setCurrentUser(e),await this.updateUser(e);try{(r=this._broadcastChannel)==null||r.postMessage({type:"auth"})}catch(s){console.error("Error posting message to broadcast channel",s)}}}async syncUserToEndpoint(e){if(this.config.firstPartyPath)try{await fetch(this.config.firstPartyPath+"/",{method:"POST",body:JSON.stringify({type:"sync-user",appId:this.config.appId,user:e}),headers:{"Content-Type":"application/json"}})}catch(n){this._log.error("Error syncing user with external endpoint",n)}}async updateUser(e){try{await this.syncUserToEndpoint(e)}catch(r){this._log.error("Error syncing user with external endpoint",r)}const n={error:void 0,user:e};this._currentUserCached={isLoading:!1,...n},this._dataForQueryCache={},this.querySubs.updateInPlace(r=>{Object.keys(r).forEach(s=>{delete r[s].result})}),this._reconnectTimeoutMs=0,this._transport.close(),this._oauthCallbackResponse=null,this.notifyAuthSubs(n)}sendMagicCode({email:e}){return la({apiURI:this.config.apiURI,appId:this.config.appId,email:e})}async signInWithMagicCode({email:e,code:n}){var o;const r=await this.getCurrentUser(),s=((o=r==null?void 0:r.user)==null?void 0:o.type)==="guest",i=await fa({apiURI:this.config.apiURI,appId:this.config.appId,email:e,code:n,refreshToken:s?r.user.refresh_token:void 0});return await this.changeCurrentUser(i.user),i}async signInWithCustomToken(e){const n=await da({apiURI:this.config.apiURI,appId:this.config.appId,refreshToken:e});return await this.changeCurrentUser(n.user),n}async signInAsGuest(){const e=await ha({apiURI:this.config.apiURI,appId:this.config.appId});return await this.changeCurrentUser(e.user),e}potentiallyInvalidateToken(e,n){var i;const r=(i=e==null?void 0:e.user)==null?void 0:i.refresh_token;if(!r)return;if(n.invalidateToken===!1){this._log.info("[auth-invalidate] skipped invalidateToken");return}ya({apiURI:this.config.apiURI,appId:this.config.appId,refreshToken:r}).then(()=>{this._log.info("[auth-invalidate] completed invalidateToken")}).catch(o=>{})}async signOut(e){const n=await this.getCurrentUser();this.potentiallyInvalidateToken(n,e),await this.changeCurrentUser(null)}createAuthorizationURL({clientName:e,redirectURL:n}){const{apiURI:r,appId:s}=this.config;return`${r}/runtime/oauth/start?app_id=${s}&client_name=${e}&redirect_uri=${n}`}async exchangeCodeForToken({code:e,codeVerifier:n}){var o;const r=await this.getCurrentUser(),s=((o=r==null?void 0:r.user)==null?void 0:o.type)==="guest",i=await Fr({apiURI:this.config.apiURI,appId:this.config.appId,code:e,codeVerifier:n,refreshToken:s?r.user.refresh_token:void 0});return await this.changeCurrentUser(i.user),i}issuerURI(){const{apiURI:e,appId:n}=this.config;return`${e}/runtime/${n}`}async signInWithIdToken({idToken:e,clientName:n,nonce:r}){var a;const s=await this.getCurrentUser(),i=(a=s==null?void 0:s.user)==null?void 0:a.refresh_token,o=await pa({apiURI:this.config.apiURI,appId:this.config.appId,idToken:e,clientName:n,nonce:r,refreshToken:i});return await this.changeCurrentUser(o.user),o}joinRoom(e,n,r){let s=!1;this._rooms[n]||(s=!0,this._rooms[n]={roomType:e,isConnected:!1,error:void 0}),this._presence[n]=this._presence[n]||{};const i=this._presence[n].result;return r&&!i&&(this._presence[n].result=this._presence[n].result||{},this._presence[n].result.user=r,this._notifyPresenceSubs(n)),s&&this._tryJoinRoom(e,n,r),()=>{this._cleanupRoom(n)}}_cleanupRoom(e){var n,r,s;if(!((r=(n=this._presence[e])==null?void 0:n.handlers)!=null&&r.length)&&!Object.keys(this._broadcastSubs[e]??{}).length){const i=(s=this._rooms[e])==null?void 0:s.isConnected;delete this._rooms[e],delete this._presence[e],delete this._broadcastSubs[e],i?this._tryLeaveRoom(e):this._roomsPendingLeave[e]=!0}}getPresence(e,n,r={}){const s=this._rooms[n],i=this._presence[n];return!s||!i||!i.result?null:{...ma(i.result,r,this._sessionId),isLoading:!s.isConnected,error:s.error}}publishPresence(e,n,r){const s=this._rooms[n],i=this._presence[n];if(!s||!i)return;i.result=i.result||{};const o={...i.result.user,...r};i.result.user=o,s.isConnected&&(this._trySetPresence(n,o),this._notifyPresenceSubs(n))}_trySetPresence(e,n){this._trySendAuthed(z(),{op:"set-presence","room-id":e,data:n})}_tryJoinRoom(e,n,r){this._trySendAuthed(z(),{op:"join-room","room-type":e,"room-id":n,data:r}),delete this._roomsPendingLeave[n]}_tryLeaveRoom(e){this._trySendAuthed(z(),{op:"leave-room","room-id":e})}_trySetRoomConnected(e,n){const r=this._rooms[e];r&&(r.isConnected=n)}subscribePresence(e,n,r,s){const i=this.joinRoom(e,n,r.initialPresence||r.initialData),o={...r,roomId:n,cb:s,prev:null};return this._presence[n]=this._presence[n]||{},this._presence[n].handlers=this._presence[n].handlers||[],this._presence[n].handlers.push(o),this._notifyPresenceSub(n,o),()=>{var a,c;this._presence[n].handlers=((c=(a=this._presence[n])==null?void 0:a.handlers)==null?void 0:c.filter(u=>u!==o))??[],i()}}_notifyPresenceSubs(e){var n,r;(r=(n=this._presence[e])==null?void 0:n.handlers)==null||r.forEach(s=>{this._notifyPresenceSub(e,s)})}_notifyPresenceSub(e,n){const r=this.getPresence("",e,n);r&&(n.prev&&!Sa(r,n.prev)||(n.prev=r,n.cb(r)))}_patchPresencePeers(e,n){var o,a,c;const r=((a=(o=this._presence[e])==null?void 0:o.result)==null?void 0:a.peers)||{};let s=Object.fromEntries(Object.entries(r).map(([u,l])=>[u,{data:l}]));(c=this._presence[e])==null||c.result;const i=ht(s,u=>{for(let[l,f,h]of n)switch(f){case"+":ei(u,l,h);break;case"r":rr(u,l,h);break;case"-":sr(u,l);break}delete u[this._sessionId]});this._setPresencePeers(e,i)}_setPresencePeers(e,n){const r={...n};delete r[this._sessionId];const s=Object.fromEntries(Object.entries(r).map(([i,o])=>[i,o.data]));this._presence=ht(this._presence,i=>{rr(i,[e,"result","peers"],s)})}publishTopic({roomType:e,roomId:n,topic:r,data:s}){const i=this._rooms[n];if(i){if(!i.isConnected){this._broadcastQueue[n]=this._broadcastQueue[n]??[],this._broadcastQueue[n].push({topic:r,roomType:e,data:s});return}this._tryBroadcast(n,e,r,s)}}_tryBroadcast(e,n,r,s){this._trySendAuthed(z(),{op:"client-broadcast","room-id":e,roomType:n,topic:r,data:s})}subscribeTopic(e,n,r,s){const i=this.joinRoom(e,n);return this._broadcastSubs[n]=this._broadcastSubs[n]||{},this._broadcastSubs[n][r]=this._broadcastSubs[n][r]||[],this._broadcastSubs[n][r].push(s),this._presence[n]=this._presence[n]||{},()=>{this._broadcastSubs[n][r]=this._broadcastSubs[n][r].filter(o=>o!==s),this._broadcastSubs[n][r].length||delete this._broadcastSubs[n][r],i()}}_notifyBroadcastSubs(e,n,r){var s,i,o;(o=(i=(s=this._broadcastSubs)==null?void 0:s[e])==null?void 0:i[n])==null||o.forEach(a=>{var l,f,h,y,b,g;const c=(l=r.data)==null?void 0:l.data,u=r.data["peer-id"]===this._sessionId?(h=(f=this._presence[e])==null?void 0:f.result)==null?void 0:h.user:(g=(b=(y=this._presence[e])==null?void 0:y.result)==null?void 0:b.peers)==null?void 0:g[r.data["peer-id"]];return a(c,u)})}async uploadFile(e,n,r){var o;const s=await this.getCurrentUser(),i=(o=s==null?void 0:s.user)==null?void 0:o.refresh_token;return ba({...r,apiURI:this.config.apiURI,appId:this.config.appId,path:e,file:n,refreshToken:i})}async deleteFile(e){var i;const n=await this.getCurrentUser(),r=(i=n==null?void 0:n.user)==null?void 0:i.refresh_token;return await ga({apiURI:this.config.apiURI,appId:this.config.appId,path:e,refreshToken:r})}async upload(e,n){var c;const r=await this.getCurrentUser(),s=(c=r==null?void 0:r.user)==null?void 0:c.refresh_token,i=e||n.name,o=await _a({apiURI:this.config.apiURI,appId:this.config.appId,fileName:i,refreshToken:s});return await wa(o,n)}async getDownloadUrl(e){var i;const n=await this.getCurrentUser(),r=(i=n==null?void 0:n.user)==null?void 0:i.refresh_token;return await Ta({apiURI:this.config.apiURI,appId:this.config.appId,path:e,refreshToken:r})}}function ec(t,e){return new vt(as(t,e),e,void 0)}function tc(t){return new St(t,{})}function nc(){return new H("string",!0,!1)}function rc(){return new H("number",!0,!1)}function sc(){return new H("boolean",!0,!1)}function ic(){return new H("date",!0,!1)}function oc(){return new H("json",!0,!1)}function ac(){return new H("json",!0,!1)}function as(t,e){var s,i,o,a;const n={fwd:{},rev:{}};for(const c of Object.values(e))(s=n.fwd)[i=c.forward.on]||(s[i]={}),(o=n.rev)[a=c.reverse.on]||(o[a]={}),n.fwd[c.forward.on][c.forward.label]={entityName:c.reverse.on,cardinality:c.forward.has},n.rev[c.reverse.on][c.reverse.label]={entityName:c.forward.on,cardinality:c.reverse.has};return Object.fromEntries(Object.entries(t).map(([c,u])=>[c,new St(u.attrs,{...n.fwd[c],...n.rev[c]})]))}function cc({entities:t,links:e,rooms:n}){const r=e??{},s=n??{};return new vt(as(t,r),r,s)}const uc={graph:ec,schema:cc,entity:tc,string:nc,number:rc,boolean:sc,date:ic,json:oc,any:ac};let Ot;function lc(t,e){Ot==null||Ot.dispose();const n=bc(e),r=hc(e,a),s=dc(fc(t));function i(l){var f;l.source===s.element.contentWindow&&((f=l.data)==null?void 0:f.type)==="close"&&n.isVisible()&&a()}function o(l){const f=l.shiftKey&&l.ctrlKey&&l.key==="0",h=l.key==="Escape"||l.key==="Esc";(f||h&&n.isVisible())&&a()}function a(){n.isVisible()?n.element.style.display="none":(n.element.style.display="block",n.element.contains(s.element)||n.element.appendChild(s.element))}function c(){n.element.remove(),r.element.remove(),removeEventListener("keydown",o),removeEventListener("message",i)}function u(){document.body.appendChild(n.element),document.body.appendChild(r.element),addEventListener("keydown",o),addEventListener("message",i),Ot={dispose:c}}return u()}function fc(t){return`${dn||Kr?"http://localhost:3000":"https://instantdb.com"}/_devtool?appId=${t}`}function dc(t){const e=document.createElement("iframe");return e.src=t,e.className="instant-devtool-iframe",Object.assign(e.style,{width:"100%",height:"100%",backgroundColor:"white",border:"none"}),{element:e}}function hc(t,e){const n=`
1
+ (function(j,A){typeof exports=="object"&&typeof module<"u"?A(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],A):(j=typeof globalThis<"u"?globalThis:j||self,A(j.instantReact={},j.React))})(this,function(j,A){"use strict";var ku=Object.defineProperty;var Cu=(j,A,L)=>A in j?ku(j,A,{enumerable:!0,configurable:!0,writable:!0,value:L}):j[A]=L;var p=(j,A,L)=>Cu(j,typeof A!="symbol"?A+"":A,L);function L(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=L(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=L(s);e^=parseInt(i,16),e*=16777619,e=e>>>0;const o=L(t[s]);e^=parseInt(o,16),e*=16777619,e=e>>>0}return e.toString(16)}return L(String(t))}const F={Remove:"remove",Replace:"replace",Add:"add"},zn=Symbol.for("__MUTATIVE_PROXY_DRAFT__"),zs=Symbol("__MUTATIVE_RAW_RETURN_SYMBOL__"),ut=Symbol.iterator,re={mutable:"mutable",immutable:"immutable"},$t={};function We(t,e){return t instanceof Map?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function qn(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 Ut(t){return Object.getPrototypeOf(t)===Set.prototype}function Lt(t){return Object.getPrototypeOf(t)===Map.prototype}function se(t){var e;return(e=t.copy)!==null&&e!==void 0?e:t.original}function me(t){return!!P(t)}function P(t){return typeof t!="object"?null:t==null?void 0:t[zn]}function Ft(t){var e;const n=P(t);return n?(e=n.copy)!==null&&e!==void 0?e:n.original:t}function ae(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,re))===re.immutable||typeof n=="function")}function Vn(t,e=[]){if(Object.hasOwnProperty.call(t,"key")){const n=t.parent.copy,r=P(pe(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||We(n,i)))return null;e.push(i)}if(t.parent)return Vn(t.parent,e);e.reverse();try{qs(t.copy,e)}catch{return null}return e}function Se(t){return Array.isArray(t)?1:t instanceof Map?2:t instanceof Set?3:0}function pe(t,e){return Se(t)===2?t.get(e):t[e]}function ze(t,e,n){Se(t)===2?t.set(e,n):t[e]=n}function Nt(t,e){const n=P(t);return(n?se(n):t)[e]}function ye(t,e){return t===e?t!==0||1/t===1/e:t!==t&&e!==e}function Kt(t){if(t)for(;t.finalities.revoke.length>0;)t.finalities.revoke.pop()()}function ve(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 qs(t,e){for(let n=0;n<e.length-1;n+=1){const r=e[n];if(t=pe(Se(t)===3?Array.from(t):t,r),typeof t!="object")throw new Error(`Cannot resolve patch at '${e.join("/")}'.`)}return t}function Vs(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 Bs=Object.prototype.propertyIsEnumerable;function Bn(t,e){let n;if(Array.isArray(t))return Array.prototype.concat.call(t);if(t instanceof Set){if(!Ut(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(!Lt(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,re),n!==void 0)&&n!==re.mutable){if(n===re.immutable)return Vs(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=>{Bs.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 Q(t){t.copy||(t.copy=Bn(t.original,t.options))}function qe(t){if(!ae(t))return Ft(t);if(Array.isArray(t))return t.map(qe);if(t instanceof Map){const n=Array.from(t.entries()).map(([r,s])=>[r,qe(s)]);if(!Lt(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(qe);if(!Ut(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]=qe(t[n]);return e}function lt(t){return me(t)?qe(t):t}function de(t){var e;t.assignedMap=(e=t.assignedMap)!==null&&e!==void 0?e:new Map,t.operated||(t.operated=!0,t.parent&&de(t.parent))}function Gn(){throw new Error("Cannot modify frozen object")}function Pe(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 l=r[u];return typeof c=="object"&&(l instanceof Map||l instanceof Set)?Array.from(l.keys()).indexOf(c):c}).join("/")}`);r.push(o),s.push(e)}else r.push(o)}if(Object.isFrozen(t)||me(t)){r.pop(),s.pop();return}switch(Se(t)){case 2:for(const[a,c]of t)Pe(a,a,n,r,s),Pe(c,a,n,r,s);t.set=t.clear=t.delete=Gn;break;case 3:for(const a of t)Pe(a,a,n,r,s);t.add=t.clear=t.delete=Gn;break;case 1:Object.freeze(t);let o=0;for(const a of t)Pe(a,o,n,r,s),o+=1;break;default:Object.freeze(t),Object.keys(t).forEach(a=>{const c=t[a];Pe(c,a,n,r,s)})}r.pop(),s.pop()}function Wt(t,e){const n=Se(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 Qn(t,e,n){if(me(t)||!ae(t,n)||e.has(t)||Object.isFrozen(t))return;const r=t instanceof Set,s=r?new Map:void 0;if(e.add(t),Wt(t,(i,o)=>{var a;if(me(o)){const c=P(o);Q(c);const u=!((a=c.assignedMap)===null||a===void 0)&&a.size||c.operated?c.copy:c.original;ze(r?s:t,i,u)}else Qn(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 Gs(t,e){const n=t.type===3?t.setMap:t.copy;t.finalities.revoke.length>1&&t.assignedMap.get(e)&&n&&Qn(pe(n,e),t.finalities.handledSet,t.options)}function zt(t){t.type===3&&t.copy&&(t.copy.clear(),t.setMap.forEach(e=>{t.copy.add(Ft(e))}))}function qt(t,e,n,r){if(t.operated&&t.assignedMap&&t.assignedMap.size>0&&!t.finalized){if(n&&r){const i=Vn(t);i&&e(t,i,n,r)}t.finalized=!0}}function Vt(t,e,n,r){const s=P(n);s&&(s.callbacks||(s.callbacks=[]),s.callbacks.push((i,o)=>{var a;const c=t.type===3?t.setMap:t.copy;if(ye(pe(c,e),n)){let u=s.original;s.copy&&(u=s.copy),zt(t),qt(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)),ze(c,e,u)}}),t.options.enableAutoFreeze&&s.finalities!==t.finalities&&(t.options.enableAutoFreeze=!1)),ae(n,t.options)&&t.finalities.draft.push(()=>{const i=t.type===3?t.setMap:t.copy;ye(pe(i,e),n)&&Gs(t,e)})}function Qs(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 l=e.concat([u]),f=ve(l,s);n.push({op:F.Replace,path:f,value:lt(c[u])}),r.push({op:F.Replace,path:f,value:lt(i[u])})}for(let u=i.length;u<c.length;u+=1){const l=e.concat([u]),f=ve(l,s);n.push({op:F.Add,path:f,value:lt(c[u])})}if(i.length<c.length){const{arrayLengthAssignment:u=!0}=a.enablePatches;if(u){const l=e.concat(["length"]),f=ve(l,s);r.push({op:F.Replace,path:f,value:i.length})}else for(let l=c.length;i.length<l;l-=1){const f=e.concat([l-1]),h=ve(f,s);r.push({op:F.Remove,path:h})}}}function Hs({original:t,copy:e,assignedMap:n},r,s,i,o){n.forEach((a,c)=>{const u=pe(t,c),l=lt(pe(e,c)),f=a?We(t,c)?F.Replace:F.Add:F.Remove;if(ye(u,l)&&f===F.Replace)return;const h=r.concat(c),y=ve(h,o);s.push(f===F.Remove?{op:f,path:y}:{op:f,path:y,value:l}),i.push(f===F.Add?{op:F.Remove,path:y}:f===F.Remove?{op:F.Add,path:y,value:u}:{op:F.Replace,path:y,value:u})})}function Js({original:t,copy:e},n,r,s,i){let o=0;t.forEach(a=>{if(!e.has(a)){const c=n.concat([o]),u=ve(c,i);r.push({op:F.Remove,path:u,value:a}),s.unshift({op:F.Add,path:u,value:a})}o+=1}),o=0,e.forEach(a=>{if(!t.has(a)){const c=n.concat([o]),u=ve(c,i);r.push({op:F.Add,path:u,value:a}),s.unshift({op:F.Remove,path:u,value:a})}o+=1})}function Ve(t,e,n,r){const{pathAsArray:s=!0}=t.options.enablePatches;switch(t.type){case 0:case 2:return Hs(t,e,n,r,s);case 1:return Qs(t,e,n,r,s);case 3:return Js(t,e,n,r,s)}}const ft=(t,e,n=!1)=>{if(typeof t=="object"&&t!==null&&(!ae(t,e)||n))throw new Error("Strict mode: Mutable data cannot be accessed directly, please use 'unsafe(callback)' wrap.")},Bt={get size(){return se(P(this)).size},has(t){return se(P(this)).has(t)},set(t,e){const n=P(this),r=se(n);return(!r.has(t)||!ye(r.get(t),e))&&(Q(n),de(n),n.assignedMap.set(t,!0),n.copy.set(t,e),Vt(n,t,e,Ve)),this},delete(t){if(!this.has(t))return!1;const e=P(this);return Q(e),de(e),e.original.has(t)?e.assignedMap.set(t,!1):e.assignedMap.delete(t),e.copy.delete(t),!0},clear(){const t=P(this);if(this.size){Q(t),de(t),t.assignedMap=new Map;for(const[e]of t.original)t.assignedMap.set(e,!1);t.copy.clear()}},forEach(t,e){const n=P(this);se(n).forEach((r,s)=>{t.call(e,this.get(s),s,this)})},get(t){var e,n;const r=P(this),s=se(r).get(t),i=((n=(e=r.options).mark)===null||n===void 0?void 0:n.call(e,s,re))===re.mutable;if(r.options.strict&&ft(s,r.options,i),i||r.finalized||!ae(s,r.options)||s!==r.original.get(t))return s;const o=$t.createDraft({original:s,parentDraft:r,key:t,finalities:r.finalities,options:r.options});return Q(r),r.copy.set(t,o),o},keys(){return se(P(this)).keys()},values(){const t=this.keys();return{[ut]:()=>this.values(),next:()=>{const e=t.next();return e.done?e:{done:!1,value:this.get(e.value)}}}},entries(){const t=this.keys();return{[ut]:()=>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]}}}},[ut](){return this.entries()}},Ys=Reflect.ownKeys(Bt),Hn=(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=P(a),u=((s=(r=t.options).mark)===null||s===void 0?void 0:s.call(r,a,re))===re.mutable;if(t.options.strict&&ft(o,t.options,u),!u&&!c&&ae(o,t.options)&&!t.finalized&&t.original.has(o)){const l=$t.createDraft({original:o,parentDraft:t,key:o,finalities:t.finalities,options:t.options});t.setMap.set(o,l),a=l}else c&&(a=c.proxy);return{done:!1,value:n?a:[a,a]}},dt={get size(){return P(this).setMap.size},has(t){const e=P(this);if(e.setMap.has(t))return!0;Q(e);const n=P(t);return!!(n&&e.setMap.has(n.original))},add(t){const e=P(this);return this.has(t)||(Q(e),de(e),e.assignedMap.set(t,!0),e.setMap.set(t,t),Vt(e,t,t,Ve)),this},delete(t){if(!this.has(t))return!1;const e=P(this);Q(e),de(e);const n=P(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=P(this);Q(t),de(t);for(const e of t.original)t.assignedMap.set(e,!1);t.setMap.clear()},values(){const t=P(this);Q(t);const e=t.setMap.keys();return{[Symbol.iterator]:()=>this.values(),next:Hn(t,e,{isValuesIterator:!0})}},entries(){const t=P(this);Q(t);const e=t.setMap.keys();return{[Symbol.iterator]:()=>this.entries(),next:Hn(t,e,{isValuesIterator:!1})}},keys(){return this.values()},[ut](){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(dt,{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 Zs=Reflect.ownKeys(dt),Jn=new WeakSet,Yn={get(t,e,n){var r,s;const i=(r=t.copy)===null||r===void 0?void 0:r[e];if(i&&Jn.has(i))return i;if(e===zn)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,re),o===re.mutable)return t.options.strict&&ft(u,t.options,!0),u}const a=se(t);if(a instanceof Map&&Ys.includes(e)){if(e==="size")return Object.getOwnPropertyDescriptor(Bt,"size").get.call(t.proxy);const u=Bt[e];if(u)return u.bind(t.proxy)}if(a instanceof Set&&Zs.includes(e)){if(e==="size")return Object.getOwnPropertyDescriptor(dt,"size").get.call(t.proxy);const u=dt[e];if(u)return u.bind(t.proxy)}if(!We(a,e)){const u=qn(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&&ft(c,t.options),t.finalized||!ae(c,t.options))return c;if(c===Nt(t.original,e)){if(Q(t),t.copy[e]=Gt({original:t.original[e],parentDraft:t,key:t.type===1?Number(e):e,finalities:t.finalities,options:t.options}),typeof o=="function"){const u=P(t.copy[e]);return Q(u),de(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=qn(se(t),e);if(i!=null&&i.set)return i.set.call(t.proxy,n),!0;const o=Nt(se(t),e),a=P(o);return a&&ye(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):(ye(n,o)&&(n!==void 0||We(t.original,e))||(Q(t),de(t),We(t.original,e)&&ye(n,t.original[e])?t.assignedMap.delete(e):t.assignedMap.set(e,!0),t.copy[e]=n,Vt(t,e,n,Ve)),!0)},has(t,e){return e in se(t)},ownKeys(t){return Reflect.ownKeys(se(t))},getOwnPropertyDescriptor(t,e){const n=se(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?Yn.set.call(this,t,e,void 0,t.proxy):(Nt(t.original,e)!==void 0||e in t.original?(Q(t),de(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 Gt(t){const{original:e,parentDraft:n,key:r,finalities:s,options:i}=t,o=Se(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,Yn);if(s.revoke.push(u),Jn.add(c),a.proxy=c,n){const l=n;l.finalities.draft.push((f,h)=>{var y,b;const g=P(c);let w=l.type===3?l.setMap:l.copy;const S=pe(w,r),_=P(S);if(_){let m=_.original;_.operated&&(m=Ft(S)),zt(_),qt(_,Ve,f,h),l.options.enableAutoFreeze&&(l.options.updatedValues=(y=l.options.updatedValues)!==null&&y!==void 0?y:new WeakMap,l.options.updatedValues.set(m,_.original)),ze(w,r,m)}(b=g.callbacks)===null||b===void 0||b.forEach(m=>{m(f,h)})})}else{const l=P(c);l.finalities.draft.push((f,h)=>{zt(l),qt(l,Ve,f,h)})}return c}$t.createDraft=Gt;function Xs(t,e,n,r,s){var i;const o=P(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&&Kt(o),s&&Pe(u,u,o==null?void 0:o.options.updatedValues),[u,n&&c?[{op:F.Replace,path:[],value:e[0]}]:n,r&&c?[{op:F.Replace,path:[],value:a}]:r]}function ei(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,re))===re.mutable||!ae(t,e)?t:Gt({original:t,parentDraft:null,finalities:r,options:e});return[a,(c=[])=>{const[u,l,f]=Xs(a,c,s,i,e.enableAutoFreeze);return e.enablePatches?[u,l,f]:u}]}function Qt(t){const{rootDraft:e,value:n,useRawReturn:r=!1,isRoot:s=!0}=t;Wt(n,(i,o,a)=>{const c=P(o);if(c&&e&&c.finalities===e.finalities){t.isContainDraft=!0;const u=c.original;if(a instanceof Set){const l=Array.from(a);a.clear(),l.forEach(f=>a.add(i===f?u:f))}else ze(a,i,u)}else typeof o=="object"&&o!==null&&(t.value=o,t.isRoot=!1,Qt(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 Zn(t){var e;const n=P(t);if(!ae(t,n==null?void 0:n.options))return t;const r=Se(t);if(n&&!n.operated)return n.original;let s;function i(){s=r===2?Lt(t)?new Map(t):new(Object.getPrototypeOf(t)).constructor(t):r===3?Array.from(n.setMap.values()):Bn(t,n==null?void 0:n.options)}if(n){n.finalized=!0;try{i()}finally{n.finalized=!1}}else s=t;if(Wt(s,(o,a)=>{if(n&&ye(pe(n.original,o),a))return;const c=Zn(a);c!==a&&(s===t&&i(),ze(s,o,c))}),r===3){const o=(e=n==null?void 0:n.original)!==null&&e!==void 0?e:s;return Ut(o)?new Set(s):new(Object.getPrototypeOf(o)).constructor(s)}return s}function Xn(t){if(!me(t))throw new Error(`current() is only used for Draft, parameter: ${t}`);return Zn(t)}const ht=(t=>function e(n,r,s){var i,o,a;if(typeof n=="function"&&typeof r!="function")return function(E,...x){return e(E,V=>n.call(this,V,...x),r)};const c=n,u=r;let l=s;if(typeof r!="function"&&(l=r),l!==void 0&&Object.prototype.toString.call(l)!=="[object Object]")throw new Error(`Invalid options: ${l}, 'options' should be an object.`);l=Object.assign(Object.assign({},t),l);const f=me(c)?Xn(c):c,h=Array.isArray(l.mark)?(E,x)=>{for(const V of l.mark){if(typeof V!="function")throw new Error(`Invalid mark: ${V}, 'mark' should be a function.`);const J=V(E,x);if(J)return J}}:l.mark,y=(i=l.enablePatches)!==null&&i!==void 0?i:!1,b=(o=l.strict)!==null&&o!==void 0?o:!1,w={enableAutoFreeze:(a=l.enableAutoFreeze)!==null&&a!==void 0?a:!1,mark:h,strict:b,enablePatches:y};if(!ae(f,w)&&typeof f=="object"&&f!==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[S,_]=ei(f,w);if(typeof r!="function"){if(!ae(f,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[S,_]}let m;try{m=u(S)}catch(E){throw Kt(P(S)),E}const k=E=>{const x=P(S);if(!me(E)){if(E!==void 0&&!ye(E,S)&&(x!=null&&x.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 J=E==null?void 0:E[zs];if(J){const we=J[0];return w.strict&&typeof E=="object"&&E!==null&&Qt({rootDraft:x,value:E,useRawReturn:!0}),_([we])}if(E!==void 0)return typeof E=="object"&&E!==null&&Qt({rootDraft:x,value:E}),_([E])}if(E===S||E===void 0)return _([]);const V=P(E);if(w===V.options){if(V.operated)throw new Error("Cannot return a modified child draft.");return _([Xn(E)])}return _([E])};return m instanceof Promise?m.then(k,E=>{throw Kt(P(S)),E}):k(m)})();Object.prototype.constructor.toString();function er(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 tr(t,e){return Object.keys(t).length===Object.keys(e).length&&Object.keys(t).every(n=>e.hasOwnProperty(n)&&t[n]===e[n])}function pt(t,e){return typeof t!="object"||typeof e!="object"||t===null||e===null?t===e:er(t,e)?Object.keys(t).every(n=>pt(t[n],e[n])):!1}function Ht(t){if(!Be(t))return t;const e={};for(const[n,r]of Object.entries(t))r!==void 0&&(e[n]=r);return e}function nr(t,e){if(!Be(t)||!Be(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=Be(t[r])&&Be(e[r]);n[r]=s?nr(t[r],e[r]):e[r]}return n}function Be(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ti(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 rr(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 sr(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}sr(t[n],r),ni(t[n])&&delete t[n]}}function ni(t){return t&&Object.keys(t).length===0}const ir=/ZULU|YEKT|YEKST|YAPT|YAKT|YAKST|XJT|WGT|WGST|WFT|WETDST|WET|WDT|WAT|WAST|WAKT|WADT|VUT|VOLT|VLAT|VLAST|VET|UZT|UZST|UYT|UYST|UTC|UT|ULAT|ULAST|UCT|TVT|TRUT|TOT|TMT|TKT|TJT|TFT|TAHT|SGT|SCT|SAST|SADT|RET|PYT|PYST|PWT|PST|PONT|PMST|PMDT|PKT|PKST|PHT|PGT|PETT|PETST|PET|PDT|OMST|OMSST|NZT|NZST|NZDT|NUT|NST|NPT|NOVT|NOVST|NFT|NDT|MYT|MVT|MUT|MUST|MST|MSK|MSD|MPT|MMT|MHT|MEZ|METDST|MET|MESZ|MEST|MDT|MAWT|MART|MAGT|MAGST|LKT|LINT|LIGT|LHST|LHDT|KST|KRAT|KRAST|KOST|KGT|KGST|KDT|JST|JAYT|IST|IRT|IRKT|IRKST|IOT|IDT|ICT|HST|HKT|GYT|GMT|GILT|GFT|GET|GEST|GAMT|GALT|FNT|FNST|FKT|FKST|FJT|FJST|FET|EST|EGT|EGST|EETDST|EET|EEST|EDT|EAT|EAST|EASST|DDUT|DAVT|CXT|CST|COT|CLT|CLST|CKT|CHUT|CHAST|CHADT|CETDST|CET|CEST|CDT|CCT|CAST|CADT|BTT|BST|BRT|BRST|BRA|BOT|BORT|BNT|BDT|BDST|AZT|AZST|AZOT|AZOST|AWST|AWSST|AST|ART|ARST|ANAT|ANAST|AMT|AMST|ALMT|ALMST|AKST|AKDT|AFT|AEST|AESST|AEDT|ADT|ACWST|ACT|ACST|ACSST|ACDT$/,ri={ZULU:0,YEKT:18e3,YEKST:21600,YAPT:36e3,YAKT:32400,YAKST:32400,XJT:21600,WGT:-10800,WGST:-7200,WFT:43200,WETDST:3600,WET:0,WDT:32400,WAT:3600,WAST:25200,WAKT:43200,WADT:28800,VUT:39600,VOLT:10800,VLAT:36e3,VLAST:36e3,VET:-14400,UZT:18e3,UZST:21600,UYT:-10800,UYST:-7200,UTC:0,UT:0,ULAT:28800,ULAST:32400,UCT:0,TVT:43200,TRUT:36e3,TOT:46800,TMT:18e3,TKT:46800,TJT:18e3,TFT:18e3,TAHT:-36e3,SGT:28800,SCT:14400,SAST:7200,SADT:37800,RET:14400,PYT:-14400,PYST:-10800,PWT:32400,PST:-28800,PONT:39600,PMST:-10800,PMDT:-7200,PKT:18e3,PKST:21600,PHT:28800,PGT:36e3,PETT:43200,PETST:43200,PET:-18e3,PDT:-25200,OMST:21600,OMSST:21600,NZT:43200,NZST:43200,NZDT:46800,NUT:-39600,NST:-12600,NPT:20700,NOVT:25200,NOVST:25200,NFT:-12600,NDT:-9e3,MYT:28800,MVT:18e3,MUT:14400,MUST:18e3,MST:-25200,MSK:10800,MSD:14400,MPT:36e3,MMT:23400,MHT:43200,MEZ:3600,METDST:7200,MET:3600,MESZ:7200,MEST:7200,MDT:-21600,MAWT:18e3,MART:-34200,MAGT:39600,MAGST:39600,LKT:19800,LINT:50400,LIGT:36e3,LHST:37800,LHDT:37800,KST:32400,KRAT:25200,KRAST:25200,KOST:39600,KGT:21600,KGST:21600,KDT:36e3,JST:32400,JAYT:32400,IST:7200,IRT:12600,IRKT:28800,IRKST:28800,IOT:21600,IDT:10800,ICT:25200,HST:-36e3,HKT:28800,GYT:-14400,GMT:0,GILT:43200,GFT:-10800,GET:14400,GEST:14400,GAMT:-32400,GALT:-21600,FNT:-7200,FNST:-3600,FKT:-10800,FKST:-10800,FJT:43200,FJST:46800,FET:10800,EST:-18e3,EGT:-3600,EGST:0,EETDST:10800,EET:7200,EEST:10800,EDT:-14400,EAT:10800,EAST:-21600,EASST:-21600,DDUT:36e3,DAVT:25200,CXT:25200,CST:-21600,COT:-18e3,CLT:-14400,CLST:-10800,CKT:-36e3,CHUT:36e3,CHAST:45900,CHADT:49500,CETDST:7200,CET:3600,CEST:7200,CDT:-18e3,CCT:28800,CAST:34200,CADT:37800,BTT:21600,BST:3600,BRT:-10800,BRST:-7200,BRA:-10800,BOT:-14400,BORT:28800,BNT:28800,BDT:21600,BDST:7200,AZT:14400,AZST:14400,AZOT:-3600,AZOST:0,AWST:28800,AWSST:32400,AST:-14400,ART:-10800,ARST:-10800,ANAT:43200,ANAST:43200,AMT:-14400,AMST:14400,ALMT:21600,ALMST:25200,AKST:-32400,AKDT:-28800,AFT:16200,AEST:36e3,AESST:39600,AEDT:39600,ADT:-10800,ACWST:31500,ACT:-18e3,ACST:34200,ACSST:37800,ACDT:37800};function si(t){return new Date(t)}function ii(t){return new Date(t+"Z")}const oi=/^(\d+)[\./-](\d+)[\./-](\d+)$/;function ai(t){const e=t.match(oi);if(!e)return null;const[n,r,s,i]=e;return r<=0||s<=0||i<=0?null:r>999?new Date(Date.UTC(r,s-1,i,0,0,0,0)):new Date(Date.UTC(i,r-1,s,0,0,0,0))}function ci(t){const[e,n]=t.split(" ");return new Date(e+"T"+n+"Z")}function ui(t){const[e,n]=t.split(" ");return new Date(e+"T"+n+"Z")}function li(t){return new Date(t)}function fi(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 di(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}function hi(t){const e=/^(\d+)-(\d{1,2})-(\d{1,2})([ T])(.+)$/,n=t.match(e);if(n){const[,r,s,i,o,a]=n,c=s.padStart(2,"0"),u=i.padStart(2,"0"),l=`${r}-${c}-${u}T${a}`;return new Date(l)}return null}function pi(t){const[e,n]=t.split(", "),[r,s,i]=e.split("/").map(Number),o=n.match(/(\d{1,2}):(\d{2}):(\d{2}) (AM|PM)/);if(!o)throw new Error(`Unable to parse time from: ${t}`);let[,a,c,u,l]=o;return a=Number(a),c=Number(c),u=Number(u),l==="PM"&&a!==12?a+=12:l==="AM"&&a===12&&(a=0),new Date(Date.UTC(i,r-1,s,a,c,u))}function yi(t){switch(t){case"epoch":return new Date(0);case"infinity":case"-infinity":case"today":case"tomorrow":case"yesterday":return null}}function bi(t){const e=t.match(ir);if(!e)return null;const[n]=e,r=ri[n],s=new Date(t.replace(ir,"Z"));return new Date(s.getTime()-r*1e3)}const gi=[ai,ui,fi,pi,li,ii,di,ci,si,yi,bi,hi];function _i(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 gi){const n=_i(e,t);if(n)return n}return null}function wi(t){try{const e=JSON.parse(t);return typeof e=="string"?Jt(e):null}catch{return null}}function yt(t){if(t!==void 0){if(t===null)return null;if(t instanceof Date)return t;if(typeof t=="string"){const e=Jt(t)||wi(t)||Jt(t.trim());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}.`)}}class Ee{constructor(e,n){p(this,"attrs");p(this,"linkIndex");p(this,"_blobAttrs",null);p(this,"_primaryKeys",null);p(this,"_forwardIdents",null);p(this,"_revIdents",null);this.attrs=e,this.linkIndex=n}resetAttrIndexes(){this._blobAttrs=null,this._primaryKeys=null,this._forwardIdents=null,this._revIdents=null}addAttr(e){this.attrs[e.id]=e,this.resetAttrIndexes()}deleteAttr(e){delete this.attrs[e],this.resetAttrIndexes()}updateAttr(e){const n=this.attrs[e.id];n&&(this.attrs[e.id]={...n,...e},this.resetAttrIndexes())}getAttr(e){return this.attrs[e]}get blobAttrs(){if(this._blobAttrs)return this._blobAttrs;this._blobAttrs=new Map;for(const e of Object.values(this.attrs))if(Zt(e)){const[n,r,s]=e["forward-identity"];Z(this.blobAttrs,[r,s],e)}return this._blobAttrs}get primaryKeys(){if(this._primaryKeys)return this._primaryKeys;this._primaryKeys=new Map;for(const e of Object.values(this.attrs))if(e["primary?"]){const[n,r]=e["forward-identity"];Z(this._primaryKeys,[r],e)}return this._primaryKeys}get forwardIdents(){if(this._forwardIdents)return this._forwardIdents;this._forwardIdents=new Map;for(const e of Object.values(this.attrs)){const n=e["forward-identity"],[r,s,i]=n;Z(this._forwardIdents,[s,i],e)}return this._forwardIdents}get revIdents(){if(this._revIdents)return this._revIdents;this._revIdents=new Map;for(const e of Object.values(this.attrs)){const n=e["reverse-identity"];if(n){const[r,s,i]=n;Z(this._revIdents,[s,i],e)}}return this._revIdents}toJSON(){return{attrs:this.attrs,linkIndex:this.linkIndex}}}function Ti(t){return t.cardinality==="one"}function Yt(t){return t["value-type"]==="ref"}function Zt(t){return t["value-type"]==="blob"}function Ie(t,e){return e.reduce((n,r)=>n&&n.get(r),t)}function ce(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)&&ce(t.get(n),r)}function Z(t,e,n){let r=t;const s=e.length-1;for(let i=0;i<s;i++){const o=e[i];let a=r.get(o);a===void 0&&(a=new Map,r.set(o,a)),r=a}s>-1&&r.set(e[s],n)}function or(t,e,n){const r=new Map,s=new Map,i=new Map;for(const o of e){let[a,c,u]=o;const l=t.getAttr(c);if(!l){console.warn("no such attr",c,a);continue}l["checked-data-type"]==="date"&&n&&(u=yt(u),o[2]=u),Yt(l)&&Z(i,[u,c,a],o),Z(r,[a,c,u],o),Z(s,[c,a,u],o)}return{eav:r,aev:s,vae:i}}function ar(t){return{triples:X(t.eav,3),cardinalityInference:t.cardinalityInference,useDateObjects:t.useDateObjects,version:1}}function cr(t,e){return Ge(t,e.triples,e.cardinalityInference,e.useDateObjects)}function ur(t,e){if(t)return new Ee(t.attrs,t.linkIndex);if(e&&"__type"in e)return new Ee(e.attrs,e.linkIndex)}function mi(t,e){return Ie(t.eav,[e])!==void 0}function Ge(t,e,n,r){const s=or(t,e,r);return s.cardinalityInference=n,s.useDateObjects=r,s}function Qe(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=X(c,2).find(l=>l[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 l=(i=X(c,2).find(g=>g[2]===a))==null?void 0:i[0];if(!l)return null;const[f,h,y,...b]=e;return[n,h,l,...b]}else{const[o,...a]=e;return[n,...a]}}function lr(t,e,n){const r=Qe(t,n);if(!r)return;const[s,i,o]=r,a=e.getAttr(i);a&&(ce(t.eav,[s,i,o]),ce(t.aev,[i,s,o]),Yt(a)&&ce(t.vae,[o,i,s]))}let Si=0;function fr(t,e,n){const[r,s,i]=n;let o;const a=Ie(t.eav,[r,s,i]);return a&&(o=a[3]),o||Date.now()*10+Si++}function dr(t,e,n){const r=Qe(t,n);if(!r)return;let[s,i,o]=r;const a=e.getAttr(i);if(!a)return;a["checked-data-type"]==="date"&&t.useDateObjects&&(o=yt(o));const c=Ie(t.eav,[s,i,o]),u=(c==null?void 0:c[3])??fr(t,a,r),l=[s,i,o,u];Ti(a)?(Z(t.eav,[s,i],new Map([[o,l]])),Z(t.aev,[i,s],new Map([[o,l]]))):(Z(t.eav,[s,i,o],l),Z(t.aev,[i,s,o],l)),Yt(a)&&Z(t.vae,[o,i,s],l)}function vi(t,e,n){var y;const r=Qe(t,n);if(!r)return;const[s,i,o]=r,a=e.getAttr(i);if(!a)return;if(!Zt(a))throw new Error("merge operation is not supported for links");const c=Ie(t.eav,[s,i]);if(!c)return;const u=(y=c.values().next())==null?void 0:y.value;if(!u)return;const l=u[2],f=nr(l,o),h=[s,i,f,fr(t,a,u)];Z(t.eav,[s,i],new Map([[f,h]])),Z(t.aev,[i,s],new Map([[f,h]]))}function Xt(t,e,n){var u,l;const[r,s]=n,i=Qe(t,[r]);if(!i)return;const[o]=i,a=t.eav.get(o);if(a){for(const f of a.keys()){const h=e.getAttr(f);h&&h["on-delete-reverse"]==="cascade"&&X(a.get(f),1).forEach(([y,b,g])=>{var w;return Xt(t,e,[g,(w=h["reverse-identity"])==null?void 0:w[1]])}),(!s||!h||((u=h["forward-identity"])==null?void 0:u[1])===s)&&(ce(t.aev,[f,o]),ce(t.eav,[o,f]))}a.size===0&&ce(t.eav,[o])}const c=t.vae.get(o)&&X(t.vae.get(o),2);c&&c.forEach(f=>{var w,S,_;const[h,y,b]=f,g=e.getAttr(y);(!s||!g||((w=g["reverse-identity"])==null?void 0:w[1])===s)&&(ce(t.eav,[h,y,b]),ce(t.aev,[y,h,b]),ce(t.vae,[b,y,h])),g&&g["on-delete"]==="cascade"&&((S=g["reverse-identity"])==null?void 0:S[1])===s&&Xt(t,e,[h,(_=g["forward-identity"])==null?void 0:_[1]])}),((l=t.vae.get(o))==null?void 0:l.size)===0&&ce(t.vae,[o])}function hr(t,e,n){const r=or(e,n,t.useDateObjects);Object.keys(r).forEach(s=>{t[s]=r[s]})}function Ei(t,[e]){t.addAttr(e)}function pr(t){return X(t.eav,3)}function Oi(t,e,[n]){if(!e.getAttr(n))return;const r=pr(t).filter(([s,i])=>i!==n);e.deleteAttr(n),hr(t,e,r)}function Ai(t,e,[n]){e.getAttr(n.id)&&(e.updateAttr(n),hr(t,e,pr(t)))}function ki(t,e,n){const[r,...s]=n;switch(r){case"add-triple":dr(t,e,s);break;case"deep-merge-triple":vi(t,e,s);break;case"retract-triple":lr(t,e,s);break;case"delete-entity":Xt(t,e,s);break;case"add-attr":Ei(e,s);break;case"delete-attr":Oi(t,e,s);break;case"update-attr":Ai(t,e,s);break;case"restore-attr":break;case"rule-params":break;default:throw new Error(`unhandled transaction action: ${r}`)}}function X(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())X(r,e-1,n);return n}function bt(t,e,n){var i;const r=[];if(n!=null&&n.hasOwnProperty("$not")){for(const o of e.keys())n.$not!==o&&r.push(e.get(o));return r}if(n!=null&&n.hasOwnProperty("$isNull")){const{attrId:o,isNull:a,reverse:c}=n.$isNull;if(c)for(const u of e.keys()){const l=t.vae.get(u),f=!l||!l.get(o);(a?f:!f)&&r.push(e.get(u))}else{const u=t.aev.get(o);for(const l of e.keys()){const f=!u||((i=u.get(l))==null?void 0:i.get(null))||!u.get(l);(a?f:!f)&&r.push(e.get(l))}}return r}if(n!=null&&n.$comparator)return X(e,1).filter(n.$op);const s=n.in||n.$in||[n];for(const o of s){const a=e.get(o);a&&r.push(a)}return r}function Ci(t,e,n){let r="";return t!==void 0&&(r+="e"),e!==void 0&&(r+="a"),n!==void 0&&(r+="v"),r}function Pi(t,[e,n,r]){var i,o;switch(Ci(e,n,r)){case"e":{const a=t.eav.get(e);return X(a,2)}case"ea":{const a=(i=t.eav.get(e))==null?void 0:i.get(n);return X(a,1)}case"eav":{const a=(o=t.eav.get(e))==null?void 0:o.get(n);return a?bt(t,a,r):[]}case"ev":{const a=t.eav.get(e);if(!a)return[];const c=[];for(const u of a.values())c.push(...bt(t,u,r));return c}case"a":{const a=t.aev.get(n);return X(a,2)}case"av":{const a=t.aev.get(n);if(!a)return[];const c=[];for(const u of a.values())c.push(...bt(t,u,r));return c}case"v":{const a=[];for(const c of t.eav.values())for(const u of c.values())a.push(...bt(t,u,r));return a}default:return X(t.eav,3)}}function Ii(t,e,n){var s;const r={};if(!e)return r;for(const[i,o]of e.entries()){const a=(s=t.eav.get(n))==null?void 0:s.get(o.id),c=X(a,1);for(const u of c)r[i]=u[2]}return r}function K(t,e,n){var r;return(r=t.forwardIdents.get(e))==null?void 0:r.get(n)}function Oe(t,e,n){var r;return(r=t.revIdents.get(e))==null?void 0:r.get(n)}function Mi(t,e){return t.blobAttrs.get(e)}function yr(t,e){var r;const n=t.primaryKeys.get(e);return n||((r=t.forwardIdents.get(e))==null?void 0:r.get("id"))}function ji(t,e,n){const r=Qe(t,n);if(!r)return;const[s,i,o]=r;if(e.getAttr(i))return Ie(t.eav,[s,i])}function Ri(t,e,n){const r=n.filter(([s,i,o,a,c])=>{if(s!=="add-triple"&&s!=="deep-merge-triple")return!0;const u=c==null?void 0:c.mode;if(u!=="create"&&u!=="update")return!0;let l=!1;const f=e.getAttr(o);if(f){const h=yr(e,f["forward-identity"][1]);l=!!ji(t,e,[i,h==null?void 0:h.id,i])}return!(u==="create"&&l||u==="update"&&!l)});return ht({store:t,attrsStore:e},s=>{r.forEach(i=>{ki(s.store,s.attrsStore,i)})},{mark:s=>{if(s instanceof Ee)return"immutable"}})}function xi(t){return typeof t=="string"&&t.startsWith("?")}function Di(t,e,n){if(n.hasOwnProperty(t)){const r=n[t];return gr(r,e,n)}return{...n,[t]:e}}function br(t,e,n){return t===e?n:null}function $i(t){switch(typeof t){case"string":return t.startsWith("?")?Di:br;default:return br}}const Ui=["in","$in","$not","$isNull","$comparator"];function Li(t){for(const e of Ui)if(t.hasOwnProperty(e))return!0;return!1}function gr(t,e,n){return n?typeof t=="object"?Li(t)?n:null:$i(t)(t,e,n):null}function Fi(t,e,n){return t.reduce((r,s,i)=>{const o=e[i];return gr(s,o,r)},n)}function Ni(t,e,n){return zi(t,e,n).map(r=>Fi(e,r,n)).filter(r=>r)}function Ki(t,e,n){return e.or?e.or.patterns.flatMap(r=>en(t,r,n)):e.and?e.and.patterns.reduce((r,s)=>en(t,s,r),n):n.flatMap(r=>Ni(t,e,r))}function en(t,e,n=[{}]){return e.reduce((r,s)=>Ki(t,s,r),n)}function tn(t,e){return Array.isArray(e)?e.map(n=>tn(t,n)):xi(e)?t[e]:e}function Wi(t,{find:e,where:n}){return en(t,n).map(s=>tn(s,e))}function zi(t,e,n){return Pi(t,tn(n,e))}const qi=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;function Me(t){return typeof t=="string"&&qi.test(t)}const B=[];for(let t=0;t<256;++t)B.push((t+256).toString(16).slice(1));function Vi(t,e=0){return(B[t[e+0]]+B[t[e+1]]+B[t[e+2]]+B[t[e+3]]+"-"+B[t[e+4]]+B[t[e+5]]+"-"+B[t[e+6]]+B[t[e+7]]+"-"+B[t[e+8]]+B[t[e+9]]+"-"+B[t[e+10]]+B[t[e+11]]+B[t[e+12]]+B[t[e+13]]+B[t[e+14]]+B[t[e+15]]).toLowerCase()}let nn;const Bi=new Uint8Array(16);function Gi(){if(!nn){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");nn=crypto.getRandomValues.bind(crypto)}return nn(Bi)}const _r={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Qi(t,e,n){var s;if(_r.randomUUID&&!t)return _r.randomUUID();t=t||{};const r=t.random??((s=t.rng)==null?void 0:s.call(t))??Gi();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,Vi(r)}function wr(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 Hi(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 Ji(t,e){return Hi(wr(t),wr(e))}function z(){return Qi()}function Yi(t,e){return t.localeCompare(e)}function Zi(){let t=Yi;if(typeof Intl=="object"&&Intl.hasOwnProperty("Collator"))try{t=Intl.Collator("en-US").compare}catch{}return t}const Xi=Zi();let Tr=!0;const eo=t=>{Tr=t};let to=0;function He(t){return gt(`_${t}`,to++)}function gt(t,e){return`?${t}-${e}`}class je extends Error{constructor(e){super(e),this.name="AttrNotFoundError"}}function no(t,e){const n=yr(t,e);if(!n)throw new je(`Could not find id attr for ${e}`);return n}function mr(t,e,n,r){return[ro(t,e,n,r)]}function ro(t,e,n,r){return[t(n,r),no(e,n).id,t(n,r),t("time",r)]}function so(t,e,n){return t.map(r=>r===e?n:r)}function Sr(t,e,n,r,s){const i=K(e,n,s),o=Oe(e,n,s),a=i||o;if(!a)throw new je(`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"],[l,f]=a["reverse-identity"],h=r+1,y=i?[t(u,r),a.id,t(f,h),He("time")]:[t(u,h),a.id,t(f,r),He("time")];return[i?f:u,h,y,a,!!i]}function vr(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 io(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=vr(!0,e.$like);return{$comparator:!0,$op:function(i){return r(i[2])}}}if(e.hasOwnProperty("$ilike")){const r=vr(!1,e.$ilike);return{$comparator:!0,$op:function(i){return r(i[2])}}}return e}function oo(t,e,n,r,s,i){const o=K(e,n,s),a=Oe(e,n,s),c=o||a;if(!c)throw new je(`No attr for etype = ${n} label = ${s}`);if(i!=null&&i.hasOwnProperty("$isNull")){const u=K(e,n,"id");if(!u)throw new je(`No attr for etype = ${n} label = id`);return[t(n,r),u.id,{$isNull:{attrId:c.id,isNull:i.$isNull,reverse:!o}},He("time")]}return o?[t(n,r),c.id,io(c,i),He("time")]:[i,c.id,t(n,r),He("time")]}function ao(t,e,n,r,s){const[i,o,a]=s.reduce((c,u)=>{const[l,f,h]=c,[y,b,g]=Sr(t,e,l,f,u);return[y,b,[...h,g]]},[n,r,[]]);return[i,o,a]}function rn(t,e,n,r,s,i){const o=s.slice(0,s.length-1),a=s[s.length-1],[c,u,l]=ao(t,e,n,r,o),f=oo(t,e,c,u,a,i);return l.concat([f])}function co(t,e){return e?[e].concat(t):t}function uo([t,e]){return t==="or"&&Array.isArray(e)}function lo([t,e]){return t==="and"&&Array.isArray(e)}function fo(t,e,n){return(r,s)=>{const i=t(r,s);return e==i?i:`${i}-${n}`}}function Er(t,e,n,r,s,i){const o=t(r,s),a=i.map((c,u)=>{const l=fo(t,o,u);return Ar(l,n,r,s,c)});return{[e]:{patterns:a,joinSym:o}}}function ho(t){const e=[];for(let n=1;n<=t.length;n++)e.push(t.slice(0,n));return e}function Or(t,e,n,r,s){return ho(s).map(i=>rn(t,e,n,r,i,{$isNull:!0}))}function Ar(t,e,n,r,s){return Object.entries(s).flatMap(([i,o])=>{if(uo([i,o]))return Er(t,"or",e,n,r,o);if(lo([i,o]))return Er(t,"and",e,n,r,o);if(i==="$entityIdStartsWith")return[];const a=i.split(".");if(o!=null&&o.hasOwnProperty("$ne")&&(o={...o,$not:o.$ne},delete o.$ne),o!=null&&o.hasOwnProperty("$not")){const c=rn(t,e,n,r,a,o),u=Or(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:Or(t,e,n,r,a),joinSym:t(n,r)}}]:rn(t,e,n,r,a,o)})}function po(t,e,n,r){const s=gt;return r?Ar(s,t,e,n,r).concat(mr(s,t,e,n)):mr(s,t,e,n)}function yo(t,e,n){return[t(e,n),t("time",n)]}function bo(t,e,n,r,s,i){const[o,a,c,u,l]=Sr(t,e,n,r,s),f=so(c,t(n,r),i);return[o,a,f,u,l]}function go(t,e,n,{etype:r,level:s,form:i},o){const a=Object.keys(i).filter(c=>c!=="$");return a.length?Object.entries(o).map(function([u,l]){return a.map(function(y){var g,w,S;const b=!!(e.cardinalityInference&&((S=(w=(g=n.linkIndex)==null?void 0:g[r])==null?void 0:w[y])!=null&&S.isSingular));try{const[_,m,k]=bo(t,n,r,s,y,u),E=Cr(e,n,{etype:_,level:m,form:i[y],join:k}),x=b?E[0]:E;return{[y]:x}}catch(_){if(_ instanceof je)return{[y]:b?void 0:[]};throw _}}).reduce(function(y,b){return{...y,...b}},l)}):Object.values(o)}function _o(t,e,n){return n==="string"?Xi(t,e):t>e?1:-1}function Je(t,e,n,r,s){return e===r||e==null&&r==null?Ji(t,n):r==null?1:e==null?-1:_o(e,r,s)}function _t([t,e],[n,r],s){return Je(t,e,n,r,s)}function sn(t){return t==null?t:new Date(t).getTime()}function wo(t,e,n,r){var b;const[s,i,o,a]=t,c=n==="desc"?1:-1;if(((b=e["forward-identity"])==null?void 0:b[2])==="id")return _t(r,[s,a],null)===c;const[u,l]=r,f=e["checked-data-type"],h=f==="date"?sn(l):l,y=f==="date"?sn(o):o;return _t([u,h],[s,y],f)===c}function To(t,e){const n=e[1];return t.getAttr(n)}function mo(t,e,n){const r=Object.keys(n)[0];return K(t,e,r)}function So(t,e,n,r){if(n)return To(t,n);if(r)return mo(t,e,r)}function vo(t,e,n){var s,i;if(!Array.isArray(n.fields))return Mi(t,e);const r=new Map;for(const o of n.fields){const a=K(t,e,o),c=(s=a==null?void 0:a["forward-identity"])==null?void 0:s[2];c&&Zt(a)&&r.set(c,a)}if(!r.has("id")){const o=K(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 Eo(t,e,{etype:n,pageInfo:r,dq:s,form:i}){var b,g;const o=(b=i==null?void 0:i.$)==null?void 0:b.order,a=kr(i),c=Oo(i);let u=Wi(t,s);const l=r==null?void 0:r["start-cursor"],f=So(e,n,l,o);if(f&&((g=f==null?void 0:f["forward-identity"])==null?void 0:g[2])!=="id"){const w=f["checked-data-type"]==="date",S=f.id;u=u.map(([_])=>{var k,E,x,V,J;let m=(J=(V=(x=(E=(k=t.eav.get(_))==null?void 0:k.get(S))==null?void 0:E.values())==null?void 0:x.next())==null?void 0:V.value)==null?void 0:J[2];return w&&(m=sn(m)),[_,m]})}u.sort(c==="asc"?function(S,_){return _t(S,_,f==null?void 0:f["checked-data-type"])}:function(S,_){return _t(_,S,f==null?void 0:f["checked-data-type"])});let h={};const y=vo(e,n,s);for(const w of u){const[S]=w;if(h[S]||!a&&l&&f&&wo(l,f,c,w))continue;const _=Ii(t,y,S);_&&(h[S]=_)}return h}function Oo(t){var n;const e=(n=t.$)==null?void 0:n.order;return e&&e[Object.keys(e)[0]]||"asc"}function kr(t){var s,i,o;const e=(s=t.$)==null?void 0:s.offset,n=(i=t.$)==null?void 0:i.before,r=(o=t.$)==null?void 0:o.after;return!e&&!n&&!r}function Ao(t,e,{etype:n,level:r,form:s,join:i,pageInfo:o}){var h,y,b,g,w;if(!kr(s)&&(!o||!o["start-cursor"]))return[];const a=co(po(e,n,r,(h=s.$)==null?void 0:h.where),i),c=yo(gt,n,r),u=(y=s.$)==null?void 0:y.fields,l=Eo(t,e,{etype:n,pageInfo:o,form:s,dq:{where:a,find:c,fields:u}}),f=((b=s.$)==null?void 0:b.limit)||((g=s.$)==null?void 0:g.first)||((w=s.$)==null?void 0:w.last);if(f!=null){r>0&&Tr&&console.warn("WARNING: Limits in child queries are only run client-side. Data returned from the server will not have a limit.");const S=Object.entries(l);return S.length<=f?l:Object.fromEntries(S.slice(0,f))}return l}function ko(t,e,n){try{return Ao(t,e,n)}catch(r){if(r instanceof je)return{};throw r}}function Cr(t,e,n){const r=ko(t,e,n);return go(gt,t,e,n,r)}function Co(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 Pr({store:t,attrsStore:e,pageInfo:n,aggregate:r},s){const o={data:Object.keys(s).reduce(function(c,u){return r!=null&&r[u]||u==="$$ruleParams"||(c[u]=Cr(t,e,{etype:u,form:s[u],level:0,pageInfo:n==null?void 0:n[u]})),c},{})};return n&&(o.pageInfo=Co(n)),r&&(o.aggregate=r),o}function Po(){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 Io=Po();function wt(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(Io.has(i))return(o,a)=>wt(t,e,[...n,a?[i,t,e,o,a]:[i,t,e,o]])}})}function Ir(t,e){return`lookup__${t}__${JSON.stringify(e)}`}function Tt(t){return t.startsWith("lookup__")}function on(t){const[e,n,...r]=t.split("__");return[n,JSON.parse(r.join("__"))]}function Mo(t){return new Proxy({__etype:t},{get(e,n){if(n==="lookup")return(s,i)=>wt(t,on(Ir(s,i)),[]);if(n==="__etype")return t;const r=n;return Tt(r)?wt(t,on(r),[]):wt(t,r,[])}})}function an(){return new Proxy({},{get(t,e){return Mo(e)}})}const jo=an();function Ro(t){return t.__ops}function xo(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 Do(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 $o(t,e,n){return n.indexOf(".")!==-1&&!K(t,e,n)}function cn(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 Uo(t,e,n){if(!$o(t,e,n))return K(t,e,n);const r=cn(n),s=K(t,e,r)||Oe(t,e,r);if(s&&s["value-type"]!=="ref")throw new Error(`${n} does not reference a valid link attribute.`);return s}function un(t){return typeof t=="string"&&!Tt(t)?null:typeof t=="string"&&Tt(t)?on(t):Do(t)}function ee(t,e,n){const r=un(n);if(r===null)return n;const[s,i]=r,o=Uo(t,e,s);if(!o||!o["unique?"])throw new Error(`${s} is not a unique attribute.`);return[o.id,i]}function Mr(t,e,n,r){var o;const s=ee(t,e,n);return Array.isArray(s)?[["add-triple",s,(o=K(t,e,"id"))==null?void 0:o.id,s]].concat(r):r}function Lo({attrsStore:t},[e,n,r]){const s=Object.entries(r).flatMap(([i,o])=>{const a=Array.isArray(o)?o:[o],c=K(t,e,i),u=Oe(t,e,i);return a.map(l=>c?["add-triple",ee(t,e,n),c.id,ee(t,c["reverse-identity"][1],l)]:["add-triple",ee(t,u["forward-identity"][1],l),u==null?void 0:u.id,ee(t,e,n)])});return Mr(t,e,n,s)}function Fo({attrsStore:t},[e,n,r]){const s=Object.entries(r).flatMap(([i,o])=>{const a=Array.isArray(o)?o:[o],c=K(t,e,i),u=Oe(t,e,i);return a.map(l=>c?["retract-triple",ee(t,e,n),c.id,ee(t,c["reverse-identity"][1],l)]:["retract-triple",ee(t,u["forward-identity"][1],l),u.id,ee(t,e,n)])});return Mr(t,e,n,s)}function No(t,e,n,r){var s;if(Array.isArray(r)){const[i,o]=r;for(const a of t||[]){const c=a==null?void 0:a.aev.get(i);if(c){for(const[u,l,f]of X(c,2))if(f===o)return!0}}}else for(const i of t||[]){const o=i==null?void 0:i.eav.get(r);if(o){for(const a of o.keys())if(((s=e.getAttr(a))==null?void 0:s["forward-identity"][1])==n)return!0}}return!1}function jr({stores:t,attrsStore:e},[n,r,s,i]){return(i==null?void 0:i.upsert)===!1?{mode:"update"}:(i==null?void 0:i.upsert)===!0?null:No(t,e,n,r)?{mode:"update"}:null}function Ko(t,e){const{attrsStore:n}=t,[r,s,i,o]=e,a=Ht(i),c=ee(n,r,s);return[["id",c]].concat(Object.entries(a)).map(([l,f])=>{const h=K(n,r,l);return h["checked-data-type"]==="date"&&t.useDateObjects&&(f=yt(f)),["add-triple",c,h.id,f,{mode:"create"}]})}function Wo(t,e){const{attrsStore:n}=t,[r,s,i,o]=e,a=Ht(i),c=ee(n,r,s),u=jr(t,[r,c,i,o]);return[["id",c]].concat(Object.entries(a)).map(([f,h])=>{const y=K(n,r,f);return y["checked-data-type"]==="date"&&t.useDateObjects&&(h=yt(h)),["add-triple",c,y.id,h,...u?[u]:[]]})}function zo({attrsStore:t},[e,n]){return[["delete-entity",ee(t,e,n),e]]}function qo(t,e){const{attrsStore:n}=t,[r,s,i,o]=e,a=Ht(i),c=ee(n,r,s),u=jr(t,[r,c,i,o]),l=Object.entries(a).map(([h,y])=>{const b=K(n,r,h);return["deep-merge-triple",c,b.id,y,...u?[u]:[]]});return[["add-triple",c,K(n,r,"id").id,c,...u?[u]:[]]].concat(l)}function Vo({attrsStore:t},[e,n,r]){return[["rule-params",ee(t,e,n),e,r]]}function Bo(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 Go(t,e){const[n,...r]=Bo(e);switch(n){case"merge":return qo(t,r);case"create":return Ko(t,r);case"update":return Wo(t,r);case"link":return Lo(t,r);case"unlink":return Fo(t,r);case"delete":return zo(t,r);case"ruleParams":return Vo(t,r);default:throw new Error(`unsupported action ${n}`)}}function Qo(t){switch(t){case"string":case"date":case"boolean":case"number":return t;default:return}}function Ho(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=Qo(r==null?void 0:r.valueType);return{"index?":i,"unique?":s,"checked-data-type":o}}function mt(t,e,n,r){const s=t?Ho(t,e,n):null,i=z(),a=[z(),e,n];return{id:i,"forward-identity":a,"value-type":"blob",cardinality:"one","unique?":!1,"index?":!1,isUnsynced:!0,...s||{},...r||{}}}function Jo(t,e,n){return Object.values(t.links).find(i=>i.forward.on===e&&i.forward.label===n||i.reverse.on===e&&i.reverse.label===n)}function Yo(t,e,n){const r=Jo(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":[z(),s.on,s.label],"reverse-identity":[z(),i.on,i.label],cardinality:s.has==="one"?"one":"many","unique?":i.has==="one","on-delete":s.onDelete,"on-delete-reverse":i.onDelete}}function Rr(t,e,n,r){const s=t?Yo(t,e,n):null,i=z(),o=[z(),e,n],a=[z(),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 Zo=new Set(["create","update","merge","link","unlink"]),Xo=new Set(["link","unlink"]),ea=new Set(["create","update","merge"]),ta=new Set(["link","unlink","create","update","merge","delete","ruleParams"]),ln={"unique?":!0,"index?":!0},na={...ln,cardinality:"one"};function ra(t){const e=[],[n,r,s,i]=t;if(!ta.has(n))return e;const o=un(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 l of u){const f=un(l);f&&e.push({etype:r,lookupPair:f,linkLabel:a})}}return e}function sa({attrsStore:t,schema:e},n){var h,y;const r=new Set,s=[],i=[];function o(b,g){return K(t,b,g)||s.find(w=>w["forward-identity"][1]===b&&w["forward-identity"][2]===g)}function a(b,g){return Oe(t,b,g)||s.find(w=>{var S,_;return((S=w["reverse-identity"])==null?void 0:S[1])===b&&((_=w["reverse-identity"])==null?void 0:_[2])===g})}function c(b){s.push(b),i.push(["add-attr",b]),r.add(b.id)}function u(b){b&&"isUnsynced"in b&&b.isUnsynced&&!r.has(b.id)&&(s.push(b),i.push(["add-attr",b]),r.add(b.id))}function l(b,g){return g.indexOf(".")!==-1&&!o(b,g)}function f(b,g){const w=o(b,g),S=a(b,g);u(w),u(S),!w&&!S&&c(Rr(e,b,g,na))}for(const b of n)for(const{etype:g,lookupPair:w,linkLabel:S}of ra(b)){const _=w[0];if(S){f(g,S);const m=o(g,S),k=a(g,S);u(m),u(k);const E=((h=m==null?void 0:m["reverse-identity"])==null?void 0:h[1])||((y=k==null?void 0:k["forward-identity"])==null?void 0:y[1])||S;if(l(E,_))f(E,cn(_));else{const x=o(E,_);x||c(mt(e,E,_,ln)),u(x)}}else if(l(g,_))f(g,cn(_));else{const m=o(g,_);m||c(mt(e,g,_,ln)),u(m)}}for(const b of n){const[g,w,S,_]=b;if(Zo.has(g)){const m=o(w,"id");u(m),m||c(mt(e,w,"id",{"unique?":!0}));for(const k of Object.keys(_)){const E=o(w,k);if(u(E),ea.has(g)&&(E||c(mt(e,w,k,k==="id"?{"unique?":!0}:null))),Xo.has(g)){const x=a(w,k);!E&&!x&&c(Rr(e,w,k)),u(x)}}}}if(s.length){const b={...t.attrs};for(const g of s)b[g.id]=g;return[new Ee(b,t.linkIndex),i]}return[t,i]}function ia(t,e){const r=(Array.isArray(e)?e:[e]).flatMap(c=>Ro(c)),[s,i]=sa(t,r),o={...t,attrsStore:s},a=r.flatMap(c=>Go(o,c));return[...i,...a]}function xr(t,e){typeof requestIdleCallback>"u"?t():requestIdleCallback(t,{timeout:e})}const Ye="__meta";class Dr{constructor(e,n){}}class fn{constructor(e){p(this,"currentValue");p(this,"_subs",[]);p(this,"_persister");p(this,"_merge");p(this,"serialize");p(this,"parse");p(this,"_saveThrottleMs");p(this,"_idleCallbackMaxWaitMs");p(this,"_nextSave",null);p(this,"_nextGc",null);p(this,"_pendingSaveKeys",new Set);p(this,"_loadedKeys",new Set);p(this,"_loadingKeys");p(this,"_objectSize");p(this,"_log");p(this,"onKeyLoaded");p(this,"_version",0);p(this,"_meta",{isLoading:!0,onLoadCbs:[],value:null,error:null,attempts:0});p(this,"_gcOpts");this._persister=e.persister,this._merge=e.merge,this.serialize=e.serialize,this.parse=e.parse,this._objectSize=e.objectSize,this._log=e.logger,this._saveThrottleMs=e.saveThrottleMs??100,this._idleCallbackMaxWaitMs=e.idleCallbackMaxWaitMs??1e3,this._gcOpts=e.gc,this.currentValue={},this._loadedKeys=new Set,this._loadingKeys={},this._initMeta(),e.preloadEntryCount&&this._preloadEntries(e.preloadEntryCount)}async _initMeta(){var e;this._meta.loadingPromise&&await this._meta.loadingPromise;try{const n=this._persister.getItem(Ye);this._meta.loadingPromise=n;const r=await n;this._meta.isLoading=!1,this._meta.error=null,this._meta.loadingPromise=null,this._meta.attempts=0;const s=((e=this._meta.value)==null?void 0:e.objects)??{},i=r??{},o=i.objects??{};this._meta.value={...i,objects:{...s,...o}}}catch(n){this._meta.error=n,this._meta.attempts++,this._meta.loadingPromise=null}}async _getMeta(){return this._meta.value?this._meta.value:this._meta.loadingPromise?(await this._meta.loadingPromise,this._meta.value):(this._initMeta(),await this._meta.loadingPromise,this._meta.value)}async _refreshMeta(){return await this._initMeta(),this._meta.value}async _preloadEntries(e){const n=await this.waitForMetaToLoad();if(!n)return;const r=Object.entries(n.objects);r.sort(([s,i],[o,a])=>a.updatedAt-i.updatedAt);for(const[s]of r.slice(0,e))this._loadKey(s)}async _getFromStorage(e){try{const n=await this._persister.getItem(e);return n&&this.parse(e,n)}catch(n){return console.error(`Unable to read from storage for key=${e}`,n),null}}async waitForKeyToLoad(e){return this._loadedKeys.has(e)?this.currentValue[e]:(await(this._loadingKeys[e]||this._loadKey(e)),this.currentValue[e])}async waitForMetaToLoad(){return this._getMeta()}unloadKey(e){this._loadedKeys.delete(e),delete this._loadingKeys[e],delete this.currentValue[e]}async _loadKey(e){if(this._loadedKeys.has(e)||e in this._loadingKeys)return;const n=this._getFromStorage(e);this._loadingKeys[e]=n;const r=await n;if(delete this._loadingKeys[e],this._loadedKeys.add(e),r){const s=this._merge(e,r,this.currentValue[e]);s&&(this.currentValue[e]=s)}this.onKeyLoaded&&this.onKeyLoaded(e)}_writeToStorage(e){const n=[],r=e==null?void 0:e.skipGc;if(this._meta.isLoading){const f=new Promise((h,y)=>{setTimeout(()=>this._enqueuePersist(e?{...e,attempts:(e.attempts||0)+1}:{attempts:1}).then(h).catch(y),10+((e==null?void 0:e.attempts)??0)*1e3)});return n.push(f),Promise.all(n).then(h=>h.reduce((y,b)=>y+b,0))}const s=this._meta.value;if(!s)return Promise.resolve(0);const i=[],o=[];for(const f of this._pendingSaveKeys)f in this.currentValue?o.push(f):(i.push(f),delete s.objects[f]);for(const f of i){const h=this._persister.removeItem(f);n.push(h.then(()=>1)),this._loadedKeys.delete(f),this._pendingSaveKeys.delete(f)}const a=[],c=[[Ye,s]],u=s.objects??{};s.objects=u;for(const f of o)if(this._loadedKeys.has(f)){const h=this.serialize(f,this.currentValue[f]);c.push([f,h]);const y=this._objectSize(h),b=u[f]??{createdAt:Date.now(),updatedAt:Date.now(),size:y};b.updatedAt=Date.now(),b.size=y,u[f]=b,this._pendingSaveKeys.delete(f)}else a.push(f);const l=this._persister.multiSet(c);n.push(l.then(()=>1));for(const f of a){const h=this._loadKey(f).then(()=>this._enqueuePersist(e));n.push(h)}return r||this.gc(),Promise.all(n).then(f=>f.reduce((h,y)=>h+y,0))}async flush(){return this._nextSave?(clearTimeout(this._nextSave),this._nextSave=null,this._writeToStorage()):void 0}async _gc(){if(!this._gcOpts)return;const e=new Set(await this._persister.getAllKeys());e.delete(Ye);const n=new Set(Object.keys(this.currentValue));for(const h of Object.keys(this._loadingKeys))n.add(h);for(const h of this._loadedKeys)n.add(h);const r=await this._refreshMeta();if(!r){this._log.info("Could not gc because we were not able to load meta");return}const s=[],i={gcOpts:this._gcOpts,keys:e,sacredKeys:n,removed:[],metaRemoved:[],removedMissingCount:0,removedOldCount:0,removedThresholdCount:0,removedSizeCount:0};for(const h of e)n.has(h)||h in r.objects||(this._log.info("Lost track of key in meta",h),s.push(this._persister.removeItem(h)),i.removed.push(h),i.removedMissingCount++);const o=Date.now();for(const[h,y]of Object.entries(r.objects))!n.has(h)&&y.updatedAt<o-this._gcOpts.maxAgeMs&&(s.push(this._persister.removeItem(h)),delete r.objects[h],i.removed.push(h),i.removedOldCount++);const a=Object.entries(r.objects);a.sort(([h,y],[b,g])=>y.updatedAt-g.updatedAt);const c=a.filter(([h])=>!n.has(h));if(a.length>this._gcOpts.maxEntries)for(const[h]of c.slice(0,a.length-this._gcOpts.maxEntries))s.push(this._persister.removeItem(h)),delete r.objects[h],i.removed.push(h),i.removedThresholdCount++;const u=Object.entries(r.objects);u.sort(([h,y],[b,g])=>y.updatedAt-g.updatedAt);const l=u.filter(([h])=>!n.has(h));let f=u.reduce((h,[y,b])=>h+b.size,0);for(;f>0&&f>this._gcOpts.maxSize&&l.length;){const[[h,y]]=l.splice(0,1);f-=y.size,s.push(this._persister.removeItem(h)),delete r.objects[h],i.removed.push(h),i.removedSizeCount++}for(const h of Object.keys(r.objects))!e.has(h)&&!n.has(h)&&delete r.objects[h];return(i.removed.length||i.metaRemoved.length)&&s.push(this._enqueuePersist({skipGc:!0})),this._log.info("Completed GC",i),await Promise.all(s),i}gc(){this._nextGc||(this._nextGc=setTimeout(()=>{xr(()=>{this._nextGc=null,this._gc()},30*1e3)},1e3*60+Math.random()*500))}_enqueuePersist(e){return new Promise((n,r)=>{if(this._nextSave){n(0);return}this._nextSave=setTimeout(()=>{xr(()=>{this._nextSave=null,this._writeToStorage(e).then(n).catch(r)},this._idleCallbackMaxWaitMs)},this._saveThrottleMs)})}version(){return this._version}updateInPlace(e){this._version++;const[n,r]=ht(this.currentValue,e,{enablePatches:!0});for(const s of r){const i=s.path[0];i&&typeof i=="string"&&(this._pendingSaveKeys.add(i),this._loadedKeys.has(i)||this._loadKey(i))}this.currentValue=n,this._enqueuePersist();for(const s of this._subs)s(this.currentValue);return n}subscribe(e){return this._subs.push(e),e(this.currentValue),()=>{this._subs=this._subs.filter(n=>n!==e)}}}const oa=6,aa=["kv","querySubs","syncSubs"];function ca(t){return function(n){console.error("Error in IndexedDB event",{source:t,event:n})}}async function ua(t){return new Promise(e=>{const n=indexedDB.open(t);n.onerror=r=>{e(null)},n.onsuccess=r=>{const i=r.target.result;e(i)},n.onupgradeneeded=r=>{var i;(i=r.target.transaction)==null||i.abort(),e(null)}})}async function la(t,e,n){const r=typeof e=="string"?JSON.parse(e):e;if(!r)return;const s=new Set;return new Promise((i,o)=>{var l,f,h;const a={};for(const[y,b]of Object.entries(r)){const g=typeof b=="string"?JSON.parse(b):b;if(g.lastAccessed){const S={createdAt:g.lastAccessed,updatedAt:g.lastAccessed,size:((h=(f=(l=g.result)==null?void 0:l.store)==null?void 0:f.triples)==null?void 0:h.length)??0};a[y]=S}const w=n.put(g,y);s.add(w)}const c={objects:a},u=n.put(c,Ye);s.add(u);for(const y of s)y.onsuccess=()=>{s.delete(y),s.size===0&&i()},y.onerror=b=>{o(b)}})}async function $r(t,e,n){const r=n.put(e,t);return new Promise((s,i)=>{r.onsuccess=()=>s(),r.onerror=o=>i(o)})}async function fa(t,e){const n=await ua(`instant_${t}_5`);if(!n)return;const r=await new Promise((l,f)=>{const b=n.transaction(["kv"],"readonly").objectStore("kv").openCursor();b.onerror=w=>{f(w)};const g=[];b.onsuccess=()=>{const w=b.result;if(w){const S=w.key,_=w.value;g.push([S,_]),w.continue()}else l(g)},b.onerror=w=>{f(w)}}),s=e.transaction(["kv","querySubs"],"readwrite"),i=s.objectStore("kv"),o=s.objectStore("querySubs"),a=[],c={objects:{}};for(const[l,f]of r)switch(l){case"querySubs":{const h=la(l,f,o);a.push(h);break}default:{const h=$r(l,f,i);a.push(h);const y={createdAt:Date.now(),updatedAt:Date.now(),size:0};c.objects[l]=y;break}}const u=$r(Ye,c,i);a.push(u),await Promise.all(a),await new Promise((l,f)=>{s.oncomplete=h=>l(h),s.onerror=h=>f(h),s.onabort=h=>f(h)})}const Ur=new Map;class Lr extends Dr{constructor(n,r){super(n,r);p(this,"dbName");p(this,"_storeName");p(this,"_appId");p(this,"_prefix");p(this,"_dbPromise");this.dbName=`instant_${n}_${oa}`,this._storeName=r,this._appId=n,this._dbPromise=this._init()}_init(){return new Promise((n,r)=>{let s=!1;const i=indexedDB.open(this.dbName,1);i.onerror=o=>{r(o)},i.onsuccess=o=>{const c=o.target.result;if(s){const u=fa(this._appId,c).catch(l=>{ca("Error upgrading store from version 5 to 6.")(l)});Ur.set(this.dbName,u),u.then(()=>n(c)).catch(()=>n(c))}else{const u=Ur.get(this.dbName);u?u.then(()=>n(c)).catch(()=>n(c)):n(c)}},i.onupgradeneeded=o=>{s=!0,this._upgradeStore(o)}})}_upgradeStore(n){const s=n.target.result;for(const i of aa)s.objectStoreNames.contains(i)||s.createObjectStore(i)}async getItem(n){const r=await this._dbPromise;return new Promise((s,i)=>{const c=r.transaction([this._storeName],"readonly").objectStore(this._storeName).get(n);c.onerror=u=>{i(u)},c.onsuccess=u=>{c.result?s(c.result):s(null)}})}async setItem(n,r){const s=await this._dbPromise;return new Promise((i,o)=>{const u=s.transaction([this._storeName],"readwrite").objectStore(this._storeName).put(r,n);u.onerror=l=>{o(l)},u.onsuccess=l=>{i()}})}async multiSet(n){const r=await this._dbPromise;return new Promise((s,i)=>{const o=r.transaction([this._storeName],"readwrite"),a=o.objectStore(this._storeName),c=new Set;for(const[u,l]of n){const f=a.put(l,u);c.add(f)}for(const u of c)u.onerror=l=>{o.abort(),i(l)},u.onsuccess=l=>{c.delete(u),c.size===0&&s()}})}async removeItem(n){const r=await this._dbPromise;return new Promise((s,i)=>{const c=r.transaction([this._storeName],"readwrite").objectStore(this._storeName).delete(n);c.onerror=u=>{i(u)},c.onsuccess=u=>{s()}})}async getAllKeys(){const n=await this._dbPromise;return new Promise((r,s)=>{const a=n.transaction([this._storeName],"readonly").objectStore(this._storeName).getAllKeys();a.onerror=c=>{s(c)},a.onsuccess=c=>{r(a.result.filter(u=>typeof u=="string"))}})}}class Fr{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 Re extends Error{constructor(n,r){super(n);p(this,"hint");this.hint=r;const s=new.target.prototype;Object.setPrototypeOf&&Object.setPrototypeOf(this,s),Error.captureStackTrace&&Error.captureStackTrace(this,Re),this.name="InstantError"}get[Symbol.toStringTag](){return"InstantError"}}class Ze extends Re{constructor(n){var i;const r=((i=n.body)==null?void 0:i.message)||`API Error (${n.status})`;super(r,n.body.hint);p(this,"body");p(this,"status");const s=new.target.prototype;Object.setPrototypeOf&&Object.setPrototypeOf(this,s),Error.captureStackTrace&&Error.captureStackTrace(this,Ze),this.name="InstantAPIError",this.status=n.status,this.body=n.body}get[Symbol.toStringTag](){return"InstantAPIError"}}async function ue(t,e){const n=await fetch(t,e),r=await n.json();return n.status===200?Promise.resolve(r):Promise.reject(new Ze({status:n.status,body:r}))}function da({apiURI:t,appId:e,email:n}){return ue(`${t}/runtime/auth/send_magic_code`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({"app-id":e,email:n})})}async function ha({apiURI:t,appId:e,email:n,code:r,refreshToken:s}){return await ue(`${t}/runtime/auth/verify_magic_code`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({"app-id":e,email:n,code:r,...s?{"refresh-token":s}:{}})})}async function pa({apiURI:t,appId:e,refreshToken:n}){return await ue(`${t}/runtime/auth/verify_refresh_token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({"app-id":e,"refresh-token":n})})}async function ya({apiURI:t,appId:e}){return await ue(`${t}/runtime/auth/sign_in_guest`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({"app-id":e})})}async function Nr({apiURI:t,appId:e,code:n,codeVerifier:r,refreshToken:s}){return await ue(`${t}/runtime/oauth/token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({app_id:e,code:n,code_verifier:r,refresh_token:s})})}async function ba({apiURI:t,appId:e,nonce:n,idToken:r,clientName:s,refreshToken:i}){return await ue(`${t}/runtime/oauth/id_token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({app_id:e,nonce:n,id_token:r,client_name:s,refresh_token:i})})}async function ga({apiURI:t,appId:e,refreshToken:n}){return await ue(`${t}/runtime/signout`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({app_id:e,refresh_token:n})})}async function _a({apiURI:t,appId:e,path:n,file:r,refreshToken:s,contentType:i,contentDisposition:o}){const a={app_id:e,path:n,authorization:`Bearer ${s}`,"content-type":i||r.type};return o&&(a["content-disposition"]=o),await ue(`${t}/storage/upload`,{method:"PUT",headers:a,body:r})}async function wa({apiURI:t,appId:e,path:n,refreshToken:r}){const{data:s}=await ue(`${t}/storage/files?app_id=${e}&filename=${encodeURIComponent(n)}`,{method:"DELETE",headers:{"content-type":"application/json",authorization:`Bearer ${r}`}});return s}async function Ta({apiURI:t,appId:e,fileName:n,refreshToken:r,metadata:s={}}){const{data:i}=await ue(`${t}/storage/signed-upload-url`,{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${r}`},body:JSON.stringify({app_id:e,filename:n})});return i}async function ma(t,e){return(await fetch(t,{method:"PUT",body:e,headers:{"Content-Type":e.type}})).ok}async function Sa({apiURI:t,appId:e,path:n,refreshToken:r}){const{data:s}=await ue(`${t}/storage/signed-download-url?app_id=${e}&filename=${encodeURIComponent(n)}`,{method:"GET",headers:{"content-type":"application/json",authorization:`Bearer ${r}`}});return s}let dn=!1,Kr=!1,Wr=!1;typeof window<"u"&&typeof window.localStorage<"u"&&(dn=!!window.localStorage.getItem("devBackend"),Kr=!!window.localStorage.getItem("__instantLogging"),Wr=!!window.localStorage.getItem("__devtoolLocalDash"));function zr(t,e){if(!e)return t;const n={};return e.forEach(r=>{n[r]=t[r]}),n}function va(t,e,n){const r={peers:{}};if(e&&"user"in e?e.user:!0){const i=zr(t.user??{},e==null?void 0:e.keys);r.user={...i,peerId:n}}for(const i of Object.keys(t.peers??{})){const o=(e==null?void 0:e.peers)===void 0,a=Array.isArray(e==null?void 0:e.peers)&&(e==null?void 0:e.peers.includes(i));if(o||a){const c=zr(t.peers[i],e==null?void 0:e.keys);r.peers[i]={...c,peerId:i}}}return r}function Ea(t,e){if(t.isLoading!==e.isLoading||t.error!==e.error||(t.user||e.user)&&(!t.user||!e.user||!tr(t.user,e.user))||!er(t.peers,e.peers))return!0;for(const r of Object.keys(t.peers))if(!tr(t.peers[r],e.peers[r]))return!0;return!1}class qr{constructor(){p(this,"promise");p(this,"_resolve");p(this,"_reject");this.promise=new Promise((e,n)=>{this._resolve=e,this._reject=n})}resolve(e){this._resolve(e)}reject(e){this._reject(e)}}function Vr(t,e=[]){t.forEach(n=>{const{data:r}=n,{"datalog-result":s}=r,{"join-rows":i}=s;for(const o of i)for(const a of o)e.push(a);Vr(n["child-nodes"],e)})}function Br(t){const e=[];return Vr(t,e),e}function Gr(t){return Object.values(t.links).reduce((e,n)=>{var r,s;return e[r=n.forward.on]??(e[r]={}),e[n.forward.on][n.forward.label]={isForward:!0,isSingular:n.forward.has==="one",link:n},e[s=n.reverse.on]??(e[s]={}),e[n.reverse.on][n.reverse.label]={isForward:!1,isSingular:n.reverse.has==="one",link:n},e},{})}const hn="v0.22.134";function Oa(t,e){return{info:t?(...n)=>console.info(...n,e()):()=>{},debug:t?(...n)=>console.debug(...n,e()):()=>{},error:t?(...n)=>console.error(...n,e()):()=>{}}}class H{constructor(e,n,r,s={indexed:!1,unique:!1}){p(this,"valueType");p(this,"required");p(this,"isIndexed");p(this,"config");p(this,"metadata",{});this.valueType=e,this.required=n,this.isIndexed=r,this.config=s}clientRequired(){return new H(this.valueType,!1,this.isIndexed,this.config)}optional(){return new H(this.valueType,!1,this.isIndexed,this.config)}unique(){return new H(this.valueType,this.required,this.isIndexed,{...this.config,unique:!0})}indexed(){return new H(this.valueType,this.required,!0,{...this.config,indexed:!0})}}class St{constructor(e,n){p(this,"attrs");p(this,"links");this.attrs=e,this.links=n}asType(){return new St(this.attrs,this.links)}}class vt{constructor(e,n,r){p(this,"entities");p(this,"links");p(this,"rooms");this.entities=e,this.links=n,this.rooms=r}withRoomSchema(){return new vt(this.entities,this.links,{})}}class $ extends Error{constructor(e,n){const r=n?`At path '${n}': ${e}`:e;super(r),this.name="QueryValidationError"}}const Qr=["where","order","limit","last","first","offset","after","before","fields","aggregate"],Aa=t=>t.valueType||"unknown",Hr=(t,e,n=!1)=>{if(n||t==null)return!0;switch(e){case"string":return typeof t=="string";case"number":return typeof t=="number"&&!isNaN(t);case"boolean":return typeof t=="boolean";case"date":return t instanceof Date||typeof t=="string"||typeof t=="number";default:return!0}},ka=(t,e,n,r,s,i,o)=>{const a=i.valueType==="json",c=(u,l,f)=>{if(!Hr(f,l,a))throw new $(`Invalid value for operator '${u}' on attribute '${r}' in entity '${s}'. Expected ${l}, but received: ${typeof f}`,o)};switch(t){case"in":case"$in":if(!Array.isArray(e))throw new $(`Operator '${t}' for attribute '${r}' in entity '${s}' must be an array, but received: ${typeof e}`,o);for(const u of e)c(t,n,u);break;case"$not":case"$ne":case"$gt":case"$lt":case"$gte":case"$lte":c(t,n,e);break;case"$like":case"$ilike":if(c(t,"string",e),t==="$ilike"&&!i.isIndexed)throw new $(`Operator '${t}' can only be used with indexed attributes, but '${r}' in entity '${s}' is not indexed`,o);break;case"$isNull":c(t,"boolean",e);break;default:throw new $(`Unknown operator '${t}' for attribute '${r}' in entity '${s}'`,o)}},xe=(t,e,n,r,s)=>{const i=Aa(n),o=n.valueType==="json";if(typeof t=="object"&&t!==null&&!Array.isArray(t)){if(o)return;const c=t;for(const[u,l]of Object.entries(c))ka(u,l,i,e,r,n,`${s}.${u}`)}else if(!Hr(t,i,o))throw new $(`Invalid value for attribute '${e}' in entity '${r}'. Expected ${i}, but received: ${typeof t}`,s)},Ca=(t,e,n,r,s)=>{const i=t.split(".");if(i.length<2)throw new $(`Invalid dot notation path '${t}'. Must contain at least one dot.`,s);let o=n;for(let l=0;l<i.length-1;l++){const f=i[l],h=r.entities[o];if(!h)throw new $(`Entity '${o}' does not exist in schema while traversing dot notation path '${t}'.`,s);const y=h.links[f];if(!y){const b=Object.keys(h.links);throw new $(`Link '${f}' does not exist on entity '${o}' in dot notation path '${t}'. Available links: ${b.length>0?b.join(", "):"none"}`,s)}o=y.entityName}const a=i[i.length-1],c=r.entities[o];if(!c)throw new $(`Target entity '${o}' does not exist in schema for dot notation path '${t}'.`,s);if(a==="id"){if(typeof e=="string"&&!Me(e))throw new $(`Invalid value for id field in entity '${o}'. Expected a UUID, but received: ${e}`,s);xe(e,t,new H("string",!1,!0),n,s);return}const u=c.attrs[a];if(Object.keys(c.links).includes(a)){if(typeof e=="string"&&!Me(e))throw new $(`Invalid value for link '${a}' in entity '${o}'. Expected a UUID, but received: ${e}`,s);xe(e,t,new H("string",!1,!0),n,s);return}if(!u){const l=Object.keys(c.attrs);throw new $(`Attribute '${a}' does not exist on entity '${o}' in dot notation path '${t}'. Available attributes: ${l.length>0?l.join(", ")+", id":"id"}`,s)}xe(e,t,u,n,s)},Jr=(t,e,n,r)=>{for(const[s,i]of Object.entries(t)){if(s==="or"||s==="and"){if(Array.isArray(i))for(const u of i)typeof u=="object"&&u!==null&&Jr(u,e,n,`${r}.${s}[${u}]`);continue}if(s==="id"){xe(i,"id",new H("string",!1,!0),e,`${r}.id`);continue}if(s.includes(".")){Ca(s,i,e,n,`${r}.${s}`);continue}const o=n.entities[e];if(!o)continue;const a=o.attrs[s],c=o.links[s];if(!a&&!c){const u=Object.keys(o.attrs),l=Object.keys(o.links);throw new $(`Attribute or link '${s}' does not exist on entity '${e}'. Available attributes: ${u.length>0?u.join(", "):"none"}. Available links: ${l.length>0?l.join(", "):"none"}`,`${r}.${s}`)}if(a)xe(i,s,a,e,`${r}.${s}`);else if(c){if(typeof i=="string"&&!Me(i))throw new $(`Invalid value for link '${s}' in entity '${e}'. Expected a UUID, but received: ${i}`,`${r}.${s}`);const u=new H("string",!1,!0);xe(i,s,u,e,`${r}.${s}`)}}},Pa=(t,e,n,r,s=0)=>{for(const o of Object.keys(t))if(!Qr.includes(o))throw new $(`Invalid query parameter '${o}' in $ object. Valid parameters are: ${Qr.join(", ")}. Found: ${o}`,r);const i=["offset","before","after","first","last"];for(const o of i)if(t[o]!==void 0&&s>0)throw new $(`'${o}' can only be used on top-level namespaces. It cannot be used in nested queries.`,r);if(t.where&&n){if(typeof t.where!="object"||t.where===null)throw new $(`'where' clause must be an object in entity '${e}', but received: ${typeof t.where}`,r?`${r}.where`:void 0);Jr(t.where,e,n,r?`${r}.where`:"where")}},Yr=(t,e,n,r,s=0)=>{var i;if(!t||typeof t!="object")throw new $(`Query part for entity '${e}' must be an object, but received: ${typeof t}`,r);for(const o of Object.keys(t))if(o!=="$"){if(n&&!(o in n.entities[e].links)){const c=Object.keys(n.entities[e].links);throw new $(`Link '${o}' does not exist on entity '${e}'. Available links: ${c.length>0?c.join(", "):"none"}`,`${r}.${o}`)}const a=t[o];if(typeof a=="object"&&a!==null){const c=(i=n==null?void 0:n.entities[e].links[o])==null?void 0:i.entityName;c&&Yr(a,c,n,`${r}.${o}`,s+1)}}else{const a=t[o];if(typeof a!="object"||a===null)throw new $(`Query parameter '$' must be an object in entity '${e}', but received: ${typeof a}`,`${r}.$`);Pa(a,e,n,`${r}.$`,s)}},Zr=(t,e)=>{if(typeof t!="object"||t===null)throw new $(`Query must be an object, but received: ${typeof t}${t===null?" (null)":""}`);if(Array.isArray(t))throw new $(`Query must be an object, but received: ${typeof t}`);const n=t;for(const r of Object.keys(n)){if(Array.isArray(t[r]))throw new $(`Query keys must be strings, but found key of type: ${typeof r}`,r);if(typeof r!="string")throw new $(`Query keys must be strings, but found key of type: ${typeof r}`,r);if(r!=="$$ruleParams"){if(e&&!e.entities[r]){const s=Object.keys(e.entities);throw new $(`Entity '${r}' does not exist in schema. Available entities: ${s.length>0?s.join(", "):"none"}`,r)}Yr(n[r],r,e,r,0)}}},Xr=t=>typeof t!="string"?!1:Tt(t)?!0:Me(t);class ie extends Error{constructor(e){super(e),this.name="TransactionValidationError"}}const es=t=>t.length>0?t.join(", "):"none",Ia=(t,e)=>new ie(`Entity '${t}' does not exist in schema. Available entities: ${es(e)}`),pn={string:t=>typeof t=="string",number:t=>typeof t=="number"&&!isNaN(t),boolean:t=>typeof t=="boolean",date:t=>t instanceof Date||typeof t=="string"||typeof t=="number",json:()=>!0},Ma=(t,e)=>{var n;return t==null?!0:((n=pn[e.valueType])==null?void 0:n.call(pn,t))??!1},ts=(t,e)=>{const n=e.entities[t];if(!n)throw Ia(t,Object.keys(e.entities));return n},yn=(t,e,n)=>{const r=ts(t,n);if(typeof e!="object"||e===null)throw new ie(`Arguments for data operation on entity '${t}' must be an object, but received: ${typeof e}`);for(const[s,i]of Object.entries(e)){if(s==="id")continue;const o=r.attrs[s];if(o&&!Ma(i,o))throw new ie(`Invalid value for attribute '${s}' in entity '${t}'. Expected ${o.valueType}, but received: ${typeof i}`)}},ns=(t,e,n)=>{const r=ts(t,n);if(typeof e!="object"||e===null)throw new ie(`Arguments for link operation on entity '${t}' must be an object, but received: ${typeof e}`);for(const[s,i]of Object.entries(e)){if(!r.links[s]){const a=Object.keys(r.links);throw new ie(`Link '${s}' does not exist on entity '${t}'. Available links: ${es(a)}`)}if(i!=null){if(Array.isArray(i)){for(const a of i)if(!Xr(a))throw new ie(`Invalid entity ID in link '${s}' for entity '${t}'. Expected a UUID or a lookup, but received: ${a}`)}else if(!Xr(i))throw new ie(`Invalid UUID in link '${s}' for entity '${t}'. Expected a UUID, but received: ${i}`)}}},ja={create:yn,update:yn,merge:yn,link:ns,unlink:ns,delete:()=>{}},Ra=(t,e)=>{if(!e)return;const[n,r,s,i]=t;if(!Array.isArray(s)&&!Me(s))throw new ie(`Invalid id for entity '${r}'. Expected a UUID, but received: ${s}`);if(typeof r!="string")throw new ie(`Entity name must be a string, but received: ${typeof r}`);const o=ja[n];o&&i!==void 0&&o(r,i,e)},xa=(t,e)=>{const n=Array.isArray(t)?t:[t];for(const r of n){if(!r||typeof r!="object")throw new ie(`Transaction chunk must be an object, but received: ${typeof r}`);if(!Array.isArray(r.__ops))throw new ie(`Transaction chunk must have __ops array, but received: ${typeof r.__ops}`);for(const s of r.__ops){if(!Array.isArray(s))throw new ie(`Transaction operation must be an array, but received: ${typeof s}`);Ra(s,e)}}};let rs=0;class ss{constructor(e){p(this,"type","ws");p(this,"conn");p(this,"id");p(this,"onopen");p(this,"onmessage");p(this,"onclose");p(this,"onerror");this.id=`${this.type}_${rs++}`,this.conn=new WebSocket(e),this.conn.onopen=n=>{this.onopen&&this.onopen({target:this})},this.conn.onmessage=n=>{this.onmessage&&this.onmessage({target:this,message:JSON.parse(n.data.toString())})},this.conn.onclose=n=>{this.onclose&&this.onclose({target:this})},this.conn.onerror=n=>{this.onerror&&this.onerror({target:this})}}close(){this.conn.close()}isOpen(){return this.conn.readyState===(WebSocket.OPEN??1)}isConnecting(){return this.conn.readyState===(WebSocket.CONNECTING??0)}send(e){return this.conn.send(JSON.stringify(e))}}class Da{constructor(e,n){p(this,"type","sse");p(this,"initParams",null);p(this,"sendQueue",[]);p(this,"sendPromise");p(this,"closeFired",!1);p(this,"sseInitTimeout");p(this,"ES");p(this,"conn");p(this,"url");p(this,"id");p(this,"onopen");p(this,"onmessage");p(this,"onclose");p(this,"onerror");this.id=`${this.type}_${rs++}`,this.url=n,this.ES=e,this.conn=new e(n),this.sseInitTimeout=setTimeout(()=>{this.initParams||this.handleError()},1e4),this.conn.onmessage=r=>{const s=JSON.parse(r.data);if(Array.isArray(s))for(const i of s)this.handleMessage(i);else this.handleMessage(s)},this.conn.onerror=r=>{this.handleError()}}handleMessage(e){if(e.op==="sse-init"){this.initParams={machineId:e["machine-id"],sessionId:e["session-id"],sseToken:e["sse-token"]},this.onopen&&this.onopen({target:this}),clearTimeout(this.sseInitTimeout);return}this.onmessage&&this.onmessage({target:this,message:e})}handleError(){try{this.onerror&&this.onerror({target:this})}finally{this.handleClose()}}handleClose(){this.conn.close(),this.onclose&&!this.closeFired&&(this.closeFired=!0,this.onclose({target:this}))}async postMessages(e){var n,r,s;try{(await fetch(this.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({machine_id:(n=this.initParams)==null?void 0:n.machineId,session_id:(r=this.initParams)==null?void 0:r.sessionId,sse_token:(s=this.initParams)==null?void 0:s.sseToken,messages:e})})).ok||this.handleError()}catch{this.handleError()}}async flushQueue(){if(this.sendPromise||!this.sendQueue.length)return;const e=this.sendQueue;this.sendQueue=[];const n=this.postMessages(e);this.sendPromise=n,n.then(()=>{this.sendPromise=null,this.flushQueue()})}send(e){if(!this.isOpen()||!this.initParams)throw this.isConnecting()?new Error("Failed to execute 'send' on 'EventSource': Still in CONNECTING state."):this.conn.readyState===this.ES.CLOSED?new Error("EventSource is already in CLOSING or CLOSED state."):new Error("EventSource is in invalid state.");this.sendQueue.push(e),this.flushQueue()}isOpen(){return this.conn.readyState===this.ES.OPEN&&this.initParams!==null}isConnecting(){return this.conn.readyState===this.ES.CONNECTING||this.conn.readyState===this.ES.OPEN&&this.initParams===null}close(){this.handleClose()}}function $a(t,e){const n=t.values;if(n){const r=ur(n.attrsStore,null);if(r){for(const s of n.entities||[])s.store.useDateObjects=e,s.store=cr(r,s.store);n.attrsStore=r}}return t}function Ua(t,e){var n;if(e.values){const r=[];for(const s of(n=e.values)==null?void 0:n.entities){const i=ar(s.store);r.push({...s,store:i})}return{...e,values:{attrsStore:e.values.attrsStore.toJSON(),entities:r}}}else return e}function La(t,e,n){var i,o;const r=(i=e==null?void 0:e.state)==null?void 0:i.txId,s=(o=n==null?void 0:n.state)==null?void 0:o.txId;return r&&(!s||r>s)?e:s&&(!r||s>r)?n:e||n}function bn(t,e,n){return Pr({store:e,attrsStore:n,pageInfo:null,aggregate:null},t.query).data[t.table][0]}function is(t,e,n,r){var o;const s=(o=K(n,t.table,"id"))==null?void 0:o.id;if(!s)return-1;const i=Ie(e.eav,[r,s,r]);return i?i[3]:-1}function os(t,e,n){for(const{action:r,triple:s}of n)switch(r){case"added":dr(t,e,s);break;case"removed":lr(t,e,s);break}}function Fa(t,e,n){var s,i;const r={};for(const{action:o,triple:a}of n){const[c,u,l]=a,f=(i=(s=e.getAttr(u))==null?void 0:s["forward-identity"])==null?void 0:i[2];if(!f)continue;const h=r[c]??{};r[c]=h;const y=h[f]??{};switch(o){case"added":y.newValue=l;break;case"removed":y.oldValue===void 0&&(y.oldValue=l);break}h[f]=y}for(const[o,a]of Object.entries(r))for(const[c,{oldValue:u,newValue:l}]of Object.entries(a))u===l&&delete a[c];return r}function Et(t,e){return{[t.table]:e.map(n=>n.entity)}}function Na(t,e){var r;if(t.orderFieldType)return t.orderFieldType;const n=t.orderField==="serverCreatedAt"?"number":(r=K(e(),t.table,t.orderField))==null?void 0:r["checked-data-type"];return t.orderFieldType=n,n}function Ka(t,e,n){const r=e;if(t.orderField==="serverCreatedAt"){n.sort(t.orderDirection==="asc"?function(o,a){return Je(o.entity.id,o.serverCreatedAt,a.entity.id,a.serverCreatedAt,r)}:function(o,a){return Je(a.entity.id,a.serverCreatedAt,o.entity.id,o.serverCreatedAt,r)});return}const s=t.orderField;n.sort(t.orderDirection==="asc"?function(o,a){return Je(o.entity.id,o.entity[s],a.entity.id,a.entity[s],r)}:function(o,a){return Je(a.entity.id,a.entity[s],o.entity.id,o.entity[s],r)})}j.SyncTableCallbackEventType=void 0,function(t){t.InitialSyncBatch="InitialSyncBatch",t.InitialSyncComplete="InitialSyncComplete",t.LoadFromStorage="LoadFromStorage",t.SyncTransaction="SyncTransaction",t.Error="Error"}(j.SyncTableCallbackEventType||(j.SyncTableCallbackEventType={}));class Wa{constructor(e,n,r,s,i,o){p(this,"trySend");p(this,"subs");p(this,"callbacks",{});p(this,"config");p(this,"idToHash",{});p(this,"log");p(this,"createStore");p(this,"getAttrs");this.trySend=e,this.config=r,this.log=s,this.createStore=i,this.getAttrs=o,this.subs=new fn({persister:n,merge:La,serialize:Ua,parse:(a,c)=>$a(c,this.config.useDateObjects),objectSize:a=>{var c;return((c=a.values)==null?void 0:c.entities.length)||0},logger:s,gc:{maxAgeMs:1e3*60*60*24*7*52,maxEntries:1e3,maxSize:1e6}})}beforeUnload(){this.subs.flush()}subscribe(e,n){const r=L(e);return this.callbacks[r]=this.callbacks[r]||[],this.callbacks[r].push(n),this.initSubscription(e,r,n),s=>{this.unsubscribe(r,n,s==null?void 0:s.keepSubscription)}}unsubscribe(e,n,r){const s=(this.callbacks[e]||[]).filter(i=>i!==n);if(this.callbacks[e]=s,!s.length){delete this.callbacks[e];const i=this.subs.currentValue[e];i!=null&&i.state&&this.clearSubscriptionData(i.state.subscriptionId,!!r),r||this.subs.updateInPlace(o=>{delete o[e]})}}sendStart(e){this.trySend(z(),{op:"start-sync",q:e})}sendResync(e,n,r){this.idToHash[n.subscriptionId]=e.hash,this.trySend(n.subscriptionId,{op:"resync-table","subscription-id":n.subscriptionId,"tx-id":r,token:n.token})}sendRemove(e,n){this.trySend(z(),{op:"remove-sync","subscription-id":e.subscriptionId,"keep-subscription":n})}async initSubscription(e,n,r){var u,l,f,h;await this.subs.waitForKeyToLoad(n);const s=this.subs.currentValue[n];if(s&&s.state&&s.state.txId){this.sendResync(s,s.state,s.state.txId),(u=s.values)!=null&&u.entities&&r&&r({type:j.SyncTableCallbackEventType.LoadFromStorage,data:Et(s,(l=s.values)==null?void 0:l.entities)});return}const i=Object.keys(e)[0],o=((h=(f=e[i])==null?void 0:f.$)==null?void 0:h.order)||{serverCreatedAt:"asc"},[a,c]=Object.entries(o)[0];this.subs.updateInPlace(y=>{y[n]={query:e,hash:n,table:i,orderDirection:c,orderField:a,createdAt:Date.now(),updatedAt:Date.now()}}),this.sendStart(e)}async flushPending(){for(const e of Object.keys(this.callbacks)){await this.subs.waitForKeyToLoad(e);const n=this.subs.currentValue[e];n?await this.initSubscription(n.query,n.hash):this.log.error("Missing sub for hash in flushPending",e)}}onStartSyncOk(e){const n=e["subscription-id"],r=e.q,s=L(r);this.idToHash[n]=s,this.subs.updateInPlace(i=>{const o=i[s];if(!o)return this.log.error("Missing sub for hash",s,"subscription-id",n,"query",r),i;o.state={subscriptionId:n,token:e.token}})}notifyCbs(e,n){for(const r of this.callbacks[e]||[])r(n)}onSyncLoadBatch(e){const n=e["subscription-id"],r=e["join-rows"],s=this.idToHash[n];if(!s){this.log.error("Missing hash for subscription",e);return}const i=[],o=this.subs.currentValue[s];if(!o){this.log.error("Missing sub for hash",s,e);return}const a=o.values??{entities:[],attrsStore:this.getAttrs()};o.values=a;const c=a.entities;for(const u of r){const l=this.createStore(u),f=bn(o,l,a.attrsStore);c.push({store:l,entity:f,serverCreatedAt:is(o,l,a.attrsStore,f.id)}),i.push(f)}this.subs.updateInPlace(u=>{u[s]=o,u[s].updatedAt=Date.now()}),o.values&&this.notifyCbs(s,{type:j.SyncTableCallbackEventType.InitialSyncBatch,data:Et(o,o.values.entities),batch:i})}onSyncInitFinish(e){var i;const n=e["subscription-id"],r=this.idToHash[n];if(!r){this.log.error("Missing hash for subscription",e);return}this.subs.updateInPlace(o=>{const a=o[r];if(!a){this.log.error("Missing sub for hash",r,e);return}const c=a.state;if(!c)return this.log.error("Sub never set init, missing result",a,e),o;c.txId=e["tx-id"],a.updatedAt=Date.now()});const s=this.subs.currentValue[r];s&&this.notifyCbs(r,{type:j.SyncTableCallbackEventType.InitialSyncComplete,data:Et(s,((i=s.values)==null?void 0:i.entities)||[])})}onSyncUpdateTriples(e){var o;const n=e["subscription-id"],r=this.idToHash[n];if(!r){this.log.error("Missing hash for subscription",e);return}const s=this.subs.currentValue[r];if(!s){this.log.error("Missing sub for hash",r,e);return}const i=s.state;if(!i){this.log.error("Missing state for sub",s,e);return}for(const a of e.txes){if(i.txId&&i.txId>=a["tx-id"])continue;i.txId=a["tx-id"];const c=[],u={};for(const w of a.changes){const S=u[w.triple[0]]??[];u[w.triple[0]]=S,S.push(w)}const l=s.values??{entities:[],attrsStore:this.getAttrs()},f=l.entities;s.values=l;const h=[];e:for(const[w,S]of Object.entries(u))for(let _=0;_<f.length;_++){const m=f[_];if(mi(m.store,w)){os(m.store,l.attrsStore,S);const k=bn(s,m.store,l.attrsStore),E=Fa(m.store,l.attrsStore,S)[w];k?(h.push({oldEntity:m.entity,newEntity:k,changedFields:E||{}}),m.entity=k):c.push(_),delete u[w];continue e}}const y=[];for(const[w,S]of Object.entries(u)){const _=this.createStore([]);os(_,l.attrsStore,S);const m=bn(s,_,l.attrsStore);if(!m){this.log.error("No entity found after applying change",{sub:s,changes:S,store:_});continue}f.push({store:_,entity:m,serverCreatedAt:is(s,_,l.attrsStore,m.id)}),y.push(m)}const b=[];for(const w of c.sort().reverse())b.push(f[w].entity),f.splice(w,1);const g=Na(s,this.getAttrs);Ka(s,g,f),this.notifyCbs(r,{type:j.SyncTableCallbackEventType.SyncTransaction,data:Et(s,(o=s.values)==null?void 0:o.entities),added:y,removed:b,updated:h})}this.subs.updateInPlace(a=>{a[r]=s,a[r].updatedAt=Date.now()})}clearSubscriptionData(e,n){const r=this.idToHash[e];if(r){delete this.idToHash[e];const s=this.subs.currentValue[r];if(s.state&&this.sendRemove(s.state,n),n?this.subs.unloadKey(r):this.subs.updateInPlace(i=>{delete i[r]}),s)return s}}onStartSyncError(e){const n=L(e["original-event"].q),r={message:e.message||"Uh-oh, something went wrong. Ping Joe & Stopa.",status:e.status,type:e.type,hint:e.hint},s=Object.keys(e["original-event"].q)[0];this.notifyCbs(n,{type:j.SyncTableCallbackEventType.Error,data:{[s]:[]},error:r})}onResyncError(e){const n=e["original-event"]["subscription-id"],r=this.clearSubscriptionData(n,!1);r&&this.initSubscription(r.query,r.hash)}}const be={CONNECTING:"connecting",OPENED:"opened",AUTHENTICATED:"authenticated",CLOSED:"closed",ERRORED:"errored"},za=3e4,qa=3e4,Va=200,Ba=1e3*60,Ga={apiURI:"https://api.instantdb.com",websocketURI:"wss://api.instantdb.com/runtime/session"},gn="_instant_oauth_redirect",Xe="currentUser";function Qa({transportType:t,appId:e,apiURI:n,wsURI:r,EventSourceImpl:s}){if(!s)return new ss(`${r}?app_id=${e}`);switch(t){case"ws":return new ss(`${r}?app_id=${e}`);case"sse":return new Da(s,`${n}/runtime/sse?app_id=${e}`);default:throw new Error("Unknown transport type "+t)}}function Ha(){return typeof window<"u"||typeof chrome<"u"}const as={"set-presence":!0,"set-presence-ok":!0,"refresh-presence":!0,"patch-presence":!0};function Ja(t,e){var r;const n=typeof t=="string"?JSON.parse(t):t;if((r=n==null?void 0:n.result)!=null&&r.store){const s=ur(n.result.attrsStore,n.result.store);if(s){const i=n.result.store;n.result.store=cr(s,{...i,useDateObjects:e}),n.result.attrsStore=s}}return n}function Ya(t,e){const{result:n,...r}=e,s=r;if(n){const i={...n,store:ar(n.store),attrsStore:n.attrsStore.toJSON()};s.result=i}return s}function Za(t,e){switch(t){case"pendingMutations":return new Map(typeof e=="string"?JSON.parse(e):e);default:return e}}function Xa(t,e){switch(t){case"pendingMutations":return[...e.entries()];default:return e}}function ec(t,e,n){const r=e==null?void 0:e.result,s=n==null?void 0:n.result;return r&&!s&&n&&(n.result=r),n||e}function _n(t){return[...t].sort((e,n)=>{const[r,s]=e,[i,o]=n,a=s.order||0,c=o.order||0;return a==c?r<i?-1:r>i?1:0:a-c})}class tc{constructor(e,n=Lr,r=Fr,s,i){p(this,"attrs");p(this,"_isOnline",!0);p(this,"_isShutdown",!1);p(this,"status",be.CONNECTING);p(this,"querySubs");p(this,"kv");p(this,"_syncTable");p(this,"queryCbs",{});p(this,"queryOnceDfds",{});p(this,"authCbs",[]);p(this,"attrsCbs",[]);p(this,"mutationErrorCbs",[]);p(this,"connectionStatusCbs",[]);p(this,"config");p(this,"mutationDeferredStore",new Map);p(this,"_reconnectTimeoutId",null);p(this,"_reconnectTimeoutMs",0);p(this,"_transport");p(this,"_transportType","ws");p(this,"_EventSource");p(this,"_wsOk",null);p(this,"_localIdPromises",{});p(this,"_errorMessage",null);p(this,"_oauthCallbackResponse",null);p(this,"_linkIndex",null);p(this,"_broadcastChannel");p(this,"_rooms",{});p(this,"_roomsPendingLeave",{});p(this,"_presence",{});p(this,"_broadcastQueue",[]);p(this,"_broadcastSubs",{});p(this,"_currentUserCached",{isLoading:!0,error:void 0,user:void 0});p(this,"_beforeUnloadCbs",[]);p(this,"_dataForQueryCache",{});p(this,"_log");p(this,"_pendingTxCleanupTimeout");p(this,"_pendingMutationCleanupThreshold");p(this,"_inFlightMutationEventIds",new Set);p(this,"_onMergeKv",(e,n,r)=>{switch(e){case"pendingMutations":{const s=(n==null?void 0:n.entries())??[],i=(r==null?void 0:r.entries())??[],o=new Map([...s,...i]);return(n?this._rewriteMutationsSorted(this.attrs,n):[]).forEach(([c,u])=>{var l;!((l=r==null?void 0:r.pendingMutations)!=null&&l.has(c))&&!u["tx-id"]&&this._sendMutation(c,u)}),o}default:return r||n}});p(this,"getPreviousResult",e=>{var r;const n=L(e);return(r=this.dataForQuery(n))==null?void 0:r.data});p(this,"notifyOne",e=>{var i;const n=this.queryCbs[e]??[],r=(i=this._dataForQueryCache[e])==null?void 0:i.data,s=this.dataForQuery(e);s!=null&&s.data&&(this._dataForQueryCache[e]=s,!pt(s.data,r)&&n.forEach(o=>o.cb(s.data)))});p(this,"notifyOneQueryOnce",e=>{var s;const n=this.queryOnceDfds[e]??[],r=(s=this.dataForQuery(e))==null?void 0:s.data;n.forEach(i=>{this._completeQueryOnce(i.q,e,i.dfd),i.dfd.resolve(r)})});p(this,"notifyQueryError",(e,n)=>{(this.queryCbs[e]||[]).forEach(s=>s.cb({error:n}))});p(this,"pushTx",e=>{this.config.disableValidation||xa(e,this.config.schema);try{const n=ia({attrsStore:this.optimisticAttrs(),schema:this.config.schema,stores:Object.values(this.querySubs.currentValue).map(r=>{var s;return(s=r==null?void 0:r.result)==null?void 0:s.store}),useDateObjects:this.config.useDateObjects},e);return this.pushOps(n)}catch(n){return this.pushOps([],n)}});p(this,"pushOps",(e,n)=>{const r=z(),s=[...this._pendingMutations().values()],i=Math.max(0,...s.map(c=>c.order||0))+1,o={op:"transact","tx-steps":e,created:Date.now(),error:n,order:i};this._updatePendingMutations(c=>{c.set(r,o)});const a=new qr;return this.mutationDeferredStore.set(r,a),this._sendMutation(r,o),this.notifyAll(),a.promise});p(this,"_transportOnOpen",e=>{const n=e.target;if(this._transport!==n){this._log.info("[socket][open]",n.id,"skip; this is no longer the current transport");return}this._log.info("[socket][open]",this._transport.id),this._setStatus(be.OPENED),this.getCurrentUser().then(r=>{var s;this._trySend(z(),{op:"init","app-id":this.config.appId,"refresh-token":(s=r.user)==null?void 0:s.refresh_token,versions:this.versions,"__admin-token":this.config.__adminToken})}).catch(r=>{this._log.error("[socket][error]",n.id,r)})});p(this,"_transportOnMessage",e=>{const n=e.target,r=e.message;if(this._transport!==n){this._log.info("[socket][message]",n.id,r,"skip; this is no longer the current transport");return}if(!this._wsOk&&n.type==="ws"&&(this._wsOk=!0),this._transportType="ws",Array.isArray(e.message))for(const s of e.message)this._handleReceive(n.id,s);else this._handleReceive(n.id,e.message)});p(this,"_transportOnError",e=>{const n=e.target;if(this._transport!==n){this._log.info("[socket][error]",n.id,"skip; this is no longer the current transport");return}this._log.error("[socket][error]",n.id,e)});p(this,"_scheduleReconnect",()=>{!this._wsOk&&this._transportType!=="sse"&&(this._transportType="sse",this._reconnectTimeoutMs=0),setTimeout(()=>{if(this._reconnectTimeoutMs=Math.min(this._reconnectTimeoutMs+1e3,1e4),!this._isOnline){this._log.info("[socket][close]",this._transport.id,"we are offline, no need to start socket");return}this._startSocket()},this._reconnectTimeoutMs)});p(this,"_transportOnClose",e=>{const n=e.target;if(this._transport!==n){this._log.info("[socket][close]",n.id,"skip; this is no longer the current transport");return}this._setStatus(be.CLOSED);for(const r of Object.values(this._rooms))r.isConnected=!1;if(this._isShutdown){this._log.info("[socket][close]",n.id,"Reactor has been shut down and will not reconnect");return}this._log.info("[socket][close]",n.id,"schedule reconnect, ms =",this._reconnectTimeoutMs),this._scheduleReconnect()});if(this._EventSource=i,this.config={...Ga,...e},this.queryCacheLimit=this.config.queryCacheLimit??10,this._pendingTxCleanupTimeout=this.config.pendingTxCleanupTimeout??qa,this._pendingMutationCleanupThreshold=this.config.pendingMutationCleanupThreshold??Va,this._log=Oa(e.verbose||dn||Kr,()=>this._reactorStats()),this.versions={...s||{},"@instantdb/core":hn},this.config.schema&&(this._linkIndex=Gr(this.config.schema)),!!Ha()){if(!e.appId)throw new Error("Instant must be initialized with an appId.");if(!Me(e.appId))throw new Error(`Instant must be initialized with a valid appId. \`${e.appId}\` is not a valid uuid.`);typeof BroadcastChannel=="function"&&(this._broadcastChannel=new BroadcastChannel("@instantdb"),this._broadcastChannel.addEventListener("message",async o=>{var a;try{if(((a=o.data)==null?void 0:a.type)==="auth"){const c=await this.getCurrentUser();await this.updateUser(c.user).catch(u=>{this._log.error("[error] update user",u)})}}catch(c){this._log.error("[error] handle broadcast channel",c)}})),this._initStorage(n),this._syncTable=new Wa(this._trySendAuthed.bind(this),new n(this.config.appId,"syncSubs"),{useDateObjects:this.config.useDateObjects},this._log,o=>Ge(this.ensureAttrs(),o,this.config.enableCardinalityInference,this.config.useDateObjects),()=>this.ensureAttrs()),this._oauthCallbackResponse=this._oauthLoginInit(),this.getCurrentUser().then(o=>{this.syncUserToEndpoint(o.user)}),setInterval(async()=>{const o=await this.getCurrentUser();this.syncUserToEndpoint(o.user)},Ba),r.getIsOnline().then(o=>{this._isOnline=o,this._startSocket(),r.listen(a=>{a!==this._isOnline&&(this._log.info("[network] online =",a),this._isOnline=a,this._isOnline?this._startSocket():(this._log.info("Changing status from",this.status,"to",be.CLOSED),this._setStatus(be.CLOSED)))})}),typeof addEventListener<"u"&&(this._beforeUnload=this._beforeUnload.bind(this),addEventListener("beforeunload",this._beforeUnload))}}ensureAttrs(){if(!this.attrs)throw new Error("attrs have not loaded.");return this.attrs}updateSchema(e){this.config={...this.config,schema:e,cardinalityInference:!!e},this._linkIndex=e?Gr(this.config.schema):null}_reactorStats(){return{inFlightMutationCount:this._inFlightMutationEventIds.size,storedMutationCount:this._pendingMutations().size,transportType:this._transportType}}_onQuerySubLoaded(e){this.kv.waitForKeyToLoad("pendingMutations").then(()=>this.notifyOne(e))}_initStorage(e){this.querySubs=new fn({persister:new e(this.config.appId,"querySubs"),merge:ec,serialize:Ya,parse:(n,r)=>Ja(r,this.config.useDateObjects),objectSize:n=>{var r,s,i;return((i=(s=(r=n==null?void 0:n.result)==null?void 0:r.store)==null?void 0:s.triples)==null?void 0:i.length)??0},logger:this._log,preloadEntryCount:10,gc:{maxAgeMs:1e3*60*60*24*7*52,maxEntries:1e3,maxSize:1e6}}),this.querySubs.onKeyLoaded=n=>this._onQuerySubLoaded(n),this.kv=new fn({persister:new e(this.config.appId,"kv"),merge:this._onMergeKv,serialize:Xa,parse:Za,objectSize:()=>0,logger:this._log,saveThrottleMs:100,idleCallbackMaxWaitMs:100,gc:null}),this.kv.onKeyLoaded=n=>{n==="pendingMutations"&&this.notifyAll()},this.kv.waitForKeyToLoad("pendingMutations"),this.kv.waitForKeyToLoad(Xe),this._beforeUnloadCbs.push(()=>{this.kv.flush(),this.querySubs.flush()})}_beforeUnload(){for(const e of this._beforeUnloadCbs)e();this._syncTable.beforeUnload()}_finishTransaction(e,n,r){const s=this.mutationDeferredStore.get(n);this.mutationDeferredStore.delete(n);const i=e!=="error"&&e!=="timeout";if(!s&&!i&&console.error("Mutation failed",{status:e,eventId:n,...r}),!!s)if(i)s.resolve({status:e,eventId:n});else if(r!=null&&r.type){const{status:o,...a}=r;s.reject(new Ze({body:a,status:o??0}))}else s.reject(new Re((r==null?void 0:r.message)||"Unknown error",r==null?void 0:r.hint))}_setStatus(e,n){this.status=e,this._errorMessage=n,this.notifyConnectionStatusSubs(e)}_flushEnqueuedRoomData(e){var s,i;const n=(i=(s=this._presence[e])==null?void 0:s.result)==null?void 0:i.user,r=this._broadcastQueue[e];if(this._broadcastQueue[e]=[],n&&this._trySetPresence(e,n),r)for(const o of r){const{topic:a,roomType:c,data:u}=o;this._tryBroadcast(e,c,a,u)}}_addQueryData(e,n,r){if(!this.attrs)throw new Error("Attrs in reactor have not been set");const s=L(e),i=this.ensureAttrs(),o=Ge(this.attrs,n.triples,r,this.config.useDateObjects);this.querySubs.updateInPlace(a=>{a[s]={result:{store:o,attrsStore:i,pageInfo:n.pageInfo,processedTxId:void 0,isExternal:!0},q:e}}),this._cleanupPendingMutationsQueries(),this.notifyOne(s),this.notifyOneQueryOnce(s),this._cleanupPendingMutationsTimeout()}_handleReceive(e,n){var s,i,o,a,c,u,l;const r=!!this.config.schema&&("cardinalityInference"in this.config?!!this.config.cardinalityInference:!0);switch(as[n.op]||this._log.info("[receive]",e,n.op,n),n.op){case"init-ok":{this._setStatus(be.AUTHENTICATED),this._reconnectTimeoutMs=0,this._setAttrs(n.attrs),this._flushPendingMessages(),this._sessionId=n["session-id"];for(const y of Object.keys(this._rooms)){const b=(i=(s=this._presence[y])==null?void 0:s.result)==null?void 0:i.user,g=(o=this._rooms[y])==null?void 0:o.roomType;this._tryJoinRoom(g,y,b)}break}case"add-query-exists":{this.notifyOneQueryOnce(L(n.q));break}case"add-query-ok":{const{q:y,result:b}=n,g=L(y);if(!this._hasQueryListeners()&&!this.querySubs.currentValue[g])break;const w=(c=(a=b==null?void 0:b[0])==null?void 0:a.data)==null?void 0:c["page-info"],S=(l=(u=b==null?void 0:b[0])==null?void 0:u.data)==null?void 0:l.aggregate,_=Br(b),m=this.ensureAttrs(),k=Ge(m,_,r,this.config.useDateObjects);this.querySubs.updateInPlace(E=>{if(!E[g]){this._log.info("Missing value in querySubs",{hash:g,q:y});return}E[g].result={store:k,attrsStore:m,pageInfo:w,aggregate:S,processedTxId:n["processed-tx-id"]}}),this._cleanupPendingMutationsQueries(),this.notifyOne(g),this.notifyOneQueryOnce(g),this._cleanupPendingMutationsTimeout();break}case"start-sync-ok":{this._syncTable.onStartSyncOk(n);break}case"sync-load-batch":{this._syncTable.onSyncLoadBatch(n);break}case"sync-init-finish":{this._syncTable.onSyncInitFinish(n);break}case"sync-update-triples":{this._syncTable.onSyncUpdateTriples(n);break}case"refresh-ok":{const{computations:y,attrs:b}=n,g=n["processed-tx-id"];b&&this._setAttrs(b),this._cleanupPendingMutationsTimeout();const w=this._rewriteMutations(this.ensureAttrs(),this._pendingMutations(),g);w!==this._pendingMutations()&&this.kv.updateInPlace(m=>{m.pendingMutations=w});const S=_n(w.entries()),_=y.map(m=>{var fe,he,Te,at;const k=m["instaql-query"],E=m["instaql-result"],x=L(k),V=Br(E),J=this.ensureAttrs(),we=Ge(J,V,r,this.config.useDateObjects),{store:It,attrsStore:Rn}=this._applyOptimisticUpdates(we,J,S,g),xn=(he=(fe=E==null?void 0:E[0])==null?void 0:fe.data)==null?void 0:he["page-info"],Mt=(at=(Te=E==null?void 0:E[0])==null?void 0:Te.data)==null?void 0:at.aggregate;return{q:k,hash:x,store:It,attrsStore:Rn,pageInfo:xn,aggregate:Mt}});_.forEach(({hash:m,q:k,store:E,attrsStore:x,pageInfo:V,aggregate:J})=>{this.querySubs.updateInPlace(we=>{if(!we[m]){this._log.error("Missing value in querySubs",{hash:m,q:k});return}we[m].result={store:E,attrsStore:x,pageInfo:V,aggregate:J,processedTxId:g}})}),this._cleanupPendingMutationsQueries(),_.forEach(({hash:m})=>{this.notifyOne(m)});break}case"transact-ok":{const{"client-event-id":y,"tx-id":b}=n;this._inFlightMutationEventIds.delete(y);const w=this._rewriteMutations(this.ensureAttrs(),this._pendingMutations()).get(y);if(!w)break;this._updatePendingMutations(_=>{_.set(y,{..._.get(y),"tx-id":b,confirmed:Date.now()})});const S=[];for(const _ of w["tx-steps"])if(_[0]==="add-attr"){const m=_[1];S.push(m)}if(S.length){const _=Object.values(this.ensureAttrs().attrs);this._setAttrs([..._,...S])}this._finishTransaction("synced",y),this._cleanupPendingMutationsTimeout();break}case"patch-presence":{const y=n["room-id"];this._trySetRoomConnected(y,!0),this._patchPresencePeers(y,n.edits),this._notifyPresenceSubs(y);break}case"refresh-presence":{const y=n["room-id"];this._trySetRoomConnected(y,!0),this._setPresencePeers(y,n.data),this._notifyPresenceSubs(y);break}case"server-broadcast":{const y=n["room-id"],b=n.topic;this._trySetRoomConnected(y,!0),this._notifyBroadcastSubs(y,b,n);break}case"join-room-ok":{const y=n["room-id"];if(!this._rooms[y]){this._roomsPendingLeave[y]&&(this._tryLeaveRoom(y),delete this._roomsPendingLeave[y]);break}this._trySetRoomConnected(y,!0),this._flushEnqueuedRoomData(y);break}case"leave-room-ok":{const y=n["room-id"];this._trySetRoomConnected(y,!1);break}case"join-room-error":const f=n["room-id"],h=this._rooms[f];h&&(h.error=n.error),this._notifyPresenceSubs(f);break;case"error":this._handleReceiveError(n);break;default:this._log.info("Uknown op",n.op,n);break}}_pendingMutations(){return this.kv.currentValue.pendingMutations??new Map}_updatePendingMutations(e){this.kv.updateInPlace(n=>{const r=n.pendingMutations??new Map;n.pendingMutations=r,e(r)})}_handleMutationError(e,n,r){const s=this._pendingMutations().get(n);if(s&&(e!=="timeout"||!s["tx-id"])){this._updatePendingMutations(o=>(o.delete(n),o)),this._inFlightMutationEventIds.delete(n);const i={message:r.message,hint:r.hint};this.notifyAll(),this.notifyAttrsSubs(),this.notifyMutationErrorSubs(i),this._finishTransaction(e,n,r)}}_handleReceiveError(e){var a,c,u,l,f,h,y;console.log("error",e);const n=e["client-event-id"];this._inFlightMutationEventIds.delete(n);const r=this._pendingMutations().get(n),s={message:e.message||"Uh-oh, something went wrong. Ping Joe & Stopa."};if(e.hint&&(s.hint=e.hint),r){this._handleMutationError("error",n,e);return}if((a=e["original-event"])!=null&&a.hasOwnProperty("q")&&((c=e["original-event"])==null?void 0:c.op)==="add-query"){const b=(u=e["original-event"])==null?void 0:u.q,g=L(b);this.notifyQueryError(L(b),s),this.notifyQueryOnceError(b,g,n,s);return}if(((l=e["original-event"])==null?void 0:l.op)==="init"){if(e.type==="record-not-found"&&((f=e.hint)==null?void 0:f["record-type"])==="app-user"){this.changeCurrentUser(null);return}this._setStatus(be.ERRORED,s),this.notifyAll();return}if(((h=e["original-event"])==null?void 0:h.op)==="resync-table"){this._syncTable.onResyncError(e);return}if(((y=e["original-event"])==null?void 0:y.op)==="start-sync"){this._syncTable.onStartSyncError(e);return}const o={...e};delete o.message,delete o.hint,console.error(e.message,o),e.hint&&console.error(`This error comes with some debugging information. Here it is:
2
+ `,e.hint)}notifyQueryOnceError(e,n,r,s){var o;const i=(o=this.queryOnceDfds[n])==null?void 0:o.find(a=>a.eventId===r);i&&(i.dfd.reject(s),this._completeQueryOnce(e,n,i.dfd))}_setAttrs(e){this.attrs=new Ee(e.reduce((n,r)=>(n[r.id]=r,n),{}),this._linkIndex),this.notifyAttrsSubs()}_startQuerySub(e,n){const r=z();return this.querySubs.updateInPlace(s=>{s[n]=s[n]||{q:e,result:null,eventId:r},s[n].lastAccessed=Date.now()}),this._trySendAuthed(r,{op:"add-query",q:e}),r}subscribeTable(e,n){return this._syncTable.subscribe(e,n)}subscribeQuery(e,n,r){this.config.disableValidation||Zr(e,this.config.schema),r&&"ruleParams"in r&&(e={$$ruleParams:r.ruleParams,...e});const s=L(e),i=this.getPreviousResult(e);return i&&n(i),this.queryCbs[s]=this.queryCbs[s]??[],this.queryCbs[s].push({q:e,cb:n}),this._startQuerySub(e,s),()=>{this._unsubQuery(e,s,n)}}queryOnce(e,n){this.config.disableValidation||Zr(e,this.config.schema),n&&"ruleParams"in n&&(e={$$ruleParams:n.ruleParams,...e});const r=new qr;if(!this._isOnline)return r.reject(new Error("We can't run `queryOnce`, because the device is offline.")),r.promise;if(!this.querySubs)return r.reject(new Error("We can't run `queryOnce` on the backend. Use adminAPI.query instead: https://www.instantdb.com/docs/backend#query")),r.promise;const s=L(e),i=this._startQuerySub(e,s);return this.queryOnceDfds[s]=this.queryOnceDfds[s]??[],this.queryOnceDfds[s].push({q:e,dfd:r,eventId:i}),setTimeout(()=>r.reject(new Error("Query timed out")),za),r.promise}_completeQueryOnce(e,n,r){this.queryOnceDfds[n]&&(this.queryOnceDfds[n]=this.queryOnceDfds[n].filter(s=>s.dfd!==r),this._cleanupQuery(e,n))}_unsubQuery(e,n,r){this.queryCbs[n]&&(this.queryCbs[n]=this.queryCbs[n].filter(s=>s.cb!==r),this._cleanupQuery(e,n))}_hasQueryListeners(e){var n,r;return!!((n=this.queryCbs[e])!=null&&n.length||(r=this.queryOnceDfds[e])!=null&&r.length)}_cleanupQuery(e,n){this._hasQueryListeners(n)||(delete this.queryCbs[n],delete this.queryOnceDfds[n],delete this._dataForQueryCache[n],this.querySubs.unloadKey(n),this._trySendAuthed(z(),{op:"remove-query",q:e}))}_rewriteMutations(e,n,r){if(!e)return n;if(!n)return new Map;const s=l=>{const[f,h,y]=l["forward-identity"];return K(e,h,y)},i=l=>{const[f,h,y]=l["forward-identity"];return Oe(e,h,y)},o={attrIdMap:{},refSwapAttrIds:new Set};let a=!1;const c=(l,f)=>{const h=[];for(const y of l){const[b]=y;if(b==="add-attr"){const[w,S]=y,_=s(S);if(_&&S.id!==_.id){o.attrIdMap[S.id]=_.id,a=!0;continue}if(S["value-type"]==="ref"){const m=i(S);if(m){o.attrIdMap[S.id]=m.id,o.refSwapAttrIds.add(S.id),a=!0;continue}}}if(r&&f&&r>=f&&b==="add-attr"||b==="update-attr"||b==="delete-attr"){a=!0;continue}const g=a?xo(o,y):y;h.push(g)}return a?h:l},u=new Map;for(const[l,f]of n.entries())u.set(l,{...f,"tx-steps":c(f["tx-steps"],f["tx-id"])});return a?u:n}_rewriteMutationsSorted(e,n){return _n(this._rewriteMutations(e,n).entries())}optimisticAttrs(){var i,o;const e=[...this._pendingMutations().values()].flatMap(a=>a["tx-steps"]),n=new Set(e.filter(([a,c])=>a==="delete-attr").map(([a,c])=>c)),r=[];for(const[a,c]of e)if(a==="add-attr")r.push(c);else if(a==="update-attr"&&c.id&&((i=this.attrs)!=null&&i.getAttr(c.id))){const u={...this.attrs.getAttr(c.id),...c};r.push(u)}if(!n.size&&!r.length)return this.attrs||new Ee({},this._linkIndex);const s={...((o=this.attrs)==null?void 0:o.attrs)||{}};for(const a of r)s[a.id]=a;for(const a of n)delete s[a];return new Ee(s,this._linkIndex)}dataForQuery(e,n=!0){const r=this._errorMessage;if(r)return{error:r};if(!this.querySubs||!this.kv.currentValue.pendingMutations)return;const s=this.querySubs.version(),i=this.querySubs.currentValue,o=this.kv.version(),a=this._pendingMutations(),{q:c,result:u}=i[e]||{};if(!u)return;const l=this._dataForQueryCache[e];if(l&&s===l.querySubVersion&&o===l.pendingMutationsVersion)return l;let f=u.store,h=u.attrsStore;const{pageInfo:y,aggregate:b,processedTxId:g}=u,w=this._rewriteMutationsSorted(h,a);if(n){const _=this._applyOptimisticUpdates(f,h,w,g);f=_.store,h=_.attrsStore}return{data:Pr({store:f,attrsStore:h,pageInfo:y,aggregate:b},c),querySubVersion:s,pendingMutationsVersion:o}}_applyOptimisticUpdates(e,n,r,s){for(const[i,o]of r)if(!o["tx-id"]||s&&o["tx-id"]>s){const a=Ri(e,n,o["tx-steps"]);e=a.store,n=a.attrsStore}return{store:e,attrsStore:n}}notifyAll(){Object.keys(this.queryCbs).forEach(e=>{this.querySubs.waitForKeyToLoad(e).then(()=>this.notifyOne(e)).catch(()=>this.notifyOne(e))})}loadedNotifyAll(){this.kv.waitForKeyToLoad("pendingMutations").then(()=>this.notifyAll()).catch(()=>this.notifyAll())}shutdown(){var e;this._log.info("[shutdown]",this.config.appId),this._isShutdown=!0,(e=this._transport)==null||e.close()}_sendMutation(e,n){if(n.error){this._handleMutationError("error",e,{message:n.error.message});return}if(this.status!==be.AUTHENTICATED){this._finishTransaction("enqueued",e);return}const r=Math.max(6e3,Math.min(this._inFlightMutationEventIds.size+1,this._pendingMutations().size+1)*6e3);this._isOnline?(this._trySend(e,n),setTimeout(()=>{this._isOnline&&this._handleMutationError("timeout",e,{message:"transaction timed out"})},r)):this._finishTransaction("enqueued",e)}_flushPendingMessages(){Object.keys(this.queryCbs).map(i=>this.querySubs.currentValue[i]).filter(i=>i).forEach(({eventId:i,q:o})=>{this._trySendAuthed(i,{op:"add-query",q:o})}),Object.values(this.queryOnceDfds).flat().forEach(({eventId:i,q:o})=>{this._trySendAuthed(i,{op:"add-query",q:o})});const r=this._rewriteMutations(this.ensureAttrs(),this._pendingMutations());r!==this._pendingMutations()&&this.kv.updateInPlace(i=>{i.pendingMutations=r}),_n(r.entries()).forEach(([i,o])=>{o["tx-id"]||this._sendMutation(i,o)}),this._syncTable.flushPending()}_cleanupPendingMutationsQueries(){let e=Number.MAX_SAFE_INTEGER;for(const{result:n}of Object.values(this.querySubs.currentValue))n!=null&&n.processedTxId&&(e=Math.min(e,n==null?void 0:n.processedTxId));this._updatePendingMutations(n=>{for(const[r,s]of Array.from(n.entries()))s["tx-id"]&&s["tx-id"]<=e&&n.delete(r)})}_cleanupPendingMutationsTimeout(){if(this._pendingMutations().size<this._pendingMutationCleanupThreshold)return;const e=Date.now();this._updatePendingMutations(n=>{for(const[r,s]of Array.from(n.entries()))s.confirmed&&s.confirmed+this._pendingTxCleanupTimeout<e&&n.delete(r)})}_trySendAuthed(...e){this.status===be.AUTHENTICATED&&this._trySend(...e)}_trySend(e,n,r){if(this._transport.isOpen()){switch(as[n.op]||this._log.info("[send]",this._transport.id,n.op,n),n.op){case"transact":{this._inFlightMutationEventIds.add(e);break}case"init":this._inFlightMutationEventIds.clear()}this._transport.send({"client-event-id":e,...n})}}_startSocket(){if(this._wsOk=null,this._isShutdown){this._log.info("[socket][start]",this.config.appId,"Reactor has been shut down and will not start a new socket");return}if(this._transport&&this._transport.isConnecting()){this._log.info("[socket][start]",this._transport.id,"maintained as current transport, we were still in a connecting state");return}const e=this._transport;this._transport=Qa({transportType:this._transportType,appId:this.config.appId,apiURI:this.config.apiURI,wsURI:this.config.websocketURI,EventSourceImpl:this._EventSource}),this._transport.onopen=this._transportOnOpen,this._transport.onmessage=this._transportOnMessage,this._transport.onclose=this._transportOnClose,this._transport.onerror=this._transportOnError,this._log.info("[socket][start]",this._transport.id),e!=null&&e.isOpen()&&(this._log.info("[socket][start]",this._transport.id,"close previous transport id = ",e.id),e.close())}async getLocalId(e){const n=`localToken_${e}`;if(this.kv.currentValue[n])return this.kv.currentValue[n];const r=await this.kv.waitForKeyToLoad(n);if(r)return r;const s=z();return this.kv.updateInPlace(i=>{i[n]||(i[n]=s)}),await this.kv.waitForKeyToLoad(n)}_replaceUrlAfterOAuth(){if(typeof URL>"u")return;const e=new URL(window.location.href);if(e.searchParams.get(gn)){const n=e.toString();e.searchParams.delete(gn),e.searchParams.delete("code"),e.searchParams.delete("error");const r=e.pathname+(e.searchParams.size?"?"+e.searchParams:"")+e.hash;if(history.replaceState(history.state,"",r),typeof navigation=="object"&&typeof navigation.addEventListener=="function"&&typeof navigation.removeEventListener=="function"){let s=!1;const i=o=>{var a;s||(s=!0,navigation.removeEventListener("navigate",i),!o.userInitiated&&o.navigationType==="replace"&&((a=o.destination)==null?void 0:a.url)===n&&history.replaceState(history.state,"",r))};navigation.addEventListener("navigate",i)}}}async _oauthLoginInit(){var s,i,o,a;if(typeof window>"u"||typeof window.location>"u"||typeof URLSearchParams>"u")return null;const e=new URLSearchParams(window.location.search);if(!e.get(gn))return null;const n=e.get("error");if(n)return this._replaceUrlAfterOAuth(),{error:{message:n}};const r=e.get("code");if(!r)return null;this._replaceUrlAfterOAuth();try{const c=await this._getCurrentUser(),u=(c==null?void 0:c.type)==="guest",{user:l}=await Nr({apiURI:this.config.apiURI,appId:this.config.appId,code:r,refreshToken:u?c.refresh_token:void 0});return this.setCurrentUser(l),null}catch(c){return((s=c==null?void 0:c.body)==null?void 0:s.type)==="record-not-found"&&((o=(i=c==null?void 0:c.body)==null?void 0:i.hint)==null?void 0:o["record-type"])==="app-oauth-code"&&await this._hasCurrentUser()?null:{error:{message:((a=c==null?void 0:c.body)==null?void 0:a.message)||"Error logging in."}}}}async _waitForOAuthCallbackResponse(){return await this._oauthCallbackResponse}__subscribeMutationErrors(e){return this.mutationErrorCbs.push(e),()=>{this.mutationErrorCbs=this.mutationErrorCbs.filter(n=>n!==e)}}subscribeAuth(e){this.authCbs.push(e);const n=this._currentUserCached;n.isLoading||e(this._currentUserCached);let r=!1;return this.getCurrentUser().then(s=>{r||pt(s,n)||e(s)}),()=>{r=!0,this.authCbs=this.authCbs.filter(s=>s!==e)}}async getAuth(){const{user:e,error:n}=await this.getCurrentUser();if(n)throw new Re("Could not get current user: "+n.message);return e}subscribeConnectionStatus(e){return this.connectionStatusCbs.push(e),()=>{this.connectionStatusCbs=this.connectionStatusCbs.filter(n=>n!==e)}}subscribeAttrs(e){return this.attrsCbs.push(e),this.attrs&&e(this.attrs.attrs),()=>{this.attrsCbs=this.attrsCbs.filter(n=>n!==e)}}notifyAuthSubs(e){this.authCbs.forEach(n=>n(e))}notifyMutationErrorSubs(e){this.mutationErrorCbs.forEach(n=>n(e))}notifyAttrsSubs(){if(!this.attrs)return;const e=this.optimisticAttrs();this.attrsCbs.forEach(n=>n(e.attrs))}notifyConnectionStatusSubs(e){this.connectionStatusCbs.forEach(n=>n(e))}async setCurrentUser(e){this.kv.updateInPlace(n=>{n[Xe]=e}),await this.kv.waitForKeyToLoad(Xe)}getCurrentUserCached(){return this._currentUserCached}async _getCurrentUser(){const e=await this.kv.waitForKeyToLoad(Xe);return typeof e=="string"?JSON.parse(e):e}async getCurrentUser(){const e=await this._waitForOAuthCallbackResponse();if(e!=null&&e.error){const n={error:e.error,user:void 0};return this._currentUserCached={isLoading:!1,...n},n}try{const r={user:await this._getCurrentUser(),error:void 0};return this._currentUserCached={isLoading:!1,...r},r}catch(n){return{user:void 0,isLoading:!1,error:{message:(n==null?void 0:n.message)||"Error loading user"}}}}async _hasCurrentUser(){const e=await this.kv.waitForKeyToLoad(Xe);return typeof e=="string"?JSON.parse(e)!=null:e!=null}async changeCurrentUser(e){var r;const{user:n}=await this.getCurrentUser();if(!pt(n,e)){await this.setCurrentUser(e),await this.updateUser(e);try{(r=this._broadcastChannel)==null||r.postMessage({type:"auth"})}catch(s){console.error("Error posting message to broadcast channel",s)}}}async syncUserToEndpoint(e){if(this.config.firstPartyPath)try{await fetch(this.config.firstPartyPath+"/",{method:"POST",body:JSON.stringify({type:"sync-user",appId:this.config.appId,user:e}),headers:{"Content-Type":"application/json"}})}catch(n){this._log.error("Error syncing user with external endpoint",n)}}async updateUser(e){try{await this.syncUserToEndpoint(e)}catch(r){this._log.error("Error syncing user with external endpoint",r)}const n={error:void 0,user:e};this._currentUserCached={isLoading:!1,...n},this._dataForQueryCache={},this.querySubs.updateInPlace(r=>{Object.keys(r).forEach(s=>{delete r[s].result})}),this._reconnectTimeoutMs=0,this._transport.close(),this._oauthCallbackResponse=null,this.notifyAuthSubs(n)}sendMagicCode({email:e}){return da({apiURI:this.config.apiURI,appId:this.config.appId,email:e})}async signInWithMagicCode({email:e,code:n}){var o;const r=await this.getCurrentUser(),s=((o=r==null?void 0:r.user)==null?void 0:o.type)==="guest",i=await ha({apiURI:this.config.apiURI,appId:this.config.appId,email:e,code:n,refreshToken:s?r.user.refresh_token:void 0});return await this.changeCurrentUser(i.user),i}async signInWithCustomToken(e){const n=await pa({apiURI:this.config.apiURI,appId:this.config.appId,refreshToken:e});return await this.changeCurrentUser(n.user),n}async signInAsGuest(){const e=await ya({apiURI:this.config.apiURI,appId:this.config.appId});return await this.changeCurrentUser(e.user),e}potentiallyInvalidateToken(e,n){var i;const r=(i=e==null?void 0:e.user)==null?void 0:i.refresh_token;if(!r)return;if(n.invalidateToken===!1){this._log.info("[auth-invalidate] skipped invalidateToken");return}ga({apiURI:this.config.apiURI,appId:this.config.appId,refreshToken:r}).then(()=>{this._log.info("[auth-invalidate] completed invalidateToken")}).catch(o=>{})}async signOut(e){const n=await this.getCurrentUser();this.potentiallyInvalidateToken(n,e),await this.changeCurrentUser(null)}createAuthorizationURL({clientName:e,redirectURL:n}){const{apiURI:r,appId:s}=this.config;return`${r}/runtime/oauth/start?app_id=${s}&client_name=${e}&redirect_uri=${n}`}async exchangeCodeForToken({code:e,codeVerifier:n}){var o;const r=await this.getCurrentUser(),s=((o=r==null?void 0:r.user)==null?void 0:o.type)==="guest",i=await Nr({apiURI:this.config.apiURI,appId:this.config.appId,code:e,codeVerifier:n,refreshToken:s?r.user.refresh_token:void 0});return await this.changeCurrentUser(i.user),i}issuerURI(){const{apiURI:e,appId:n}=this.config;return`${e}/runtime/${n}`}async signInWithIdToken({idToken:e,clientName:n,nonce:r}){var a;const s=await this.getCurrentUser(),i=(a=s==null?void 0:s.user)==null?void 0:a.refresh_token,o=await ba({apiURI:this.config.apiURI,appId:this.config.appId,idToken:e,clientName:n,nonce:r,refreshToken:i});return await this.changeCurrentUser(o.user),o}joinRoom(e,n,r){let s=!1;this._rooms[n]||(s=!0,this._rooms[n]={roomType:e,isConnected:!1,error:void 0}),this._presence[n]=this._presence[n]||{};const i=this._presence[n].result;return r&&!i&&(this._presence[n].result=this._presence[n].result||{},this._presence[n].result.user=r,this._notifyPresenceSubs(n)),s&&this._tryJoinRoom(e,n,r),()=>{this._cleanupRoom(n)}}_cleanupRoom(e){var n,r,s;if(!((r=(n=this._presence[e])==null?void 0:n.handlers)!=null&&r.length)&&!Object.keys(this._broadcastSubs[e]??{}).length){const i=(s=this._rooms[e])==null?void 0:s.isConnected;delete this._rooms[e],delete this._presence[e],delete this._broadcastSubs[e],i?this._tryLeaveRoom(e):this._roomsPendingLeave[e]=!0}}getPresence(e,n,r={}){const s=this._rooms[n],i=this._presence[n];return!s||!i||!i.result?null:{...va(i.result,r,this._sessionId),isLoading:!s.isConnected,error:s.error}}publishPresence(e,n,r){const s=this._rooms[n],i=this._presence[n];if(!s||!i)return;i.result=i.result||{};const o={...i.result.user,...r};i.result.user=o,s.isConnected&&(this._trySetPresence(n,o),this._notifyPresenceSubs(n))}_trySetPresence(e,n){this._trySendAuthed(z(),{op:"set-presence","room-id":e,data:n})}_tryJoinRoom(e,n,r){this._trySendAuthed(z(),{op:"join-room","room-type":e,"room-id":n,data:r}),delete this._roomsPendingLeave[n]}_tryLeaveRoom(e){this._trySendAuthed(z(),{op:"leave-room","room-id":e})}_trySetRoomConnected(e,n){const r=this._rooms[e];r&&(r.isConnected=n)}subscribePresence(e,n,r,s){const i=this.joinRoom(e,n,r.initialPresence||r.initialData),o={...r,roomId:n,cb:s,prev:null};return this._presence[n]=this._presence[n]||{},this._presence[n].handlers=this._presence[n].handlers||[],this._presence[n].handlers.push(o),this._notifyPresenceSub(n,o),()=>{var a,c;this._presence[n].handlers=((c=(a=this._presence[n])==null?void 0:a.handlers)==null?void 0:c.filter(u=>u!==o))??[],i()}}_notifyPresenceSubs(e){var n,r;(r=(n=this._presence[e])==null?void 0:n.handlers)==null||r.forEach(s=>{this._notifyPresenceSub(e,s)})}_notifyPresenceSub(e,n){const r=this.getPresence("",e,n);r&&(n.prev&&!Ea(r,n.prev)||(n.prev=r,n.cb(r)))}_patchPresencePeers(e,n){var o,a,c;const r=((a=(o=this._presence[e])==null?void 0:o.result)==null?void 0:a.peers)||{};let s=Object.fromEntries(Object.entries(r).map(([u,l])=>[u,{data:l}]));(c=this._presence[e])==null||c.result;const i=ht(s,u=>{for(let[l,f,h]of n)switch(f){case"+":ti(u,l,h);break;case"r":rr(u,l,h);break;case"-":sr(u,l);break}delete u[this._sessionId]});this._setPresencePeers(e,i)}_setPresencePeers(e,n){const r={...n};delete r[this._sessionId];const s=Object.fromEntries(Object.entries(r).map(([i,o])=>[i,o.data]));this._presence=ht(this._presence,i=>{rr(i,[e,"result","peers"],s)})}publishTopic({roomType:e,roomId:n,topic:r,data:s}){const i=this._rooms[n];if(i){if(!i.isConnected){this._broadcastQueue[n]=this._broadcastQueue[n]??[],this._broadcastQueue[n].push({topic:r,roomType:e,data:s});return}this._tryBroadcast(n,e,r,s)}}_tryBroadcast(e,n,r,s){this._trySendAuthed(z(),{op:"client-broadcast","room-id":e,roomType:n,topic:r,data:s})}subscribeTopic(e,n,r,s){const i=this.joinRoom(e,n);return this._broadcastSubs[n]=this._broadcastSubs[n]||{},this._broadcastSubs[n][r]=this._broadcastSubs[n][r]||[],this._broadcastSubs[n][r].push(s),this._presence[n]=this._presence[n]||{},()=>{this._broadcastSubs[n][r]=this._broadcastSubs[n][r].filter(o=>o!==s),this._broadcastSubs[n][r].length||delete this._broadcastSubs[n][r],i()}}_notifyBroadcastSubs(e,n,r){var s,i,o;(o=(i=(s=this._broadcastSubs)==null?void 0:s[e])==null?void 0:i[n])==null||o.forEach(a=>{var l,f,h,y,b,g;const c=(l=r.data)==null?void 0:l.data,u=r.data["peer-id"]===this._sessionId?(h=(f=this._presence[e])==null?void 0:f.result)==null?void 0:h.user:(g=(b=(y=this._presence[e])==null?void 0:y.result)==null?void 0:b.peers)==null?void 0:g[r.data["peer-id"]];return a(c,u)})}async uploadFile(e,n,r){var o;const s=await this.getCurrentUser(),i=(o=s==null?void 0:s.user)==null?void 0:o.refresh_token;return _a({...r,apiURI:this.config.apiURI,appId:this.config.appId,path:e,file:n,refreshToken:i})}async deleteFile(e){var i;const n=await this.getCurrentUser(),r=(i=n==null?void 0:n.user)==null?void 0:i.refresh_token;return await wa({apiURI:this.config.apiURI,appId:this.config.appId,path:e,refreshToken:r})}async upload(e,n){var c;const r=await this.getCurrentUser(),s=(c=r==null?void 0:r.user)==null?void 0:c.refresh_token,i=e||n.name,o=await Ta({apiURI:this.config.apiURI,appId:this.config.appId,fileName:i,refreshToken:s});return await ma(o,n)}async getDownloadUrl(e){var i;const n=await this.getCurrentUser(),r=(i=n==null?void 0:n.user)==null?void 0:i.refresh_token;return await Sa({apiURI:this.config.apiURI,appId:this.config.appId,path:e,refreshToken:r})}}function nc(t,e){return new vt(cs(t,e),e,void 0)}function rc(t){return new St(t,{})}function sc(){return new H("string",!0,!1)}function ic(){return new H("number",!0,!1)}function oc(){return new H("boolean",!0,!1)}function ac(){return new H("date",!0,!1)}function cc(){return new H("json",!0,!1)}function uc(){return new H("json",!0,!1)}function cs(t,e){var s,i,o,a;const n={fwd:{},rev:{}};for(const c of Object.values(e))(s=n.fwd)[i=c.forward.on]||(s[i]={}),(o=n.rev)[a=c.reverse.on]||(o[a]={}),n.fwd[c.forward.on][c.forward.label]={entityName:c.reverse.on,cardinality:c.forward.has},n.rev[c.reverse.on][c.reverse.label]={entityName:c.forward.on,cardinality:c.reverse.has};return Object.fromEntries(Object.entries(t).map(([c,u])=>[c,new St(u.attrs,{...n.fwd[c],...n.rev[c]})]))}function lc({entities:t,links:e,rooms:n}){const r=e??{},s=n??{};return new vt(cs(t,r),r,s)}const fc={graph:nc,schema:lc,entity:rc,string:sc,number:ic,boolean:oc,date:ac,json:cc,any:uc};let Ot;function dc(t,e){Ot==null||Ot.dispose();const n=_c(e),r=yc(e,a),s=pc(hc(t));function i(l){var f;l.source===s.element.contentWindow&&((f=l.data)==null?void 0:f.type)==="close"&&n.isVisible()&&a()}function o(l){const f=l.shiftKey&&l.ctrlKey&&l.key==="0",h=l.key==="Escape"||l.key==="Esc";(f||h&&n.isVisible())&&a()}function a(){n.isVisible()?n.element.style.display="none":(n.element.style.display="block",n.element.contains(s.element)||n.element.appendChild(s.element))}function c(){n.element.remove(),r.element.remove(),removeEventListener("keydown",o),removeEventListener("message",i)}function u(){document.body.appendChild(n.element),document.body.appendChild(r.element),addEventListener("keydown",o),addEventListener("message",i),Ot={dispose:c}}return u()}function hc(t){return`${dn||Wr?"http://localhost:3000":"https://instantdb.com"}/_devtool?appId=${t}`}function pc(t){const e=document.createElement("iframe");return e.src=t,e.className="instant-devtool-iframe",Object.assign(e.style,{width:"100%",height:"100%",backgroundColor:"white",border:"none"}),{element:e}}function yc(t,e){const n=`
3
3
  <svg width="32" height="32" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
4
4
  <rect width="512" height="512" fill="black"/>
5
5
  <rect x="97.0973" y="91.3297" width="140" height="330" fill="white"/>
6
6
  </svg>
7
- `,r=document.createElement("button");return r.innerHTML=n,r.className="instant-devtool-toggler",Object.assign(r.style,{position:"fixed",...pc(t.position),height:"32px",width:"32px",display:"flex",alignItems:"center",justifyContent:"center",zIndex:"9010",padding:"0",margin:"0",border:"none",cursor:"pointer"}),r.addEventListener("click",e),{element:r}}function pc(t){switch(t){case"bottom-left":return{bottom:"24px",left:"24px"};case"bottom-right":return{bottom:"24px",right:"24px"};case"top-right":return{top:"24px",right:"24px"};case"top-left":return{top:"24px",left:"24px"}}}function yc(t){switch(t){case"bottom-left":return{bottom:"24px",right:"24px",left:"60px",top:"72px"};case"bottom-right":return{bottom:"24px",left:"24px",right:"60px",top:"72px"};case"top-right":return{top:"24px",left:"24px",right:"60px",bottom:"72px"};case"top-left":return{top:"24px",right:"24px",left:"60px",bottom:"72px"}}}function bc(t){const e=document.createElement("div");Object.assign(e.style,{position:"fixed",...yc(t.position),display:"block",borderRadius:"4px",border:"1px #ccc solid",boxShadow:"0px 0px 8px #00000044",backgroundColor:"#eee",zIndex:"999990"}),e.style.display="none",e.className="instant-devtool-container";function n(){return e.style.display!=="none"}return{element:e,isVisible:n}}function gc(t,e){return e&&e.refresh_token?new Response(JSON.stringify({ok:!0}),{headers:{"Content-Type":"application/json","Set-Cookie":`instant_user_${t.appId}=${encodeURIComponent(JSON.stringify(e))}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=604800`}}):new Response(JSON.stringify({ok:!0}),{headers:{"Content-Type":"application/json","Set-Cookie":`instant_user_${t.appId}=; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=-1`}})}function At(t,e){return new Response(JSON.stringify({ok:!1,error:e}),{status:t,headers:{"Content-Type":"application/json"}})}const _c=t=>({POST:async e=>{let n;try{n=await e.json()}catch{return At(400,"Invalid JSON body")}if(!n.type)return At(400,'Missing "type" field');if(n.appId!==t.appId)return At(403,"App ID mismatch");switch(n.type){case"sync-user":return gc(t,n.user??null);default:return At(400,`Unknown type: ${n.type}`)}}}),wc={apiURI:"https://api.instantdb.com",websocketURI:"wss://api.instantdb.com/runtime/session"};function Tc(){return globalThis.__instantDbSchemaHashStore=globalThis.__instantDbSchemaHashStore??new WeakMap,globalThis.__instantDbSchemaHashStore}function mc(){return globalThis.__instantDbStore=globalThis.__instantDbStore??{},globalThis.__instantDbStore}function wn(t){const e=t.__adminToken;return t.appId+"_"+(t.websocketURI||"default_ws_uri")+"_"+(t.apiURI||"default_api_uri")+"_"+(e||"client_only")+"_"+t.useDateObjects}const Tn=mc(),cs=Tc();class Sc{constructor(e){p(this,"db");p(this,"sendMagicCode",e=>this.db.sendMagicCode(e));p(this,"signInWithMagicCode",e=>this.db.signInWithMagicCode(e));p(this,"signInWithToken",e=>this.db.signInWithCustomToken(e));p(this,"signInAsGuest",()=>this.db.signInAsGuest());p(this,"createAuthorizationURL",e=>this.db.createAuthorizationURL(e));p(this,"signInWithIdToken",e=>this.db.signInWithIdToken(e));p(this,"exchangeOAuthCode",e=>this.db.exchangeCodeForToken(e));p(this,"issuerURI",()=>this.db.issuerURI());p(this,"signOut",(e={invalidateToken:!0})=>this.db.signOut(e));this.db=e}}class vc{constructor(e){p(this,"db");p(this,"uploadFile",(e,n,r={})=>this.db.uploadFile(e,n,r));p(this,"delete",e=>this.db.deleteFile(e));p(this,"upload",(e,n)=>this.db.upload(e,n));p(this,"put",this.upload);p(this,"getDownloadUrl",e=>this.db.getDownloadUrl(e));this.db=e}}function Ec(t){return JSON.parse(JSON.stringify(t))}class Oc{constructor(e){p(this,"_reactor");p(this,"auth");p(this,"storage");p(this,"tx",an());this._reactor=e,this.auth=new Sc(this._reactor),this.storage=new vc(this._reactor)}transact(e){return this._reactor.pushTx(e)}getLocalId(e){return this._reactor.getLocalId(e)}subscribeQuery(e,n,r){return this._reactor.subscribeQuery(e,n,r)}subscribeAuth(e){return this._reactor.subscribeAuth(e)}getAuth(){return this._reactor.getAuth()}subscribeConnectionStatus(e){return this._reactor.subscribeConnectionStatus(e)}joinRoom(e="_defaultRoomType",n="_defaultRoomId",r){return{leaveRoom:this._reactor.joinRoom(e,n,r==null?void 0:r.initialPresence),subscribeTopic:(i,o)=>this._reactor.subscribeTopic(e,n,i,o),subscribePresence:(i,o)=>this._reactor.subscribePresence(e,n,i,o),publishTopic:(i,o)=>this._reactor.publishTopic({roomType:e,roomId:n,topic:i,data:o}),publishPresence:i=>this._reactor.publishPresence(e,n,i),getPresence:i=>this._reactor.getPresence(e,n,i)}}shutdown(){delete Tn[wn(this._reactor.config)],this._reactor.shutdown()}queryOnce(e,n){return this._reactor.queryOnce(e,n)}_syncTableExperimental(e,n){return this._reactor.subscribeTable(e,n)}}function us(t){if(!t)return"0";const e=cs.get(t);if(e)return e;const n=L(t);return cs.set(t,n),n}function Ac(t,e){return us(t._reactor.config.schema)!==us(e)}function kc(t,e,n,r,s){var u;const i={...t,appId:(u=t.appId)==null?void 0:u.trim(),useDateObjects:t.useDateObjects??!1},o=Tn[wn(i)];if(o)return Ac(o,i.schema)&&o._reactor.updateSchema(i.schema),o;const a=new Xa({...wc,...i,cardinalityInference:!!i.schema},e||Ur,n||Lr,{...r||{},"@instantdb/core":hn},s),c=new Oc(a);return Tn[wn(i)]=c,Cc(i.appId,i.devtool),c}function Cc(t,e){if(typeof window>"u"||typeof window.location>"u"||typeof document>"u"||typeof e=="boolean"&&!e)return;const n={position:"bottom-right",allowedHosts:["localhost"],...typeof e=="object"?e:{}};n.allowedHosts.includes(window.location.hostname)&&lc(t,n)}var mn={exports:{}},et={};/**
7
+ `,r=document.createElement("button");return r.innerHTML=n,r.className="instant-devtool-toggler",Object.assign(r.style,{position:"fixed",...bc(t.position),height:"32px",width:"32px",display:"flex",alignItems:"center",justifyContent:"center",zIndex:"9010",padding:"0",margin:"0",border:"none",cursor:"pointer"}),r.addEventListener("click",e),{element:r}}function bc(t){switch(t){case"bottom-left":return{bottom:"24px",left:"24px"};case"bottom-right":return{bottom:"24px",right:"24px"};case"top-right":return{top:"24px",right:"24px"};case"top-left":return{top:"24px",left:"24px"}}}function gc(t){switch(t){case"bottom-left":return{bottom:"24px",right:"24px",left:"60px",top:"72px"};case"bottom-right":return{bottom:"24px",left:"24px",right:"60px",top:"72px"};case"top-right":return{top:"24px",left:"24px",right:"60px",bottom:"72px"};case"top-left":return{top:"24px",right:"24px",left:"60px",bottom:"72px"}}}function _c(t){const e=document.createElement("div");Object.assign(e.style,{position:"fixed",...gc(t.position),display:"block",borderRadius:"4px",border:"1px #ccc solid",boxShadow:"0px 0px 8px #00000044",backgroundColor:"#eee",zIndex:"999990"}),e.style.display="none",e.className="instant-devtool-container";function n(){return e.style.display!=="none"}return{element:e,isVisible:n}}function wc(t,e){return e&&e.refresh_token?new Response(JSON.stringify({ok:!0}),{headers:{"Content-Type":"application/json","Set-Cookie":`instant_user_${t.appId}=${encodeURIComponent(JSON.stringify(e))}; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=604800`}}):new Response(JSON.stringify({ok:!0}),{headers:{"Content-Type":"application/json","Set-Cookie":`instant_user_${t.appId}=; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=-1`}})}function At(t,e){return new Response(JSON.stringify({ok:!1,error:e}),{status:t,headers:{"Content-Type":"application/json"}})}const Tc=t=>({POST:async e=>{let n;try{n=await e.json()}catch{return At(400,"Invalid JSON body")}if(!n.type)return At(400,'Missing "type" field');if(n.appId!==t.appId)return At(403,"App ID mismatch");switch(n.type){case"sync-user":return wc(t,n.user??null);default:return At(400,`Unknown type: ${n.type}`)}}}),mc={apiURI:"https://api.instantdb.com",websocketURI:"wss://api.instantdb.com/runtime/session"};function Sc(){return globalThis.__instantDbSchemaHashStore=globalThis.__instantDbSchemaHashStore??new WeakMap,globalThis.__instantDbSchemaHashStore}function vc(){return globalThis.__instantDbStore=globalThis.__instantDbStore??{},globalThis.__instantDbStore}function wn(t){const e=t.__adminToken;return t.appId+"_"+(t.websocketURI||"default_ws_uri")+"_"+(t.apiURI||"default_api_uri")+"_"+(e||"client_only")+"_"+t.useDateObjects}const Tn=vc(),us=Sc();class Ec{constructor(e){p(this,"db");p(this,"sendMagicCode",e=>this.db.sendMagicCode(e));p(this,"signInWithMagicCode",e=>this.db.signInWithMagicCode(e));p(this,"signInWithToken",e=>this.db.signInWithCustomToken(e));p(this,"signInAsGuest",()=>this.db.signInAsGuest());p(this,"createAuthorizationURL",e=>this.db.createAuthorizationURL(e));p(this,"signInWithIdToken",e=>this.db.signInWithIdToken(e));p(this,"exchangeOAuthCode",e=>this.db.exchangeCodeForToken(e));p(this,"issuerURI",()=>this.db.issuerURI());p(this,"signOut",(e={invalidateToken:!0})=>this.db.signOut(e));this.db=e}}class Oc{constructor(e){p(this,"db");p(this,"uploadFile",(e,n,r={})=>this.db.uploadFile(e,n,r));p(this,"delete",e=>this.db.deleteFile(e));p(this,"upload",(e,n)=>this.db.upload(e,n));p(this,"put",this.upload);p(this,"getDownloadUrl",e=>this.db.getDownloadUrl(e));this.db=e}}function Ac(t){return JSON.parse(JSON.stringify(t))}class kc{constructor(e){p(this,"_reactor");p(this,"auth");p(this,"storage");p(this,"tx",an());this._reactor=e,this.auth=new Ec(this._reactor),this.storage=new Oc(this._reactor)}transact(e){return this._reactor.pushTx(e)}getLocalId(e){return this._reactor.getLocalId(e)}subscribeQuery(e,n,r){return this._reactor.subscribeQuery(e,n,r)}subscribeAuth(e){return this._reactor.subscribeAuth(e)}getAuth(){return this._reactor.getAuth()}subscribeConnectionStatus(e){return this._reactor.subscribeConnectionStatus(e)}joinRoom(e="_defaultRoomType",n="_defaultRoomId",r){return{leaveRoom:this._reactor.joinRoom(e,n,r==null?void 0:r.initialPresence),subscribeTopic:(i,o)=>this._reactor.subscribeTopic(e,n,i,o),subscribePresence:(i,o)=>this._reactor.subscribePresence(e,n,i,o),publishTopic:(i,o)=>this._reactor.publishTopic({roomType:e,roomId:n,topic:i,data:o}),publishPresence:i=>this._reactor.publishPresence(e,n,i),getPresence:i=>this._reactor.getPresence(e,n,i)}}shutdown(){delete Tn[wn(this._reactor.config)],this._reactor.shutdown()}queryOnce(e,n){return this._reactor.queryOnce(e,n)}_syncTableExperimental(e,n){return this._reactor.subscribeTable(e,n)}}function ls(t){if(!t)return"0";const e=us.get(t);if(e)return e;const n=L(t);return us.set(t,n),n}function Cc(t,e){return ls(t._reactor.config.schema)!==ls(e)}function Pc(t,e,n,r,s){var u;const i={...t,appId:(u=t.appId)==null?void 0:u.trim(),useDateObjects:t.useDateObjects??!1},o=Tn[wn(i)];if(o)return Cc(o,i.schema)&&o._reactor.updateSchema(i.schema),o;const a=new tc({...mc,...i,cardinalityInference:!!i.schema},e||Lr,n||Fr,{...r||{},"@instantdb/core":hn},s),c=new kc(a);return Tn[wn(i)]=c,Ic(i.appId,i.devtool),c}function Ic(t,e){if(typeof window>"u"||typeof window.location>"u"||typeof document>"u"||typeof e=="boolean"&&!e)return;const n={position:"bottom-right",allowedHosts:["localhost"],...typeof e=="object"?e:{}};n.allowedHosts.includes(window.location.hostname)&&dc(t,n)}var mn={exports:{}},et={};/**
8
8
  * @license React
9
9
  * react-jsx-runtime.production.min.js
10
10
  *
@@ -12,7 +12,7 @@
12
12
  *
13
13
  * This source code is licensed under the MIT license found in the
14
14
  * LICENSE file in the root directory of this source tree.
15
- */var ls;function Pc(){if(ls)return et;ls=1;var t=A,e=Symbol.for("react.element"),n=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,s=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function o(a,c,u){var l,f={},h=null,y=null;u!==void 0&&(h=""+u),c.key!==void 0&&(h=""+c.key),c.ref!==void 0&&(y=c.ref);for(l in c)r.call(c,l)&&!i.hasOwnProperty(l)&&(f[l]=c[l]);if(a&&a.defaultProps)for(l in c=a.defaultProps,c)f[l]===void 0&&(f[l]=c[l]);return{$$typeof:e,type:a,key:h,ref:y,props:f,_owner:s.current}}return et.Fragment=n,et.jsx=o,et.jsxs=o,et}var tt={},fs;function Ic(){if(fs)return tt;fs=1;var t={};/**
15
+ */var fs;function Mc(){if(fs)return et;fs=1;var t=A,e=Symbol.for("react.element"),n=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,s=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function o(a,c,u){var l,f={},h=null,y=null;u!==void 0&&(h=""+u),c.key!==void 0&&(h=""+c.key),c.ref!==void 0&&(y=c.ref);for(l in c)r.call(c,l)&&!i.hasOwnProperty(l)&&(f[l]=c[l]);if(a&&a.defaultProps)for(l in c=a.defaultProps,c)f[l]===void 0&&(f[l]=c[l]);return{$$typeof:e,type:a,key:h,ref:y,props:f,_owner:s.current}}return et.Fragment=n,et.jsx=o,et.jsxs=o,et}var tt={},ds;function jc(){if(ds)return tt;ds=1;var t={};/**
16
16
  * @license React
17
17
  * react-jsx-runtime.development.js
18
18
  *
@@ -20,21 +20,21 @@
20
20
  *
21
21
  * This source code is licensed under the MIT license found in the
22
22
  * LICENSE file in the root directory of this source tree.
23
- */return t.NODE_ENV!=="production"&&function(){var e=A,n=Symbol.for("react.element"),r=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),a=Symbol.for("react.provider"),c=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),f=Symbol.for("react.suspense_list"),h=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),b=Symbol.for("react.offscreen"),g=Symbol.iterator,w="@@iterator";function S(d){if(d===null||typeof d!="object")return null;var T=g&&d[g]||d[w];return typeof T=="function"?T:null}var _=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function m(d){{for(var T=arguments.length,v=new Array(T>1?T-1:0),O=1;O<T;O++)v[O-1]=arguments[O];k("error",d,v)}}function k(d,T,v){{var O=_.ReactDebugCurrentFrame,R=O.getStackAddendum();R!==""&&(T+="%s",v=v.concat([R]));var D=v.map(function(M){return String(M)});D.unshift("Warning: "+T),Function.prototype.apply.call(console[d],console,D)}}var E=!1,x=!1,V=!1,J=!1,we=!1,It;It=Symbol.for("react.module.reference");function Rn(d){return!!(typeof d=="string"||typeof d=="function"||d===s||d===o||we||d===i||d===l||d===f||J||d===b||E||x||V||typeof d=="object"&&d!==null&&(d.$$typeof===y||d.$$typeof===h||d.$$typeof===a||d.$$typeof===c||d.$$typeof===u||d.$$typeof===It||d.getModuleId!==void 0))}function xn(d,T,v){var O=d.displayName;if(O)return O;var R=T.displayName||T.name||"";return R!==""?v+"("+R+")":v}function Mt(d){return d.displayName||"Context"}function fe(d){if(d==null)return null;if(typeof d.tag=="number"&&m("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof d=="function")return d.displayName||d.name||null;if(typeof d=="string")return d;switch(d){case s:return"Fragment";case r:return"Portal";case o:return"Profiler";case i:return"StrictMode";case l:return"Suspense";case f:return"SuspenseList"}if(typeof d=="object")switch(d.$$typeof){case c:var T=d;return Mt(T)+".Consumer";case a:var v=d;return Mt(v._context)+".Provider";case u:return xn(d,d.render,"ForwardRef");case h:var O=d.displayName||null;return O!==null?O:fe(d.type)||"Memo";case y:{var R=d,D=R._payload,M=R._init;try{return fe(M(D))}catch{return null}}}return null}var he=Object.assign,Te=0,at,Ts,ms,Ss,vs,Es,Os;function As(){}As.__reactDisabledLog=!0;function Zc(){{if(Te===0){at=console.log,Ts=console.info,ms=console.warn,Ss=console.error,vs=console.group,Es=console.groupCollapsed,Os=console.groupEnd;var d={configurable:!0,enumerable:!0,value:As,writable:!0};Object.defineProperties(console,{info:d,log:d,warn:d,error:d,group:d,groupCollapsed:d,groupEnd:d})}Te++}}function Xc(){{if(Te--,Te===0){var d={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:he({},d,{value:at}),info:he({},d,{value:Ts}),warn:he({},d,{value:ms}),error:he({},d,{value:Ss}),group:he({},d,{value:vs}),groupCollapsed:he({},d,{value:Es}),groupEnd:he({},d,{value:Os})})}Te<0&&m("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var Dn=_.ReactCurrentDispatcher,$n;function jt(d,T,v){{if($n===void 0)try{throw Error()}catch(R){var O=R.stack.trim().match(/\n( *(at )?)/);$n=O&&O[1]||""}return`
24
- `+$n+d}}var Un=!1,Rt;{var eu=typeof WeakMap=="function"?WeakMap:Map;Rt=new eu}function ks(d,T){if(!d||Un)return"";{var v=Rt.get(d);if(v!==void 0)return v}var O;Un=!0;var R=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var D;D=Dn.current,Dn.current=null,Zc();try{if(T){var M=function(){throw Error()};if(Object.defineProperty(M.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(M,[])}catch(ne){O=ne}Reflect.construct(d,[],M)}else{try{M.call()}catch(ne){O=ne}d.call(M.prototype)}}else{try{throw Error()}catch(ne){O=ne}d()}}catch(ne){if(ne&&O&&typeof ne.stack=="string"){for(var I=ne.stack.split(`
23
+ */return t.NODE_ENV!=="production"&&function(){var e=A,n=Symbol.for("react.element"),r=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),a=Symbol.for("react.provider"),c=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),f=Symbol.for("react.suspense_list"),h=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),b=Symbol.for("react.offscreen"),g=Symbol.iterator,w="@@iterator";function S(d){if(d===null||typeof d!="object")return null;var T=g&&d[g]||d[w];return typeof T=="function"?T:null}var _=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function m(d){{for(var T=arguments.length,v=new Array(T>1?T-1:0),O=1;O<T;O++)v[O-1]=arguments[O];k("error",d,v)}}function k(d,T,v){{var O=_.ReactDebugCurrentFrame,R=O.getStackAddendum();R!==""&&(T+="%s",v=v.concat([R]));var D=v.map(function(M){return String(M)});D.unshift("Warning: "+T),Function.prototype.apply.call(console[d],console,D)}}var E=!1,x=!1,V=!1,J=!1,we=!1,It;It=Symbol.for("react.module.reference");function Rn(d){return!!(typeof d=="string"||typeof d=="function"||d===s||d===o||we||d===i||d===l||d===f||J||d===b||E||x||V||typeof d=="object"&&d!==null&&(d.$$typeof===y||d.$$typeof===h||d.$$typeof===a||d.$$typeof===c||d.$$typeof===u||d.$$typeof===It||d.getModuleId!==void 0))}function xn(d,T,v){var O=d.displayName;if(O)return O;var R=T.displayName||T.name||"";return R!==""?v+"("+R+")":v}function Mt(d){return d.displayName||"Context"}function fe(d){if(d==null)return null;if(typeof d.tag=="number"&&m("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof d=="function")return d.displayName||d.name||null;if(typeof d=="string")return d;switch(d){case s:return"Fragment";case r:return"Portal";case o:return"Profiler";case i:return"StrictMode";case l:return"Suspense";case f:return"SuspenseList"}if(typeof d=="object")switch(d.$$typeof){case c:var T=d;return Mt(T)+".Consumer";case a:var v=d;return Mt(v._context)+".Provider";case u:return xn(d,d.render,"ForwardRef");case h:var O=d.displayName||null;return O!==null?O:fe(d.type)||"Memo";case y:{var R=d,D=R._payload,M=R._init;try{return fe(M(D))}catch{return null}}}return null}var he=Object.assign,Te=0,at,ms,Ss,vs,Es,Os,As;function ks(){}ks.__reactDisabledLog=!0;function eu(){{if(Te===0){at=console.log,ms=console.info,Ss=console.warn,vs=console.error,Es=console.group,Os=console.groupCollapsed,As=console.groupEnd;var d={configurable:!0,enumerable:!0,value:ks,writable:!0};Object.defineProperties(console,{info:d,log:d,warn:d,error:d,group:d,groupCollapsed:d,groupEnd:d})}Te++}}function tu(){{if(Te--,Te===0){var d={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:he({},d,{value:at}),info:he({},d,{value:ms}),warn:he({},d,{value:Ss}),error:he({},d,{value:vs}),group:he({},d,{value:Es}),groupCollapsed:he({},d,{value:Os}),groupEnd:he({},d,{value:As})})}Te<0&&m("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var Dn=_.ReactCurrentDispatcher,$n;function jt(d,T,v){{if($n===void 0)try{throw Error()}catch(R){var O=R.stack.trim().match(/\n( *(at )?)/);$n=O&&O[1]||""}return`
24
+ `+$n+d}}var Un=!1,Rt;{var nu=typeof WeakMap=="function"?WeakMap:Map;Rt=new nu}function Cs(d,T){if(!d||Un)return"";{var v=Rt.get(d);if(v!==void 0)return v}var O;Un=!0;var R=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var D;D=Dn.current,Dn.current=null,eu();try{if(T){var M=function(){throw Error()};if(Object.defineProperty(M.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(M,[])}catch(ne){O=ne}Reflect.construct(d,[],M)}else{try{M.call()}catch(ne){O=ne}d.call(M.prototype)}}else{try{throw Error()}catch(ne){O=ne}d()}}catch(ne){if(ne&&O&&typeof ne.stack=="string"){for(var I=ne.stack.split(`
25
25
  `),Y=O.stack.split(`
26
26
  `),N=I.length-1,W=Y.length-1;N>=1&&W>=0&&I[N]!==Y[W];)W--;for(;N>=1&&W>=0;N--,W--)if(I[N]!==Y[W]){if(N!==1||W!==1)do if(N--,W--,W<0||I[N]!==Y[W]){var oe=`
27
- `+I[N].replace(" at new "," at ");return d.displayName&&oe.includes("<anonymous>")&&(oe=oe.replace("<anonymous>",d.displayName)),typeof d=="function"&&Rt.set(d,oe),oe}while(N>=1&&W>=0);break}}}finally{Un=!1,Dn.current=D,Xc(),Error.prepareStackTrace=R}var Ke=d?d.displayName||d.name:"",Ce=Ke?jt(Ke):"";return typeof d=="function"&&Rt.set(d,Ce),Ce}function tu(d,T,v){return ks(d,!1)}function nu(d){var T=d.prototype;return!!(T&&T.isReactComponent)}function xt(d,T,v){if(d==null)return"";if(typeof d=="function")return ks(d,nu(d));if(typeof d=="string")return jt(d);switch(d){case l:return jt("Suspense");case f:return jt("SuspenseList")}if(typeof d=="object")switch(d.$$typeof){case u:return tu(d.render);case h:return xt(d.type,T,v);case y:{var O=d,R=O._payload,D=O._init;try{return xt(D(R),T,v)}catch{}}}return""}var ct=Object.prototype.hasOwnProperty,Cs={},Ps=_.ReactDebugCurrentFrame;function Dt(d){if(d){var T=d._owner,v=xt(d.type,d._source,T?T.type:null);Ps.setExtraStackFrame(v)}else Ps.setExtraStackFrame(null)}function ru(d,T,v,O,R){{var D=Function.call.bind(ct);for(var M in d)if(D(d,M)){var I=void 0;try{if(typeof d[M]!="function"){var Y=Error((O||"React class")+": "+v+" type `"+M+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof d[M]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw Y.name="Invariant Violation",Y}I=d[M](T,M,O,v,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(N){I=N}I&&!(I instanceof Error)&&(Dt(R),m("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",O||"React class",v,M,typeof I),Dt(null)),I instanceof Error&&!(I.message in Cs)&&(Cs[I.message]=!0,Dt(R),m("Failed %s type: %s",v,I.message),Dt(null))}}}var su=Array.isArray;function Ln(d){return su(d)}function iu(d){{var T=typeof Symbol=="function"&&Symbol.toStringTag,v=T&&d[Symbol.toStringTag]||d.constructor.name||"Object";return v}}function ou(d){try{return Is(d),!1}catch{return!0}}function Is(d){return""+d}function Ms(d){if(ou(d))return m("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",iu(d)),Is(d)}var js=_.ReactCurrentOwner,au={key:!0,ref:!0,__self:!0,__source:!0},Rs,xs;function cu(d){if(ct.call(d,"ref")){var T=Object.getOwnPropertyDescriptor(d,"ref").get;if(T&&T.isReactWarning)return!1}return d.ref!==void 0}function uu(d){if(ct.call(d,"key")){var T=Object.getOwnPropertyDescriptor(d,"key").get;if(T&&T.isReactWarning)return!1}return d.key!==void 0}function lu(d,T){typeof d.ref=="string"&&js.current}function fu(d,T){{var v=function(){Rs||(Rs=!0,m("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",T))};v.isReactWarning=!0,Object.defineProperty(d,"key",{get:v,configurable:!0})}}function du(d,T){{var v=function(){xs||(xs=!0,m("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",T))};v.isReactWarning=!0,Object.defineProperty(d,"ref",{get:v,configurable:!0})}}var hu=function(d,T,v,O,R,D,M){var I={$$typeof:n,type:d,key:T,ref:v,props:M,_owner:D};return I._store={},Object.defineProperty(I._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(I,"_self",{configurable:!1,enumerable:!1,writable:!1,value:O}),Object.defineProperty(I,"_source",{configurable:!1,enumerable:!1,writable:!1,value:R}),Object.freeze&&(Object.freeze(I.props),Object.freeze(I)),I};function pu(d,T,v,O,R){{var D,M={},I=null,Y=null;v!==void 0&&(Ms(v),I=""+v),uu(T)&&(Ms(T.key),I=""+T.key),cu(T)&&(Y=T.ref,lu(T,R));for(D in T)ct.call(T,D)&&!au.hasOwnProperty(D)&&(M[D]=T[D]);if(d&&d.defaultProps){var N=d.defaultProps;for(D in N)M[D]===void 0&&(M[D]=N[D])}if(I||Y){var W=typeof d=="function"?d.displayName||d.name||"Unknown":d;I&&fu(M,W),Y&&du(M,W)}return hu(d,I,Y,R,O,js.current,M)}}var Fn=_.ReactCurrentOwner,Ds=_.ReactDebugCurrentFrame;function Ne(d){if(d){var T=d._owner,v=xt(d.type,d._source,T?T.type:null);Ds.setExtraStackFrame(v)}else Ds.setExtraStackFrame(null)}var Nn;Nn=!1;function Kn(d){return typeof d=="object"&&d!==null&&d.$$typeof===n}function $s(){{if(Fn.current){var d=fe(Fn.current.type);if(d)return`
27
+ `+I[N].replace(" at new "," at ");return d.displayName&&oe.includes("<anonymous>")&&(oe=oe.replace("<anonymous>",d.displayName)),typeof d=="function"&&Rt.set(d,oe),oe}while(N>=1&&W>=0);break}}}finally{Un=!1,Dn.current=D,tu(),Error.prepareStackTrace=R}var Ke=d?d.displayName||d.name:"",Ce=Ke?jt(Ke):"";return typeof d=="function"&&Rt.set(d,Ce),Ce}function ru(d,T,v){return Cs(d,!1)}function su(d){var T=d.prototype;return!!(T&&T.isReactComponent)}function xt(d,T,v){if(d==null)return"";if(typeof d=="function")return Cs(d,su(d));if(typeof d=="string")return jt(d);switch(d){case l:return jt("Suspense");case f:return jt("SuspenseList")}if(typeof d=="object")switch(d.$$typeof){case u:return ru(d.render);case h:return xt(d.type,T,v);case y:{var O=d,R=O._payload,D=O._init;try{return xt(D(R),T,v)}catch{}}}return""}var ct=Object.prototype.hasOwnProperty,Ps={},Is=_.ReactDebugCurrentFrame;function Dt(d){if(d){var T=d._owner,v=xt(d.type,d._source,T?T.type:null);Is.setExtraStackFrame(v)}else Is.setExtraStackFrame(null)}function iu(d,T,v,O,R){{var D=Function.call.bind(ct);for(var M in d)if(D(d,M)){var I=void 0;try{if(typeof d[M]!="function"){var Y=Error((O||"React class")+": "+v+" type `"+M+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof d[M]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw Y.name="Invariant Violation",Y}I=d[M](T,M,O,v,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(N){I=N}I&&!(I instanceof Error)&&(Dt(R),m("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",O||"React class",v,M,typeof I),Dt(null)),I instanceof Error&&!(I.message in Ps)&&(Ps[I.message]=!0,Dt(R),m("Failed %s type: %s",v,I.message),Dt(null))}}}var ou=Array.isArray;function Ln(d){return ou(d)}function au(d){{var T=typeof Symbol=="function"&&Symbol.toStringTag,v=T&&d[Symbol.toStringTag]||d.constructor.name||"Object";return v}}function cu(d){try{return Ms(d),!1}catch{return!0}}function Ms(d){return""+d}function js(d){if(cu(d))return m("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",au(d)),Ms(d)}var Rs=_.ReactCurrentOwner,uu={key:!0,ref:!0,__self:!0,__source:!0},xs,Ds;function lu(d){if(ct.call(d,"ref")){var T=Object.getOwnPropertyDescriptor(d,"ref").get;if(T&&T.isReactWarning)return!1}return d.ref!==void 0}function fu(d){if(ct.call(d,"key")){var T=Object.getOwnPropertyDescriptor(d,"key").get;if(T&&T.isReactWarning)return!1}return d.key!==void 0}function du(d,T){typeof d.ref=="string"&&Rs.current}function hu(d,T){{var v=function(){xs||(xs=!0,m("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",T))};v.isReactWarning=!0,Object.defineProperty(d,"key",{get:v,configurable:!0})}}function pu(d,T){{var v=function(){Ds||(Ds=!0,m("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",T))};v.isReactWarning=!0,Object.defineProperty(d,"ref",{get:v,configurable:!0})}}var yu=function(d,T,v,O,R,D,M){var I={$$typeof:n,type:d,key:T,ref:v,props:M,_owner:D};return I._store={},Object.defineProperty(I._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(I,"_self",{configurable:!1,enumerable:!1,writable:!1,value:O}),Object.defineProperty(I,"_source",{configurable:!1,enumerable:!1,writable:!1,value:R}),Object.freeze&&(Object.freeze(I.props),Object.freeze(I)),I};function bu(d,T,v,O,R){{var D,M={},I=null,Y=null;v!==void 0&&(js(v),I=""+v),fu(T)&&(js(T.key),I=""+T.key),lu(T)&&(Y=T.ref,du(T,R));for(D in T)ct.call(T,D)&&!uu.hasOwnProperty(D)&&(M[D]=T[D]);if(d&&d.defaultProps){var N=d.defaultProps;for(D in N)M[D]===void 0&&(M[D]=N[D])}if(I||Y){var W=typeof d=="function"?d.displayName||d.name||"Unknown":d;I&&hu(M,W),Y&&pu(M,W)}return yu(d,I,Y,R,O,Rs.current,M)}}var Fn=_.ReactCurrentOwner,$s=_.ReactDebugCurrentFrame;function Ne(d){if(d){var T=d._owner,v=xt(d.type,d._source,T?T.type:null);$s.setExtraStackFrame(v)}else $s.setExtraStackFrame(null)}var Nn;Nn=!1;function Kn(d){return typeof d=="object"&&d!==null&&d.$$typeof===n}function Us(){{if(Fn.current){var d=fe(Fn.current.type);if(d)return`
28
28
 
29
- Check the render method of \``+d+"`."}return""}}function yu(d){return""}var Us={};function bu(d){{var T=$s();if(!T){var v=typeof d=="string"?d:d.displayName||d.name;v&&(T=`
29
+ Check the render method of \``+d+"`."}return""}}function gu(d){return""}var Ls={};function _u(d){{var T=Us();if(!T){var v=typeof d=="string"?d:d.displayName||d.name;v&&(T=`
30
30
 
31
- Check the top-level render call using <`+v+">.")}return T}}function Ls(d,T){{if(!d._store||d._store.validated||d.key!=null)return;d._store.validated=!0;var v=bu(T);if(Us[v])return;Us[v]=!0;var O="";d&&d._owner&&d._owner!==Fn.current&&(O=" It was passed a child from "+fe(d._owner.type)+"."),Ne(d),m('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',v,O),Ne(null)}}function Fs(d,T){{if(typeof d!="object")return;if(Ln(d))for(var v=0;v<d.length;v++){var O=d[v];Kn(O)&&Ls(O,T)}else if(Kn(d))d._store&&(d._store.validated=!0);else if(d){var R=S(d);if(typeof R=="function"&&R!==d.entries)for(var D=R.call(d),M;!(M=D.next()).done;)Kn(M.value)&&Ls(M.value,T)}}}function gu(d){{var T=d.type;if(T==null||typeof T=="string")return;var v;if(typeof T=="function")v=T.propTypes;else if(typeof T=="object"&&(T.$$typeof===u||T.$$typeof===h))v=T.propTypes;else return;if(v){var O=fe(T);ru(v,d.props,"prop",O,d)}else if(T.PropTypes!==void 0&&!Nn){Nn=!0;var R=fe(T);m("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",R||"Unknown")}typeof T.getDefaultProps=="function"&&!T.getDefaultProps.isReactClassApproved&&m("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function _u(d){{for(var T=Object.keys(d.props),v=0;v<T.length;v++){var O=T[v];if(O!=="children"&&O!=="key"){Ne(d),m("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",O),Ne(null);break}}d.ref!==null&&(Ne(d),m("Invalid attribute `ref` supplied to `React.Fragment`."),Ne(null))}}var Ns={};function Ks(d,T,v,O,R,D){{var M=Rn(d);if(!M){var I="";(d===void 0||typeof d=="object"&&d!==null&&Object.keys(d).length===0)&&(I+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var Y=yu();Y?I+=Y:I+=$s();var N;d===null?N="null":Ln(d)?N="array":d!==void 0&&d.$$typeof===n?(N="<"+(fe(d.type)||"Unknown")+" />",I=" Did you accidentally export a JSX literal instead of a component?"):N=typeof d,m("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",N,I)}var W=pu(d,T,v,R,D);if(W==null)return W;if(M){var oe=T.children;if(oe!==void 0)if(O)if(Ln(oe)){for(var Ke=0;Ke<oe.length;Ke++)Fs(oe[Ke],d);Object.freeze&&Object.freeze(oe)}else m("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else Fs(oe,d)}if(ct.call(T,"key")){var Ce=fe(d),ne=Object.keys(T).filter(function(Eu){return Eu!=="key"}),Wn=ne.length>0?"{key: someKey, "+ne.join(": ..., ")+": ...}":"{key: someKey}";if(!Ns[Ce+Wn]){var vu=ne.length>0?"{"+ne.join(": ..., ")+": ...}":"{}";m(`A props object containing a "key" prop is being spread into JSX:
31
+ Check the top-level render call using <`+v+">.")}return T}}function Fs(d,T){{if(!d._store||d._store.validated||d.key!=null)return;d._store.validated=!0;var v=_u(T);if(Ls[v])return;Ls[v]=!0;var O="";d&&d._owner&&d._owner!==Fn.current&&(O=" It was passed a child from "+fe(d._owner.type)+"."),Ne(d),m('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',v,O),Ne(null)}}function Ns(d,T){{if(typeof d!="object")return;if(Ln(d))for(var v=0;v<d.length;v++){var O=d[v];Kn(O)&&Fs(O,T)}else if(Kn(d))d._store&&(d._store.validated=!0);else if(d){var R=S(d);if(typeof R=="function"&&R!==d.entries)for(var D=R.call(d),M;!(M=D.next()).done;)Kn(M.value)&&Fs(M.value,T)}}}function wu(d){{var T=d.type;if(T==null||typeof T=="string")return;var v;if(typeof T=="function")v=T.propTypes;else if(typeof T=="object"&&(T.$$typeof===u||T.$$typeof===h))v=T.propTypes;else return;if(v){var O=fe(T);iu(v,d.props,"prop",O,d)}else if(T.PropTypes!==void 0&&!Nn){Nn=!0;var R=fe(T);m("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",R||"Unknown")}typeof T.getDefaultProps=="function"&&!T.getDefaultProps.isReactClassApproved&&m("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Tu(d){{for(var T=Object.keys(d.props),v=0;v<T.length;v++){var O=T[v];if(O!=="children"&&O!=="key"){Ne(d),m("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",O),Ne(null);break}}d.ref!==null&&(Ne(d),m("Invalid attribute `ref` supplied to `React.Fragment`."),Ne(null))}}var Ks={};function Ws(d,T,v,O,R,D){{var M=Rn(d);if(!M){var I="";(d===void 0||typeof d=="object"&&d!==null&&Object.keys(d).length===0)&&(I+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var Y=gu();Y?I+=Y:I+=Us();var N;d===null?N="null":Ln(d)?N="array":d!==void 0&&d.$$typeof===n?(N="<"+(fe(d.type)||"Unknown")+" />",I=" Did you accidentally export a JSX literal instead of a component?"):N=typeof d,m("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",N,I)}var W=bu(d,T,v,R,D);if(W==null)return W;if(M){var oe=T.children;if(oe!==void 0)if(O)if(Ln(oe)){for(var Ke=0;Ke<oe.length;Ke++)Ns(oe[Ke],d);Object.freeze&&Object.freeze(oe)}else m("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else Ns(oe,d)}if(ct.call(T,"key")){var Ce=fe(d),ne=Object.keys(T).filter(function(Au){return Au!=="key"}),Wn=ne.length>0?"{key: someKey, "+ne.join(": ..., ")+": ...}":"{key: someKey}";if(!Ks[Ce+Wn]){var Ou=ne.length>0?"{"+ne.join(": ..., ")+": ...}":"{}";m(`A props object containing a "key" prop is being spread into JSX:
32
32
  let props = %s;
33
33
  <%s {...props} />
34
34
  React keys must be passed directly to JSX without using spread:
35
35
  let props = %s;
36
- <%s key={someKey} {...props} />`,Wn,Ce,vu,Ce),Ns[Ce+Wn]=!0}}return d===s?_u(W):gu(W),W}}function wu(d,T,v){return Ks(d,T,v,!0)}function Tu(d,T,v){return Ks(d,T,v,!1)}var mu=Tu,Su=wu;tt.Fragment=s,tt.jsx=mu,tt.jsxs=Su}(),tt}var Mc={};Mc.NODE_ENV==="production"?mn.exports=Pc():mn.exports=Ic();var G=mn.exports;const jc={isLoading:!0,data:void 0,pageInfo:void 0,error:void 0};function ds(t){return{isLoading:!t,data:void 0,pageInfo:void 0,error:void 0,...t||{}}}function Rc(t,e,n){e&&n&&"ruleParams"in n&&(e={$$ruleParams:n.ruleParams,...e});const r=e?Ec(e):null,s=L(r),i=A.useRef(ds(t._reactor.getPreviousResult(r))),o=A.useCallback(c=>(i.current=ds(t._reactor.getPreviousResult(r)),c(),r?t.subscribeQuery(r,l=>{i.current={isLoading:!l,data:void 0,pageInfo:void 0,error:void 0,...l},c()}):()=>{}),[s]);return{state:A.useSyncExternalStore(o,()=>i.current,()=>jc),query:r}}function xc(){const t=A.useRef(null);A.useEffect(()=>{n()},[]);function e(r,s){n(),t.current=setTimeout(s,r)}function n(){t.current&&clearTimeout(t.current)}return{set:e,clear:n}}const Dc=1e3;function $c(t,e,n){const r=A.useRef(n);r.current=n,A.useEffect(()=>t.core._reactor.subscribeTopic(t.type,t.id,e,(i,o)=>{r.current(i,o)}),[t.id,e])}function Uc(t,e){return A.useEffect(()=>t.core._reactor.joinRoom(t.type,t.id),[t.id]),A.useCallback(r=>{t.core._reactor.publishTopic({roomType:t.type,roomId:t.id,topic:e,data:r})},[t.id,e])}function Lc(t,e={}){var o,a;const[n,r]=A.useState(()=>t.core._reactor.getPresence(t.type,t.id,e)??{peers:{},isLoading:!0});A.useEffect(()=>t.core._reactor.subscribePresence(t.type,t.id,e,u=>{r(u)}),[t.id,e.user,(o=e.peers)==null?void 0:o.join(),(a=e.keys)==null?void 0:a.join()]);const s=A.useCallback(c=>{t.core._reactor.publishPresence(t.type,t.id,c)},[t.type,t.id]);return A.useMemo(()=>({...n,publishPresence:s}),[n,s])}function Fc(t,e,n){A.useEffect(()=>t.core._reactor.joinRoom(t.type,t.id,e),[t.id]),A.useEffect(()=>t.core._reactor.publishPresence(t.type,t.id,e),[t.type,t.id,n??JSON.stringify(e)])}function Nc(t,e,n={}){const r=xc(),s=Ae.usePresence(t,{keys:[e]}),i=A.useMemo(()=>{const l=t._core._reactor.getPresence(t.type,t.id);return n!=null&&n.writeOnly?[]:Object.values((l==null?void 0:l.peers)??{}).filter(f=>f[e]===!0)},[n==null?void 0:n.writeOnly,s]),o=A.useCallback(l=>{t.core._reactor.publishPresence(t.type,t.id,{[e]:l}),l&&((n==null?void 0:n.timeout)===null||(n==null?void 0:n.timeout)===0||r.set((n==null?void 0:n.timeout)??Dc,()=>{t.core._reactor.publishPresence(t.type,t.id,{[e]:null})}))},[t.type,t.id,e,n==null?void 0:n.timeout,r]),a=A.useCallback(l=>{const h=!((n==null?void 0:n.stopOnEnter)&&l.key==="Enter");o(h)},[n.stopOnEnter,o]),c=A.useCallback(()=>{o(!1)},[o]),u=A.useMemo(()=>({onKeyDown:a,onBlur:c}),[a,c]);return{active:i,setActive:o,inputProps:u}}const Ae={useTopicEffect:$c,usePublishTopic:Uc,usePresence:Lc,useSyncPresence:Fc,useTypingIndicator:Nc};class Kc{constructor(e,n,r){p(this,"core");p(this,"_core");p(this,"type");p(this,"id");p(this,"useTopicEffect",(e,n)=>{Ae.useTopicEffect(this,e,n)});p(this,"usePublishTopic",e=>Ae.usePublishTopic(this,e));p(this,"usePresence",(e={})=>Ae.usePresence(this,e));p(this,"useSyncPresence",(e,n)=>Ae.useSyncPresence(this,e,n));p(this,"useTypingIndicator",(e,n={})=>Ae.useTypingIndicator(this,e,n));this.core=e,this._core=this.core,this.type=n,this.id=r}}const Wc={isLoading:!0,user:void 0,error:void 0};class nt{constructor(e,n){p(this,"tx",an());p(this,"auth");p(this,"storage");p(this,"core");p(this,"_core");p(this,"getLocalId",e=>this.core.getLocalId(e));p(this,"useLocalId",e=>{const[n,r]=A.useState(null);return A.useEffect(()=>{(async()=>{const i=await this.getLocalId(e);r(i)})()},[e]),n});p(this,"rooms",Ae);p(this,"transact",e=>this.core.transact(e));p(this,"useQuery",(e,n)=>Rc(this.core,e,n).state);p(this,"useAuth",()=>this._useAuth());p(this,"useUser",()=>{const{user:e}=this.useAuth();if(!e)throw new Re("useUser must be used within an auth-protected route");return e});p(this,"useConnectionStatus",()=>{const e=A.useRef(this.core._reactor.status),n=A.useCallback(s=>this.core.subscribeConnectionStatus(o=>{o!==e.current&&(e.current=o,s())}),[]);return A.useSyncExternalStore(n,()=>e.current,()=>"connecting")});p(this,"queryOnce",(e,n)=>this.core.queryOnce(e,n));p(this,"SignedIn",({children:e})=>{const n=this.useAuth();return n.isLoading||n.error||!n.user?null:G.jsx(G.Fragment,{children:e})});p(this,"SignedOut",({children:e})=>{const n=this.useAuth();return n.isLoading||n.error||n.user?null:G.jsx(G.Fragment,{children:e})});this.core=kc(e,e.Store||this.constructor.Storage,this.constructor.NetworkListener,n,this.constructor.EventSourceImpl),this._core=this.core,this.auth=this.core.auth,this.storage=this.core.storage}room(e="_defaultRoomType",n="_defaultRoomId"){return new Kc(this.core,e,n)}_useAuth(){const e=A.useRef(this.core._reactor._currentUserCached),n=A.useCallback(s=>this.core.subscribeAuth(o=>{e.current={isLoading:!1,...o},s()}),[]);return A.useSyncExternalStore(n,()=>e.current,()=>Wc)}getAuth(){return this.core.getAuth()}}p(nt,"Store"),p(nt,"NetworkListener"),p(nt,"EventSourceImpl");class hs extends Error{constructor(e,n){super(e),this.name="ParseError",this.type=n.type,this.field=n.field,this.value=n.value,this.line=n.line}}function Sn(t){}function zc(t){if(typeof t=="function")throw new TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");const{onEvent:e=Sn,onError:n=Sn,onRetry:r=Sn,onComment:s}=t;let i="",o=!0,a,c="",u="";function l(g){const w=o?g.replace(/^\xEF\xBB\xBF/,""):g,[S,_]=qc(`${i}${w}`);for(const m of S)f(m);i=_,o=!1}function f(g){if(g===""){y();return}if(g.startsWith(":")){s&&s(g.slice(g.startsWith(": ")?2:1));return}const w=g.indexOf(":");if(w!==-1){const S=g.slice(0,w),_=g[w+1]===" "?2:1,m=g.slice(w+_);h(S,m,g);return}h(g,"",g)}function h(g,w,S){switch(g){case"event":u=w;break;case"data":c=`${c}${w}
37
- `;break;case"id":a=w.includes("\0")?void 0:w;break;case"retry":/^\d+$/.test(w)?r(parseInt(w,10)):n(new hs(`Invalid \`retry\` value: "${w}"`,{type:"invalid-retry",value:w,line:S}));break;default:n(new hs(`Unknown field "${g.length>20?`${g.slice(0,20)}…`:g}"`,{type:"unknown-field",field:g,value:w,line:S}));break}}function y(){c.length>0&&e({id:a,event:u||void 0,data:c.endsWith(`
38
- `)?c.slice(0,-1):c}),a=void 0,c="",u=""}function b(g={}){i&&g.consume&&f(i),o=!0,a=void 0,c="",u="",i=""}return{feed:l,reset:b}}function qc(t){const e=[];let n="",r=0;for(;r<t.length;){const s=t.indexOf("\r",r),i=t.indexOf(`
36
+ <%s key={someKey} {...props} />`,Wn,Ce,Ou,Ce),Ks[Ce+Wn]=!0}}return d===s?Tu(W):wu(W),W}}function mu(d,T,v){return Ws(d,T,v,!0)}function Su(d,T,v){return Ws(d,T,v,!1)}var vu=Su,Eu=mu;tt.Fragment=s,tt.jsx=vu,tt.jsxs=Eu}(),tt}var Rc={};Rc.NODE_ENV==="production"?mn.exports=Mc():mn.exports=jc();var G=mn.exports;const xc={isLoading:!0,data:void 0,pageInfo:void 0,error:void 0};function hs(t){return{isLoading:!t,data:void 0,pageInfo:void 0,error:void 0,...t||{}}}function Dc(t,e,n){e&&n&&"ruleParams"in n&&(e={$$ruleParams:n.ruleParams,...e});const r=e?Ac(e):null,s=L(r),i=A.useRef(hs(t._reactor.getPreviousResult(r))),o=A.useCallback(c=>(i.current=hs(t._reactor.getPreviousResult(r)),c(),r?t.subscribeQuery(r,l=>{i.current={isLoading:!l,data:void 0,pageInfo:void 0,error:void 0,...l},c()}):()=>{}),[s]);return{state:A.useSyncExternalStore(o,()=>i.current,()=>xc),query:r}}function $c(){const t=A.useRef(null);A.useEffect(()=>{n()},[]);function e(r,s){n(),t.current=setTimeout(s,r)}function n(){t.current&&clearTimeout(t.current)}return{set:e,clear:n}}const Uc=1e3;function Lc(t,e,n){const r=A.useRef(n);r.current=n,A.useEffect(()=>t.core._reactor.subscribeTopic(t.type,t.id,e,(i,o)=>{r.current(i,o)}),[t.id,e])}function Fc(t,e){return A.useEffect(()=>t.core._reactor.joinRoom(t.type,t.id),[t.id]),A.useCallback(r=>{t.core._reactor.publishTopic({roomType:t.type,roomId:t.id,topic:e,data:r})},[t.id,e])}function Nc(t,e={}){var o,a;const[n,r]=A.useState(()=>t.core._reactor.getPresence(t.type,t.id,e)??{peers:{},isLoading:!0});A.useEffect(()=>t.core._reactor.subscribePresence(t.type,t.id,e,u=>{r(u)}),[t.id,e.user,(o=e.peers)==null?void 0:o.join(),(a=e.keys)==null?void 0:a.join()]);const s=A.useCallback(c=>{t.core._reactor.publishPresence(t.type,t.id,c)},[t.type,t.id]);return A.useMemo(()=>({...n,publishPresence:s}),[n,s])}function Kc(t,e,n){A.useEffect(()=>t.core._reactor.joinRoom(t.type,t.id,e),[t.id]),A.useEffect(()=>t.core._reactor.publishPresence(t.type,t.id,e),[t.type,t.id,n??JSON.stringify(e)])}function Wc(t,e,n={}){const r=$c(),s=Ae.usePresence(t,{keys:[e]}),i=A.useMemo(()=>{const l=t._core._reactor.getPresence(t.type,t.id);return n!=null&&n.writeOnly?[]:Object.values((l==null?void 0:l.peers)??{}).filter(f=>f[e]===!0)},[n==null?void 0:n.writeOnly,s]),o=A.useCallback(l=>{t.core._reactor.publishPresence(t.type,t.id,{[e]:l}),l&&((n==null?void 0:n.timeout)===null||(n==null?void 0:n.timeout)===0||r.set((n==null?void 0:n.timeout)??Uc,()=>{t.core._reactor.publishPresence(t.type,t.id,{[e]:null})}))},[t.type,t.id,e,n==null?void 0:n.timeout,r]),a=A.useCallback(l=>{const h=!((n==null?void 0:n.stopOnEnter)&&l.key==="Enter");o(h)},[n.stopOnEnter,o]),c=A.useCallback(()=>{o(!1)},[o]),u=A.useMemo(()=>({onKeyDown:a,onBlur:c}),[a,c]);return{active:i,setActive:o,inputProps:u}}const Ae={useTopicEffect:Lc,usePublishTopic:Fc,usePresence:Nc,useSyncPresence:Kc,useTypingIndicator:Wc};class zc{constructor(e,n,r){p(this,"core");p(this,"_core");p(this,"type");p(this,"id");p(this,"useTopicEffect",(e,n)=>{Ae.useTopicEffect(this,e,n)});p(this,"usePublishTopic",e=>Ae.usePublishTopic(this,e));p(this,"usePresence",(e={})=>Ae.usePresence(this,e));p(this,"useSyncPresence",(e,n)=>Ae.useSyncPresence(this,e,n));p(this,"useTypingIndicator",(e,n={})=>Ae.useTypingIndicator(this,e,n));this.core=e,this._core=this.core,this.type=n,this.id=r}}const qc={isLoading:!0,user:void 0,error:void 0};class nt{constructor(e,n){p(this,"tx",an());p(this,"auth");p(this,"storage");p(this,"core");p(this,"_core");p(this,"getLocalId",e=>this.core.getLocalId(e));p(this,"useLocalId",e=>{const[n,r]=A.useState(null);return A.useEffect(()=>{(async()=>{const i=await this.getLocalId(e);r(i)})()},[e]),n});p(this,"rooms",Ae);p(this,"transact",e=>this.core.transact(e));p(this,"useQuery",(e,n)=>Dc(this.core,e,n).state);p(this,"useAuth",()=>this._useAuth());p(this,"useUser",()=>{const{user:e}=this.useAuth();if(!e)throw new Re("useUser must be used within an auth-protected route");return e});p(this,"useConnectionStatus",()=>{const e=A.useRef(this.core._reactor.status),n=A.useCallback(s=>this.core.subscribeConnectionStatus(o=>{o!==e.current&&(e.current=o,s())}),[]);return A.useSyncExternalStore(n,()=>e.current,()=>"connecting")});p(this,"queryOnce",(e,n)=>this.core.queryOnce(e,n));p(this,"SignedIn",({children:e})=>{const n=this.useAuth();return n.isLoading||n.error||!n.user?null:G.jsx(G.Fragment,{children:e})});p(this,"SignedOut",({children:e})=>{const n=this.useAuth();return n.isLoading||n.error||n.user?null:G.jsx(G.Fragment,{children:e})});this.core=Pc(e,e.Store||this.constructor.Storage,this.constructor.NetworkListener,n,this.constructor.EventSourceImpl),this._core=this.core,this.auth=this.core.auth,this.storage=this.core.storage}room(e="_defaultRoomType",n="_defaultRoomId"){return new zc(this.core,e,n)}_useAuth(){const e=A.useRef(this.core._reactor._currentUserCached),n=A.useCallback(s=>this.core.subscribeAuth(o=>{e.current={isLoading:!1,...o},s()}),[]);return A.useSyncExternalStore(n,()=>e.current,()=>qc)}getAuth(){return this.core.getAuth()}}p(nt,"Store"),p(nt,"NetworkListener"),p(nt,"EventSourceImpl");class ps extends Error{constructor(e,n){super(e),this.name="ParseError",this.type=n.type,this.field=n.field,this.value=n.value,this.line=n.line}}function Sn(t){}function Vc(t){if(typeof t=="function")throw new TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");const{onEvent:e=Sn,onError:n=Sn,onRetry:r=Sn,onComment:s}=t;let i="",o=!0,a,c="",u="";function l(g){const w=o?g.replace(/^\xEF\xBB\xBF/,""):g,[S,_]=Bc(`${i}${w}`);for(const m of S)f(m);i=_,o=!1}function f(g){if(g===""){y();return}if(g.startsWith(":")){s&&s(g.slice(g.startsWith(": ")?2:1));return}const w=g.indexOf(":");if(w!==-1){const S=g.slice(0,w),_=g[w+1]===" "?2:1,m=g.slice(w+_);h(S,m,g);return}h(g,"",g)}function h(g,w,S){switch(g){case"event":u=w;break;case"data":c=`${c}${w}
37
+ `;break;case"id":a=w.includes("\0")?void 0:w;break;case"retry":/^\d+$/.test(w)?r(parseInt(w,10)):n(new ps(`Invalid \`retry\` value: "${w}"`,{type:"invalid-retry",value:w,line:S}));break;default:n(new ps(`Unknown field "${g.length>20?`${g.slice(0,20)}…`:g}"`,{type:"unknown-field",field:g,value:w,line:S}));break}}function y(){c.length>0&&e({id:a,event:u||void 0,data:c.endsWith(`
38
+ `)?c.slice(0,-1):c}),a=void 0,c="",u=""}function b(g={}){i&&g.consume&&f(i),o=!0,a=void 0,c="",u="",i=""}return{feed:l,reset:b}}function Bc(t){const e=[];let n="",r=0;for(;r<t.length;){const s=t.indexOf("\r",r),i=t.indexOf(`
39
39
  `,r);let o=-1;if(s!==-1&&i!==-1?o=Math.min(s,i):s!==-1?o=s:i!==-1&&(o=i),o===-1){n=t.slice(r);break}else{const a=t.slice(r,o);e.push(a),r=o+1,t[r-1]==="\r"&&t[r]===`
40
- `&&r++}}return[e,n]}class ps extends Event{constructor(e,n){var r,s;super(e),this.code=(r=n==null?void 0:n.code)!=null?r:void 0,this.message=(s=n==null?void 0:n.message)!=null?s:void 0}[Symbol.for("nodejs.util.inspect.custom")](e,n,r){return r(ys(this),n)}[Symbol.for("Deno.customInspect")](e,n){return e(ys(this),n)}}function Vc(t){const e=globalThis.DOMException;return typeof e=="function"?new e(t,"SyntaxError"):new SyntaxError(t)}function vn(t){return t instanceof Error?"errors"in t&&Array.isArray(t.errors)?t.errors.map(vn).join(", "):"cause"in t&&t.cause instanceof Error?`${t}: ${vn(t.cause)}`:t.message:`${t}`}function ys(t){return{type:t.type,message:t.message,code:t.code,defaultPrevented:t.defaultPrevented,cancelable:t.cancelable,timeStamp:t.timeStamp}}var bs=t=>{throw TypeError(t)},En=(t,e,n)=>e.has(t)||bs("Cannot "+n),C=(t,e,n)=>(En(t,e,"read from private field"),n?n.call(t):e.get(t)),q=(t,e,n)=>e.has(t)?bs("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),U=(t,e,n,r)=>(En(t,e,"write to private field"),e.set(t,n),n),ge=(t,e,n)=>(En(t,e,"access private method"),n),te,ke,De,kt,Ct,rt,$e,st,_e,Ue,Le,Fe,it,le,On,An,kn,gs,Cn,Pn,ot,In,Mn;class Pt extends EventTarget{constructor(e,n){var r,s;super(),q(this,le),this.CONNECTING=0,this.OPEN=1,this.CLOSED=2,q(this,te),q(this,ke),q(this,De),q(this,kt),q(this,Ct),q(this,rt),q(this,$e),q(this,st,null),q(this,_e),q(this,Ue),q(this,Le,null),q(this,Fe,null),q(this,it,null),q(this,An,async i=>{var o;C(this,Ue).reset();const{body:a,redirected:c,status:u,headers:l}=i;if(u===204){ge(this,le,ot).call(this,"Server sent HTTP 204, not reconnecting",204),this.close();return}if(c?U(this,De,new URL(i.url)):U(this,De,void 0),u!==200){ge(this,le,ot).call(this,`Non-200 status code (${u})`,u);return}if(!(l.get("content-type")||"").startsWith("text/event-stream")){ge(this,le,ot).call(this,'Invalid content type, expected "text/event-stream"',u);return}if(C(this,te)===this.CLOSED)return;U(this,te,this.OPEN);const f=new Event("open");if((o=C(this,it))==null||o.call(this,f),this.dispatchEvent(f),typeof a!="object"||!a||!("getReader"in a)){ge(this,le,ot).call(this,"Invalid response body, expected a web ReadableStream",u),this.close();return}const h=new TextDecoder,y=a.getReader();let b=!0;do{const{done:g,value:w}=await y.read();w&&C(this,Ue).feed(h.decode(w,{stream:!g})),g&&(b=!1,C(this,Ue).reset(),ge(this,le,In).call(this))}while(b)}),q(this,kn,i=>{U(this,_e,void 0),!(i.name==="AbortError"||i.type==="aborted")&&ge(this,le,In).call(this,vn(i))}),q(this,Cn,i=>{typeof i.id=="string"&&U(this,st,i.id);const o=new MessageEvent(i.event||"message",{data:i.data,origin:C(this,De)?C(this,De).origin:C(this,ke).origin,lastEventId:i.id||""});C(this,Fe)&&(!i.event||i.event==="message")&&C(this,Fe).call(this,o),this.dispatchEvent(o)}),q(this,Pn,i=>{U(this,rt,i)}),q(this,Mn,()=>{U(this,$e,void 0),C(this,te)===this.CONNECTING&&ge(this,le,On).call(this)});try{if(e instanceof URL)U(this,ke,e);else if(typeof e=="string")U(this,ke,new URL(e,Bc()));else throw new Error("Invalid URL")}catch{throw Vc("An invalid or illegal string was specified")}U(this,Ue,zc({onEvent:C(this,Cn),onRetry:C(this,Pn)})),U(this,te,this.CONNECTING),U(this,rt,3e3),U(this,Ct,(r=n==null?void 0:n.fetch)!=null?r:globalThis.fetch),U(this,kt,(s=n==null?void 0:n.withCredentials)!=null?s:!1),ge(this,le,On).call(this)}get readyState(){return C(this,te)}get url(){return C(this,ke).href}get withCredentials(){return C(this,kt)}get onerror(){return C(this,Le)}set onerror(e){U(this,Le,e)}get onmessage(){return C(this,Fe)}set onmessage(e){U(this,Fe,e)}get onopen(){return C(this,it)}set onopen(e){U(this,it,e)}addEventListener(e,n,r){const s=n;super.addEventListener(e,s,r)}removeEventListener(e,n,r){const s=n;super.removeEventListener(e,s,r)}close(){C(this,$e)&&clearTimeout(C(this,$e)),C(this,te)!==this.CLOSED&&(C(this,_e)&&C(this,_e).abort(),U(this,te,this.CLOSED),U(this,_e,void 0))}}te=new WeakMap,ke=new WeakMap,De=new WeakMap,kt=new WeakMap,Ct=new WeakMap,rt=new WeakMap,$e=new WeakMap,st=new WeakMap,_e=new WeakMap,Ue=new WeakMap,Le=new WeakMap,Fe=new WeakMap,it=new WeakMap,le=new WeakSet,On=function(){U(this,te,this.CONNECTING),U(this,_e,new AbortController),C(this,Ct)(C(this,ke),ge(this,le,gs).call(this)).then(C(this,An)).catch(C(this,kn))},An=new WeakMap,kn=new WeakMap,gs=function(){var t;const e={mode:"cors",redirect:"follow",headers:{Accept:"text/event-stream",...C(this,st)?{"Last-Event-ID":C(this,st)}:void 0},cache:"no-store",signal:(t=C(this,_e))==null?void 0:t.signal};return"window"in globalThis&&(e.credentials=this.withCredentials?"include":"same-origin"),e},Cn=new WeakMap,Pn=new WeakMap,ot=function(t,e){var n;C(this,te)!==this.CLOSED&&U(this,te,this.CLOSED);const r=new ps("error",{code:e,message:t});(n=C(this,Le))==null||n.call(this,r),this.dispatchEvent(r)},In=function(t,e){var n;if(C(this,te)===this.CLOSED)return;U(this,te,this.CONNECTING);const r=new ps("error",{code:e,message:t});(n=C(this,Le))==null||n.call(this,r),this.dispatchEvent(r),U(this,$e,setTimeout(C(this,Mn),C(this,rt)))},Mn=new WeakMap,Pt.CONNECTING=0,Pt.OPEN=1,Pt.CLOSED=2;function Bc(){const t="document"in globalThis?globalThis.document:void 0;return t&&typeof t=="object"&&"baseURI"in t&&typeof t.baseURI=="string"?t.baseURI:void 0}class jn extends nt{}p(jn,"EventSourceImpl",Pt);function _s(t){const e={...t,useDateObjects:t.useDateObjects??!1};return new jn(e,{"@instantdb/react":hn})}const Gc=_s;function Qc({as:t="div",spaceId:e,room:n,className:r,style:s,userCursorColor:i,children:o,renderCursor:a,propagate:c,zIndex:u}){const l=e||`cursors-space-default--${String(n.type)}-${n.id}`,f=n.usePresence({keys:[l]}),h=n._core._reactor.getPresence(n.type,n.id);function y(_,m){const k=m.clientX,E=m.clientY,x=(k-_.left)/_.width*100,V=(E-_.top)/_.height*100;f.publishPresence({[l]:{x:k,y:E,xPercent:x,yPercent:V,color:i}})}function b(_){c||_.stopPropagation();const m=_.currentTarget.getBoundingClientRect();y(m,_)}function g(_){f.publishPresence({[l]:void 0})}function w(_){if(_.touches.length!==1)return;const m=_.touches[0];if(m.target instanceof Element){c||_.stopPropagation();const k=m.target.getBoundingClientRect();y(k,m)}}function S(_){f.publishPresence({[l]:void 0})}return A.createElement(t,{onMouseMove:b,onMouseOut:g,onTouchMove:w,onTouchEnd:S,className:r,style:{position:"relative",...s}},[o,G.jsx("div",{style:{...ws,...Jc,zIndex:u!==void 0?u:Yc},children:Object.entries(f.peers).map(([_,m])=>{const k=m[l];return k?G.jsx("div",{style:{...ws,transform:`translate(${k.xPercent}%, ${k.yPercent}%)`,transformOrigin:"0 0",transition:"transform 100ms"},children:a?a({color:k.color,presence:h==null?void 0:h.peers[_]}):G.jsx(Hc,{...k})},_):null})},l)])}function Hc({color:t}){const n=t||"black";return G.jsxs("svg",{style:{height:35,width:35},viewBox:"0 0 35 35",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[G.jsxs("g",{fill:"rgba(0,0,0,.2)",transform:"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)",children:[G.jsx("path",{d:"m12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z"}),G.jsx("path",{d:"m21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z"})]}),G.jsxs("g",{fill:"white",transform:"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)",children:[G.jsx("path",{d:"m12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z"}),G.jsx("path",{d:"m21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z"})]}),G.jsxs("g",{fill:n,transform:"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)",children:[G.jsx("path",{d:"m19.751 24.4155-1.844.774-3.1-7.374 1.841-.775z"}),G.jsx("path",{d:"m13 10.814v11.188l2.969-2.866.428-.139h4.768z"})]})]})}const ws={position:"absolute",top:0,left:0,bottom:0,right:0},Jc={overflow:"hidden",pointerEvents:"none",userSelect:"none"},Yc=99999;j.Cursors=Qc,j.InstantAPIError=Ze,j.InstantReactAbstractDatabase=nt,j.InstantReactWebDatabase=jn,j.StoreInterface=xr,j.createInstantRouteHandler=_c,j.i=uc,j.id=z,j.init=_s,j.init_experimental=Gc,j.lookup=Pr,j.tx=Io,Object.defineProperty(j,Symbol.toStringTag,{value:"Module"})});
40
+ `&&r++}}return[e,n]}class ys extends Event{constructor(e,n){var r,s;super(e),this.code=(r=n==null?void 0:n.code)!=null?r:void 0,this.message=(s=n==null?void 0:n.message)!=null?s:void 0}[Symbol.for("nodejs.util.inspect.custom")](e,n,r){return r(bs(this),n)}[Symbol.for("Deno.customInspect")](e,n){return e(bs(this),n)}}function Gc(t){const e=globalThis.DOMException;return typeof e=="function"?new e(t,"SyntaxError"):new SyntaxError(t)}function vn(t){return t instanceof Error?"errors"in t&&Array.isArray(t.errors)?t.errors.map(vn).join(", "):"cause"in t&&t.cause instanceof Error?`${t}: ${vn(t.cause)}`:t.message:`${t}`}function bs(t){return{type:t.type,message:t.message,code:t.code,defaultPrevented:t.defaultPrevented,cancelable:t.cancelable,timeStamp:t.timeStamp}}var gs=t=>{throw TypeError(t)},En=(t,e,n)=>e.has(t)||gs("Cannot "+n),C=(t,e,n)=>(En(t,e,"read from private field"),n?n.call(t):e.get(t)),q=(t,e,n)=>e.has(t)?gs("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),U=(t,e,n,r)=>(En(t,e,"write to private field"),e.set(t,n),n),ge=(t,e,n)=>(En(t,e,"access private method"),n),te,ke,De,kt,Ct,rt,$e,st,_e,Ue,Le,Fe,it,le,On,An,kn,_s,Cn,Pn,ot,In,Mn;class Pt extends EventTarget{constructor(e,n){var r,s;super(),q(this,le),this.CONNECTING=0,this.OPEN=1,this.CLOSED=2,q(this,te),q(this,ke),q(this,De),q(this,kt),q(this,Ct),q(this,rt),q(this,$e),q(this,st,null),q(this,_e),q(this,Ue),q(this,Le,null),q(this,Fe,null),q(this,it,null),q(this,An,async i=>{var o;C(this,Ue).reset();const{body:a,redirected:c,status:u,headers:l}=i;if(u===204){ge(this,le,ot).call(this,"Server sent HTTP 204, not reconnecting",204),this.close();return}if(c?U(this,De,new URL(i.url)):U(this,De,void 0),u!==200){ge(this,le,ot).call(this,`Non-200 status code (${u})`,u);return}if(!(l.get("content-type")||"").startsWith("text/event-stream")){ge(this,le,ot).call(this,'Invalid content type, expected "text/event-stream"',u);return}if(C(this,te)===this.CLOSED)return;U(this,te,this.OPEN);const f=new Event("open");if((o=C(this,it))==null||o.call(this,f),this.dispatchEvent(f),typeof a!="object"||!a||!("getReader"in a)){ge(this,le,ot).call(this,"Invalid response body, expected a web ReadableStream",u),this.close();return}const h=new TextDecoder,y=a.getReader();let b=!0;do{const{done:g,value:w}=await y.read();w&&C(this,Ue).feed(h.decode(w,{stream:!g})),g&&(b=!1,C(this,Ue).reset(),ge(this,le,In).call(this))}while(b)}),q(this,kn,i=>{U(this,_e,void 0),!(i.name==="AbortError"||i.type==="aborted")&&ge(this,le,In).call(this,vn(i))}),q(this,Cn,i=>{typeof i.id=="string"&&U(this,st,i.id);const o=new MessageEvent(i.event||"message",{data:i.data,origin:C(this,De)?C(this,De).origin:C(this,ke).origin,lastEventId:i.id||""});C(this,Fe)&&(!i.event||i.event==="message")&&C(this,Fe).call(this,o),this.dispatchEvent(o)}),q(this,Pn,i=>{U(this,rt,i)}),q(this,Mn,()=>{U(this,$e,void 0),C(this,te)===this.CONNECTING&&ge(this,le,On).call(this)});try{if(e instanceof URL)U(this,ke,e);else if(typeof e=="string")U(this,ke,new URL(e,Qc()));else throw new Error("Invalid URL")}catch{throw Gc("An invalid or illegal string was specified")}U(this,Ue,Vc({onEvent:C(this,Cn),onRetry:C(this,Pn)})),U(this,te,this.CONNECTING),U(this,rt,3e3),U(this,Ct,(r=n==null?void 0:n.fetch)!=null?r:globalThis.fetch),U(this,kt,(s=n==null?void 0:n.withCredentials)!=null?s:!1),ge(this,le,On).call(this)}get readyState(){return C(this,te)}get url(){return C(this,ke).href}get withCredentials(){return C(this,kt)}get onerror(){return C(this,Le)}set onerror(e){U(this,Le,e)}get onmessage(){return C(this,Fe)}set onmessage(e){U(this,Fe,e)}get onopen(){return C(this,it)}set onopen(e){U(this,it,e)}addEventListener(e,n,r){const s=n;super.addEventListener(e,s,r)}removeEventListener(e,n,r){const s=n;super.removeEventListener(e,s,r)}close(){C(this,$e)&&clearTimeout(C(this,$e)),C(this,te)!==this.CLOSED&&(C(this,_e)&&C(this,_e).abort(),U(this,te,this.CLOSED),U(this,_e,void 0))}}te=new WeakMap,ke=new WeakMap,De=new WeakMap,kt=new WeakMap,Ct=new WeakMap,rt=new WeakMap,$e=new WeakMap,st=new WeakMap,_e=new WeakMap,Ue=new WeakMap,Le=new WeakMap,Fe=new WeakMap,it=new WeakMap,le=new WeakSet,On=function(){U(this,te,this.CONNECTING),U(this,_e,new AbortController),C(this,Ct)(C(this,ke),ge(this,le,_s).call(this)).then(C(this,An)).catch(C(this,kn))},An=new WeakMap,kn=new WeakMap,_s=function(){var t;const e={mode:"cors",redirect:"follow",headers:{Accept:"text/event-stream",...C(this,st)?{"Last-Event-ID":C(this,st)}:void 0},cache:"no-store",signal:(t=C(this,_e))==null?void 0:t.signal};return"window"in globalThis&&(e.credentials=this.withCredentials?"include":"same-origin"),e},Cn=new WeakMap,Pn=new WeakMap,ot=function(t,e){var n;C(this,te)!==this.CLOSED&&U(this,te,this.CLOSED);const r=new ys("error",{code:e,message:t});(n=C(this,Le))==null||n.call(this,r),this.dispatchEvent(r)},In=function(t,e){var n;if(C(this,te)===this.CLOSED)return;U(this,te,this.CONNECTING);const r=new ys("error",{code:e,message:t});(n=C(this,Le))==null||n.call(this,r),this.dispatchEvent(r),U(this,$e,setTimeout(C(this,Mn),C(this,rt)))},Mn=new WeakMap,Pt.CONNECTING=0,Pt.OPEN=1,Pt.CLOSED=2;function Qc(){const t="document"in globalThis?globalThis.document:void 0;return t&&typeof t=="object"&&"baseURI"in t&&typeof t.baseURI=="string"?t.baseURI:void 0}class jn extends nt{}p(jn,"EventSourceImpl",Pt);function ws(t){const e={...t,useDateObjects:t.useDateObjects??!1};return new jn(e,{"@instantdb/react":hn})}const Hc=ws;function Jc({as:t="div",spaceId:e,room:n,className:r,style:s,userCursorColor:i,children:o,renderCursor:a,propagate:c,zIndex:u}){const l=e||`cursors-space-default--${String(n.type)}-${n.id}`,f=n.usePresence({keys:[l]}),h=n._core._reactor.getPresence(n.type,n.id);function y(_,m){const k=m.clientX,E=m.clientY,x=(k-_.left)/_.width*100,V=(E-_.top)/_.height*100;f.publishPresence({[l]:{x:k,y:E,xPercent:x,yPercent:V,color:i}})}function b(_){c||_.stopPropagation();const m=_.currentTarget.getBoundingClientRect();y(m,_)}function g(_){f.publishPresence({[l]:void 0})}function w(_){if(_.touches.length!==1)return;const m=_.touches[0];if(m.target instanceof Element){c||_.stopPropagation();const k=m.target.getBoundingClientRect();y(k,m)}}function S(_){f.publishPresence({[l]:void 0})}return A.createElement(t,{onMouseMove:b,onMouseOut:g,onTouchMove:w,onTouchEnd:S,className:r,style:{position:"relative",...s}},[o,G.jsx("div",{style:{...Ts,...Zc,zIndex:u!==void 0?u:Xc},children:Object.entries(f.peers).map(([_,m])=>{const k=m[l];return k?G.jsx("div",{style:{...Ts,transform:`translate(${k.xPercent}%, ${k.yPercent}%)`,transformOrigin:"0 0",transition:"transform 100ms"},children:a?a({color:k.color,presence:h==null?void 0:h.peers[_]}):G.jsx(Yc,{...k})},_):null})},l)])}function Yc({color:t}){const n=t||"black";return G.jsxs("svg",{style:{height:35,width:35},viewBox:"0 0 35 35",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[G.jsxs("g",{fill:"rgba(0,0,0,.2)",transform:"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)",children:[G.jsx("path",{d:"m12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z"}),G.jsx("path",{d:"m21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z"})]}),G.jsxs("g",{fill:"white",transform:"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)",children:[G.jsx("path",{d:"m12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z"}),G.jsx("path",{d:"m21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z"})]}),G.jsxs("g",{fill:n,transform:"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)",children:[G.jsx("path",{d:"m19.751 24.4155-1.844.774-3.1-7.374 1.841-.775z"}),G.jsx("path",{d:"m13 10.814v11.188l2.969-2.866.428-.139h4.768z"})]})]})}const Ts={position:"absolute",top:0,left:0,bottom:0,right:0},Zc={overflow:"hidden",pointerEvents:"none",userSelect:"none"},Xc=99999;j.Cursors=Jc,j.InstantAPIError=Ze,j.InstantReactAbstractDatabase=nt,j.InstantReactWebDatabase=jn,j.StoreInterface=Dr,j.createInstantRouteHandler=Tc,j.i=fc,j.id=z,j.init=ws,j.init_experimental=Hc,j.lookup=Ir,j.setInstantWarningsEnabled=eo,j.tx=jo,Object.defineProperty(j,Symbol.toStringTag,{value:"Module"})});