tempest.games 0.2.29 → 0.2.30

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.
@@ -297,7 +297,7 @@ ${g.trace}`:`No previous disposal trace for ${e} was found.`);return}let t=n.mol
297
297
  ${b.trace}`:`No previous disposal trace for ${t} was found.`),e}let u=ee(i),l=r.molecules.get(u);if(!l){let b=n.disposalTraces.buffer.find((g)=>g?.key===u);return n.logger.error("\u274C","molecule",e,"claim failed:",`Could not allocate to ${u} in store "${n.config.name}".`,b?`
298
298
  ${u} was most recently disposed
299
299
  ${b.trace}`:`No previous disposal trace for ${u} was found.`),e}let s=n.moleculeGraph.getRelationEntries({downstreamMoleculeKey:o.stringKey}).filter(([,{source:b}])=>b!==t).map(([b])=>jt(b));if(a)r.moleculeGraph.delete(t);r.moleculeGraph.set({upstreamMoleculeKey:l.stringKey,downstreamMoleculeKey:o.stringKey},{source:l.stringKey});let c={type:"molecule_transfer",key:o.key,from:s,to:[l.key]};if(Ba(r)&&r.transactionMeta.phase==="building")r.transactionMeta.update.updates.push(c);return e}function Wen(n,i,e){switch(i){case"newValue":{W6(n,e);break}case"oldValue":{tb(e,n.token);break}}}function Yen(n,i,e){switch(i){case"newValue":{tb(e,n.token);break}case"oldValue":{if(W6(n,e),n.subType==="atom")e.valueMap.set(n.token.key,n.value);break}}}function W6(n,i){let{family:e}=n.token;if(e){let a=i.families.get(e.key);if(a)Ui(i,a,jt(e.subKey))}}function Ven(n,i,e){switch(i){case"newValue":ob(e,n.provenance,n.key);break;case"oldValue":ub(e,n.key);break}}function Xen(n,i,e){switch(i){case"newValue":ub(e,n.key);break;case"oldValue":{let a=n.provenance.map(jt);ob(e,a,n.key);for(let[t,r]of n.values){let o=e.families.get(t);if(o){Ui(e,o,n.key);let u=`${t}(${ee(n.key)})`;e.valueMap.set(u,r)}}}break}}function ken(n,i,e){switch(i){case"newValue":{let a=n.to.length===1?n.to[0]:n.to;Dm(e,a,n.key,"exclusive")}break;case"oldValue":{let a=n.from.length===1?n.from[0]:n.from;Dm(e,a,n.key,"exclusive")}break}}function Y6(n,i,e){let a=n==="newValue"?i.updates:[...i.updates].reverse();for(let t of a)switch(t.type){case"atom_update":case"selector_update":Pen(n,t,e);break;case"state_creation":Wen(t,n,e);break;case"state_disposal":Yen(t,n,e);break;case"molecule_creation":Ven(t,n,e);break;case"molecule_disposal":Xen(t,n,e);break;case"molecule_transfer":ken(t,n,e);break;case"transaction_update":Y6(n,t,e);break}}function V6(n,i){return n.transactionMeta.actionContinuities.getRelatedKey(i)}function Zen(n,i){return n.transactionMeta.epoch.get(i)}function Qen(n,i){if(!Dc(n))return;let a=V6(n,i);if(a===void 0)return;return Zen(n,a)}function Ken(n,i,e){if(!Dc(n))return;let t=V6(n,i);if(t!==void 0)n.transactionMeta.epoch.set(t,e)}var jen=(n,i)=>{let e=ni(i),{parent:a}=e;if(a===null||!Ba(e)||e.transactionMeta?.phase!=="building"){i.logger.warn("\uD83D\uDC1E","transaction","???","applyTransaction called outside of a transaction. This is probably a bug in AtomIO.");return}e.transactionMeta.phase="applying",e.transactionMeta.update.output=n,a.child=null,a.on.transactionApplying.next(e.transactionMeta);let{updates:t}=e.transactionMeta.update;if(i.logger.info("\uD83D\uDEC4","transaction",e.transactionMeta.update.key,`Applying transaction with ${t.length} updates:`,t),Y6("newValue",e.transactionMeta.update,a),Dc(a))Ken(a,e.transactionMeta.update.key,e.transactionMeta.update.epoch),qe(i,{key:e.transactionMeta.update.key,type:"transaction"})?.subject.next(e.transactionMeta.update),i.logger.info("\uD83D\uDEEC","transaction",e.transactionMeta.update.key,"Finished applying transaction.");else if(Ba(a))a.transactionMeta.update.updates.push(e.transactionMeta.update);a.on.transactionApplying.next(null)};function Jen(n){return{store:n}}function Tr(n,...i){let e,a,t;if(i.length===1)e=i[0];else a=i[0],t=i[1],e=Ui(n,a,t);if("counterfeit"in e&&"family"in e){a=n.families.get(e.family.key);let r=e.family.subKey,o=n.disposalTraces.buffer.find((u)=>u?.key===r);switch(n.logger.error("\u274C",e.type,e.key,`could not be retrieved because it was not found in the store "${n.config.name}".`,o?`This state was previously disposed:
300
- ${o.trace}`:"No previous disposal trace was found."),a.type){case"atom_family":case"mutable_atom_family":return n.defaults.get(a.key);case"readonly_pure_selector_family":case"writable_pure_selector_family":case"readonly_held_selector_family":case"writable_held_selector_family":{if(n.defaults.has(a.key))return n.defaults.get(e.family.key);let u=qe(n,a).default(r);return n.defaults.set(a.key,u),u}}}return YD(n,qe(n,e))}var wl=class extends Map{deleted=new Set;source;constructor(n){super();this.source=n}get(n){if(super.has(n))return super.get(n);if(!this.deleted.has(n)&&this.source.has(n))return this.source.get(n);return}set(n,i){return this.deleted.delete(n),super.set(n,i)}hasOwn(n){return super.has(n)}has(n){return!this.deleted.has(n)&&(super.has(n)||this.source.has(n))}delete(n){return this.deleted.add(n),super.delete(n)}},qen=(n,i,e,a)=>{let t=ni(n),r={parent:t,child:null,on:t.on,loggers:t.loggers,logger:t.logger,config:t.config,atoms:new wl(t.atoms),atomsThatAreDefault:new Set(t.atomsThatAreDefault),families:new wl(t.families),joins:new wl(t.joins),operation:{open:!1},readonlySelectors:new wl(t.readonlySelectors),timelines:new wl(t.timelines),timelineTopics:new Pa(t.timelineTopics.toJSON()),trackers:new Map,transactions:new wl(t.transactions),selectorAtoms:new Pa(t.selectorAtoms.toJSON()),selectorGraph:new Pa(t.selectorGraph.toJSON(),{makeContentKey:(...s)=>s.sort().join(":")}),writableSelectors:new wl(t.writableSelectors),valueMap:new wl(t.valueMap),defaults:t.defaults,disposalTraces:n.disposalTraces.copy(),molecules:new wl(t.molecules),moleculeGraph:new Pa(t.moleculeGraph.toJSON(),{makeContentKey:t.moleculeGraph.makeContentKey}),moleculeData:new Pa(t.moleculeData.toJSON(),{makeContentKey:t.moleculeData.makeContentKey}),moleculeJoins:new Pa(t.moleculeJoins.toJSON(),{makeContentKey:t.moleculeJoins.makeContentKey}),miscResources:new wl(t.miscResources)},o=Qen(n,i),u={phase:"building",update:{type:"transaction_update",key:i,id:a,epoch:o===void 0?NaN:o+1,updates:[],params:e,output:void 0},toolkit:{get:(...s)=>Tr(l,...s),set:(...s)=>{ca(l,...s)},reset:(...s)=>{rb(l,...s)},run:(s,c=C6())=>l_(l,s,c),find:(...s)=>Ui(n,...s),json:(s)=>Qp(l,s),dispose:(...s)=>{tb(l,...s)},env:()=>Jen(l)}},l=Object.assign(r,{transactionMeta:u});return t.child=l,n.logger.info("\uD83D\uDEEB","transaction",i,"Building transaction with params:",e),l};function E_(n,i){let{key:e}=i,a=n.transactions.has(e),t={key:e,type:"transaction",run:(u,l)=>{let s=qen(n,e,u,l);try{let c=ni(n),{toolkit:f}=s.transactionMeta,b=i.do(f,...u);return jen(b,c),b}catch(c){throw Cen(r),n.logger.warn("\uD83D\uDCA5","transaction",e,"caught:",c),c}},install:(u)=>E_(u,i),subject:new Xi},r=ni(n);r.transactions.set(e,t);let o=ab(t);if(!a)n.on.transactionCreation.next(o);return o}var X6=class{parent=null;child=null;valueMap=new Map;defaults=new Map;atoms=new Map;writableSelectors=new Map;readonlySelectors=new Map;atomsThatAreDefault=new Set;selectorAtoms=new Pa({between:["selectorKey","atomKey"],cardinality:"n:n"});selectorGraph=new Pa({between:["upstreamSelectorKey","downstreamSelectorKey"],cardinality:"n:n"},{makeContentKey:(...n)=>n.sort().join(":")});trackers=new Map;families=new Map;joins=new Map;transactions=new Map;transactionMeta={epoch:new Map,actionContinuities:new Pa({between:["continuity","action"],cardinality:"1:n"})};timelines=new Map;timelineTopics=new Pa({between:["timelineKey","topicKey"],cardinality:"1:n"});disposalTraces=new Nen(100);molecules=new Map;moleculeJoins=new Pa({between:["moleculeKey","joinKey"],cardinality:"n:n"},{makeContentKey:(...n)=>n.sort().join(":")});moleculeGraph=new Pa({between:["upstreamMoleculeKey","downstreamMoleculeKey"],cardinality:"n:n"},{makeContentKey:(...n)=>n.sort().join(":")});moleculeData=new Pa({between:["moleculeKey","stateFamilyKey"],cardinality:"n:n"},{makeContentKey:(...n)=>n.sort().join(":")});miscResources=new Map;on={atomCreation:new Xi,atomDisposal:new Xi,selectorCreation:new Xi,selectorDisposal:new Xi,timelineCreation:new Xi,transactionCreation:new Xi,transactionApplying:new xen(null),operationClose:new Xi,moleculeCreation:new Xi,moleculeDisposal:new Xi};operation={open:!1};config={name:"IMPLICIT_STORE",lifespan:"ephemeral"};loggers=[new WD("warn",(n,i,e)=>!ran(e))];logger={error:(...n)=>{for(let i of this.loggers)i.error(...n)},info:(...n)=>{for(let i of this.loggers)i.info(...n)},warn:(...n)=>{for(let i of this.loggers)i.warn(...n)}};constructor(n,i=null){if(this.config={...i?.config,...n},i!==null){if(this.valueMap=new Map(i?.valueMap),this.operation={...i?.operation},Dc(i))this.transactionMeta={epoch:new Map(i?.transactionMeta.epoch),actionContinuities:new Pa(i?.transactionMeta.actionContinuities.toJSON())};for(let[,a]of i.families){if(a.internalRoles?.includes("mutable")||a.internalRoles?.includes("join"))continue;a.install(this)}let e=new Set;for(let[,a]of i.atoms){if(e.has(a.key))continue;if(a.install(this),a.type==="mutable_atom"){let t=Qp(i,a),r=A_(a);e.add(t.key),e.add(r.key)}}for(let[,a]of i.readonlySelectors)a.install(this);for(let[,a]of i.writableSelectors){if(e.has(a.key))continue;a.install(this)}for(let[,a]of i.transactions)a.install(this);for(let[,a]of i.timelines)a.install(this)}}},Mi={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new X6({name:"IMPLICIT_STORE",lifespan:"ephemeral"}),globalThis.ATOM_IO_IMPLICIT_STORE}};function qe(n,i){let e,a=n;while(a!==null){switch(i.type){case"atom":case"mutable_atom":e=a.atoms.get(i.key);break;case"writable_pure_selector":case"writable_held_selector":e=a.writableSelectors.get(i.key);break;case"readonly_pure_selector":case"readonly_held_selector":e=a.readonlySelectors.get(i.key);break;case"atom_family":case"mutable_atom_family":case"writable_pure_selector_family":case"readonly_pure_selector_family":case"writable_held_selector_family":case"readonly_held_selector_family":e=a.families.get(i.key);break;case"timeline":e=a.timelines.get(i.key);break;case"transaction":e=a.transactions.get(i.key);break}if(e)return e;a=a.child}throw new u_(i,n)}var nan=(n,i)=>{let e=ni(n);if(e.operation.open)return e.operation.prev.get(i.key);return e.valueMap.get(i.key)};var S6=(n,i)=>{let e=ni(n);return U6(i,n).map((t)=>{return t.subject.subscribe(`${i.type}:${i.key}`,(r)=>{n.logger.info("\uD83D\uDCE2",i.type,i.key,"root",t.key,"went",r.oldValue,"->",r.newValue);let o=nan(e,i),u=YD(e,i);n.logger.info("\u2728",i.type,i.key,"went",o,"->",u),i.subject.next({newValue:u,oldValue:o})})})};function wm(n,i,e,a){function t(f){if(n.operation.open){let b=n.on.operationClose.subscribe(`state subscription ${e}`,()=>{b(),a(f)})}else a(f)}let r=qe(n,i);n.logger.info("\uD83D\uDC40",r.type,r.key,`Adding subscription "${e}"`);let o=r.type==="writable_pure_selector"||r.type==="readonly_pure_selector",u=null,l=t;if(o)u=S6(n,r),l=(f)=>{if(u)u.length=0,u.push(...S6(n,r));t(f)};let s=r.subject.subscribe(e,l);return()=>{if(n.logger.info("\uD83D\uDE48",r.type,r.key,`Removing subscription "${e}"`),s(),u)for(let f of u)f()}}var ian=(n,i,e,a)=>{let t=qe(n,i);n.logger.info("\uD83D\uDC40","timeline",i.key,`Adding subscription "${e}"`);let r=t.subject.subscribe(e,a);return()=>{n.logger.info("\uD83D\uDE48","timeline",i.key,`Removing subscription "${e}" from timeline`),r()}};var g_=class{initializeState(n,i){let e=`*${n.key}`;i.atoms.delete(e),i.valueMap.delete(e);let a=n.family?{key:`*${n.family.key}`,subKey:n.family.subKey}:void 0,t=kD(i,{key:e,default:null},a);if(i.parent?.valueMap.has(e)){let r=i.parent.valueMap.get(e);i.valueMap.set(e,r)}return t}unsubscribeFromInnerValue;unsubscribeFromState;observeCore(n,i,e){let a=`tracker:${e.config.name}:${Ba(e)?e.transactionMeta.update.key:"main"}:${n.key}`,t=Tr(e,n);this.unsubscribeFromInnerValue=t.subscribe(a,(r)=>{ca(e,i,r)}),this.unsubscribeFromState=wm(e,n,a,(r)=>{if(r.newValue!==r.oldValue)this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=r.newValue.subscribe(a,(o)=>{ca(e,i,o)})})}updateCore(n,i,e){let a=`tracker:${e.config.name}:${Ba(e)?e.transactionMeta.update.key:"main"}:${n.key}`;wm(e,i,a,({newValue:t,oldValue:r})=>{let o=e.timelineTopics.getRelatedKey(i.key);if(o){if(e.timelines.get(o)?.timeTraveling){let s=ian(e,{key:o,type:"timeline"},a,(c)=>{s(),ca(e,n,(f)=>{if(c==="redo"&&t)f.do(t);else if(c==="undo"&&r)f.undo(r);return f})});return}}let u=e.on.operationClose.subscribe(a,()=>{u();let l=Tr(e,n),s=t===null?-1:l.getUpdateNumber(t),c=s-l.cacheUpdateNumber;if(t&&c===1)ca(e,n,(f)=>(f.do(t),f));else e.logger.info("\u274C","mutable_atom",n.key,`could not be updated. Expected update number ${l.cacheUpdateNumber+1}, but got ${s}`)})})}mutableState;latestUpdateState;[Symbol.dispose];constructor(n,i){this.mutableState=n;let e=ni(i);this.latestUpdateState=this.initializeState(n,e),this.observeCore(n,this.latestUpdateState,e),this.updateCore(n,this.latestUpdateState,e),e.trackers.set(n.key,this),this[Symbol.dispose]=()=>{this.unsubscribeFromInnerValue(),this.unsubscribeFromState(),e.trackers.delete(n.key)}}};function m_(n,i,e){n.logger.info("\uD83D\uDD28","atom",i.key,`creating in store "${n.config.name}"`);let a=ni(n),{key:t,default:r}=i,o=a.atoms.get(t),u="mutable_atom";if(o&&o.type===u)return n.logger.error("\u274C",u,t,"Tried to create atom, but it already exists in the store."),ab(o);let l=new Xi,s={...i,type:u,install:(b)=>{return b.logger.info("\uD83D\uDEE0\uFE0F","atom",t,`installing in store "${b.config.name}"`),m_(b,i,e)},subject:l};if(e)s.family=e;let c=r();a.atoms.set(s.key,s),vl(a,t,c,l);let f=ab(s);if(i.effects){let b=0,g=[];for(let m of i.effects){let h=m({resetSelf:()=>{rb(n,f)},setSelf:(D)=>{ca(n,f,D)},onSet:(D)=>wm(n,f,`effect[${b}]`,D)});if(h)g.push(h);++b}s.cleanup=()=>{for(let m of g)m()}}if(new g_(f,n),!e)T6(f,i,n);return f}var ean=class{trackers=new Map;latestUpdateAtoms;mutableAtoms;constructor(n,i){let e=VD(i,{key:`*${n.key}`,default:null},["mutable","updates"]);this.latestUpdateAtoms=qe(i,e),this.mutableAtoms=n,this.mutableAtoms.subject.subscribe(`store=${i.config.name}::tracker-atom-family`,(a)=>{let{type:t,token:r}=a;if(r.family){let o=jt(r.family.subKey);switch(t){case"state_creation":this.trackers.set(o,new g_(r,i));break;case"state_disposal":{let u=this.trackers.get(o);if(u)u[Symbol.dispose](),this.trackers.delete(o)}break}}})}};function h_(n,i,e){let a={key:i.key,type:"mutable_atom_family"},t=n.families.get(i.key);if(t)n.logger.error("\u2757","mutable_atom_family",i.key,`Overwriting an existing ${Zp(t)} "${t.key}" in store "${n.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let r=new Xi,u=Object.assign((l)=>{let s=ee(l),c={key:i.key,subKey:s},f=`${i.key}(${s})`,b=ni(n),g={key:f,default:()=>i.default(l),toJson:i.toJson,fromJson:i.fromJson,mutable:!0};if(i.effects)g.effects=i.effects(l);let m=m_(b,g,c);return r.next({type:"state_creation",token:m}),m},a,{subject:r,install:(l)=>h_(l,i),toJson:i.toJson,fromJson:i.fromJson,internalRoles:e});return n.families.set(i.key,u),_6(n,u,i),new ean(u,n),a}var F6=(n,i)=>{let e=ni(i),a=`${n.key}:JSON`;return e.families.get(a)},Qp=(n,i)=>{if(i.family){let a=ni(n),r={key:`${i.family.key}:JSON`,type:"writable_pure_selector_family"},o=qe(a,r),u=JSON.parse(i.family.subKey);return Ui(n,o,u)}return{type:"writable_pure_selector",key:`${i.key}:JSON`}};var A_=(n)=>{let e={type:"atom",key:`*${n.key}`};if(n.family)e.family={key:`*${n.family.key}`,subKey:n.family.subKey};return e};function aan(n){return typeof n==="object"&&n!==null&&"do"in n&&"undo"in n&&"subscribe"in n}function o_(n,i,e){let a=e.valueMap.get(i.key),t=n.valueMap.get(i.key);if(a!==t)return t;if(a===void 0)return i.default();e.logger.info("\uD83D\uDCC3","atom",i.key,"copying");let r=i.toJson(a),o=i.fromJson(r);return n.valueMap.set(i.key,o),new g_(i,e),o}function vl(n,i,e,a){let t=n.valueMap.get(i);if(t instanceof a_){let r=t;if(e instanceof Promise)return r;return n.valueMap.set(i,e),e}if(e instanceof Promise){let r=new a_(e);return n.valueMap.set(i,r),r.then((o)=>{if(n.valueMap.get(i)===r){vl(n,i,o,a);let l=n.atoms.get(i);if(l)PD(n,l),t_(n,l),BD(n);else{let s=n.writableSelectors.get(i)??n.readonlySelectors.get(i);if(s)PD(n,s),Len(n,s),BD(n)}a.next({newValue:o,oldValue:r})}}).catch((o)=>{n.logger.error("\uD83D\uDCA5","state",i,"rejected:",o)}),r}return n.valueMap.set(i,e),e}var tan=(n,i)=>{let e=i.valueMap.get(n.key);if(n.type==="mutable_atom"&&Ba(i)){let{parent:a}=i;e=o_(i,n,a)}return e},k6=(n,i)=>{let e=i.valueMap.get(n);if(e instanceof a_){let a=e,t=i.writableSelectors.get(n)??i.readonlySelectors.get(n);if(t)a.use(t.get());return}if(i.operation.open)i.operation.prev.set(n,e);i.valueMap.delete(n),i.logger.info("\uD83D\uDDD1","state",n,"evicted")};function kD(n,i,e){let{key:t,default:r}=i;n.logger.info("\uD83D\uDD28","atom",t,`creating in store "${n.config.name}"`);let o=ni(n),u=o.atoms.get(t);if(u&&u.type==="atom")return n.logger.error("\u274C","atom",t,"Tried to create atom, but it already exists in the store."),ab(u);let l=new Xi,s={...i,type:"atom",install:(b)=>{return b.logger.info("\uD83D\uDEE0\uFE0F","atom",t,`installing in store "${b.config.name}"`),kD(b,i,e)},subject:l};if(e)s.family=e;let c=r;if(r instanceof Function)c=r();o.atoms.set(t,s),vl(o,t,c,l);let f=ab(s);if(i.effects){let b=0,g=[];for(let m of i.effects){let h=m({resetSelf:()=>{rb(n,f)},setSelf:(D)=>{ca(n,f,D)},onSet:(D)=>wm(n,f,`effect[${b}]`,D)});if(h)g.push(h);++b}s.cleanup=()=>{for(let m of g)m()}}return f}function Z6(n,i){if("mutable"in i){let t=m_(n,i,void 0);return n.on.atomCreation.next(t),t}let a=kD(n,i,void 0);return n.on.atomCreation.next(a),a}function Q6(n,i){let e=ni(n),{key:a,family:t}=i,r=qe(e,i);if(!t)n.logger.error("\u274C","atom",a,"Standalone atoms cannot be disposed.");else{r.cleanup?.();let o=n.valueMap.get(r.key),u=qe(n,{key:t.key,type:"atom_family"}),l={type:"state_disposal",subType:"atom",token:i,value:o};u.subject.next(l);let s=Ba(e);if(e.atoms.delete(a),e.valueMap.delete(a),e.selectorAtoms.delete(a),e.atomsThatAreDefault.delete(a),n.timelineTopics.delete(a),i.type==="mutable_atom"){let c=A_(i);Q6(n,c),n.trackers.delete(a)}if(n.logger.info("\uD83D\uDD25","atom",a,"deleted"),s&&e.transactionMeta.phase==="building"){let c=e.transactionMeta.update.updates.at(-1);if(!(c?.type==="molecule_disposal"&&c.values.some(([g])=>g===r.family?.key)))e.transactionMeta.update.updates.push(l)}else n.on.atomDisposal.next(i)}}var D_=class{toolkit;options;defaultContent;molecules=new Map;relations;states;core;transact(n,i){let e=this.toolkit;this.toolkit=n,i(this),this.toolkit=e}store;realm;[Symbol.dispose](){}constructor(n,i,e=Mi.STORE){this.store=e,this.realm=new x6(e),this.options=n,this.defaultContent=i,this.store.miscResources.set(`join:${n.key}`,this),this.realm.allocate("root",n.key),this.toolkit={get:(...x)=>Tr(e,...x),set:(...x)=>{ca(e,...x)},find:(...x)=>Ui(e,...x),json:(x)=>Qp(e,x)};let a=n.between[0],t=n.between[1],r=h_(e,{key:`${n.key}/relatedKeys`,default:()=>new Rr,mutable:!0,fromJson:(x)=>Rr.fromJSON(x),toJson:(x)=>x.toJSON()},["join","relations"]);this.core={relatedKeysAtoms:r};let o=({get:x},N)=>x(r,N),u=({set:x},N,I)=>{if(!this.store.molecules.has(ee(N)))this.realm.allocate(n.key,N);x(r,N,(G)=>G.add(I)),x(r,I,(G)=>G.add(N))},l=({set:x},N,I)=>{x(r,N,(G)=>{return G.delete(I),G}),x(r,I,(G)=>{return G.delete(N),G})},s=(x,N,I)=>{let{find:G,get:Y,set:W}=x,$=G(r,N),K=Y($);for(let Z of K){if(I.includes(Z))continue;W(r,Z,(tn)=>{return tn.delete(N),tn})}W($,(Z)=>{return Z.transaction((J)=>{J.clear();for(let tn of I){let on=o(x,tn),Dn=on.has(N);if(this.relations.cardinality==="1:n"){let Ln=[];for(let Q of on){if(Q===N)continue;let O=o(x,Q);if(O.delete(tn),O.size===0)Ln.push(Q)}if(!Dn&&on.size>0)on.clear();for(let Q of Ln){let O=[tn,Q].sort(),k=`"${O[0]}:${O[1]}"`;this.molecules.delete(k)}}if(!Dn)on.add(N);J.add(tn)}return!0}),Z})},c=(x,N,I)=>{let{set:G}=x;G(r,N,(Y)=>{return Y.transaction((W)=>{for(let $ of I)W.add($);return!0}),Y});for(let Y of I)G(r,Y,(W)=>{return W.add(N),W});return!0},f=(x,N,I)=>{let G=o(x,N);return I?G.has(I):G.size>0},b={getRelatedKeys:(x)=>o(this.toolkit,x),addRelation:(x,N)=>{this.store.moleculeJoins.set(x,n.key),this.store.moleculeJoins.set(N,n.key),u(this.toolkit,x,N)},deleteRelation:(x,N)=>{l(this.toolkit,x,N)},replaceRelationsSafely:(x,N)=>{s(this.toolkit,x,N)},replaceRelationsUnsafely:(x,N)=>{c(this.toolkit,x,N)},has:(x,N)=>f(this.toolkit,x,N)},g,m;if(i){m=VD(e,{key:`${n.key}/content`,default:i},["join","content"]);let x=({get:G},Y)=>G(m,Y),N=({set:G},Y,W)=>{G(m,Y,W)};g=Object.assign(b,{getContent:(G)=>{return x(this.toolkit,G)},setContent:(G,Y)=>{N(this.toolkit,G,Y)},deleteContent:(G)=>{this.realm.deallocate(G)}})}else g=b;let h=new Pa(n,{externalStore:g,isAType:n.isAType,isBType:n.isBType,makeContentKey:(...x)=>{let[N,I]=x,G=x.sort(),Y=`${G[0]}:${G[1]}`,W=e.molecules.get(ee(N)),$=e.molecules.get(ee(I));if(!W)this.realm.allocate(n.key,N);if(!$)this.realm.allocate(n.key,I);return this.realm.allocate(N,Y,"all"),this.realm.claim(I,Y),this.store.moleculeJoins.set(Y,n.key),Y}}),D=()=>eb(e,{key:`${n.key}/singleRelatedKey`,get:(x)=>({get:N})=>{let I=N(r,x);for(let G of I)return G;return null}},["join","keys"]),T=()=>{return eb(e,{key:`${n.key}/multipleRelatedKeys`,get:(x)=>({get:N})=>{let I=F6(r,e);return N(I,x).members}},["join","keys"])},v=()=>eb(e,{key:`${n.key}/singleRelatedEntry`,get:(x)=>({get:N})=>{let I=N(r,x);for(let G of I){let Y=h.isAType?.(x)?x:void 0,W=Y===void 0?x:void 0;Y??=G,W??=G;let $=h.makeContentKey(Y,W),K=N(m,$);return[G,K]}return null}},["join","entries"]),S=()=>eb(e,{key:`${n.key}/multipleRelatedEntries`,get:(x)=>({get:N})=>{let I=F6(r,e);return N(I,x).members.map((Y)=>{let W=h.isAType?.(x)?x:void 0,$=W===void 0?x:void 0;W??=Y,$??=Y;let K=h.makeContentKey(W,$),Z=N(m,K);return[Y,Z]})}},["join","entries"]);switch(n.cardinality){case"1:1":{let x=D(),N=`${a}KeyOf${De(t)}`,I=`${t}KeyOf${De(a)}`,G={[N]:x,[I]:x},Y;if(i){let W=v(),$=`${a}EntryOf${De(t)}`,K=`${t}EntryOf${De(a)}`,Z={[$]:W,[K]:W};Y=Object.assign(G,Z)}else Y=G;this.relations=h,this.states=Y;break}case"1:n":{let x=D(),N=T(),I=`${a}KeyOf${De(t)}`,G=`${t}KeysOf${De(a)}`,Y={[I]:x,[G]:N},W;if(i){let $=v(),K=S(),Z=`${a}EntryOf${De(t)}`,J=`${t}EntriesOf${De(a)}`,tn={[Z]:$,[J]:K};W=Object.assign(Y,tn)}else W=Y;this.relations=h,this.states=W;break}case"n:n":{let x=T(),N=`${a}KeysOf${De(t)}`,I=`${t}KeysOf${De(a)}`,G={[N]:x,[I]:x},Y;if(i){let W=S(),$=`${a}EntriesOf${De(t)}`,K=`${t}EntriesOf${De(a)}`,Z={[$]:W,[K]:W};Y=Object.assign(G,Z)}else Y=G;this.relations=h,this.states=Y}}}};function w_(n,i){let e=i.joins.get(n.key);if(e===void 0){let t=Mi.STORE.joins.get(n.key);if(t===void 0)throw new Error(`Join "${n.key}" not found in store "${i.config.name}"`);e=new D_(t.options,t.defaultContent,i),i.joins.set(n.key,e)}return e}function wc(n,i,e){let a=w_(n,e),t=ni(e);if(Ba(t)){let{toolkit:r}=t.transactionMeta;a.transact(r,({relations:o})=>{i(o)})}else i(a.relations)}function Rm(n,i,e){let a=w_(n,e),t;switch(n.cardinality){case"1:1":{let r=`${n.a}KeyOf${De(n.b)}`,o=`${n.b}KeyOf${De(n.a)}`;t={get[r](){let l=a.states[r];return Ui(e,l,i)},get[o](){let l=a.states[o];return Ui(e,l,i)}};let u=`${n.a}EntryOf${De(n.b)}`;if(u in a.states){let l=`${n.b}EntryOf${De(n.a)}`;Object.assign(t,{get[u](){let s=a.states[u];return Ui(e,s,i)},get[l](){let s=a.states[l];return Ui(e,s,i)}})}break}case"1:n":{let r=`${n.a}KeyOf${De(n.b)}`,o=`${n.b}KeysOf${De(n.a)}`;t={get[r](){let l=a.states[r];return Ui(e,l,i)},get[o](){let l=a.states[o];return Ui(e,l,i)}};let u=`${n.a}EntryOf${De(n.b)}`;if(u in a.states){let l=`${n.b}EntriesOf${De(n.a)}`;Object.assign(t,{get[u](){let s=a.states[u];return Ui(e,s,i)},get[l](){let s=a.states[l];return Ui(e,s,i)}})}break}case"n:n":{let r=`${n.a}KeysOf${De(n.b)}`,o=`${n.b}KeysOf${De(n.a)}`;t={get[r](){let l=a.states[r];return Ui(e,l,i)},get[o](){let l=a.states[o];return Ui(e,l,i)}};let u=`${n.a}EntriesOf${De(n.b)}`;if(u in a.states){let l=`${n.b}EntriesOf${De(n.a)}`;Object.assign(t,{get[u](){let s=a.states[u];return Ui(e,s,i)},get[l](){let s=a.states[l];return Ui(e,s,i)}})}}}return t}function K6(n,i){return w_(n,i).core.relatedKeysAtoms}function ran(n){return n.startsWith("\uD83D\uDD0D ")}function lb(n){return Z6(Mi.STORE,n)}function Tm(n){return I6(Mi.STORE,n)}function ZFn(...n){if(n.length===2)return Tr(Mi.STORE,...n);return Tr(Mi.STORE,...n)}function ZD(n,i,e=Mi.STORE){return e.joins.set(n.key,new D_(n,i,e)),{key:n.key,type:"join",a:n.between[0],b:n.between[1],cardinality:n.cardinality}}function j6(n){return K6(n,Mi.STORE)}var v_=(n)=>(i,e,a,t,...r)=>{console[n](`${i} ${e} "${a}" ${t}`,...r)},uan={error:v_("error"),info:v_("info"),warn:v_("warn")},WD=class{logLevel;filter;logger;constructor(n,i,e=uan){this.logLevel=n,this.filter=i,this.logger=e}error=(...n)=>{let i=this.filter?.(...n)??!0;if(this.logLevel!==null){if(i===!0)this.logger.error(...n);else if(i!==!1)this.logger.error(...i)}};info=(...n)=>{let i=this.filter?.(...n)??!0;if(this.logLevel==="info"){if(i===!0)this.logger.info(...n);else if(i!==!1)this.logger.info(...i)}};warn=(...n)=>{let i=this.filter?.(...n)??!0;if(this.logLevel!=="error"&&this.logLevel!==null){if(i===!0)this.logger.warn(...n);else if(i!==!1)this.logger.warn(...i)}}};var lan=class{store;constructor(n=Mi.STORE){this.store=n,P6("root",n)}allocate(n,i,e){return ob(this.store,n,i,e)}fuse(n,i,e){return B6(this.store,n,i,e)}deallocate(n){ub(this.store,n)}claim(n,i,e){return Dm(this.store,n,i,e)}},x6=class{store;realm;constructor(n=Mi.STORE){this.store=n,this.realm=new lan(n)}allocate(n,i,e){ob(this.store,n,i,e)}deallocate(n){ub(this.store,n)}claim(n,i,e){Dm(this.store,n,i,e)}};function QD(n){return z6(Mi.STORE,n)}function _m(n){return E_(Mi.STORE,n)}var iJ=si(KD(),1),eJ=si(oN(),1);var U3=si(M3(),1),{Server:G3,Namespace:vCn,Socket:y3}=U3.default;import{readFileSync as kH}from"fs";import{createServer as mbn}from"http";import{createServer as hbn}from"https";import{resolve as mF}from"path";function z3(n,i){if(n instanceof Promise)throw new Error(i)}function vcn(n,i){let e={},a=[];for(let t in n){let r=n[t]["~standard"].validate(i[t]);if(z3(r,`Validation must be synchronous, but ${t} returned a Promise.`),r.issues){a.push(...r.issues.map((o)=>({...o,message:o.message,path:[t,...o.path??[]]})));continue}e[t]=r.value}if(a.length)return{issues:a};return{value:e}}function qN(n){let i=n.runtimeEnvStrict??n.runtimeEnv??process.env;if(n.emptyStringAsUndefined??!1){for(let[v,S]of Object.entries(i))if(S==="")delete i[v]}if(!!n.skipValidation)return i;let t=typeof n.client==="object"?n.client:{},r=typeof n.server==="object"?n.server:{},o=typeof n.shared==="object"?n.shared:{},u=n.isServer??(typeof window==="undefined"||("Deno"in window)),l=u?{...r,...o,...t}:{...t,...o},s=n.createFinalSchema?.(l,u)["~standard"].validate(i)??vcn(l,i);z3(s,"Validation must be synchronous");let c=n.onValidationError??((v)=>{throw console.error("\u274C Invalid environment variables:",v),new Error("Invalid environment variables")}),f=n.onInvalidAccess??(()=>{throw new Error("\u274C Attempted to access a server-side environment variable on the client")});if(s.issues)return c(s.issues);let b=(v)=>{if(!n.clientPrefix)return!0;return!v.startsWith(n.clientPrefix)&&!(v in o)},g=(v)=>{return u||!b(v)},m=(v)=>{return v==="__esModule"||v==="$$typeof"},h=(n.extends??[]).reduce((v,S)=>{return Object.assign(v,S)},{}),D=Object.assign(h,s.value);return new Proxy(D,{get(v,S){if(typeof S!=="string")return;if(m(S))return;if(!g(S))return f(S);return Reflect.get(v,S)}})}var Cc=(n)=>Array.isArray(n)?n:[n],H3=(n,i)=>{let e=[[],[]];for(let a of n)if(i(a))e[0].push(a);else e[1].push(a);return e},B0=Array,As=(n,i)=>n.includes(i),$3=(n,i=0)=>[...new Array(n)].map((e,a)=>a+i),Ti=(n,i,e)=>{if(n===void 0)return i===void 0?[]:Array.isArray(i)?i:[i];if(e?.prepend)if(Array.isArray(i))n.unshift(...i);else n.unshift(i);else if(Array.isArray(i))n.push(...i);else n.push(i);return n},Ds=(n,i)=>{if(i===void 0||i===null)return n??[];if(n===void 0||n===null)return Cc(i);return n.concat(i)},P3=(...n)=>n.reduce(Ds,[]),_l=(n,i,e)=>{if(n===void 0)return Array.isArray(i)?i:[i];let a=e?.isEqual??((t,r)=>t===r);for(let t of Cc(i))if(!n.some((r)=>a(r,t)))n.push(t);return n},B3=(n,i)=>n.reduce((e,a)=>{let t=a[i];return e[t]=Ti(e[t],a),e},{}),ws=(n,i,e)=>n.length===i.length&&n.every(e?.isEqual?(a,t)=>e.isEqual(a,i[t]):(a,t)=>a===i[t]);var Sr=(n,i)=>pa(n)===i,pa=(n)=>{let i=typeof n;return i==="object"?n===null?"null":"object":i==="function"?"object":i},Fr={boolean:"boolean",null:"null",undefined:"undefined",bigint:"a bigint",number:"a number",object:"an object",string:"a string",symbol:"a symbol"},W3={...Fr,function:"a function"};class Y3 extends Error{}var Oi=(n)=>sd(n,Y3),sd=(n,i=Error)=>{throw new i(n)};class Ym extends Error{name="ParseError"}var an=(n)=>sd(n,Ym),xu=(n)=>` ${n}`;var ri=(n,i)=>{let e={},a=Array.isArray(n),t=!1;for(let[r,o]of Object.entries(n).entries()){let u=a?i(r,o[1]):i(...o,r);t||=typeof u[0]==="number";let l=Array.isArray(u[0])||u.length===0?u:[u];for(let[s,c]of l)if(typeof s==="object")e[s.group]=Ti(e[s.group],c);else e[s]=c}return t?Object.values(e):e};var nS=Object.entries;var da=(n,i)=>(n in i),Ub=(n,i)=>(i in n);class iS{constructor(n){Object.assign(this,n)}}var V3=class{};class Vm extends V3{}var Rcn=(n,i)=>{let e={},a={},t;for(t in n)if(t in i)e[t]=n[t];else a[t]=n[t];return[e,a]};var X3=(n,i)=>Rcn(n,i)[1],Nl=(n)=>Object.keys(n).length===0,cd=(n)=>[...Object.entries(n),...Object.getOwnPropertySymbols(n).map((i)=>[i,n[i]])],k3=(n,i)=>Object.defineProperties(n,Object.getOwnPropertyDescriptors(i)),Z3=(n)=>{let i=Object.keys(n).sort(),e={};for(let a=0;a<i.length;a++)e[i[a]]=n[i[a]];return e};var po=xu("represents an uninitialized value"),Q3=(n)=>Object.values(n).filter((i)=>{if(typeof i==="number")return!0;return typeof n[i]!=="number"});var eS={Array,Boolean,Date,Error,Function,Map,Number,Promise,RegExp,Set,String,WeakMap,WeakSet},aS=globalThis.File??Blob,tS={ArrayBuffer,Blob,File:aS,FormData,Headers,Request,Response,URL},Tcn={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array},pd={...eS,...tS,...Tcn,String,Number,Boolean},Xm=(n)=>{let i=Object.getPrototypeOf(n);while(i?.constructor&&(!da(i.constructor.name,pd)||!(n instanceof pd[i.constructor.name])))i=Object.getPrototypeOf(i);let e=i?.constructor?.name;if(e===void 0||e==="Object")return;return e},km=(n)=>typeof n==="object"&&n!==null?Xm(n)??"object":pa(n);var le=Array.isArray,_cn={Array:"an array",Function:"a function",Date:"a Date",RegExp:"a RegExp",Error:"an Error",Map:"a Map",Set:"a Set",String:"a String object",Number:"a Number object",Boolean:"a Boolean object",Promise:"a Promise",WeakMap:"a WeakMap",WeakSet:"a WeakSet"},Ncn={ArrayBuffer:"an ArrayBuffer instance",Blob:"a Blob instance",File:"a File instance",FormData:"a FormData instance",Headers:"a Headers instance",Request:"a Request instance",Response:"a Response instance",URL:"a URL instance"},Scn={Int8Array:"an Int8Array",Uint8Array:"a Uint8Array",Uint8ClampedArray:"a Uint8ClampedArray",Int16Array:"an Int16Array",Uint16Array:"a Uint16Array",Int32Array:"an Int32Array",Uint32Array:"a Uint32Array",Float32Array:"a Float32Array",Float64Array:"a Float64Array",BigInt64Array:"a BigInt64Array",BigUint64Array:"a BigUint64Array"},K3={..._cn,...Ncn,...Scn},Zm=(n)=>{let i=Object(n).name??null;return i&&da(i,pd)&&pd[i]===n?i:null};var rS=(n,i)=>{let e=n.prototype;while(e!==null){if(e===i.prototype)return!0;e=Object.getPrototypeOf(e)}return!1};var j3=(n)=>J3(n,new Map),J3=(n,i)=>{if(typeof n!=="object"||n===null)return n;if(i?.has(n))return i.get(n);let e=Zm(n.constructor);if(e==="Date")return new Date(n.getTime());if(e&&e!=="Array")return n;let a=Array.isArray(n)?n.slice():Object.create(Object.getPrototypeOf(n)),t=Object.getOwnPropertyDescriptors(n);if(i){i.set(n,a);for(let r in t){let o=t[r];if("get"in o||"set"in o)continue;o.value=J3(o.value,i)}}return Object.defineProperties(a,t),a};var Fcn=(n)=>{let i=po;return()=>i===po?i=n():i},Oc=(n)=>typeof n==="function"&&n.length===0;var q3=class extends Function{constructor(...n){let i=n.slice(0,-1),e=n.at(-1);try{super(...i,e)}catch(a){return Oi(`Encountered an unexpected error while compiling your definition:
300
+ ${o.trace}`:"No previous disposal trace was found."),a.type){case"atom_family":case"mutable_atom_family":return n.defaults.get(a.key);case"readonly_pure_selector_family":case"writable_pure_selector_family":case"readonly_held_selector_family":case"writable_held_selector_family":{if(n.defaults.has(a.key))return n.defaults.get(e.family.key);let u=qe(n,a).default(r);return n.defaults.set(a.key,u),u}}}return YD(n,qe(n,e))}var wl=class extends Map{deleted=new Set;source;constructor(n){super();this.source=n}get(n){if(super.has(n))return super.get(n);if(!this.deleted.has(n)&&this.source.has(n))return this.source.get(n);return}set(n,i){return this.deleted.delete(n),super.set(n,i)}hasOwn(n){return super.has(n)}has(n){return!this.deleted.has(n)&&(super.has(n)||this.source.has(n))}delete(n){return this.deleted.add(n),super.delete(n)}},qen=(n,i,e,a)=>{let t=ni(n),r={parent:t,child:null,on:t.on,loggers:t.loggers,logger:t.logger,config:t.config,atoms:new wl(t.atoms),atomsThatAreDefault:new Set(t.atomsThatAreDefault),families:new wl(t.families),joins:new wl(t.joins),operation:{open:!1},readonlySelectors:new wl(t.readonlySelectors),timelines:new wl(t.timelines),timelineTopics:new Pa(t.timelineTopics.toJSON()),trackers:new Map,transactions:new wl(t.transactions),selectorAtoms:new Pa(t.selectorAtoms.toJSON()),selectorGraph:new Pa(t.selectorGraph.toJSON(),{makeContentKey:(...s)=>s.sort().join(":")}),writableSelectors:new wl(t.writableSelectors),valueMap:new wl(t.valueMap),defaults:t.defaults,disposalTraces:n.disposalTraces.copy(),molecules:new wl(t.molecules),moleculeGraph:new Pa(t.moleculeGraph.toJSON(),{makeContentKey:t.moleculeGraph.makeContentKey}),moleculeData:new Pa(t.moleculeData.toJSON(),{makeContentKey:t.moleculeData.makeContentKey}),moleculeJoins:new Pa(t.moleculeJoins.toJSON(),{makeContentKey:t.moleculeJoins.makeContentKey}),miscResources:new wl(t.miscResources)},o=Qen(n,i),u={phase:"building",update:{type:"transaction_update",key:i,id:a,epoch:o===void 0?NaN:o+1,updates:[],params:e,output:void 0},toolkit:{get:(...s)=>Tr(l,...s),set:(...s)=>{ca(l,...s)},reset:(...s)=>{rb(l,...s)},run:(s,c=C6())=>l_(l,s,c),find:(...s)=>Ui(n,...s),json:(s)=>Qp(l,s),dispose:(...s)=>{tb(l,...s)},env:()=>Jen(l)}},l=Object.assign(r,{transactionMeta:u});return t.child=l,n.logger.info("\uD83D\uDEEB","transaction",i,"Building transaction with params:",e),l};function E_(n,i){let{key:e}=i,a=n.transactions.has(e),t={key:e,type:"transaction",run:(u,l)=>{let s=qen(n,e,u,l);try{let c=ni(n),{toolkit:f}=s.transactionMeta,b=i.do(f,...u);return jen(b,c),b}catch(c){throw Cen(r),n.logger.warn("\uD83D\uDCA5","transaction",e,"caught:",c),c}},install:(u)=>E_(u,i),subject:new Xi},r=ni(n);r.transactions.set(e,t);let o=ab(t);if(!a)n.on.transactionCreation.next(o);return o}var X6=class{parent=null;child=null;valueMap=new Map;defaults=new Map;atoms=new Map;writableSelectors=new Map;readonlySelectors=new Map;atomsThatAreDefault=new Set;selectorAtoms=new Pa({between:["selectorKey","atomKey"],cardinality:"n:n"});selectorGraph=new Pa({between:["upstreamSelectorKey","downstreamSelectorKey"],cardinality:"n:n"},{makeContentKey:(...n)=>n.sort().join(":")});trackers=new Map;families=new Map;joins=new Map;transactions=new Map;transactionMeta={epoch:new Map,actionContinuities:new Pa({between:["continuity","action"],cardinality:"1:n"})};timelines=new Map;timelineTopics=new Pa({between:["timelineKey","topicKey"],cardinality:"1:n"});disposalTraces=new Nen(100);molecules=new Map;moleculeJoins=new Pa({between:["moleculeKey","joinKey"],cardinality:"n:n"},{makeContentKey:(...n)=>n.sort().join(":")});moleculeGraph=new Pa({between:["upstreamMoleculeKey","downstreamMoleculeKey"],cardinality:"n:n"},{makeContentKey:(...n)=>n.sort().join(":")});moleculeData=new Pa({between:["moleculeKey","stateFamilyKey"],cardinality:"n:n"},{makeContentKey:(...n)=>n.sort().join(":")});miscResources=new Map;on={atomCreation:new Xi,atomDisposal:new Xi,selectorCreation:new Xi,selectorDisposal:new Xi,timelineCreation:new Xi,transactionCreation:new Xi,transactionApplying:new xen(null),operationClose:new Xi,moleculeCreation:new Xi,moleculeDisposal:new Xi};operation={open:!1};config={name:"IMPLICIT_STORE",lifespan:"ephemeral"};loggers=[new WD("warn",(n,i,e)=>!ran(e))];logger={error:(...n)=>{for(let i of this.loggers)i.error(...n)},info:(...n)=>{for(let i of this.loggers)i.info(...n)},warn:(...n)=>{for(let i of this.loggers)i.warn(...n)}};constructor(n,i=null){if(this.config={...i?.config,...n},i!==null){if(this.valueMap=new Map(i?.valueMap),this.operation={...i?.operation},Dc(i))this.transactionMeta={epoch:new Map(i?.transactionMeta.epoch),actionContinuities:new Pa(i?.transactionMeta.actionContinuities.toJSON())};for(let[,a]of i.families){if(a.internalRoles?.includes("mutable")||a.internalRoles?.includes("join"))continue;a.install(this)}let e=new Set;for(let[,a]of i.atoms){if(e.has(a.key))continue;if(a.install(this),a.type==="mutable_atom"){let t=Qp(i,a),r=A_(a);e.add(t.key),e.add(r.key)}}for(let[,a]of i.readonlySelectors)a.install(this);for(let[,a]of i.writableSelectors){if(e.has(a.key))continue;a.install(this)}for(let[,a]of i.transactions)a.install(this);for(let[,a]of i.timelines)a.install(this)}}},Mi={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new X6({name:"IMPLICIT_STORE",lifespan:"ephemeral"}),globalThis.ATOM_IO_IMPLICIT_STORE}};function qe(n,i){let e,a=n;while(a!==null){switch(i.type){case"atom":case"mutable_atom":e=a.atoms.get(i.key);break;case"writable_pure_selector":case"writable_held_selector":e=a.writableSelectors.get(i.key);break;case"readonly_pure_selector":case"readonly_held_selector":e=a.readonlySelectors.get(i.key);break;case"atom_family":case"mutable_atom_family":case"writable_pure_selector_family":case"readonly_pure_selector_family":case"writable_held_selector_family":case"readonly_held_selector_family":e=a.families.get(i.key);break;case"timeline":e=a.timelines.get(i.key);break;case"transaction":e=a.transactions.get(i.key);break}if(e)return e;a=a.child}throw new u_(i,n)}var nan=(n,i)=>{let e=ni(n);if(e.operation.open)return e.operation.prev.get(i.key);return e.valueMap.get(i.key)};var S6=(n,i)=>{let e=ni(n);return U6(i,n).map((t)=>{return t.subject.subscribe(`${i.type}:${i.key}`,(r)=>{n.logger.info("\uD83D\uDCE2",i.type,i.key,"root",t.key,"went",r.oldValue,"->",r.newValue);let o=nan(e,i),u=YD(e,i);n.logger.info("\u2728",i.type,i.key,"went",o,"->",u),i.subject.next({newValue:u,oldValue:o})})})};function wm(n,i,e,a){function t(f){if(n.operation.open){let b=n.on.operationClose.subscribe(`state subscription ${e}`,()=>{b(),a(f)})}else a(f)}let r=qe(n,i);n.logger.info("\uD83D\uDC40",r.type,r.key,`Adding subscription "${e}"`);let o=r.type==="writable_pure_selector"||r.type==="readonly_pure_selector",u=null,l=t;if(o)u=S6(n,r),l=(f)=>{if(u)u.length=0,u.push(...S6(n,r));t(f)};let s=r.subject.subscribe(e,l);return()=>{if(n.logger.info("\uD83D\uDE48",r.type,r.key,`Removing subscription "${e}"`),s(),u)for(let f of u)f()}}var ian=(n,i,e,a)=>{let t=qe(n,i);n.logger.info("\uD83D\uDC40","timeline",i.key,`Adding subscription "${e}"`);let r=t.subject.subscribe(e,a);return()=>{n.logger.info("\uD83D\uDE48","timeline",i.key,`Removing subscription "${e}" from timeline`),r()}};var g_=class{initializeState(n,i){let e=`*${n.key}`;i.atoms.delete(e),i.valueMap.delete(e);let a=n.family?{key:`*${n.family.key}`,subKey:n.family.subKey}:void 0,t=kD(i,{key:e,default:null},a);if(i.parent?.valueMap.has(e)){let r=i.parent.valueMap.get(e);i.valueMap.set(e,r)}return t}unsubscribeFromInnerValue;unsubscribeFromState;observeCore(n,i,e){let a=`tracker:${e.config.name}:${Ba(e)?e.transactionMeta.update.key:"main"}:${n.key}`,t=Tr(e,n);this.unsubscribeFromInnerValue=t.subscribe(a,(r)=>{ca(e,i,r)}),this.unsubscribeFromState=wm(e,n,a,(r)=>{if(r.newValue!==r.oldValue)this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=r.newValue.subscribe(a,(o)=>{ca(e,i,o)})})}updateCore(n,i,e){let a=`tracker:${e.config.name}:${Ba(e)?e.transactionMeta.update.key:"main"}:${n.key}`;wm(e,i,a,({newValue:t,oldValue:r})=>{let o=e.timelineTopics.getRelatedKey(i.key);if(o){if(e.timelines.get(o)?.timeTraveling){let s=ian(e,{key:o,type:"timeline"},a,(c)=>{s(),ca(e,n,(f)=>{if(c==="redo"&&t)f.do(t);else if(c==="undo"&&r)f.undo(r);return f})});return}}let u=e.on.operationClose.subscribe(a,()=>{u();let l=Tr(e,n),s=t===null?-1:l.getUpdateNumber(t),c=s-l.cacheUpdateNumber;if(t&&c===1)ca(e,n,(f)=>(f.do(t),f));else e.logger.info("\u274C","mutable_atom",n.key,`could not be updated. Expected update number ${l.cacheUpdateNumber+1}, but got ${s}`)})})}mutableState;latestUpdateState;[Symbol.dispose];constructor(n,i){this.mutableState=n;let e=ni(i);this.latestUpdateState=this.initializeState(n,e),this.observeCore(n,this.latestUpdateState,e),this.updateCore(n,this.latestUpdateState,e),e.trackers.set(n.key,this),this[Symbol.dispose]=()=>{this.unsubscribeFromInnerValue(),this.unsubscribeFromState(),e.trackers.delete(n.key)}}};function m_(n,i,e){n.logger.info("\uD83D\uDD28","atom",i.key,`creating in store "${n.config.name}"`);let a=ni(n),{key:t,default:r}=i,o=a.atoms.get(t),u="mutable_atom";if(o&&o.type===u)return n.logger.error("\u274C",u,t,"Tried to create atom, but it already exists in the store."),ab(o);let l=new Xi,s={...i,type:u,install:(b)=>{return b.logger.info("\uD83D\uDEE0\uFE0F","atom",t,`installing in store "${b.config.name}"`),m_(b,i,e)},subject:l};if(e)s.family=e;let c=r();a.atoms.set(s.key,s),vl(a,t,c,l);let f=ab(s);if(i.effects){let b=0,g=[];for(let m of i.effects){let h=m({resetSelf:()=>{rb(n,f)},setSelf:(D)=>{ca(n,f,D)},onSet:(D)=>wm(n,f,`effect[${b}]`,D)});if(h)g.push(h);++b}s.cleanup=()=>{for(let m of g)m()}}if(new g_(f,n),!e)T6(f,i,n);return f}var ean=class{trackers=new Map;latestUpdateAtoms;mutableAtoms;constructor(n,i){let e=VD(i,{key:`*${n.key}`,default:null},["mutable","updates"]);this.latestUpdateAtoms=qe(i,e),this.mutableAtoms=n,this.mutableAtoms.subject.subscribe(`store=${i.config.name}::tracker-atom-family`,(a)=>{let{type:t,token:r}=a;if(r.family){let o=jt(r.family.subKey);switch(t){case"state_creation":this.trackers.set(o,new g_(r,i));break;case"state_disposal":{let u=this.trackers.get(o);if(u)u[Symbol.dispose](),this.trackers.delete(o)}break}}})}};function h_(n,i,e){let a={key:i.key,type:"mutable_atom_family"},t=n.families.get(i.key);if(t)n.logger.error("\u2757","mutable_atom_family",i.key,`Overwriting an existing ${Zp(t)} "${t.key}" in store "${n.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let r=new Xi,u=Object.assign((l)=>{let s=ee(l),c={key:i.key,subKey:s},f=`${i.key}(${s})`,b=ni(n),g={key:f,default:()=>i.default(l),toJson:i.toJson,fromJson:i.fromJson,mutable:!0};if(i.effects)g.effects=i.effects(l);let m=m_(b,g,c);return r.next({type:"state_creation",token:m}),m},a,{subject:r,install:(l)=>h_(l,i),toJson:i.toJson,fromJson:i.fromJson,internalRoles:e});return n.families.set(i.key,u),_6(n,u,i),new ean(u,n),a}var F6=(n,i)=>{let e=ni(i),a=`${n.key}:JSON`;return e.families.get(a)},Qp=(n,i)=>{if(i.family){let a=ni(n),r={key:`${i.family.key}:JSON`,type:"writable_pure_selector_family"},o=qe(a,r),u=JSON.parse(i.family.subKey);return Ui(n,o,u)}return{type:"writable_pure_selector",key:`${i.key}:JSON`}};var A_=(n)=>{let e={type:"atom",key:`*${n.key}`};if(n.family)e.family={key:`*${n.family.key}`,subKey:n.family.subKey};return e};function aan(n){return typeof n==="object"&&n!==null&&"do"in n&&"undo"in n&&"subscribe"in n}function o_(n,i,e){let a=e.valueMap.get(i.key),t=n.valueMap.get(i.key);if(a!==t)return t;if(a===void 0)return i.default();e.logger.info("\uD83D\uDCC3","atom",i.key,"copying");let r=i.toJson(a),o=i.fromJson(r);return n.valueMap.set(i.key,o),new g_(i,e),o}function vl(n,i,e,a){let t=n.valueMap.get(i);if(t instanceof a_){let r=t;if(e instanceof Promise)return r.use(e),r;return n.valueMap.set(i,e),e}if(e instanceof Promise){let r=new a_(e);return n.valueMap.set(i,r),r.then((o)=>{if(n.valueMap.get(i)===r){vl(n,i,o,a);let l=n.atoms.get(i);if(l)PD(n,l),t_(n,l),BD(n);else{let s=n.writableSelectors.get(i)??n.readonlySelectors.get(i);if(s)PD(n,s),Len(n,s),BD(n)}a.next({newValue:o,oldValue:r})}}).catch((o)=>{n.logger.error("\uD83D\uDCA5","state",i,"rejected:",o)}),r}return n.valueMap.set(i,e),e}var tan=(n,i)=>{let e=i.valueMap.get(n.key);if(n.type==="mutable_atom"&&Ba(i)){let{parent:a}=i;e=o_(i,n,a)}return e},k6=(n,i)=>{let e=i.valueMap.get(n);if(e instanceof a_){let a=e,t=i.writableSelectors.get(n)??i.readonlySelectors.get(n);if(t)a.use(t.get());return}if(i.operation.open)i.operation.prev.set(n,e);i.valueMap.delete(n),i.logger.info("\uD83D\uDDD1","state",n,"evicted")};function kD(n,i,e){let{key:t,default:r}=i;n.logger.info("\uD83D\uDD28","atom",t,`creating in store "${n.config.name}"`);let o=ni(n),u=o.atoms.get(t);if(u&&u.type==="atom")return n.logger.error("\u274C","atom",t,"Tried to create atom, but it already exists in the store."),ab(u);let l=new Xi,s={...i,type:"atom",install:(b)=>{return b.logger.info("\uD83D\uDEE0\uFE0F","atom",t,`installing in store "${b.config.name}"`),kD(b,i,e)},subject:l};if(e)s.family=e;let c=r;if(r instanceof Function)c=r();o.atoms.set(t,s),vl(o,t,c,l);let f=ab(s);if(i.effects){let b=0,g=[];for(let m of i.effects){let h=m({resetSelf:()=>{rb(n,f)},setSelf:(D)=>{ca(n,f,D)},onSet:(D)=>wm(n,f,`effect[${b}]`,D)});if(h)g.push(h);++b}s.cleanup=()=>{for(let m of g)m()}}return f}function Z6(n,i){if("mutable"in i){let t=m_(n,i,void 0);return n.on.atomCreation.next(t),t}let a=kD(n,i,void 0);return n.on.atomCreation.next(a),a}function Q6(n,i){let e=ni(n),{key:a,family:t}=i,r=qe(e,i);if(!t)n.logger.error("\u274C","atom",a,"Standalone atoms cannot be disposed.");else{r.cleanup?.();let o=n.valueMap.get(r.key),u=qe(n,{key:t.key,type:"atom_family"}),l={type:"state_disposal",subType:"atom",token:i,value:o};u.subject.next(l);let s=Ba(e);if(e.atoms.delete(a),e.valueMap.delete(a),e.selectorAtoms.delete(a),e.atomsThatAreDefault.delete(a),n.timelineTopics.delete(a),i.type==="mutable_atom"){let c=A_(i);Q6(n,c),n.trackers.delete(a)}if(n.logger.info("\uD83D\uDD25","atom",a,"deleted"),s&&e.transactionMeta.phase==="building"){let c=e.transactionMeta.update.updates.at(-1);if(!(c?.type==="molecule_disposal"&&c.values.some(([g])=>g===r.family?.key)))e.transactionMeta.update.updates.push(l)}else n.on.atomDisposal.next(i)}}var D_=class{toolkit;options;defaultContent;molecules=new Map;relations;states;core;transact(n,i){let e=this.toolkit;this.toolkit=n,i(this),this.toolkit=e}store;realm;[Symbol.dispose](){}constructor(n,i,e=Mi.STORE){this.store=e,this.realm=new x6(e),this.options=n,this.defaultContent=i,this.store.miscResources.set(`join:${n.key}`,this),this.realm.allocate("root",n.key),this.toolkit={get:(...x)=>Tr(e,...x),set:(...x)=>{ca(e,...x)},find:(...x)=>Ui(e,...x),json:(x)=>Qp(e,x)};let a=n.between[0],t=n.between[1],r=h_(e,{key:`${n.key}/relatedKeys`,default:()=>new Rr,mutable:!0,fromJson:(x)=>Rr.fromJSON(x),toJson:(x)=>x.toJSON()},["join","relations"]);this.core={relatedKeysAtoms:r};let o=({get:x},N)=>x(r,N),u=({set:x},N,I)=>{if(!this.store.molecules.has(ee(N)))this.realm.allocate(n.key,N);x(r,N,(G)=>G.add(I)),x(r,I,(G)=>G.add(N))},l=({set:x},N,I)=>{x(r,N,(G)=>{return G.delete(I),G}),x(r,I,(G)=>{return G.delete(N),G})},s=(x,N,I)=>{let{find:G,get:Y,set:W}=x,$=G(r,N),K=Y($);for(let Z of K){if(I.includes(Z))continue;W(r,Z,(tn)=>{return tn.delete(N),tn})}W($,(Z)=>{return Z.transaction((J)=>{J.clear();for(let tn of I){let on=o(x,tn),Dn=on.has(N);if(this.relations.cardinality==="1:n"){let Ln=[];for(let Q of on){if(Q===N)continue;let O=o(x,Q);if(O.delete(tn),O.size===0)Ln.push(Q)}if(!Dn&&on.size>0)on.clear();for(let Q of Ln){let O=[tn,Q].sort(),k=`"${O[0]}:${O[1]}"`;this.molecules.delete(k)}}if(!Dn)on.add(N);J.add(tn)}return!0}),Z})},c=(x,N,I)=>{let{set:G}=x;G(r,N,(Y)=>{return Y.transaction((W)=>{for(let $ of I)W.add($);return!0}),Y});for(let Y of I)G(r,Y,(W)=>{return W.add(N),W});return!0},f=(x,N,I)=>{let G=o(x,N);return I?G.has(I):G.size>0},b={getRelatedKeys:(x)=>o(this.toolkit,x),addRelation:(x,N)=>{this.store.moleculeJoins.set(x,n.key),this.store.moleculeJoins.set(N,n.key),u(this.toolkit,x,N)},deleteRelation:(x,N)=>{l(this.toolkit,x,N)},replaceRelationsSafely:(x,N)=>{s(this.toolkit,x,N)},replaceRelationsUnsafely:(x,N)=>{c(this.toolkit,x,N)},has:(x,N)=>f(this.toolkit,x,N)},g,m;if(i){m=VD(e,{key:`${n.key}/content`,default:i},["join","content"]);let x=({get:G},Y)=>G(m,Y),N=({set:G},Y,W)=>{G(m,Y,W)};g=Object.assign(b,{getContent:(G)=>{return x(this.toolkit,G)},setContent:(G,Y)=>{N(this.toolkit,G,Y)},deleteContent:(G)=>{this.realm.deallocate(G)}})}else g=b;let h=new Pa(n,{externalStore:g,isAType:n.isAType,isBType:n.isBType,makeContentKey:(...x)=>{let[N,I]=x,G=x.sort(),Y=`${G[0]}:${G[1]}`,W=e.molecules.get(ee(N)),$=e.molecules.get(ee(I));if(!W)this.realm.allocate(n.key,N);if(!$)this.realm.allocate(n.key,I);return this.realm.allocate(N,Y,"all"),this.realm.claim(I,Y),this.store.moleculeJoins.set(Y,n.key),Y}}),D=()=>eb(e,{key:`${n.key}/singleRelatedKey`,get:(x)=>({get:N})=>{let I=N(r,x);for(let G of I)return G;return null}},["join","keys"]),T=()=>{return eb(e,{key:`${n.key}/multipleRelatedKeys`,get:(x)=>({get:N})=>{let I=F6(r,e);return N(I,x).members}},["join","keys"])},v=()=>eb(e,{key:`${n.key}/singleRelatedEntry`,get:(x)=>({get:N})=>{let I=N(r,x);for(let G of I){let Y=h.isAType?.(x)?x:void 0,W=Y===void 0?x:void 0;Y??=G,W??=G;let $=h.makeContentKey(Y,W),K=N(m,$);return[G,K]}return null}},["join","entries"]),S=()=>eb(e,{key:`${n.key}/multipleRelatedEntries`,get:(x)=>({get:N})=>{let I=F6(r,e);return N(I,x).members.map((Y)=>{let W=h.isAType?.(x)?x:void 0,$=W===void 0?x:void 0;W??=Y,$??=Y;let K=h.makeContentKey(W,$),Z=N(m,K);return[Y,Z]})}},["join","entries"]);switch(n.cardinality){case"1:1":{let x=D(),N=`${a}KeyOf${De(t)}`,I=`${t}KeyOf${De(a)}`,G={[N]:x,[I]:x},Y;if(i){let W=v(),$=`${a}EntryOf${De(t)}`,K=`${t}EntryOf${De(a)}`,Z={[$]:W,[K]:W};Y=Object.assign(G,Z)}else Y=G;this.relations=h,this.states=Y;break}case"1:n":{let x=D(),N=T(),I=`${a}KeyOf${De(t)}`,G=`${t}KeysOf${De(a)}`,Y={[I]:x,[G]:N},W;if(i){let $=v(),K=S(),Z=`${a}EntryOf${De(t)}`,J=`${t}EntriesOf${De(a)}`,tn={[Z]:$,[J]:K};W=Object.assign(Y,tn)}else W=Y;this.relations=h,this.states=W;break}case"n:n":{let x=T(),N=`${a}KeysOf${De(t)}`,I=`${t}KeysOf${De(a)}`,G={[N]:x,[I]:x},Y;if(i){let W=S(),$=`${a}EntriesOf${De(t)}`,K=`${t}EntriesOf${De(a)}`,Z={[$]:W,[K]:W};Y=Object.assign(G,Z)}else Y=G;this.relations=h,this.states=Y}}}};function w_(n,i){let e=i.joins.get(n.key);if(e===void 0){let t=Mi.STORE.joins.get(n.key);if(t===void 0)throw new Error(`Join "${n.key}" not found in store "${i.config.name}"`);e=new D_(t.options,t.defaultContent,i),i.joins.set(n.key,e)}return e}function wc(n,i,e){let a=w_(n,e),t=ni(e);if(Ba(t)){let{toolkit:r}=t.transactionMeta;a.transact(r,({relations:o})=>{i(o)})}else i(a.relations)}function Rm(n,i,e){let a=w_(n,e),t;switch(n.cardinality){case"1:1":{let r=`${n.a}KeyOf${De(n.b)}`,o=`${n.b}KeyOf${De(n.a)}`;t={get[r](){let l=a.states[r];return Ui(e,l,i)},get[o](){let l=a.states[o];return Ui(e,l,i)}};let u=`${n.a}EntryOf${De(n.b)}`;if(u in a.states){let l=`${n.b}EntryOf${De(n.a)}`;Object.assign(t,{get[u](){let s=a.states[u];return Ui(e,s,i)},get[l](){let s=a.states[l];return Ui(e,s,i)}})}break}case"1:n":{let r=`${n.a}KeyOf${De(n.b)}`,o=`${n.b}KeysOf${De(n.a)}`;t={get[r](){let l=a.states[r];return Ui(e,l,i)},get[o](){let l=a.states[o];return Ui(e,l,i)}};let u=`${n.a}EntryOf${De(n.b)}`;if(u in a.states){let l=`${n.b}EntriesOf${De(n.a)}`;Object.assign(t,{get[u](){let s=a.states[u];return Ui(e,s,i)},get[l](){let s=a.states[l];return Ui(e,s,i)}})}break}case"n:n":{let r=`${n.a}KeysOf${De(n.b)}`,o=`${n.b}KeysOf${De(n.a)}`;t={get[r](){let l=a.states[r];return Ui(e,l,i)},get[o](){let l=a.states[o];return Ui(e,l,i)}};let u=`${n.a}EntriesOf${De(n.b)}`;if(u in a.states){let l=`${n.b}EntriesOf${De(n.a)}`;Object.assign(t,{get[u](){let s=a.states[u];return Ui(e,s,i)},get[l](){let s=a.states[l];return Ui(e,s,i)}})}}}return t}function K6(n,i){return w_(n,i).core.relatedKeysAtoms}function ran(n){return n.startsWith("\uD83D\uDD0D ")}function lb(n){return Z6(Mi.STORE,n)}function Tm(n){return I6(Mi.STORE,n)}function ZFn(...n){if(n.length===2)return Tr(Mi.STORE,...n);return Tr(Mi.STORE,...n)}function ZD(n,i,e=Mi.STORE){return e.joins.set(n.key,new D_(n,i,e)),{key:n.key,type:"join",a:n.between[0],b:n.between[1],cardinality:n.cardinality}}function j6(n){return K6(n,Mi.STORE)}var v_=(n)=>(i,e,a,t,...r)=>{console[n](`${i} ${e} "${a}" ${t}`,...r)},uan={error:v_("error"),info:v_("info"),warn:v_("warn")},WD=class{logLevel;filter;logger;constructor(n,i,e=uan){this.logLevel=n,this.filter=i,this.logger=e}error=(...n)=>{let i=this.filter?.(...n)??!0;if(this.logLevel!==null){if(i===!0)this.logger.error(...n);else if(i!==!1)this.logger.error(...i)}};info=(...n)=>{let i=this.filter?.(...n)??!0;if(this.logLevel==="info"){if(i===!0)this.logger.info(...n);else if(i!==!1)this.logger.info(...i)}};warn=(...n)=>{let i=this.filter?.(...n)??!0;if(this.logLevel!=="error"&&this.logLevel!==null){if(i===!0)this.logger.warn(...n);else if(i!==!1)this.logger.warn(...i)}}};var lan=class{store;constructor(n=Mi.STORE){this.store=n,P6("root",n)}allocate(n,i,e){return ob(this.store,n,i,e)}fuse(n,i,e){return B6(this.store,n,i,e)}deallocate(n){ub(this.store,n)}claim(n,i,e){return Dm(this.store,n,i,e)}},x6=class{store;realm;constructor(n=Mi.STORE){this.store=n,this.realm=new lan(n)}allocate(n,i,e){ob(this.store,n,i,e)}deallocate(n){ub(this.store,n)}claim(n,i,e){Dm(this.store,n,i,e)}};function QD(n){return z6(Mi.STORE,n)}function _m(n){return E_(Mi.STORE,n)}var iJ=si(KD(),1),eJ=si(oN(),1);var U3=si(M3(),1),{Server:G3,Namespace:vCn,Socket:y3}=U3.default;import{readFileSync as kH}from"fs";import{createServer as mbn}from"http";import{createServer as hbn}from"https";import{resolve as mF}from"path";function z3(n,i){if(n instanceof Promise)throw new Error(i)}function vcn(n,i){let e={},a=[];for(let t in n){let r=n[t]["~standard"].validate(i[t]);if(z3(r,`Validation must be synchronous, but ${t} returned a Promise.`),r.issues){a.push(...r.issues.map((o)=>({...o,message:o.message,path:[t,...o.path??[]]})));continue}e[t]=r.value}if(a.length)return{issues:a};return{value:e}}function qN(n){let i=n.runtimeEnvStrict??n.runtimeEnv??process.env;if(n.emptyStringAsUndefined??!1){for(let[v,S]of Object.entries(i))if(S==="")delete i[v]}if(!!n.skipValidation)return i;let t=typeof n.client==="object"?n.client:{},r=typeof n.server==="object"?n.server:{},o=typeof n.shared==="object"?n.shared:{},u=n.isServer??(typeof window==="undefined"||("Deno"in window)),l=u?{...r,...o,...t}:{...t,...o},s=n.createFinalSchema?.(l,u)["~standard"].validate(i)??vcn(l,i);z3(s,"Validation must be synchronous");let c=n.onValidationError??((v)=>{throw console.error("\u274C Invalid environment variables:",v),new Error("Invalid environment variables")}),f=n.onInvalidAccess??(()=>{throw new Error("\u274C Attempted to access a server-side environment variable on the client")});if(s.issues)return c(s.issues);let b=(v)=>{if(!n.clientPrefix)return!0;return!v.startsWith(n.clientPrefix)&&!(v in o)},g=(v)=>{return u||!b(v)},m=(v)=>{return v==="__esModule"||v==="$$typeof"},h=(n.extends??[]).reduce((v,S)=>{return Object.assign(v,S)},{}),D=Object.assign(h,s.value);return new Proxy(D,{get(v,S){if(typeof S!=="string")return;if(m(S))return;if(!g(S))return f(S);return Reflect.get(v,S)}})}var Cc=(n)=>Array.isArray(n)?n:[n],H3=(n,i)=>{let e=[[],[]];for(let a of n)if(i(a))e[0].push(a);else e[1].push(a);return e},B0=Array,As=(n,i)=>n.includes(i),$3=(n,i=0)=>[...new Array(n)].map((e,a)=>a+i),Ti=(n,i,e)=>{if(n===void 0)return i===void 0?[]:Array.isArray(i)?i:[i];if(e?.prepend)if(Array.isArray(i))n.unshift(...i);else n.unshift(i);else if(Array.isArray(i))n.push(...i);else n.push(i);return n},Ds=(n,i)=>{if(i===void 0||i===null)return n??[];if(n===void 0||n===null)return Cc(i);return n.concat(i)},P3=(...n)=>n.reduce(Ds,[]),_l=(n,i,e)=>{if(n===void 0)return Array.isArray(i)?i:[i];let a=e?.isEqual??((t,r)=>t===r);for(let t of Cc(i))if(!n.some((r)=>a(r,t)))n.push(t);return n},B3=(n,i)=>n.reduce((e,a)=>{let t=a[i];return e[t]=Ti(e[t],a),e},{}),ws=(n,i,e)=>n.length===i.length&&n.every(e?.isEqual?(a,t)=>e.isEqual(a,i[t]):(a,t)=>a===i[t]);var Sr=(n,i)=>pa(n)===i,pa=(n)=>{let i=typeof n;return i==="object"?n===null?"null":"object":i==="function"?"object":i},Fr={boolean:"boolean",null:"null",undefined:"undefined",bigint:"a bigint",number:"a number",object:"an object",string:"a string",symbol:"a symbol"},W3={...Fr,function:"a function"};class Y3 extends Error{}var Oi=(n)=>sd(n,Y3),sd=(n,i=Error)=>{throw new i(n)};class Ym extends Error{name="ParseError"}var an=(n)=>sd(n,Ym),xu=(n)=>` ${n}`;var ri=(n,i)=>{let e={},a=Array.isArray(n),t=!1;for(let[r,o]of Object.entries(n).entries()){let u=a?i(r,o[1]):i(...o,r);t||=typeof u[0]==="number";let l=Array.isArray(u[0])||u.length===0?u:[u];for(let[s,c]of l)if(typeof s==="object")e[s.group]=Ti(e[s.group],c);else e[s]=c}return t?Object.values(e):e};var nS=Object.entries;var da=(n,i)=>(n in i),Ub=(n,i)=>(i in n);class iS{constructor(n){Object.assign(this,n)}}var V3=class{};class Vm extends V3{}var Rcn=(n,i)=>{let e={},a={},t;for(t in n)if(t in i)e[t]=n[t];else a[t]=n[t];return[e,a]};var X3=(n,i)=>Rcn(n,i)[1],Nl=(n)=>Object.keys(n).length===0,cd=(n)=>[...Object.entries(n),...Object.getOwnPropertySymbols(n).map((i)=>[i,n[i]])],k3=(n,i)=>Object.defineProperties(n,Object.getOwnPropertyDescriptors(i)),Z3=(n)=>{let i=Object.keys(n).sort(),e={};for(let a=0;a<i.length;a++)e[i[a]]=n[i[a]];return e};var po=xu("represents an uninitialized value"),Q3=(n)=>Object.values(n).filter((i)=>{if(typeof i==="number")return!0;return typeof n[i]!=="number"});var eS={Array,Boolean,Date,Error,Function,Map,Number,Promise,RegExp,Set,String,WeakMap,WeakSet},aS=globalThis.File??Blob,tS={ArrayBuffer,Blob,File:aS,FormData,Headers,Request,Response,URL},Tcn={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array},pd={...eS,...tS,...Tcn,String,Number,Boolean},Xm=(n)=>{let i=Object.getPrototypeOf(n);while(i?.constructor&&(!da(i.constructor.name,pd)||!(n instanceof pd[i.constructor.name])))i=Object.getPrototypeOf(i);let e=i?.constructor?.name;if(e===void 0||e==="Object")return;return e},km=(n)=>typeof n==="object"&&n!==null?Xm(n)??"object":pa(n);var le=Array.isArray,_cn={Array:"an array",Function:"a function",Date:"a Date",RegExp:"a RegExp",Error:"an Error",Map:"a Map",Set:"a Set",String:"a String object",Number:"a Number object",Boolean:"a Boolean object",Promise:"a Promise",WeakMap:"a WeakMap",WeakSet:"a WeakSet"},Ncn={ArrayBuffer:"an ArrayBuffer instance",Blob:"a Blob instance",File:"a File instance",FormData:"a FormData instance",Headers:"a Headers instance",Request:"a Request instance",Response:"a Response instance",URL:"a URL instance"},Scn={Int8Array:"an Int8Array",Uint8Array:"a Uint8Array",Uint8ClampedArray:"a Uint8ClampedArray",Int16Array:"an Int16Array",Uint16Array:"a Uint16Array",Int32Array:"an Int32Array",Uint32Array:"a Uint32Array",Float32Array:"a Float32Array",Float64Array:"a Float64Array",BigInt64Array:"a BigInt64Array",BigUint64Array:"a BigUint64Array"},K3={..._cn,...Ncn,...Scn},Zm=(n)=>{let i=Object(n).name??null;return i&&da(i,pd)&&pd[i]===n?i:null};var rS=(n,i)=>{let e=n.prototype;while(e!==null){if(e===i.prototype)return!0;e=Object.getPrototypeOf(e)}return!1};var j3=(n)=>J3(n,new Map),J3=(n,i)=>{if(typeof n!=="object"||n===null)return n;if(i?.has(n))return i.get(n);let e=Zm(n.constructor);if(e==="Date")return new Date(n.getTime());if(e&&e!=="Array")return n;let a=Array.isArray(n)?n.slice():Object.create(Object.getPrototypeOf(n)),t=Object.getOwnPropertyDescriptors(n);if(i){i.set(n,a);for(let r in t){let o=t[r];if("get"in o||"set"in o)continue;o.value=J3(o.value,i)}}return Object.defineProperties(a,t),a};var Fcn=(n)=>{let i=po;return()=>i===po?i=n():i},Oc=(n)=>typeof n==="function"&&n.length===0;var q3=class extends Function{constructor(...n){let i=n.slice(0,-1),e=n.at(-1);try{super(...i,e)}catch(a){return Oi(`Encountered an unexpected error while compiling your definition:
301
301
  Message: ${a}
302
302
  Source: (${n.slice(0,-1)}) => {
303
303
  ${n.at(-1)}
@@ -14,4 +14,4 @@ ${C.trace}`:`No previous disposal trace for ${Y} was found.`);return}let _=Q.mol
14
14
  ${M.trace}`:`No previous disposal trace for ${_} was found.`),Y}let q=h(Z),H=X.molecules.get(q);if(!H){let M=Q.disposalTraces.buffer.find((C)=>C?.key===q);return Q.logger.error("\u274C","molecule",Y,"claim failed:",`Could not allocate to ${q} in store "${Q.config.name}".`,M?`
15
15
  ${q} was most recently disposed
16
16
  ${M.trace}`:`No previous disposal trace for ${q} was found.`),Y}let N=Q.moleculeGraph.getRelationEntries({downstreamMoleculeKey:W.stringKey}).filter(([,{source:M}])=>M!==_).map(([M])=>v(M));if(G)X.moleculeGraph.delete(_);X.moleculeGraph.set({upstreamMoleculeKey:H.stringKey,downstreamMoleculeKey:W.stringKey},{source:H.stringKey});let z={type:"molecule_transfer",key:W.key,from:N,to:[H.key]};if(x(X)&&X.transactionMeta.phase==="building")X.transactionMeta.update.updates.push(z);return Y}function tQ(Q,Z,Y){switch(Z){case"newValue":{BQ(Q,Y);break}case"oldValue":{a(Y,Q.token);break}}}function eQ(Q,Z,Y){switch(Z){case"newValue":{a(Y,Q.token);break}case"oldValue":{if(BQ(Q,Y),Q.subType==="atom")Y.valueMap.set(Q.token.key,Q.value);break}}}function BQ(Q,Z){let{family:Y}=Q.token;if(Y){let G=Z.families.get(Y.key);if(G)$(Z,G,v(Y.subKey))}}function QZ(Q,Z,Y){switch(Z){case"newValue":o(Y,Q.provenance,Q.key);break;case"oldValue":t(Y,Q.key);break}}function ZZ(Q,Z,Y){switch(Z){case"newValue":t(Y,Q.key);break;case"oldValue":{let G=Q.provenance.map(v);o(Y,G,Q.key);for(let[_,X]of Q.values){let W=Y.families.get(_);if(W){$(Y,W,Q.key);let q=`${_}(${h(Q.key)})`;Y.valueMap.set(q,X)}}}break}}function YZ(Q,Z,Y){switch(Z){case"newValue":{let G=Q.to.length===1?Q.to[0]:Q.to;q0(Y,G,Q.key,"exclusive")}break;case"oldValue":{let G=Q.from.length===1?Q.from[0]:Q.from;q0(Y,G,Q.key,"exclusive")}break}}function jQ(Q,Z,Y){let G=Q==="newValue"?Z.updates:[...Z.updates].reverse();for(let _ of G)switch(_.type){case"atom_update":case"selector_update":sQ(Q,_,Y);break;case"state_creation":tQ(_,Q,Y);break;case"state_disposal":eQ(_,Q,Y);break;case"molecule_creation":QZ(_,Q,Y);break;case"molecule_disposal":ZZ(_,Q,Y);break;case"molecule_transfer":YZ(_,Q,Y);break;case"transaction_update":jQ(Q,_,Y);break}}function VQ(Q,Z){return Q.transactionMeta.actionContinuities.getRelatedKey(Z)}function GZ(Q,Z){return Q.transactionMeta.epoch.get(Z)}function _Z(Q,Z){if(!y(Q))return;let G=VQ(Q,Z);if(G===void 0)return;return GZ(Q,G)}function XZ(Q,Z,Y){if(!y(Q))return;let _=VQ(Q,Z);if(_!==void 0)Q.transactionMeta.epoch.set(_,Y)}var WZ=(Q,Z)=>{let Y=O(Z),{parent:G}=Y;if(G===null||!x(Y)||Y.transactionMeta?.phase!=="building"){Z.logger.warn("\uD83D\uDC1E","transaction","???","applyTransaction called outside of a transaction. This is probably a bug in AtomIO.");return}Y.transactionMeta.phase="applying",Y.transactionMeta.update.output=Q,G.child=null,G.on.transactionApplying.next(Y.transactionMeta);let{updates:_}=Y.transactionMeta.update;if(Z.logger.info("\uD83D\uDEC4","transaction",Y.transactionMeta.update.key,`Applying transaction with ${_.length} updates:`,_),jQ("newValue",Y.transactionMeta.update,G),y(G))XZ(G,Y.transactionMeta.update.key,Y.transactionMeta.update.epoch),A(Z,{key:Y.transactionMeta.update.key,type:"transaction"})?.subject.next(Y.transactionMeta.update),Z.logger.info("\uD83D\uDEEC","transaction",Y.transactionMeta.update.key,"Finished applying transaction.");else if(x(G))G.transactionMeta.update.updates.push(Y.transactionMeta.update);G.on.transactionApplying.next(null)};function qZ(Q){return{store:Q}}function k(Q,...Z){let Y,G,_;if(Z.length===1)Y=Z[0];else G=Z[0],_=Z[1],Y=$(Q,G,_);if("counterfeit"in Y&&"family"in Y){G=Q.families.get(Y.family.key);let X=Y.family.subKey,W=Q.disposalTraces.buffer.find((q)=>q?.key===X);switch(Q.logger.error("\u274C",Y.type,Y.key,`could not be retrieved because it was not found in the store "${Q.config.name}".`,W?`This state was previously disposed:
17
- ${W.trace}`:"No previous disposal trace was found."),G.type){case"atom_family":case"mutable_atom_family":return Q.defaults.get(G.key);case"readonly_pure_selector_family":case"writable_pure_selector_family":case"readonly_held_selector_family":case"writable_held_selector_family":{if(Q.defaults.has(G.key))return Q.defaults.get(Y.family.key);let q=A(Q,G).default(X);return Q.defaults.set(G.key,q),q}}}return O0(Q,A(Q,Y))}var c=class extends Map{deleted=new Set;source;constructor(Q){super();this.source=Q}get(Q){if(super.has(Q))return super.get(Q);if(!this.deleted.has(Q)&&this.source.has(Q))return this.source.get(Q);return}set(Q,Z){return this.deleted.delete(Q),super.set(Q,Z)}hasOwn(Q){return super.has(Q)}has(Q){return!this.deleted.has(Q)&&(super.has(Q)||this.source.has(Q))}delete(Q){return this.deleted.add(Q),super.delete(Q)}},HZ=(Q,Z,Y,G)=>{let _=O(Q),X={parent:_,child:null,on:_.on,loggers:_.loggers,logger:_.logger,config:_.config,atoms:new c(_.atoms),atomsThatAreDefault:new Set(_.atomsThatAreDefault),families:new c(_.families),joins:new c(_.joins),operation:{open:!1},readonlySelectors:new c(_.readonlySelectors),timelines:new c(_.timelines),timelineTopics:new S(_.timelineTopics.toJSON()),trackers:new Map,transactions:new c(_.transactions),selectorAtoms:new S(_.selectorAtoms.toJSON()),selectorGraph:new S(_.selectorGraph.toJSON(),{makeContentKey:(...N)=>N.sort().join(":")}),writableSelectors:new c(_.writableSelectors),valueMap:new c(_.valueMap),defaults:_.defaults,disposalTraces:Q.disposalTraces.copy(),molecules:new c(_.molecules),moleculeGraph:new S(_.moleculeGraph.toJSON(),{makeContentKey:_.moleculeGraph.makeContentKey}),moleculeData:new S(_.moleculeData.toJSON(),{makeContentKey:_.moleculeData.makeContentKey}),moleculeJoins:new S(_.moleculeJoins.toJSON(),{makeContentKey:_.moleculeJoins.makeContentKey}),miscResources:new c(_.miscResources)},W=_Z(Q,Z),q={phase:"building",update:{type:"transaction_update",key:Z,id:G,epoch:W===void 0?NaN:W+1,updates:[],params:Y,output:void 0},toolkit:{get:(...N)=>k(H,...N),set:(...N)=>{g(H,...N)},reset:(...N)=>{s(H,...N)},run:(N,z=e0())=>I0(H,N,z),find:(...N)=>$(Q,...N),json:(N)=>n(H,N),dispose:(...N)=>{a(H,...N)},env:()=>qZ(H)}},H=Object.assign(X,{transactionMeta:q});return _.child=H,Q.logger.info("\uD83D\uDEEB","transaction",Z,"Building transaction with params:",Y),H};function U0(Q,Z){let{key:Y}=Z,G=Q.transactions.has(Y),_={key:Y,type:"transaction",run:(q,H)=>{let N=HZ(Q,Y,q,H);try{let z=O(Q),{toolkit:L}=N.transactionMeta,M=Z.do(L,...q);return WZ(M,z),M}catch(z){throw mQ(X),Q.logger.warn("\uD83D\uDCA5","transaction",Y,"caught:",z),z}},install:(q)=>U0(q,Z),subject:new I},X=O(Q);X.transactions.set(Y,_);let W=Q0(_);if(!G)Q.on.transactionCreation.next(W);return W}var _Q=class{parent=null;child=null;valueMap=new Map;defaults=new Map;atoms=new Map;writableSelectors=new Map;readonlySelectors=new Map;atomsThatAreDefault=new Set;selectorAtoms=new S({between:["selectorKey","atomKey"],cardinality:"n:n"});selectorGraph=new S({between:["upstreamSelectorKey","downstreamSelectorKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});trackers=new Map;families=new Map;joins=new Map;transactions=new Map;transactionMeta={epoch:new Map,actionContinuities:new S({between:["continuity","action"],cardinality:"1:n"})};timelines=new Map;timelineTopics=new S({between:["timelineKey","topicKey"],cardinality:"1:n"});disposalTraces=new fQ(100);molecules=new Map;moleculeJoins=new S({between:["moleculeKey","joinKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});moleculeGraph=new S({between:["upstreamMoleculeKey","downstreamMoleculeKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});moleculeData=new S({between:["moleculeKey","stateFamilyKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});miscResources=new Map;on={atomCreation:new I,atomDisposal:new I,selectorCreation:new I,selectorDisposal:new I,timelineCreation:new I,transactionCreation:new I,transactionApplying:new dQ(null),operationClose:new I,moleculeCreation:new I,moleculeDisposal:new I};operation={open:!1};config={name:"IMPLICIT_STORE",lifespan:"ephemeral"};loggers=[new o0("warn",(Q,Z,Y)=>!JZ(Y))];logger={error:(...Q)=>{for(let Z of this.loggers)Z.error(...Q)},info:(...Q)=>{for(let Z of this.loggers)Z.info(...Q)},warn:(...Q)=>{for(let Z of this.loggers)Z.warn(...Q)}};constructor(Q,Z=null){if(this.config={...Z?.config,...Q},Z!==null){if(this.valueMap=new Map(Z?.valueMap),this.operation={...Z?.operation},y(Z))this.transactionMeta={epoch:new Map(Z?.transactionMeta.epoch),actionContinuities:new S(Z?.transactionMeta.actionContinuities.toJSON())};for(let[,G]of Z.families){if(G.internalRoles?.includes("mutable")||G.internalRoles?.includes("join"))continue;G.install(this)}let Y=new Set;for(let[,G]of Z.atoms){if(Y.has(G.key))continue;if(G.install(this),G.type==="mutable_atom"){let _=n(Z,G),X=u0(G);Y.add(_.key),Y.add(X.key)}}for(let[,G]of Z.readonlySelectors)G.install(this);for(let[,G]of Z.writableSelectors){if(Y.has(G.key))continue;G.install(this)}for(let[,G]of Z.transactions)G.install(this);for(let[,G]of Z.timelines)G.install(this)}}},w={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new _Q({name:"IMPLICIT_STORE",lifespan:"ephemeral"}),globalThis.ATOM_IO_IMPLICIT_STORE}};function A(Q,Z){let Y,G=Q;while(G!==null){switch(Z.type){case"atom":case"mutable_atom":Y=G.atoms.get(Z.key);break;case"writable_pure_selector":case"writable_held_selector":Y=G.writableSelectors.get(Z.key);break;case"readonly_pure_selector":case"readonly_held_selector":Y=G.readonlySelectors.get(Z.key);break;case"atom_family":case"mutable_atom_family":case"writable_pure_selector_family":case"readonly_pure_selector_family":case"writable_held_selector_family":case"readonly_held_selector_family":Y=G.families.get(Z.key);break;case"timeline":Y=G.timelines.get(Z.key);break;case"transaction":Y=G.transactions.get(Z.key);break}if(Y)return Y;G=G.child}throw new v0(Z,Q)}var NZ=(Q,Z)=>{let Y=O(Q);if(Y.operation.open)return Y.operation.prev.get(Z.key);return Y.valueMap.get(Z.key)};var NQ=(Q,Z)=>{let Y=O(Q);return JQ(Z,Q).map((_)=>{return _.subject.subscribe(`${Z.type}:${Z.key}`,(X)=>{Q.logger.info("\uD83D\uDCE2",Z.type,Z.key,"root",_.key,"went",X.oldValue,"->",X.newValue);let W=NZ(Y,Z),q=O0(Y,Z);Q.logger.info("\u2728",Z.type,Z.key,"went",W,"->",q),Z.subject.next({newValue:q,oldValue:W})})})};function N0(Q,Z,Y,G){function _(L){if(Q.operation.open){let M=Q.on.operationClose.subscribe(`state subscription ${Y}`,()=>{M(),G(L)})}else G(L)}let X=A(Q,Z);Q.logger.info("\uD83D\uDC40",X.type,X.key,`Adding subscription "${Y}"`);let W=X.type==="writable_pure_selector"||X.type==="readonly_pure_selector",q=null,H=_;if(W)q=NQ(Q,X),H=(L)=>{if(q)q.length=0,q.push(...NQ(Q,X));_(L)};let N=X.subject.subscribe(Y,H);return()=>{if(Q.logger.info("\uD83D\uDE48",X.type,X.key,`Removing subscription "${Y}"`),N(),q)for(let L of q)L()}}var zZ=(Q,Z,Y,G)=>{let _=A(Q,Z);Q.logger.info("\uD83D\uDC40","timeline",Z.key,`Adding subscription "${Y}"`);let X=_.subject.subscribe(Y,G);return()=>{Q.logger.info("\uD83D\uDE48","timeline",Z.key,`Removing subscription "${Y}" from timeline`),X()}};var m0=class{initializeState(Q,Z){let Y=`*${Q.key}`;Z.atoms.delete(Y),Z.valueMap.delete(Y);let G=Q.family?{key:`*${Q.family.key}`,subKey:Q.family.subKey}:void 0,_=V0(Z,{key:Y,default:null},G);if(Z.parent?.valueMap.has(Y)){let X=Z.parent.valueMap.get(Y);Z.valueMap.set(Y,X)}return _}unsubscribeFromInnerValue;unsubscribeFromState;observeCore(Q,Z,Y){let G=`tracker:${Y.config.name}:${x(Y)?Y.transactionMeta.update.key:"main"}:${Q.key}`,_=k(Y,Q);this.unsubscribeFromInnerValue=_.subscribe(G,(X)=>{g(Y,Z,X)}),this.unsubscribeFromState=N0(Y,Q,G,(X)=>{if(X.newValue!==X.oldValue)this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=X.newValue.subscribe(G,(W)=>{g(Y,Z,W)})})}updateCore(Q,Z,Y){let G=`tracker:${Y.config.name}:${x(Y)?Y.transactionMeta.update.key:"main"}:${Q.key}`;N0(Y,Z,G,({newValue:_,oldValue:X})=>{let W=Y.timelineTopics.getRelatedKey(Z.key);if(W){if(Y.timelines.get(W)?.timeTraveling){let N=zZ(Y,{key:W,type:"timeline"},G,(z)=>{N(),g(Y,Q,(L)=>{if(z==="redo"&&_)L.do(_);else if(z==="undo"&&X)L.undo(X);return L})});return}}let q=Y.on.operationClose.subscribe(G,()=>{q();let H=k(Y,Q),N=_===null?-1:H.getUpdateNumber(_),z=N-H.cacheUpdateNumber;if(_&&z===1)g(Y,Q,(L)=>(L.do(_),L));else Y.logger.info("\u274C","mutable_atom",Q.key,`could not be updated. Expected update number ${H.cacheUpdateNumber+1}, but got ${N}`)})})}mutableState;latestUpdateState;[Symbol.dispose];constructor(Q,Z){this.mutableState=Q;let Y=O(Z);this.latestUpdateState=this.initializeState(Q,Y),this.observeCore(Q,this.latestUpdateState,Y),this.updateCore(Q,this.latestUpdateState,Y),Y.trackers.set(Q.key,this),this[Symbol.dispose]=()=>{this.unsubscribeFromInnerValue(),this.unsubscribeFromState(),Y.trackers.delete(Q.key)}}};function k0(Q,Z,Y){Q.logger.info("\uD83D\uDD28","atom",Z.key,`creating in store "${Q.config.name}"`);let G=O(Q),{key:_,default:X}=Z,W=G.atoms.get(_),q="mutable_atom";if(W&&W.type===q)return Q.logger.error("\u274C",q,_,"Tried to create atom, but it already exists in the store."),Q0(W);let H=new I,N={...Z,type:q,install:(M)=>{return M.logger.info("\uD83D\uDEE0\uFE0F","atom",_,`installing in store "${M.config.name}"`),k0(M,Z,Y)},subject:H};if(Y)N.family=Y;let z=X();G.atoms.set(N.key,N),u(G,_,z,H);let L=Q0(N);if(Z.effects){let M=0,C=[];for(let E of Z.effects){let B=E({resetSelf:()=>{s(Q,L)},setSelf:(K)=>{g(Q,L,K)},onSet:(K)=>N0(Q,L,`effect[${M}]`,K)});if(B)C.push(B);++M}N.cleanup=()=>{for(let E of C)E()}}if(new m0(L,Q),!Y)r0(L,Z,Q);return L}var DZ=class{trackers=new Map;latestUpdateAtoms;mutableAtoms;constructor(Q,Z){let Y=B0(Z,{key:`*${Q.key}`,default:null},["mutable","updates"]);this.latestUpdateAtoms=A(Z,Y),this.mutableAtoms=Q,this.mutableAtoms.subject.subscribe(`store=${Z.config.name}::tracker-atom-family`,(G)=>{let{type:_,token:X}=G;if(X.family){let W=v(X.family.subKey);switch(_){case"state_creation":this.trackers.set(W,new m0(X,Z));break;case"state_disposal":{let q=this.trackers.get(W);if(q)q[Symbol.dispose](),this.trackers.delete(W)}break}}})}};function c0(Q,Z,Y){let G={key:Z.key,type:"mutable_atom_family"},_=Q.families.get(Z.key);if(_)Q.logger.error("\u2757","mutable_atom_family",Z.key,`Overwriting an existing ${i(_)} "${_.key}" in store "${Q.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let X=new I,q=Object.assign((H)=>{let N=h(H),z={key:Z.key,subKey:N},L=`${Z.key}(${N})`,M=O(Q),C={key:L,default:()=>Z.default(H),toJson:Z.toJson,fromJson:Z.fromJson,mutable:!0};if(Z.effects)C.effects=Z.effects(H);let E=k0(M,C,z);return X.next({type:"state_creation",token:E}),E},G,{subject:X,install:(H)=>c0(H,Z),toJson:Z.toJson,fromJson:Z.fromJson,internalRoles:Y});return Q.families.set(Z.key,q),a0(Q,q,Z),new DZ(q,Q),G}var zQ=(Q,Z)=>{let Y=O(Z),G=`${Q.key}:JSON`;return Y.families.get(G)},n=(Q,Z)=>{if(Z.family){let G=O(Q),X={key:`${Z.family.key}:JSON`,type:"writable_pure_selector_family"},W=A(G,X),q=JSON.parse(Z.family.subKey);return $(Q,W,q)}return{type:"writable_pure_selector",key:`${Z.key}:JSON`}};var u0=(Q)=>{let Y={type:"atom",key:`*${Q.key}`};if(Q.family)Y.family={key:`*${Q.family.key}`,subKey:Q.family.subKey};return Y};function LZ(Q){return typeof Q==="object"&&Q!==null&&"do"in Q&&"undo"in Q&&"subscribe"in Q}function T0(Q,Z,Y){let G=Y.valueMap.get(Z.key),_=Q.valueMap.get(Z.key);if(G!==_)return _;if(G===void 0)return Z.default();Y.logger.info("\uD83D\uDCC3","atom",Z.key,"copying");let X=Z.toJson(G),W=Z.fromJson(X);return Q.valueMap.set(Z.key,W),new m0(Z,Y),W}function u(Q,Z,Y,G){let _=Q.valueMap.get(Z);if(_ instanceof w0){let X=_;if(Y instanceof Promise)return X;return Q.valueMap.set(Z,Y),Y}if(Y instanceof Promise){let X=new w0(Y);return Q.valueMap.set(Z,X),X.then((W)=>{if(Q.valueMap.get(Z)===X){u(Q,Z,W,G);let H=Q.atoms.get(Z);if(H)C0(Q,H),R0(Q,H),P0(Q);else{let N=Q.writableSelectors.get(Z)??Q.readonlySelectors.get(Z);if(N)C0(Q,N),cQ(Q,N),P0(Q)}G.next({newValue:W,oldValue:X})}}).catch((W)=>{Q.logger.error("\uD83D\uDCA5","state",Z,"rejected:",W)}),X}return Q.valueMap.set(Z,Y),Y}var MZ=(Q,Z)=>{let Y=Z.valueMap.get(Q.key);if(Q.type==="mutable_atom"&&x(Z)){let{parent:G}=Z;Y=T0(Z,Q,G)}return Y},$Q=(Q,Z)=>{let Y=Z.valueMap.get(Q);if(Y instanceof w0){let G=Y,_=Z.writableSelectors.get(Q)??Z.readonlySelectors.get(Q);if(_)G.use(_.get());return}if(Z.operation.open)Z.operation.prev.set(Q,Y);Z.valueMap.delete(Q),Z.logger.info("\uD83D\uDDD1","state",Q,"evicted")};function V0(Q,Z,Y){let{key:_,default:X}=Z;Q.logger.info("\uD83D\uDD28","atom",_,`creating in store "${Q.config.name}"`);let W=O(Q),q=W.atoms.get(_);if(q&&q.type==="atom")return Q.logger.error("\u274C","atom",_,"Tried to create atom, but it already exists in the store."),Q0(q);let H=new I,N={...Z,type:"atom",install:(M)=>{return M.logger.info("\uD83D\uDEE0\uFE0F","atom",_,`installing in store "${M.config.name}"`),V0(M,Z,Y)},subject:H};if(Y)N.family=Y;let z=X;if(X instanceof Function)z=X();W.atoms.set(_,N),u(W,_,z,H);let L=Q0(N);if(Z.effects){let M=0,C=[];for(let E of Z.effects){let B=E({resetSelf:()=>{s(Q,L)},setSelf:(K)=>{g(Q,L,K)},onSet:(K)=>N0(Q,L,`effect[${M}]`,K)});if(B)C.push(B);++M}N.cleanup=()=>{for(let E of C)E()}}return L}function XQ(Q,Z){if("mutable"in Z){let _=k0(Q,Z,void 0);return Q.on.atomCreation.next(_),_}let G=V0(Q,Z,void 0);return Q.on.atomCreation.next(G),G}function FQ(Q,Z){let Y=O(Q),{key:G,family:_}=Z,X=A(Y,Z);if(!_)Q.logger.error("\u274C","atom",G,"Standalone atoms cannot be disposed.");else{X.cleanup?.();let W=Q.valueMap.get(X.key),q=A(Q,{key:_.key,type:"atom_family"}),H={type:"state_disposal",subType:"atom",token:Z,value:W};q.subject.next(H);let N=x(Y);if(Y.atoms.delete(G),Y.valueMap.delete(G),Y.selectorAtoms.delete(G),Y.atomsThatAreDefault.delete(G),Q.timelineTopics.delete(G),Z.type==="mutable_atom"){let z=u0(Z);FQ(Q,z),Q.trackers.delete(G)}if(Q.logger.info("\uD83D\uDD25","atom",G,"deleted"),N&&Y.transactionMeta.phase==="building"){let z=Y.transactionMeta.update.updates.at(-1);if(!(z?.type==="molecule_disposal"&&z.values.some(([C])=>C===X.family?.key)))Y.transactionMeta.update.updates.push(H)}else Q.on.atomDisposal.next(Z)}}var A0=class{toolkit;options;defaultContent;molecules=new Map;relations;states;core;transact(Q,Z){let Y=this.toolkit;this.toolkit=Q,Z(this),this.toolkit=Y}store;realm;[Symbol.dispose](){}constructor(Q,Z,Y=w.STORE){this.store=Y,this.realm=new t0(Y),this.options=Q,this.defaultContent=Z,this.store.miscResources.set(`join:${Q.key}`,this),this.realm.allocate("root",Q.key),this.toolkit={get:(...D)=>k(Y,...D),set:(...D)=>{g(Y,...D)},find:(...D)=>$(Y,...D),json:(D)=>n(Y,D)};let G=Q.between[0],_=Q.between[1],X=c0(Y,{key:`${Q.key}/relatedKeys`,default:()=>new f,mutable:!0,fromJson:(D)=>f.fromJSON(D),toJson:(D)=>D.toJSON()},["join","relations"]);this.core={relatedKeysAtoms:X};let W=({get:D},J)=>D(X,J),q=({set:D},J,j)=>{if(!this.store.molecules.has(h(J)))this.realm.allocate(Q.key,J);D(X,J,(P)=>P.add(j)),D(X,j,(P)=>P.add(J))},H=({set:D},J,j)=>{D(X,J,(P)=>{return P.delete(j),P}),D(X,j,(P)=>{return P.delete(J),P})},N=(D,J,j)=>{let{find:P,get:V,set:F}=D,R=P(X,J),m=V(R);for(let b of m){if(j.includes(b))continue;F(X,b,(p)=>{return p.delete(J),p})}F(R,(b)=>{return b.transaction((Z0)=>{Z0.clear();for(let p of j){let Y0=W(D,p),i0=Y0.has(J);if(this.relations.cardinality==="1:n"){let n0=[];for(let G0 of Y0){if(G0===J)continue;let _0=W(D,G0);if(_0.delete(p),_0.size===0)n0.push(G0)}if(!i0&&Y0.size>0)Y0.clear();for(let G0 of n0){let _0=[p,G0].sort(),UQ=`"${_0[0]}:${_0[1]}"`;this.molecules.delete(UQ)}}if(!i0)Y0.add(J);Z0.add(p)}return!0}),b})},z=(D,J,j)=>{let{set:P}=D;P(X,J,(V)=>{return V.transaction((F)=>{for(let R of j)F.add(R);return!0}),V});for(let V of j)P(X,V,(F)=>{return F.add(J),F});return!0},L=(D,J,j)=>{let P=W(D,J);return j?P.has(j):P.size>0},M={getRelatedKeys:(D)=>W(this.toolkit,D),addRelation:(D,J)=>{this.store.moleculeJoins.set(D,Q.key),this.store.moleculeJoins.set(J,Q.key),q(this.toolkit,D,J)},deleteRelation:(D,J)=>{H(this.toolkit,D,J)},replaceRelationsSafely:(D,J)=>{N(this.toolkit,D,J)},replaceRelationsUnsafely:(D,J)=>{z(this.toolkit,D,J)},has:(D,J)=>L(this.toolkit,D,J)},C,E;if(Z){E=B0(Y,{key:`${Q.key}/content`,default:Z},["join","content"]);let D=({get:P},V)=>P(E,V),J=({set:P},V,F)=>{P(E,V,F)};C=Object.assign(M,{getContent:(P)=>{return D(this.toolkit,P)},setContent:(P,V)=>{J(this.toolkit,P,V)},deleteContent:(P)=>{this.realm.deallocate(P)}})}else C=M;let B=new S(Q,{externalStore:C,isAType:Q.isAType,isBType:Q.isBType,makeContentKey:(...D)=>{let[J,j]=D,P=D.sort(),V=`${P[0]}:${P[1]}`,F=Y.molecules.get(h(J)),R=Y.molecules.get(h(j));if(!F)this.realm.allocate(Q.key,J);if(!R)this.realm.allocate(Q.key,j);return this.realm.allocate(J,V,"all"),this.realm.claim(j,V),this.store.moleculeJoins.set(V,Q.key),V}}),K=()=>e(Y,{key:`${Q.key}/singleRelatedKey`,get:(D)=>({get:J})=>{let j=J(X,D);for(let P of j)return P;return null}},["join","keys"]),l=()=>{return e(Y,{key:`${Q.key}/multipleRelatedKeys`,get:(D)=>({get:J})=>{let j=zQ(X,Y);return J(j,D).members}},["join","keys"])},d=()=>e(Y,{key:`${Q.key}/singleRelatedEntry`,get:(D)=>({get:J})=>{let j=J(X,D);for(let P of j){let V=B.isAType?.(D)?D:void 0,F=V===void 0?D:void 0;V??=P,F??=P;let R=B.makeContentKey(V,F),m=J(E,R);return[P,m]}return null}},["join","entries"]),T=()=>e(Y,{key:`${Q.key}/multipleRelatedEntries`,get:(D)=>({get:J})=>{let j=zQ(X,Y);return J(j,D).members.map((V)=>{let F=B.isAType?.(D)?D:void 0,R=F===void 0?D:void 0;F??=V,R??=V;let m=B.makeContentKey(F,R),b=J(E,m);return[V,b]})}},["join","entries"]);switch(Q.cardinality){case"1:1":{let D=K(),J=`${G}KeyOf${U(_)}`,j=`${_}KeyOf${U(G)}`,P={[J]:D,[j]:D},V;if(Z){let F=d(),R=`${G}EntryOf${U(_)}`,m=`${_}EntryOf${U(G)}`,b={[R]:F,[m]:F};V=Object.assign(P,b)}else V=P;this.relations=B,this.states=V;break}case"1:n":{let D=K(),J=l(),j=`${G}KeyOf${U(_)}`,P=`${_}KeysOf${U(G)}`,V={[j]:D,[P]:J},F;if(Z){let R=d(),m=T(),b=`${G}EntryOf${U(_)}`,Z0=`${_}EntriesOf${U(G)}`,p={[b]:R,[Z0]:m};F=Object.assign(V,p)}else F=V;this.relations=B,this.states=F;break}case"n:n":{let D=l(),J=`${G}KeysOf${U(_)}`,j=`${_}KeysOf${U(G)}`,P={[J]:D,[j]:D},V;if(Z){let F=T(),R=`${G}EntriesOf${U(_)}`,m=`${_}EntriesOf${U(G)}`,b={[R]:F,[m]:F};V=Object.assign(P,b)}else V=P;this.relations=B,this.states=V}}}};function p0(Q,Z){let Y=Z.joins.get(Q.key);if(Y===void 0){let _=w.STORE.joins.get(Q.key);if(_===void 0)throw new Error(`Join "${Q.key}" not found in store "${Z.config.name}"`);Y=new A0(_.options,_.defaultContent,Z),Z.joins.set(Q.key,Y)}return Y}function H0(Q,Z,Y){let G=p0(Q,Y),_=O(Y);if(x(_)){let{toolkit:X}=_.transactionMeta;G.transact(X,({relations:W})=>{Z(W)})}else Z(G.relations)}function WQ(Q,Z,Y){let G=p0(Q,Y),_;switch(Q.cardinality){case"1:1":{let X=`${Q.a}KeyOf${U(Q.b)}`,W=`${Q.b}KeyOf${U(Q.a)}`;_={get[X](){let H=G.states[X];return $(Y,H,Z)},get[W](){let H=G.states[W];return $(Y,H,Z)}};let q=`${Q.a}EntryOf${U(Q.b)}`;if(q in G.states){let H=`${Q.b}EntryOf${U(Q.a)}`;Object.assign(_,{get[q](){let N=G.states[q];return $(Y,N,Z)},get[H](){let N=G.states[H];return $(Y,N,Z)}})}break}case"1:n":{let X=`${Q.a}KeyOf${U(Q.b)}`,W=`${Q.b}KeysOf${U(Q.a)}`;_={get[X](){let H=G.states[X];return $(Y,H,Z)},get[W](){let H=G.states[W];return $(Y,H,Z)}};let q=`${Q.a}EntryOf${U(Q.b)}`;if(q in G.states){let H=`${Q.b}EntriesOf${U(Q.a)}`;Object.assign(_,{get[q](){let N=G.states[q];return $(Y,N,Z)},get[H](){let N=G.states[H];return $(Y,N,Z)}})}break}case"n:n":{let X=`${Q.a}KeysOf${U(Q.b)}`,W=`${Q.b}KeysOf${U(Q.a)}`;_={get[X](){let H=G.states[X];return $(Y,H,Z)},get[W](){let H=G.states[W];return $(Y,H,Z)}};let q=`${Q.a}EntriesOf${U(Q.b)}`;if(q in G.states){let H=`${Q.b}EntriesOf${U(Q.a)}`;Object.assign(_,{get[q](){let N=G.states[q];return $(Y,N,Z)},get[H](){let N=G.states[H];return $(Y,N,Z)}})}}}return _}function qQ(Q,Z){return p0(Q,Z).core.relatedKeysAtoms}function JZ(Q){return Q.startsWith("\uD83D\uDD0D ")}var EZ=class extends Map{set(Q,Z){if(this.has(Q))return console.warn("Tried to set a key that already exists in an InvariantMap",{key:Q,value:Z}),this;return super.set(Q,Z)}clear(){throw new Error("Cannot clear an InvariantMap")}},G1=class Q{type="continuity";globals=[];actions=[];perspectives=[];key;constructor(Z){this.key=Z}static existing=new EZ;static create(Z,Y){let G=new Q(Z),{type:_,globals:X,actions:W,perspectives:q}=Y(G),H={type:_,key:Z,globals:X,actions:W,perspectives:q};return Q.existing.set(Z,H),H}add(...Z){switch(Z[0].type){case"atom":case"mutable_atom":this.globals.push(...Z);break;case"transaction":this.actions.push(...Z);break;case"atom_family":case"mutable_atom_family":{let[G,_]=Z;this.perspectives.push({type:"realtime_perspective",resourceAtoms:G,viewAtoms:_})}break}return this}};var _1=r({key:"usersInRoomIndex",mutable:!0,default:()=>new f,toJson:(Q)=>Q.toJSON(),fromJson:(Q)=>f.fromJSON(Q)}),y0=r({key:"roomIndex",default:()=>new f,mutable:!0,toJson:(Q)=>Q.toJSON(),fromJson:(Q)=>f.fromJSON(Q)}),CZ={enteredAtEpoch:0},D0=J0({key:"usersInRooms",between:["room","user"],cardinality:"1:n",isAType:(Q)=>typeof Q==="string",isBType:(Q)=>typeof Q==="string"},CZ),X1=E0({key:"usersInMyRoomView",get:(Q)=>({find:Z})=>{let Y=s0(D0);return[Z(Y,Q)]}});import{spawn as PZ}from"child_process";var l0=class{listeners;globalListeners;handleEvent(Q,...Z){for(let G of this.globalListeners)G(Q,...Z);let Y=this.listeners.get(Q);if(Y)for(let G of Y)G(...Z)}id="no_id_retrieved";emit;constructor(Q){this.emit=Q,this.listeners=new Map,this.globalListeners=new Set}on(Q,Z){let Y=this.listeners.get(Q);if(Y)Y.add(Z);else this.listeners.set(Q,new Set([Z]));return this}onAny(Q){return this.globalListeners.add(Q),this}off(Q,Z){let Y=this.listeners.get(Q);if(Y)if(Z)Y.delete(Z);else this.listeners.delete(Q);return this}offAny(Q){return this.globalListeners.delete(Q),this}},OZ=class extends l0{incompleteData="";unprocessedEvents=[];incompleteLog="";unprocessedLogs=[];id="#####";process;key;logger;handleLog(Q){if(Array.isArray(Q)){let[Z,...Y]=Q;switch(Z){case"i":this.logger.info(...Y);break;case"w":this.logger.warn(...Y);break;case"e":this.logger.error(...Y);break;default:return}}}constructor(Q,Z,Y){super((G,..._)=>{let X=JSON.stringify([G,..._])+"\x03",W=(q)=>{if(q.code==="EPIPE")console.error("EPIPE error during write",this.process.stdin);this.process.stdin.removeListener("error",W)};return this.process.stdin.once("error",W),this.process.stdin.write(X),this});if(this.process=Q,this.key=Z,this.logger=Y??{info:(...G)=>{console.info(this.id,this.key,...G)},warn:(...G)=>{console.warn(this.id,this.key,...G)},error:(...G)=>{console.error(this.id,this.key,...G)}},this.process.stdout.on("data",(G)=>{let _=G.toString();if(_==="ALIVE")return;this.unprocessedEvents.push(..._.split("\x03"));let X=this.unprocessedEvents.shift();this.incompleteData+=X??"";try{if(this.incompleteData.startsWith("error"))console.log("\u2757",this.incompleteData);let W=v(this.incompleteData);this.handleEvent(...W);while(this.unprocessedEvents.length>0){let q=this.unprocessedEvents.shift();if(q){if(this.unprocessedEvents.length===0)this.incompleteData=q;W=v(q),this.handleEvent(...W)}}this.incompleteData=""}catch(W){console.warn("\u26A0\uFE0F----------------\u26A0\uFE0F"),console.warn(this.incompleteData),console.warn("\u26A0\uFE0F----------------\u26A0\uFE0F"),console.error(W)}}),this.process.stderr.on("data",(G)=>{let _=G.toString();this.unprocessedLogs.push(..._.split("\x03"));let X=this.unprocessedLogs.shift();this.incompleteLog+=X??"";try{let W=v(this.incompleteLog);this.handleLog(W);while(this.unprocessedLogs.length>0)if(this.incompleteLog=this.unprocessedLogs.shift()??"",this.incompleteLog)W=v(this.incompleteLog),this.handleLog(W)}catch(W){console.error("\u274C\u274C\u274C"),console.error(this.incompleteLog),console.error(W),console.error("\u274C\u274C\u274C\uFE0F")}}),Q.pid)this.id=Q.pid.toString()}},BZ=class extends l0{in;out;id="no_id_retrieved";disposalFunctions=[];constructor(Q){super((...Z)=>{return this.out.next(Z),this});this.id=Q,this.in=new I,this.out=new I,this.in.subscribe("socket",(Z)=>{this.handleEvent(...Z)})}dispose(){for(let Q of this.disposalFunctions)Q()}},hQ=class extends l0{incompleteData="";unprocessedEvents=[];relays;relayServices;process;id="#####";log(...Q){this.process.stderr.write(h(Q.map((Z)=>Z instanceof f?`{ ${Z.toJSON().members.join(" | ")} }`:Z))+"\x03")}logger={info:(...Q)=>{this.log("i",...Q)},warn:(...Q)=>{this.log("w",...Q)},error:(...Q)=>{this.log("e",...Q)}};constructor(){super((Q,...Z)=>{let Y=JSON.stringify([Q,...Z]);return this.process.stdout.write(Y+"\x03"),this});if(this.process=process,this.process.stdin.resume(),this.relays=new Map,this.relayServices=[],this.process.stdin.on("data",(Q)=>{let Z=Q.toString();this.unprocessedEvents.push(...Z.split("\x03"));let Y=this.unprocessedEvents.shift();this.incompleteData+=Y??"";try{let G=v(this.incompleteData);this.logger.info("\uD83C\uDFB0","received",G),this.handleEvent(...G);while(this.unprocessedEvents.length>0){let _=this.unprocessedEvents.shift();if(_){if(this.unprocessedEvents.length===0)this.incompleteData=_;let X=v(_);this.handleEvent(...X)}}this.incompleteData=""}catch(G){if(G instanceof Error)this.logger.error("\u2757",G.message,G.cause,G.stack)}}),this.on("exit",()=>{this.logger.info("\uD83D\uDD25",this.id,'received "exit"'),process.exit(0)}),process.on("exit",(Q)=>{this.logger.info("\uD83D\uDD25",this.id,`exited with code ${Q}`)}),process.on("end",()=>{this.logger.info("\uD83D\uDD25",this.id,"ended"),process.exit(0)}),process.on("SIGTERM",()=>{this.logger.error("\uD83D\uDD25",this.id,"terminated"),process.exit(0)}),process.on("SIGINT",()=>{this.logger.error("\uD83D\uDD25",this.id,"interrupted"),process.exit(0)}),process.pid)this.id=process.pid?.toString();this.on("user-joins",(Q)=>{this.logger.info("\uD83D\uDC64","user",Q,"joined");let Z=new BZ(`user:${Q}`);this.relays.set(Q,Z),this.logger.info("\uD83D\uDD17","attaching services:",`[${[...this.relayServices.keys()].join(", ")}]`);for(let Y of this.relayServices){let G=Y(Z);if(G)Z.disposalFunctions.push(G)}this.on(`user:${Q}`,(...Y)=>{Z.in.next(Y)}),Z.out.subscribe("socket",(Y)=>{this.emit(...Y)})}),this.on("user-leaves",(Q)=>{let Z=this.relays.get(Q);if(this.off(`relay:${Q}`),Z)Z.dispose(),this.relays.delete(Q)}),process.stdout.write("ALIVE")}relay(Q){this.logger.info("\uD83D\uDD17","running relay method"),this.relayServices.push(Q)}},IQ=X0({key:"roomArguments",default:["echo",["Hello World!"]]}),jZ=E0({key:"room",get:(Q)=>async({get:Z,find:Y})=>{let G=Y(IQ,Q),_=Z(G),[X,W]=_,q=await new Promise((H)=>{let N=PZ(X,W,{env:process.env}),z=(L)=>{if(L.toString()==="ALIVE")N.stdout.off("data",z),H(N)};N.stdout.on("data",z)});return new OZ(q,Q)}}),E1=W0({key:"createRoom",do:({get:Q,set:Z,find:Y},G,_,X)=>{let W=X?[_,X]:[_],q=Y(IQ,G);Z(q,W),Z(y0,(z)=>z.add(G));let H=Y(jZ,G);return Q(H)}}),C1=W0({key:"joinRoom",do:(Q,Z,Y,G)=>{let _={enteredAtEpoch:G};return H0(D0,(X)=>{X.set({room:Z,user:Y},_)},Q.env().store),_}}),P1=W0({key:"leaveRoom",do:(Q,Z,Y)=>{H0(D0,(G)=>{G.delete({room:Z,user:Y})},Q.env().store)}}),O1=W0({key:"destroyRoom",do:(Q,Z)=>{H0(D0,(Y)=>{Y.delete({room:Z})},Q.env().store),Q.set(y0,(Y)=>(Y.delete(Z),Y))}});var B1=X0({key:"redactor",default:{occlude:(Q)=>Q}}),j1=X0({key:"unacknowledgedUpdates",default:()=>[]}),V1=X0({key:"sockets",default:null}),$1=r({key:"socketsIndex",mutable:!0,default:()=>new f,toJson:(Q)=>Q.toJSON(),fromJson:(Q)=>f.fromJSON(Q)}),F1=r({key:"usersIndex",mutable:!0,default:()=>new f,toJson:(Q)=>Q.toJSON(),fromJson:(Q)=>f.fromJSON(Q)}),h1=J0({key:"usersOfSockets",between:["user","socket"],cardinality:"1:1",isAType:(Q)=>Q.startsWith("user::"),isBType:(Q)=>Q.startsWith("socket::")});var L0=new hQ;Object.assign(console,L0.logger,{log:L0.logger.info});L0.on("timeToStop",function Q(){L0.logger.info("\uD83D\uDEEC game worker exiting"),process.exit(0)});L0.logger.info("\uD83D\uDEEB game worker ready");
17
+ ${W.trace}`:"No previous disposal trace was found."),G.type){case"atom_family":case"mutable_atom_family":return Q.defaults.get(G.key);case"readonly_pure_selector_family":case"writable_pure_selector_family":case"readonly_held_selector_family":case"writable_held_selector_family":{if(Q.defaults.has(G.key))return Q.defaults.get(Y.family.key);let q=A(Q,G).default(X);return Q.defaults.set(G.key,q),q}}}return O0(Q,A(Q,Y))}var c=class extends Map{deleted=new Set;source;constructor(Q){super();this.source=Q}get(Q){if(super.has(Q))return super.get(Q);if(!this.deleted.has(Q)&&this.source.has(Q))return this.source.get(Q);return}set(Q,Z){return this.deleted.delete(Q),super.set(Q,Z)}hasOwn(Q){return super.has(Q)}has(Q){return!this.deleted.has(Q)&&(super.has(Q)||this.source.has(Q))}delete(Q){return this.deleted.add(Q),super.delete(Q)}},HZ=(Q,Z,Y,G)=>{let _=O(Q),X={parent:_,child:null,on:_.on,loggers:_.loggers,logger:_.logger,config:_.config,atoms:new c(_.atoms),atomsThatAreDefault:new Set(_.atomsThatAreDefault),families:new c(_.families),joins:new c(_.joins),operation:{open:!1},readonlySelectors:new c(_.readonlySelectors),timelines:new c(_.timelines),timelineTopics:new S(_.timelineTopics.toJSON()),trackers:new Map,transactions:new c(_.transactions),selectorAtoms:new S(_.selectorAtoms.toJSON()),selectorGraph:new S(_.selectorGraph.toJSON(),{makeContentKey:(...N)=>N.sort().join(":")}),writableSelectors:new c(_.writableSelectors),valueMap:new c(_.valueMap),defaults:_.defaults,disposalTraces:Q.disposalTraces.copy(),molecules:new c(_.molecules),moleculeGraph:new S(_.moleculeGraph.toJSON(),{makeContentKey:_.moleculeGraph.makeContentKey}),moleculeData:new S(_.moleculeData.toJSON(),{makeContentKey:_.moleculeData.makeContentKey}),moleculeJoins:new S(_.moleculeJoins.toJSON(),{makeContentKey:_.moleculeJoins.makeContentKey}),miscResources:new c(_.miscResources)},W=_Z(Q,Z),q={phase:"building",update:{type:"transaction_update",key:Z,id:G,epoch:W===void 0?NaN:W+1,updates:[],params:Y,output:void 0},toolkit:{get:(...N)=>k(H,...N),set:(...N)=>{g(H,...N)},reset:(...N)=>{s(H,...N)},run:(N,z=e0())=>I0(H,N,z),find:(...N)=>$(Q,...N),json:(N)=>n(H,N),dispose:(...N)=>{a(H,...N)},env:()=>qZ(H)}},H=Object.assign(X,{transactionMeta:q});return _.child=H,Q.logger.info("\uD83D\uDEEB","transaction",Z,"Building transaction with params:",Y),H};function U0(Q,Z){let{key:Y}=Z,G=Q.transactions.has(Y),_={key:Y,type:"transaction",run:(q,H)=>{let N=HZ(Q,Y,q,H);try{let z=O(Q),{toolkit:L}=N.transactionMeta,M=Z.do(L,...q);return WZ(M,z),M}catch(z){throw mQ(X),Q.logger.warn("\uD83D\uDCA5","transaction",Y,"caught:",z),z}},install:(q)=>U0(q,Z),subject:new I},X=O(Q);X.transactions.set(Y,_);let W=Q0(_);if(!G)Q.on.transactionCreation.next(W);return W}var _Q=class{parent=null;child=null;valueMap=new Map;defaults=new Map;atoms=new Map;writableSelectors=new Map;readonlySelectors=new Map;atomsThatAreDefault=new Set;selectorAtoms=new S({between:["selectorKey","atomKey"],cardinality:"n:n"});selectorGraph=new S({between:["upstreamSelectorKey","downstreamSelectorKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});trackers=new Map;families=new Map;joins=new Map;transactions=new Map;transactionMeta={epoch:new Map,actionContinuities:new S({between:["continuity","action"],cardinality:"1:n"})};timelines=new Map;timelineTopics=new S({between:["timelineKey","topicKey"],cardinality:"1:n"});disposalTraces=new fQ(100);molecules=new Map;moleculeJoins=new S({between:["moleculeKey","joinKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});moleculeGraph=new S({between:["upstreamMoleculeKey","downstreamMoleculeKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});moleculeData=new S({between:["moleculeKey","stateFamilyKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});miscResources=new Map;on={atomCreation:new I,atomDisposal:new I,selectorCreation:new I,selectorDisposal:new I,timelineCreation:new I,transactionCreation:new I,transactionApplying:new dQ(null),operationClose:new I,moleculeCreation:new I,moleculeDisposal:new I};operation={open:!1};config={name:"IMPLICIT_STORE",lifespan:"ephemeral"};loggers=[new o0("warn",(Q,Z,Y)=>!JZ(Y))];logger={error:(...Q)=>{for(let Z of this.loggers)Z.error(...Q)},info:(...Q)=>{for(let Z of this.loggers)Z.info(...Q)},warn:(...Q)=>{for(let Z of this.loggers)Z.warn(...Q)}};constructor(Q,Z=null){if(this.config={...Z?.config,...Q},Z!==null){if(this.valueMap=new Map(Z?.valueMap),this.operation={...Z?.operation},y(Z))this.transactionMeta={epoch:new Map(Z?.transactionMeta.epoch),actionContinuities:new S(Z?.transactionMeta.actionContinuities.toJSON())};for(let[,G]of Z.families){if(G.internalRoles?.includes("mutable")||G.internalRoles?.includes("join"))continue;G.install(this)}let Y=new Set;for(let[,G]of Z.atoms){if(Y.has(G.key))continue;if(G.install(this),G.type==="mutable_atom"){let _=n(Z,G),X=u0(G);Y.add(_.key),Y.add(X.key)}}for(let[,G]of Z.readonlySelectors)G.install(this);for(let[,G]of Z.writableSelectors){if(Y.has(G.key))continue;G.install(this)}for(let[,G]of Z.transactions)G.install(this);for(let[,G]of Z.timelines)G.install(this)}}},w={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new _Q({name:"IMPLICIT_STORE",lifespan:"ephemeral"}),globalThis.ATOM_IO_IMPLICIT_STORE}};function A(Q,Z){let Y,G=Q;while(G!==null){switch(Z.type){case"atom":case"mutable_atom":Y=G.atoms.get(Z.key);break;case"writable_pure_selector":case"writable_held_selector":Y=G.writableSelectors.get(Z.key);break;case"readonly_pure_selector":case"readonly_held_selector":Y=G.readonlySelectors.get(Z.key);break;case"atom_family":case"mutable_atom_family":case"writable_pure_selector_family":case"readonly_pure_selector_family":case"writable_held_selector_family":case"readonly_held_selector_family":Y=G.families.get(Z.key);break;case"timeline":Y=G.timelines.get(Z.key);break;case"transaction":Y=G.transactions.get(Z.key);break}if(Y)return Y;G=G.child}throw new v0(Z,Q)}var NZ=(Q,Z)=>{let Y=O(Q);if(Y.operation.open)return Y.operation.prev.get(Z.key);return Y.valueMap.get(Z.key)};var NQ=(Q,Z)=>{let Y=O(Q);return JQ(Z,Q).map((_)=>{return _.subject.subscribe(`${Z.type}:${Z.key}`,(X)=>{Q.logger.info("\uD83D\uDCE2",Z.type,Z.key,"root",_.key,"went",X.oldValue,"->",X.newValue);let W=NZ(Y,Z),q=O0(Y,Z);Q.logger.info("\u2728",Z.type,Z.key,"went",W,"->",q),Z.subject.next({newValue:q,oldValue:W})})})};function N0(Q,Z,Y,G){function _(L){if(Q.operation.open){let M=Q.on.operationClose.subscribe(`state subscription ${Y}`,()=>{M(),G(L)})}else G(L)}let X=A(Q,Z);Q.logger.info("\uD83D\uDC40",X.type,X.key,`Adding subscription "${Y}"`);let W=X.type==="writable_pure_selector"||X.type==="readonly_pure_selector",q=null,H=_;if(W)q=NQ(Q,X),H=(L)=>{if(q)q.length=0,q.push(...NQ(Q,X));_(L)};let N=X.subject.subscribe(Y,H);return()=>{if(Q.logger.info("\uD83D\uDE48",X.type,X.key,`Removing subscription "${Y}"`),N(),q)for(let L of q)L()}}var zZ=(Q,Z,Y,G)=>{let _=A(Q,Z);Q.logger.info("\uD83D\uDC40","timeline",Z.key,`Adding subscription "${Y}"`);let X=_.subject.subscribe(Y,G);return()=>{Q.logger.info("\uD83D\uDE48","timeline",Z.key,`Removing subscription "${Y}" from timeline`),X()}};var m0=class{initializeState(Q,Z){let Y=`*${Q.key}`;Z.atoms.delete(Y),Z.valueMap.delete(Y);let G=Q.family?{key:`*${Q.family.key}`,subKey:Q.family.subKey}:void 0,_=V0(Z,{key:Y,default:null},G);if(Z.parent?.valueMap.has(Y)){let X=Z.parent.valueMap.get(Y);Z.valueMap.set(Y,X)}return _}unsubscribeFromInnerValue;unsubscribeFromState;observeCore(Q,Z,Y){let G=`tracker:${Y.config.name}:${x(Y)?Y.transactionMeta.update.key:"main"}:${Q.key}`,_=k(Y,Q);this.unsubscribeFromInnerValue=_.subscribe(G,(X)=>{g(Y,Z,X)}),this.unsubscribeFromState=N0(Y,Q,G,(X)=>{if(X.newValue!==X.oldValue)this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=X.newValue.subscribe(G,(W)=>{g(Y,Z,W)})})}updateCore(Q,Z,Y){let G=`tracker:${Y.config.name}:${x(Y)?Y.transactionMeta.update.key:"main"}:${Q.key}`;N0(Y,Z,G,({newValue:_,oldValue:X})=>{let W=Y.timelineTopics.getRelatedKey(Z.key);if(W){if(Y.timelines.get(W)?.timeTraveling){let N=zZ(Y,{key:W,type:"timeline"},G,(z)=>{N(),g(Y,Q,(L)=>{if(z==="redo"&&_)L.do(_);else if(z==="undo"&&X)L.undo(X);return L})});return}}let q=Y.on.operationClose.subscribe(G,()=>{q();let H=k(Y,Q),N=_===null?-1:H.getUpdateNumber(_),z=N-H.cacheUpdateNumber;if(_&&z===1)g(Y,Q,(L)=>(L.do(_),L));else Y.logger.info("\u274C","mutable_atom",Q.key,`could not be updated. Expected update number ${H.cacheUpdateNumber+1}, but got ${N}`)})})}mutableState;latestUpdateState;[Symbol.dispose];constructor(Q,Z){this.mutableState=Q;let Y=O(Z);this.latestUpdateState=this.initializeState(Q,Y),this.observeCore(Q,this.latestUpdateState,Y),this.updateCore(Q,this.latestUpdateState,Y),Y.trackers.set(Q.key,this),this[Symbol.dispose]=()=>{this.unsubscribeFromInnerValue(),this.unsubscribeFromState(),Y.trackers.delete(Q.key)}}};function k0(Q,Z,Y){Q.logger.info("\uD83D\uDD28","atom",Z.key,`creating in store "${Q.config.name}"`);let G=O(Q),{key:_,default:X}=Z,W=G.atoms.get(_),q="mutable_atom";if(W&&W.type===q)return Q.logger.error("\u274C",q,_,"Tried to create atom, but it already exists in the store."),Q0(W);let H=new I,N={...Z,type:q,install:(M)=>{return M.logger.info("\uD83D\uDEE0\uFE0F","atom",_,`installing in store "${M.config.name}"`),k0(M,Z,Y)},subject:H};if(Y)N.family=Y;let z=X();G.atoms.set(N.key,N),u(G,_,z,H);let L=Q0(N);if(Z.effects){let M=0,C=[];for(let E of Z.effects){let B=E({resetSelf:()=>{s(Q,L)},setSelf:(K)=>{g(Q,L,K)},onSet:(K)=>N0(Q,L,`effect[${M}]`,K)});if(B)C.push(B);++M}N.cleanup=()=>{for(let E of C)E()}}if(new m0(L,Q),!Y)r0(L,Z,Q);return L}var DZ=class{trackers=new Map;latestUpdateAtoms;mutableAtoms;constructor(Q,Z){let Y=B0(Z,{key:`*${Q.key}`,default:null},["mutable","updates"]);this.latestUpdateAtoms=A(Z,Y),this.mutableAtoms=Q,this.mutableAtoms.subject.subscribe(`store=${Z.config.name}::tracker-atom-family`,(G)=>{let{type:_,token:X}=G;if(X.family){let W=v(X.family.subKey);switch(_){case"state_creation":this.trackers.set(W,new m0(X,Z));break;case"state_disposal":{let q=this.trackers.get(W);if(q)q[Symbol.dispose](),this.trackers.delete(W)}break}}})}};function c0(Q,Z,Y){let G={key:Z.key,type:"mutable_atom_family"},_=Q.families.get(Z.key);if(_)Q.logger.error("\u2757","mutable_atom_family",Z.key,`Overwriting an existing ${i(_)} "${_.key}" in store "${Q.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let X=new I,q=Object.assign((H)=>{let N=h(H),z={key:Z.key,subKey:N},L=`${Z.key}(${N})`,M=O(Q),C={key:L,default:()=>Z.default(H),toJson:Z.toJson,fromJson:Z.fromJson,mutable:!0};if(Z.effects)C.effects=Z.effects(H);let E=k0(M,C,z);return X.next({type:"state_creation",token:E}),E},G,{subject:X,install:(H)=>c0(H,Z),toJson:Z.toJson,fromJson:Z.fromJson,internalRoles:Y});return Q.families.set(Z.key,q),a0(Q,q,Z),new DZ(q,Q),G}var zQ=(Q,Z)=>{let Y=O(Z),G=`${Q.key}:JSON`;return Y.families.get(G)},n=(Q,Z)=>{if(Z.family){let G=O(Q),X={key:`${Z.family.key}:JSON`,type:"writable_pure_selector_family"},W=A(G,X),q=JSON.parse(Z.family.subKey);return $(Q,W,q)}return{type:"writable_pure_selector",key:`${Z.key}:JSON`}};var u0=(Q)=>{let Y={type:"atom",key:`*${Q.key}`};if(Q.family)Y.family={key:`*${Q.family.key}`,subKey:Q.family.subKey};return Y};function LZ(Q){return typeof Q==="object"&&Q!==null&&"do"in Q&&"undo"in Q&&"subscribe"in Q}function T0(Q,Z,Y){let G=Y.valueMap.get(Z.key),_=Q.valueMap.get(Z.key);if(G!==_)return _;if(G===void 0)return Z.default();Y.logger.info("\uD83D\uDCC3","atom",Z.key,"copying");let X=Z.toJson(G),W=Z.fromJson(X);return Q.valueMap.set(Z.key,W),new m0(Z,Y),W}function u(Q,Z,Y,G){let _=Q.valueMap.get(Z);if(_ instanceof w0){let X=_;if(Y instanceof Promise)return X.use(Y),X;return Q.valueMap.set(Z,Y),Y}if(Y instanceof Promise){let X=new w0(Y);return Q.valueMap.set(Z,X),X.then((W)=>{if(Q.valueMap.get(Z)===X){u(Q,Z,W,G);let H=Q.atoms.get(Z);if(H)C0(Q,H),R0(Q,H),P0(Q);else{let N=Q.writableSelectors.get(Z)??Q.readonlySelectors.get(Z);if(N)C0(Q,N),cQ(Q,N),P0(Q)}G.next({newValue:W,oldValue:X})}}).catch((W)=>{Q.logger.error("\uD83D\uDCA5","state",Z,"rejected:",W)}),X}return Q.valueMap.set(Z,Y),Y}var MZ=(Q,Z)=>{let Y=Z.valueMap.get(Q.key);if(Q.type==="mutable_atom"&&x(Z)){let{parent:G}=Z;Y=T0(Z,Q,G)}return Y},$Q=(Q,Z)=>{let Y=Z.valueMap.get(Q);if(Y instanceof w0){let G=Y,_=Z.writableSelectors.get(Q)??Z.readonlySelectors.get(Q);if(_)G.use(_.get());return}if(Z.operation.open)Z.operation.prev.set(Q,Y);Z.valueMap.delete(Q),Z.logger.info("\uD83D\uDDD1","state",Q,"evicted")};function V0(Q,Z,Y){let{key:_,default:X}=Z;Q.logger.info("\uD83D\uDD28","atom",_,`creating in store "${Q.config.name}"`);let W=O(Q),q=W.atoms.get(_);if(q&&q.type==="atom")return Q.logger.error("\u274C","atom",_,"Tried to create atom, but it already exists in the store."),Q0(q);let H=new I,N={...Z,type:"atom",install:(M)=>{return M.logger.info("\uD83D\uDEE0\uFE0F","atom",_,`installing in store "${M.config.name}"`),V0(M,Z,Y)},subject:H};if(Y)N.family=Y;let z=X;if(X instanceof Function)z=X();W.atoms.set(_,N),u(W,_,z,H);let L=Q0(N);if(Z.effects){let M=0,C=[];for(let E of Z.effects){let B=E({resetSelf:()=>{s(Q,L)},setSelf:(K)=>{g(Q,L,K)},onSet:(K)=>N0(Q,L,`effect[${M}]`,K)});if(B)C.push(B);++M}N.cleanup=()=>{for(let E of C)E()}}return L}function XQ(Q,Z){if("mutable"in Z){let _=k0(Q,Z,void 0);return Q.on.atomCreation.next(_),_}let G=V0(Q,Z,void 0);return Q.on.atomCreation.next(G),G}function FQ(Q,Z){let Y=O(Q),{key:G,family:_}=Z,X=A(Y,Z);if(!_)Q.logger.error("\u274C","atom",G,"Standalone atoms cannot be disposed.");else{X.cleanup?.();let W=Q.valueMap.get(X.key),q=A(Q,{key:_.key,type:"atom_family"}),H={type:"state_disposal",subType:"atom",token:Z,value:W};q.subject.next(H);let N=x(Y);if(Y.atoms.delete(G),Y.valueMap.delete(G),Y.selectorAtoms.delete(G),Y.atomsThatAreDefault.delete(G),Q.timelineTopics.delete(G),Z.type==="mutable_atom"){let z=u0(Z);FQ(Q,z),Q.trackers.delete(G)}if(Q.logger.info("\uD83D\uDD25","atom",G,"deleted"),N&&Y.transactionMeta.phase==="building"){let z=Y.transactionMeta.update.updates.at(-1);if(!(z?.type==="molecule_disposal"&&z.values.some(([C])=>C===X.family?.key)))Y.transactionMeta.update.updates.push(H)}else Q.on.atomDisposal.next(Z)}}var A0=class{toolkit;options;defaultContent;molecules=new Map;relations;states;core;transact(Q,Z){let Y=this.toolkit;this.toolkit=Q,Z(this),this.toolkit=Y}store;realm;[Symbol.dispose](){}constructor(Q,Z,Y=w.STORE){this.store=Y,this.realm=new t0(Y),this.options=Q,this.defaultContent=Z,this.store.miscResources.set(`join:${Q.key}`,this),this.realm.allocate("root",Q.key),this.toolkit={get:(...D)=>k(Y,...D),set:(...D)=>{g(Y,...D)},find:(...D)=>$(Y,...D),json:(D)=>n(Y,D)};let G=Q.between[0],_=Q.between[1],X=c0(Y,{key:`${Q.key}/relatedKeys`,default:()=>new f,mutable:!0,fromJson:(D)=>f.fromJSON(D),toJson:(D)=>D.toJSON()},["join","relations"]);this.core={relatedKeysAtoms:X};let W=({get:D},J)=>D(X,J),q=({set:D},J,j)=>{if(!this.store.molecules.has(h(J)))this.realm.allocate(Q.key,J);D(X,J,(P)=>P.add(j)),D(X,j,(P)=>P.add(J))},H=({set:D},J,j)=>{D(X,J,(P)=>{return P.delete(j),P}),D(X,j,(P)=>{return P.delete(J),P})},N=(D,J,j)=>{let{find:P,get:V,set:F}=D,R=P(X,J),m=V(R);for(let b of m){if(j.includes(b))continue;F(X,b,(p)=>{return p.delete(J),p})}F(R,(b)=>{return b.transaction((Z0)=>{Z0.clear();for(let p of j){let Y0=W(D,p),i0=Y0.has(J);if(this.relations.cardinality==="1:n"){let n0=[];for(let G0 of Y0){if(G0===J)continue;let _0=W(D,G0);if(_0.delete(p),_0.size===0)n0.push(G0)}if(!i0&&Y0.size>0)Y0.clear();for(let G0 of n0){let _0=[p,G0].sort(),UQ=`"${_0[0]}:${_0[1]}"`;this.molecules.delete(UQ)}}if(!i0)Y0.add(J);Z0.add(p)}return!0}),b})},z=(D,J,j)=>{let{set:P}=D;P(X,J,(V)=>{return V.transaction((F)=>{for(let R of j)F.add(R);return!0}),V});for(let V of j)P(X,V,(F)=>{return F.add(J),F});return!0},L=(D,J,j)=>{let P=W(D,J);return j?P.has(j):P.size>0},M={getRelatedKeys:(D)=>W(this.toolkit,D),addRelation:(D,J)=>{this.store.moleculeJoins.set(D,Q.key),this.store.moleculeJoins.set(J,Q.key),q(this.toolkit,D,J)},deleteRelation:(D,J)=>{H(this.toolkit,D,J)},replaceRelationsSafely:(D,J)=>{N(this.toolkit,D,J)},replaceRelationsUnsafely:(D,J)=>{z(this.toolkit,D,J)},has:(D,J)=>L(this.toolkit,D,J)},C,E;if(Z){E=B0(Y,{key:`${Q.key}/content`,default:Z},["join","content"]);let D=({get:P},V)=>P(E,V),J=({set:P},V,F)=>{P(E,V,F)};C=Object.assign(M,{getContent:(P)=>{return D(this.toolkit,P)},setContent:(P,V)=>{J(this.toolkit,P,V)},deleteContent:(P)=>{this.realm.deallocate(P)}})}else C=M;let B=new S(Q,{externalStore:C,isAType:Q.isAType,isBType:Q.isBType,makeContentKey:(...D)=>{let[J,j]=D,P=D.sort(),V=`${P[0]}:${P[1]}`,F=Y.molecules.get(h(J)),R=Y.molecules.get(h(j));if(!F)this.realm.allocate(Q.key,J);if(!R)this.realm.allocate(Q.key,j);return this.realm.allocate(J,V,"all"),this.realm.claim(j,V),this.store.moleculeJoins.set(V,Q.key),V}}),K=()=>e(Y,{key:`${Q.key}/singleRelatedKey`,get:(D)=>({get:J})=>{let j=J(X,D);for(let P of j)return P;return null}},["join","keys"]),l=()=>{return e(Y,{key:`${Q.key}/multipleRelatedKeys`,get:(D)=>({get:J})=>{let j=zQ(X,Y);return J(j,D).members}},["join","keys"])},d=()=>e(Y,{key:`${Q.key}/singleRelatedEntry`,get:(D)=>({get:J})=>{let j=J(X,D);for(let P of j){let V=B.isAType?.(D)?D:void 0,F=V===void 0?D:void 0;V??=P,F??=P;let R=B.makeContentKey(V,F),m=J(E,R);return[P,m]}return null}},["join","entries"]),T=()=>e(Y,{key:`${Q.key}/multipleRelatedEntries`,get:(D)=>({get:J})=>{let j=zQ(X,Y);return J(j,D).members.map((V)=>{let F=B.isAType?.(D)?D:void 0,R=F===void 0?D:void 0;F??=V,R??=V;let m=B.makeContentKey(F,R),b=J(E,m);return[V,b]})}},["join","entries"]);switch(Q.cardinality){case"1:1":{let D=K(),J=`${G}KeyOf${U(_)}`,j=`${_}KeyOf${U(G)}`,P={[J]:D,[j]:D},V;if(Z){let F=d(),R=`${G}EntryOf${U(_)}`,m=`${_}EntryOf${U(G)}`,b={[R]:F,[m]:F};V=Object.assign(P,b)}else V=P;this.relations=B,this.states=V;break}case"1:n":{let D=K(),J=l(),j=`${G}KeyOf${U(_)}`,P=`${_}KeysOf${U(G)}`,V={[j]:D,[P]:J},F;if(Z){let R=d(),m=T(),b=`${G}EntryOf${U(_)}`,Z0=`${_}EntriesOf${U(G)}`,p={[b]:R,[Z0]:m};F=Object.assign(V,p)}else F=V;this.relations=B,this.states=F;break}case"n:n":{let D=l(),J=`${G}KeysOf${U(_)}`,j=`${_}KeysOf${U(G)}`,P={[J]:D,[j]:D},V;if(Z){let F=T(),R=`${G}EntriesOf${U(_)}`,m=`${_}EntriesOf${U(G)}`,b={[R]:F,[m]:F};V=Object.assign(P,b)}else V=P;this.relations=B,this.states=V}}}};function p0(Q,Z){let Y=Z.joins.get(Q.key);if(Y===void 0){let _=w.STORE.joins.get(Q.key);if(_===void 0)throw new Error(`Join "${Q.key}" not found in store "${Z.config.name}"`);Y=new A0(_.options,_.defaultContent,Z),Z.joins.set(Q.key,Y)}return Y}function H0(Q,Z,Y){let G=p0(Q,Y),_=O(Y);if(x(_)){let{toolkit:X}=_.transactionMeta;G.transact(X,({relations:W})=>{Z(W)})}else Z(G.relations)}function WQ(Q,Z,Y){let G=p0(Q,Y),_;switch(Q.cardinality){case"1:1":{let X=`${Q.a}KeyOf${U(Q.b)}`,W=`${Q.b}KeyOf${U(Q.a)}`;_={get[X](){let H=G.states[X];return $(Y,H,Z)},get[W](){let H=G.states[W];return $(Y,H,Z)}};let q=`${Q.a}EntryOf${U(Q.b)}`;if(q in G.states){let H=`${Q.b}EntryOf${U(Q.a)}`;Object.assign(_,{get[q](){let N=G.states[q];return $(Y,N,Z)},get[H](){let N=G.states[H];return $(Y,N,Z)}})}break}case"1:n":{let X=`${Q.a}KeyOf${U(Q.b)}`,W=`${Q.b}KeysOf${U(Q.a)}`;_={get[X](){let H=G.states[X];return $(Y,H,Z)},get[W](){let H=G.states[W];return $(Y,H,Z)}};let q=`${Q.a}EntryOf${U(Q.b)}`;if(q in G.states){let H=`${Q.b}EntriesOf${U(Q.a)}`;Object.assign(_,{get[q](){let N=G.states[q];return $(Y,N,Z)},get[H](){let N=G.states[H];return $(Y,N,Z)}})}break}case"n:n":{let X=`${Q.a}KeysOf${U(Q.b)}`,W=`${Q.b}KeysOf${U(Q.a)}`;_={get[X](){let H=G.states[X];return $(Y,H,Z)},get[W](){let H=G.states[W];return $(Y,H,Z)}};let q=`${Q.a}EntriesOf${U(Q.b)}`;if(q in G.states){let H=`${Q.b}EntriesOf${U(Q.a)}`;Object.assign(_,{get[q](){let N=G.states[q];return $(Y,N,Z)},get[H](){let N=G.states[H];return $(Y,N,Z)}})}}}return _}function qQ(Q,Z){return p0(Q,Z).core.relatedKeysAtoms}function JZ(Q){return Q.startsWith("\uD83D\uDD0D ")}var EZ=class extends Map{set(Q,Z){if(this.has(Q))return console.warn("Tried to set a key that already exists in an InvariantMap",{key:Q,value:Z}),this;return super.set(Q,Z)}clear(){throw new Error("Cannot clear an InvariantMap")}},G1=class Q{type="continuity";globals=[];actions=[];perspectives=[];key;constructor(Z){this.key=Z}static existing=new EZ;static create(Z,Y){let G=new Q(Z),{type:_,globals:X,actions:W,perspectives:q}=Y(G),H={type:_,key:Z,globals:X,actions:W,perspectives:q};return Q.existing.set(Z,H),H}add(...Z){switch(Z[0].type){case"atom":case"mutable_atom":this.globals.push(...Z);break;case"transaction":this.actions.push(...Z);break;case"atom_family":case"mutable_atom_family":{let[G,_]=Z;this.perspectives.push({type:"realtime_perspective",resourceAtoms:G,viewAtoms:_})}break}return this}};var _1=r({key:"usersInRoomIndex",mutable:!0,default:()=>new f,toJson:(Q)=>Q.toJSON(),fromJson:(Q)=>f.fromJSON(Q)}),y0=r({key:"roomIndex",default:()=>new f,mutable:!0,toJson:(Q)=>Q.toJSON(),fromJson:(Q)=>f.fromJSON(Q)}),CZ={enteredAtEpoch:0},D0=J0({key:"usersInRooms",between:["room","user"],cardinality:"1:n",isAType:(Q)=>typeof Q==="string",isBType:(Q)=>typeof Q==="string"},CZ),X1=E0({key:"usersInMyRoomView",get:(Q)=>({find:Z})=>{let Y=s0(D0);return[Z(Y,Q)]}});import{spawn as PZ}from"child_process";var l0=class{listeners;globalListeners;handleEvent(Q,...Z){for(let G of this.globalListeners)G(Q,...Z);let Y=this.listeners.get(Q);if(Y)for(let G of Y)G(...Z)}id="no_id_retrieved";emit;constructor(Q){this.emit=Q,this.listeners=new Map,this.globalListeners=new Set}on(Q,Z){let Y=this.listeners.get(Q);if(Y)Y.add(Z);else this.listeners.set(Q,new Set([Z]));return this}onAny(Q){return this.globalListeners.add(Q),this}off(Q,Z){let Y=this.listeners.get(Q);if(Y)if(Z)Y.delete(Z);else this.listeners.delete(Q);return this}offAny(Q){return this.globalListeners.delete(Q),this}},OZ=class extends l0{incompleteData="";unprocessedEvents=[];incompleteLog="";unprocessedLogs=[];id="#####";process;key;logger;handleLog(Q){if(Array.isArray(Q)){let[Z,...Y]=Q;switch(Z){case"i":this.logger.info(...Y);break;case"w":this.logger.warn(...Y);break;case"e":this.logger.error(...Y);break;default:return}}}constructor(Q,Z,Y){super((G,..._)=>{let X=JSON.stringify([G,..._])+"\x03",W=(q)=>{if(q.code==="EPIPE")console.error("EPIPE error during write",this.process.stdin);this.process.stdin.removeListener("error",W)};return this.process.stdin.once("error",W),this.process.stdin.write(X),this});if(this.process=Q,this.key=Z,this.logger=Y??{info:(...G)=>{console.info(this.id,this.key,...G)},warn:(...G)=>{console.warn(this.id,this.key,...G)},error:(...G)=>{console.error(this.id,this.key,...G)}},this.process.stdout.on("data",(G)=>{let _=G.toString();if(_==="ALIVE")return;this.unprocessedEvents.push(..._.split("\x03"));let X=this.unprocessedEvents.shift();this.incompleteData+=X??"";try{if(this.incompleteData.startsWith("error"))console.log("\u2757",this.incompleteData);let W=v(this.incompleteData);this.handleEvent(...W);while(this.unprocessedEvents.length>0){let q=this.unprocessedEvents.shift();if(q){if(this.unprocessedEvents.length===0)this.incompleteData=q;W=v(q),this.handleEvent(...W)}}this.incompleteData=""}catch(W){console.warn("\u26A0\uFE0F----------------\u26A0\uFE0F"),console.warn(this.incompleteData),console.warn("\u26A0\uFE0F----------------\u26A0\uFE0F"),console.error(W)}}),this.process.stderr.on("data",(G)=>{let _=G.toString();this.unprocessedLogs.push(..._.split("\x03"));let X=this.unprocessedLogs.shift();this.incompleteLog+=X??"";try{let W=v(this.incompleteLog);this.handleLog(W);while(this.unprocessedLogs.length>0)if(this.incompleteLog=this.unprocessedLogs.shift()??"",this.incompleteLog)W=v(this.incompleteLog),this.handleLog(W)}catch(W){console.error("\u274C\u274C\u274C"),console.error(this.incompleteLog),console.error(W),console.error("\u274C\u274C\u274C\uFE0F")}}),Q.pid)this.id=Q.pid.toString()}},BZ=class extends l0{in;out;id="no_id_retrieved";disposalFunctions=[];constructor(Q){super((...Z)=>{return this.out.next(Z),this});this.id=Q,this.in=new I,this.out=new I,this.in.subscribe("socket",(Z)=>{this.handleEvent(...Z)})}dispose(){for(let Q of this.disposalFunctions)Q()}},hQ=class extends l0{incompleteData="";unprocessedEvents=[];relays;relayServices;process;id="#####";log(...Q){this.process.stderr.write(h(Q.map((Z)=>Z instanceof f?`{ ${Z.toJSON().members.join(" | ")} }`:Z))+"\x03")}logger={info:(...Q)=>{this.log("i",...Q)},warn:(...Q)=>{this.log("w",...Q)},error:(...Q)=>{this.log("e",...Q)}};constructor(){super((Q,...Z)=>{let Y=JSON.stringify([Q,...Z]);return this.process.stdout.write(Y+"\x03"),this});if(this.process=process,this.process.stdin.resume(),this.relays=new Map,this.relayServices=[],this.process.stdin.on("data",(Q)=>{let Z=Q.toString();this.unprocessedEvents.push(...Z.split("\x03"));let Y=this.unprocessedEvents.shift();this.incompleteData+=Y??"";try{let G=v(this.incompleteData);this.logger.info("\uD83C\uDFB0","received",G),this.handleEvent(...G);while(this.unprocessedEvents.length>0){let _=this.unprocessedEvents.shift();if(_){if(this.unprocessedEvents.length===0)this.incompleteData=_;let X=v(_);this.handleEvent(...X)}}this.incompleteData=""}catch(G){if(G instanceof Error)this.logger.error("\u2757",G.message,G.cause,G.stack)}}),this.on("exit",()=>{this.logger.info("\uD83D\uDD25",this.id,'received "exit"'),process.exit(0)}),process.on("exit",(Q)=>{this.logger.info("\uD83D\uDD25",this.id,`exited with code ${Q}`)}),process.on("end",()=>{this.logger.info("\uD83D\uDD25",this.id,"ended"),process.exit(0)}),process.on("SIGTERM",()=>{this.logger.error("\uD83D\uDD25",this.id,"terminated"),process.exit(0)}),process.on("SIGINT",()=>{this.logger.error("\uD83D\uDD25",this.id,"interrupted"),process.exit(0)}),process.pid)this.id=process.pid?.toString();this.on("user-joins",(Q)=>{this.logger.info("\uD83D\uDC64","user",Q,"joined");let Z=new BZ(`user:${Q}`);this.relays.set(Q,Z),this.logger.info("\uD83D\uDD17","attaching services:",`[${[...this.relayServices.keys()].join(", ")}]`);for(let Y of this.relayServices){let G=Y(Z);if(G)Z.disposalFunctions.push(G)}this.on(`user:${Q}`,(...Y)=>{Z.in.next(Y)}),Z.out.subscribe("socket",(Y)=>{this.emit(...Y)})}),this.on("user-leaves",(Q)=>{let Z=this.relays.get(Q);if(this.off(`relay:${Q}`),Z)Z.dispose(),this.relays.delete(Q)}),process.stdout.write("ALIVE")}relay(Q){this.logger.info("\uD83D\uDD17","running relay method"),this.relayServices.push(Q)}},IQ=X0({key:"roomArguments",default:["echo",["Hello World!"]]}),jZ=E0({key:"room",get:(Q)=>async({get:Z,find:Y})=>{let G=Y(IQ,Q),_=Z(G),[X,W]=_,q=await new Promise((H)=>{let N=PZ(X,W,{env:process.env}),z=(L)=>{if(L.toString()==="ALIVE")N.stdout.off("data",z),H(N)};N.stdout.on("data",z)});return new OZ(q,Q)}}),E1=W0({key:"createRoom",do:({get:Q,set:Z,find:Y},G,_,X)=>{let W=X?[_,X]:[_],q=Y(IQ,G);Z(q,W),Z(y0,(z)=>z.add(G));let H=Y(jZ,G);return Q(H)}}),C1=W0({key:"joinRoom",do:(Q,Z,Y,G)=>{let _={enteredAtEpoch:G};return H0(D0,(X)=>{X.set({room:Z,user:Y},_)},Q.env().store),_}}),P1=W0({key:"leaveRoom",do:(Q,Z,Y)=>{H0(D0,(G)=>{G.delete({room:Z,user:Y})},Q.env().store)}}),O1=W0({key:"destroyRoom",do:(Q,Z)=>{H0(D0,(Y)=>{Y.delete({room:Z})},Q.env().store),Q.set(y0,(Y)=>(Y.delete(Z),Y))}});var B1=X0({key:"redactor",default:{occlude:(Q)=>Q}}),j1=X0({key:"unacknowledgedUpdates",default:()=>[]}),V1=X0({key:"sockets",default:null}),$1=r({key:"socketsIndex",mutable:!0,default:()=>new f,toJson:(Q)=>Q.toJSON(),fromJson:(Q)=>f.fromJSON(Q)}),F1=r({key:"usersIndex",mutable:!0,default:()=>new f,toJson:(Q)=>Q.toJSON(),fromJson:(Q)=>f.fromJSON(Q)}),h1=J0({key:"usersOfSockets",between:["user","socket"],cardinality:"1:1",isAType:(Q)=>Q.startsWith("user::"),isBType:(Q)=>Q.startsWith("socket::")});var L0=new hQ;Object.assign(console,L0.logger,{log:L0.logger.info});L0.on("timeToStop",function Q(){L0.logger.info("\uD83D\uDEEC game worker exiting"),process.exit(0)});L0.logger.info("\uD83D\uDEEB game worker ready");