tempest.games 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -22,7 +22,7 @@ ${y.trace}`:`No previous disposal trace for ${t} was found.`);return}i.subject.n
|
|
|
22
22
|
${y.trace}`:`No previous disposal trace for ${r} was found.`),t}const a=As(e),c=s.molecules.get(a);if(!c){const y=n.disposalTraces.buffer.find(v=>v?.key===a);return n.logger.error("❌","key",t,"claim failed:",`Could not allocate to ${a} in store "${n.config.name}".`,y?`
|
|
23
23
|
${a} was most recently disposed
|
|
24
24
|
${y.trace}`:`No previous disposal trace for ${a} was found.`),t}const f=n.moleculeGraph.getRelationEntries({downstreamMoleculeKey:o.stringKey}).filter(([,{source:y}])=>y!==r).map(([y])=>Tu(y));i&&s.moleculeGraph.delete(r),s.moleculeGraph.set({upstreamMoleculeKey:c.stringKey,downstreamMoleculeKey:o.stringKey},{source:c.stringKey});const h={type:"molecule_transfer",key:o.key,exclusive:!!i,from:f,to:[c.key],timestamp:Date.now()};return ja(s)&&s.transactionMeta.phase==="building"&&s.transactionMeta.update.subEvents.push(h),t}function kJ(n,e,t){switch(t){case"newValue":{j2(n,e);break}case"oldValue":{LT(n,e.token);break}}}function LJ(n,e,t){switch(t){case"newValue":{LT(n,e.token);break}case"oldValue":{j2(n,e),e.subType==="atom"&&n.valueMap.set(e.token.key,e.value);break}}}function j2(n,e){const{token:t}=e;e.subType==="writable"&&e.value?Xi(n,t,e.value):Ga(n,t)}function UJ(n,e,t){switch(t){case"newValue":V2(n,e.provenance,e.key);break;case"oldValue":QP(n,e.key);break}}function FJ(n,e,t){switch(t){case"newValue":QP(n,e.key);break;case"oldValue":{const i=e.provenance.map(Tu);V2(n,i,e.key);for(const[r,s]of e.values){const o=n.families.get(r);if(o){Ga(n,o,e.key);const a=`${r}(${As(e.key)})`;n.valueMap.set(a,s)}}}break}}function BJ(n,e,t){switch(t){case"newValue":for(const i of e.to)PL(n,i,e.key,e.exclusive?"exclusive":void 0);break;case"oldValue":{let i="exclusive";for(const r of e.from)PL(n,r,e.key,i),i=void 0}break}}function hy(n,e,t){const i=t==="newValue"?e.subEvents:[...e.subEvents].reverse();for(const r of i)switch(r.type){case"atom_update":OJ(n,r,t);break;case"state_creation":kJ(n,r,t);break;case"state_disposal":LJ(n,r,t);break;case"molecule_creation":UJ(n,r,t);break;case"molecule_disposal":FJ(n,r,t);break;case"molecule_transfer":BJ(n,r,t);break;case"transaction_outcome":hy(n,r,t);break}}function tx(n){return"epoch"in n.transactionMeta}function ja(n){return"phase"in n.transactionMeta}function G2(n,e){return n.transactionMeta.actionContinuities.getRelatedKey(e)}function H2(n,e){return n.transactionMeta.epoch.get(e)}function zJ(n,e){const t=G2(n,e);if(t!==void 0)return H2(n,t)}function eI(n,e,t){n.transactionMeta.epoch.set(e,t)}function VJ(n,e,t){const i=G2(n,e);i!==void 0&&n.transactionMeta.epoch.set(i,t)}function jJ(n,e){const t=Gn(n),{parent:i}=t;t.transactionMeta.phase="applying",t.transactionMeta.update.output=e,i.child=null,i.on.transactionApplying.next(t.transactionMeta);const{subEvents:r}=t.transactionMeta.update;n.logger.info("🛄","transaction",t.transactionMeta.update.token.key,`applying ${r.length} subEvents:`,r),hy(i,t.transactionMeta.update,"newValue"),tx(i)?(VJ(i,t.transactionMeta.update.token.key,t.transactionMeta.update.epoch),Mr(n,{key:t.transactionMeta.update.token.key,type:"transaction"})?.subject.next(t.transactionMeta.update),n.logger.info("🛬","transaction",t.transactionMeta.update.token.key,"applied")):ja(i)&&i.transactionMeta.update.subEvents.push(t.transactionMeta.update),i.on.transactionApplying.next(null)}function $2(n,e,t){const{epoch:i,actionContinuities:r}=n.transactionMeta;r.set(e,t),i.has(e)||i.set(e,-1)}function GJ(n){return{store:n}}const HJ=(n,e,t,i)=>{const r=Gn(n),s={parent:r,child:null,on:r.on,loggers:r.loggers,logger:r.logger,config:r.config,atoms:new sc(r.atoms),atomsThatAreDefault:new Set(r.atomsThatAreDefault),families:new sc(r.families),joins:new sc(r.joins),operation:{open:!1},readonlySelectors:new sc(r.readonlySelectors),timelines:new sc(r.timelines),timelineTopics:r.timelineTopics.overlay(),trackers:new Map,transactions:new sc(r.transactions),selectorAtoms:r.selectorAtoms.overlay(),selectorGraph:r.selectorGraph.overlay(),writableSelectors:new sc(r.writableSelectors),valueMap:new sc(r.valueMap),defaults:r.defaults,disposalTraces:n.disposalTraces.copy(),molecules:new sc(r.molecules),moleculeGraph:r.moleculeGraph.overlay(),moleculeData:r.moleculeData.overlay(),keyRefsInJoins:r.keyRefsInJoins.overlay(),miscResources:new sc(r.miscResources)},o=zJ(n,e.key),a={phase:"building",update:{type:"transaction_outcome",token:e,id:i,epoch:o===void 0?Number.NaN:o+1,timestamp:Date.now(),subEvents:[],params:t,output:void 0},toolkit:{get:((...f)=>Ga(c,...f)),set:((...f)=>{Xi(c,...f)}),reset:((...f)=>{rI(c,...f)}),run:(f,h=kT())=>ZP(c,f,h),find:((...f)=>or(n,...f)),json:f=>Nu(c,f),dispose:((...f)=>{LT(c,...f)}),env:()=>GJ(c)}},c=Object.assign(s,{transactionMeta:a});return r.child=c,n.logger.info("🛫","transaction",e.key,"building with params:",t),c};function W2(n,e){const{key:t}=e,i=n.transactions.has(t),r={key:t,type:"transaction",run:(a,c)=>{const f=_h(r),h=HJ(n,f,a,c);try{const{toolkit:g}=h.transactionMeta,y=e.do(g,...a);return jJ(h,y),y}catch(g){throw IJ(h),n.logger.warn("💥","transaction",t,"caught:",g),g}},install:a=>W2(a,e),subject:new Oi};Gn(n).transactions.set(t,r);const o=_h(r);return i||n.on.transactionCreation.next(o),o}class $J{parent=null;child=null;valueMap=new Map;defaults=new Map;atoms=new Map;writableSelectors=new Map;readonlySelectors=new Map;atomsThatAreDefault=new Set;selectorAtoms=new ac({between:["selectorKey","atomKey"],cardinality:"n:n"});selectorGraph=new ac({between:["upstreamSelectorKey","downstreamSelectorKey"],cardinality:"n:n"},{makeContentKey:(...e)=>e.sort().join(":")});trackers=new Map;families=new Map;joins=new Map;transactions=new Map;transactionMeta={epoch:new Map,actionContinuities:new ac({between:["continuity","action"],cardinality:"1:n"})};timelines=new Map;timelineTopics=new ac({between:["timelineKey","topicKey"],cardinality:"1:n"});disposalTraces=new JP(100);molecules=new Map;moleculeGraph=new ac({between:["upstreamMoleculeKey","downstreamMoleculeKey"],cardinality:"n:n"},{makeContentKey:(...e)=>e.sort().join(":")});moleculeData=new ac({between:["moleculeKey","stateFamilyKey"],cardinality:"n:n"},{makeContentKey:(...e)=>e.sort().join(":")});keyRefsInJoins=new ac({between:["moleculeKey","joinKey"],cardinality:"n:n"},{makeContentKey:(...e)=>e.sort().join(":")});miscResources=new Map;on={atomCreation:new Oi,atomDisposal:new Oi,selectorCreation:new Oi,selectorDisposal:new Oi,timelineCreation:new Oi,transactionCreation:new Oi,transactionApplying:new _J(null),operationClose:new Oi,moleculeCreation:new Oi,moleculeDisposal:new Oi};operation={open:!1};config={name:"IMPLICIT_STORE",lifespan:"ephemeral",isProduction:!0};loggers=[new MJ("warn",(e,t,i)=>!PJ(i))];logger={error:(...e)=>{for(const t of this.loggers)t.error(...e)},info:(...e)=>{for(const t of this.loggers)t.info(...e)},warn:(...e)=>{for(const t of this.loggers)t.warn(...e)}};constructor(e,t=null){if(this.config={...t?.config,...e},t!==null){this.operation={...t?.operation},tx(t)&&(this.transactionMeta={epoch:new Map(t?.transactionMeta.epoch),actionContinuities:new ac(t?.transactionMeta.actionContinuities.toJSON())});for(const[,r]of t.families)r.internalRoles?.includes("mutable")||r.internalRoles?.includes("join")||r.install(this);const i=new Set;for(const[,r]of t.atoms)if(!i.has(r.key)&&(r.install(this),r.type==="mutable_atom")){const s=Nu(t,r),o=BT(r);i.add(s.key),i.add(o.key)}for(const[,r]of t.readonlySelectors)r.install(this);for(const[,r]of t.writableSelectors)i.has(r.key)||r.install(this);for(const[,r]of t.transactions)r.install(this);for(const[,r]of t.timelines)r.install(this)}}}const Ws={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new $J({name:"IMPLICIT_STORE",lifespan:"ephemeral",isProduction:!0}),globalThis.ATOM_IO_IMPLICIT_STORE}};class WJ extends Error{constructor(e,t){super(`${Dh[e.type]} ${As(e.key)} not found in store "${t.config.name}".`)}}function Mr(n,e){let t,i=n;for(;i!==null;){switch(e.type){case"atom":case"mutable_atom":t=i.atoms.get(e.key);break;case"writable_pure_selector":case"writable_held_selector":t=i.writableSelectors.get(e.key);break;case"readonly_pure_selector":case"readonly_held_selector":t=i.readonlySelectors.get(e.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":t=i.families.get(e.key);break;case"timeline":t=i.timelines.get(e.key);break;case"transaction":t=i.transactions.get(e.key);break}if(t)return t;i=i.child}throw new WJ(e,n)}function q2(n,e,t,i){const r=n.disposalTraces.buffer.find(s=>s?.key===As(i));switch(n.logger.error("❌",e.type,e.key,"gets a fallback value because key",i,"is not allocated",r?`This key was previously disposed:
|
|
25
|
-
${r.trace}`:"(no previous disposal trace found)"),t.type){case"mutable_atom_family":{if(n.defaults.has(t.key))return n.defaults.get(t.key);const s=new t.class;return n.defaults.set(t.key,s),s.READONLY_VIEW}case"atom_family":{if(n.defaults.has(t.key))return n.defaults.get(t.key);const s=t.default,o=s(i);return n.defaults.set(t.key,o),o}case"readonly_pure_selector_family":case"writable_pure_selector_family":case"readonly_held_selector_family":case"writable_held_selector_family":{if(n.defaults.has(t.key))return n.defaults.get(t.key);const s=t.default(i);return n.defaults.set(t.key,s),s}}}function Gw(n,e){const{type:t,key:i,catch:r}=e;switch(t){case"readonly_pure_selector":case"writable_pure_selector":{let s;n.logger.info("🧮",t,i,"computing value");try{s=e.getFrom(n),s instanceof Promise&&(s=s.catch(a=>{if(n.logger.error("💥",t,i,"rejected:",a),r){for(const c of r)if(a instanceof c)return a}throw a}))}catch(a){if(n.logger.error("💥",t,i,"rejected:",a),r){for(const c of r)if(a instanceof c)return vu(n,e,a)}throw a}return vu(n,e,s)}case"atom":{let s;if(xh(e.default))try{s=e.default(),s instanceof Promise&&(s=s.catch(a=>{if(n.logger.error("💥",t,i,"rejected:",a),r){for(const c of r)if(a instanceof c)return a}throw a}))}catch(a){if(n.logger.error("💥",t,i,"rejected:",a),r){for(const c of r)if(a instanceof c)return s=vu(n,e,a),n.logger.info("✨",e.type,i,"computed default",s),s}throw a}else s=e.default,n.logger.info("✨",e.type,i,"using static default",s);return vu(n,e,s)}}}function bm(n,e,t){if(n.valueMap.has(e.key))return rV(n,e,t);n.logger.info("❔",e.type,e.key,"value not found in cache");const{key:i}=e;switch(e.type){case"readonly_held_selector":case"writable_held_selector":return n.logger.info("🧮",e.type,i,"computing value"),e.getFrom(n);case"writable_pure_selector":case"readonly_pure_selector":case"atom":return Gw(n,e);case"mutable_atom":{const r=new e.class;return n.logger.info("✨",e.type,i,"created new instance",r),vu(n,e,r)}}}function nx(n,e){return Mr(n,{key:e.family.key,type:`${e.type}_family`})}const IL={atom_family:"atom",molecule_family:"molecule",mutable_atom_family:"mutable_atom",readonly_held_selector_family:"readonly_held_selector",readonly_pure_selector_family:"readonly_pure_selector",writable_held_selector_family:"writable_held_selector",writable_pure_selector_family:"writable_pure_selector"},ix=Symbol("MUST_CREATE"),qJ=Symbol("DO_NOT_CREATE");function rx(n,e,t,i){const r=As(i),s=e.molecules.get(r);if(!s&&e.config.lifespan==="immortal"){const{type:c,key:f}=t;e.logger.warn("💣","key",r,"was used to mint a counterfeit token for",c,`"${f}"`);const h=`${f}(${r})`,g=IL[c];return{counterfeit:!0,key:h,type:g,family:{key:f,subKey:r}}}let a;if(n===ix)e.logger.info("👪",t.type,t.key,"adds member",typeof i=="string"?`\`${i}\``:i),a=t.create(i),s&&e.moleculeData.set(r,t.key);else{const{type:c,key:f}=t,h=`${f}(${r})`,g=IL[c];return{key:h,type:g,family:{key:f,subKey:r}}}return a}function tI(n,...e){let t,i,r,s,o;if(e.length===1){if(o=e[0],"family"in o){const f=nx(n,o);if(r=Mr(n,f),s=Tu(o.family.subKey),t=sx(n,f,s),"counterfeit"in o)return{token:o,family:r,subKey:s,isNew:!1};t?o=t:(i=rx(ix,n,f,s),o=i)}}else r=Mr(n,e[0]),s=e[1],t=sx(n,r,s),t?o=t:(i=rx(ix,n,r,s),o=i);const a="counterfeit"in o;if(!!i&&a===!1&&r){let f;switch(o.type){case"readonly_pure_selector":case"readonly_held_selector":f="readable";break;case"atom":case"mutable_atom":case"writable_pure_selector":case"writable_held_selector":f="writable";break}const h={type:"state_creation",subType:f,token:o,timestamp:Date.now()};r.subject.next(h);const y=Gn(n);if(o.family)if(tx(y))switch(o.type){case"atom":case"mutable_atom":n.on.atomCreation.next(o);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":n.on.selectorCreation.next(o);break}else ja(y)&&y.on.transactionApplying.state===null&&y.transactionMeta.update.subEvents.push(h)}return{token:o,family:r,subKey:s,isNew:!!i}}function Ga(n,...e){const{token:t,family:i,subKey:r}=tI(n,...e);if("counterfeit"in t&&i&&r)return q2(n,t,i,r);const s=Mr(n,t);return bm(n,s)}function sx(n,e,t){const i=As(t),r=`${e.key}(${i})`,s=Gn(n);let o;switch(e.type){case"atom_family":case"mutable_atom_family":o=s.atoms.get(r);break;case"writable_held_selector_family":case"writable_pure_selector_family":o=s.writableSelectors.get(r);break;case"readonly_held_selector_family":case"readonly_pure_selector_family":o=s.readonlySelectors.get(r);break}return o&&_h(o)}function or(n,e,t){const i=Mr(n,e),r=sx(n,e,t);return r||rx(qJ,n,i,t)}function Hw(n,e,t){const i=e.key,r="readonly_pure_selector_family",s={key:i,type:r},o=n.families.get(i);o&&n.config.isProduction===!0&&n.logger.error("❗",r,i,`Overwriting an existing ${Dh[o.type]} "${o.key}" in store "${n.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const a=new Oi,f={...s,create:h=>{const g=As(h),y={key:i,subKey:g},v=`${i}(${g})`,_=Gn(n),S={key:v,get:e.get(h)};return e.catch&&(S.catch=e.catch),aI(_,S,y)},internalRoles:t,subject:a,install:h=>Hw(h,e),default:h=>e.get(h)({get:((...y)=>Ga(n,...y)),find:((...y)=>or(n,...y)),json:y=>Nu(n,y)})};return n.families.set(i,f),s}function nI(n,e,t){const i={key:e.key,type:"atom_family"},r=n.families.get(e.key);r&&n.config.isProduction===!0&&n.logger.error("❗","atom_family",e.key,`Overwriting an existing ${Dh[r.type]} "${r.key}" in store "${n.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const s=new Oi,a={...i,create:c=>{const f=As(c),h={key:e.key,subKey:f},g=`${e.key}(${f})`,y=Gn(n),v=e.default,_={key:g,default:xh(v)?()=>v(c):v};return e.effects&&(_.effects=e.effects(c)),e.catch&&(_.catch=e.catch),zT(y,_,h)},default:e.default,subject:s,install:c=>nI(c,e),internalRoles:t};return n.families.set(e.key,a),xh(e.default)===!1&&n.defaults.set(e.key,e.default),i}function K2(n,e,t){const i=e.key,r="readonly_held_selector_family",s={key:i,type:r},o=n.families.get(i);o&&n.config.isProduction===!0&&n.logger.error("❗",r,i,`Overwriting an existing ${Dh[o.type]} "${o.key}" in store "${n.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const a=new Oi,f={...s,create:h=>{const g=As(h),y={key:i,subKey:g},v=`${i}(${g})`,_=Gn(n);return oI(_,{key:v,const:e.const(h),get:e.get(h)},y)},internalRoles:t,subject:a,install:h=>K2(h,e),default:e.const};return n.families.set(i,f),s}function X2(n,e,t){const i=e.key,r="writable_held_selector_family",s={key:i,type:r},o=n.families.get(i);o&&n.config.isProduction===!0&&n.logger.error("❗",r,i,`Overwriting an existing ${Dh[o.type]} "${o.key}" in store "${n.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const a=new Oi,f={...s,create:h=>{const g=As(h),y={key:i,subKey:g},v=`${i}(${g})`,_=Gn(n);return lI(_,{key:v,const:e.const(h),get:e.get(h),set:e.set(h)},y)},internalRoles:t,subject:a,install:h=>X2(h,e),default:e.const};return n.families.set(i,f),s}function iI(n,e,t){const i=e.key,r="writable_pure_selector_family",s={key:i,type:r},o=n.families.get(i);o&&n.config.isProduction===!0&&n.logger.error("❗",r,i,`Overwriting an existing ${Dh[o.type]} "${o.key}" in store "${n.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const a=new Oi,f={...s,create:h=>{const g=As(h),y={key:i,subKey:g},v=`${i}(${g})`,_=Gn(n),S={key:v,get:e.get(h),set:e.set(h)};return e.catch&&(S.catch=e.catch),cI(_,S,y)},internalRoles:t,subject:a,install:h=>iI(h,e),default:h=>e.get(h)({get:((...y)=>Ga(n,...y)),find:((...y)=>or(n,...y)),json:y=>Nu(n,y)})};return n.families.set(i,f),s}function KJ(n,e){const t="set"in e,i="const"in e;return i&&t?X2(n,e,void 0):i?K2(n,e,void 0):t?iI(n,e):Hw(n,e)}function LT(n,...e){let t;if(e.length===1)t=e[0];else{const i=e[0],r=e[1];t=or(n,i,r)}try{Mr(n,t)}catch{n.logger.error("❌",t.type,t.key,`could not be disposed because it was not found in the store "${n.config.name}".`);return}switch(t.type){case"atom":case"mutable_atom":pI(n,t);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":nZ(n,t);break}}function Y2(n,e){if(n.operation.open){const t=performance.now();return n.logger.info("🚫",e.type,e.key,`deferring setState at T-${t} until setState for "${n.operation.token.key}" is done`),t}return n.operation={open:!0,done:new Set,prev:new Map,timestamp:Date.now(),token:e,subEvents:[]},n.logger.info("⭕",e.type,e.key,`operation start in store "${n.config.name}"${ja(n)?` ${n.transactionMeta.phase} "${n.transactionMeta.update.token.key}"`:""}`),n}function J2(n){n.operation.open&&n.logger.info("🔴",n.operation.token.type,n.operation.token.key,`operation done in store "${n.config.name}"`),n.operation={open:!1},n.on.operationClose.next(n.operation)}const Z2=(n,e)=>n.operation.open?n.operation.done.has(e):(n.logger.error("🐞","unknown",e,"isDone called outside of an operation. This is probably a bug in AtomIO."),!0),UT=(n,e)=>{if(!n.operation.open){n.logger.error("🐞","unknown",e,"markDone called outside of an operation. This is probably a bug in AtomIO.");return}n.operation.done.add(e)};function E3(n,e,t,i,r){const{oldValue:s,newValue:o}=t,a="oldValue"in t,c=_h(e);if(i&&r){e.subject.next({newValue:o});const v={checkpoint:!0,type:"state_creation",subType:"writable",token:c,timestamp:Date.now(),value:o};n.operation.subEvents.push(v),r.subject.next(v);const S=Gn(n);if(c.family)if(tx(S))switch(c.type){case"atom":case"mutable_atom":n.on.atomCreation.next(c);break;case"writable_pure_selector":case"writable_held_selector":n.on.selectorCreation.next(c);break}else ja(S)&&S.on.transactionApplying.state===null&&S.transactionMeta.update.subEvents.push(v);return}const{key:f,subject:h,type:g}=e;let y;if(a?y={oldValue:QS(s)?s.READONLY_VIEW:s,newValue:QS(o)?o.READONLY_VIEW:o}:y={newValue:QS(o)?o.READONLY_VIEW:o},tx(n)){switch(g){case"mutable_atom":n.logger.info("📢",g,f,"is now (",o,") subscribers:",h.subscribers.keys());break;case"atom":case"writable_pure_selector":case"writable_held_selector":n.logger.info("📢",g,f,"went (",s,"->",o,") subscribers:",h.subscribers.keys())}h.next(y)}if(ja(n)&&(g==="mutable_atom"||g==="atom")){if(n.on.transactionApplying.state===null){if(QS(o))return;const{timestamp:v}=n.operation,_={type:"atom_update",token:c,timestamp:v,update:y};n.transactionMeta.update.subEvents.push(_),n.logger.info("📁","atom",f,"stowed (",s,"->",o,")");return}if(hI(e,"tracker:signal")){const v=f.slice(1),_=n.atoms.get(v);bm(n,_,"mut").do(y.newValue)===null===!0&&dI(n,_)}}}const OL=Symbol("UNSET"),A3=(n,e,t)=>{let i,r;if(xh(t)){const s=bm(n,e,"mut");i=s,r=t(s)}else n.valueMap.has(e.key)?i=rV(n,e,"mut"):e.type==="atom"&&!xh(e.default)?i=e.default:i=OL,r=t;return n.logger.info("⭐","atom",e.key,"setting value",r),r=vu(n,e,r),UT(n,e.key),dI(n,e),i===OL?{newValue:r}:{oldValue:i,newValue:r}};function cC(n,e){switch(e.type){case"mutable_atom":return A3(n,e,new e.class);case"atom":{let t;return xh(e.default)?t=Gw(n,e):t=e.default,A3(n,e,t)}}}function XJ(n,e){let t;switch(e.type){case"atom":case"mutable_atom":t=cC(n,e);break;case"writable_held_selector":{const i=ox(n,e.key);for(const s of i.values()){const o=cC(n,s);E3(n,e,o,!1)}const r=e.getFrom(n);t={oldValue:r,newValue:r}}break;case"writable_pure_selector":{const i=Gw(n,e),r=ox(n,e.key);for(const o of r.values()){const a=cC(n,o);E3(n,e,a,!1)}const s=Gw(n,e);t={oldValue:i,newValue:s}}break}return t}function Xi(n,...e){Hx(R3,n,...e)}const C3=Symbol("RESET");function rI(n,...e){const t=[...e,C3];Xi(n,...t)}function YJ(n,e,t){let i,r,s;const{type:o,key:a}=e;switch(e.type){case"writable_pure_selector":i=bm(n,e,"mut"),r=DL(t,i),r=vu(n,e,r);break;case"writable_held_selector":s=e.const,DL(t,s),i=s,r=s}return n.logger.info("⭐",o,a,"setting to",r),UT(n,a),e.setSelf(r),{oldValue:i,newValue:r}}const JJ=(n,e,t)=>{let i;switch(e.type){case"atom":case"mutable_atom":i=A3(n,e,t);break;case"writable_pure_selector":case"writable_held_selector":i=YJ(n,e,t);break}return i},R3=Symbol("OWN_OP"),sI=Symbol("JOIN_OP");function Hx(n,e,...t){let i,r,s,o,a,c;t.length===2?(s=t[0],c=t[1],"family"in s&&(o=nx(e,s),a=Tu(s.family.subKey),i=sx(e,o,a),i?s=i:s=r=rx(ix,e,o,a))):(o=Mr(e,t[0]),a=t[1],c=t[2],i=sx(e,o,a),i?s=i:s=r=rx(ix,e,o,a));const f=c===C3?"reset":"set";let h;if(n===R3){const _=Y2(e,s);if(typeof _=="number"){const M=_,w=e.on.operationClose.subscribe(`waiting to ${f} "${s.key}" at T-${M}`,function(){w(),e.logger.info("🟢",s.type,s.key,"resuming deferred",f,`from T-${M}`),Hx(n,e,s,c)});return}h=_}else h=e;if("counterfeit"in s&&"family"in s){const _=s.family.subKey,S=e.disposalTraces.buffer.find(M=>M?.key===_);e.logger.error("❌",s.type,s.key,"could not be",f,"because key",_,"is not allocated.",S?`this key was previously disposed:${S.trace}`:"(no previous disposal trace found)");return}const g=Mr(h,s);let y;c===C3?y=XJ(h,g):y=JJ(h,g,c),E3(h,g,y,!!r,o),n===R3&&J2(h)}const Q2=(n,e)=>Gn(n).atoms.has(e),ZJ=(n,e)=>Gn(n).writableSelectors.has(e),QJ=(n,e)=>Gn(n).readonlySelectors.has(e),eZ=(n,e)=>Q2(n,e)||ZJ(n,e)||QJ(n,e);function NL(n,e){return Gn(n).selectorGraph.getRelationEntries({downstreamSelectorKey:e}).filter(([i,{source:r}])=>r!==e).map(([i,{source:r}])=>r).filter(i=>eZ(n,i))}function ox(n,e,t=new Set){const i=NL(n,e),r=new Map;for(;i.length>0;){const s=i.pop();if(!t.has(s))if(t.add(s),Q2(n,s)){const o=n.atoms.get(s);r.set(o.key,o)}else i.push(...NL(n,s))}return r}function tZ(n,e,t,i,r){const s=Gn(n),{type:o,key:a}=i;if(o==="atom"||o==="mutable_atom")s.selectorAtoms.set({selectorKey:t,atomKey:a}),n.logger.info("🔍",e,t,`discovers root atom "${a}"`);else{const c=ox(n,a,r);n.logger.info("🔍",e,t,`discovers root atoms: [ ${[...c.values()].map(f=>`"${f.key}"`).join(", ")} ]`);for(const{key:f}of c.values())s.selectorAtoms=s.selectorAtoms.set({selectorKey:t,atomKey:f})}r.add(a)}function FT(n,e,t,i){return{get:(...r)=>{const s=Gn(n),{token:o,family:a,subKey:c}=tI(n,...r);let f;if("counterfeit"in o&&a&&c)f=q2(n,o,a,c);else{const h=Mr(n,o);f=bm(n,h)}return n.logger.info("🔌",e,t,`registers dependency ( "${o.key}" =`,f,")"),s.selectorGraph.set({upstreamSelectorKey:o.key,downstreamSelectorKey:t},{source:o.key}),tZ(n,e,t,o,i),f},set:((...r)=>{const s=Gn(n);Hx(sI,s,...r)}),find:((...r)=>or(n,...r)),json:r=>Nu(n,r)}}function oI(n,e,t){const i=Gn(n),r=new Oi,s=new Set,{key:o,const:a}=e,c="readonly_held_selector";n.logger.info("🔨",c,o,"is being created");const{get:f,find:h,json:g}=FT(i,c,o,s),v={...e,type:c,subject:r,getFrom:S=>{const M=S.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(const[w,{source:A}]of M)A!==o&&S.selectorGraph.delete(w,o);return S.selectorAtoms.delete(o),e.get({get:f,find:h,json:g},a),vu(S,v,a),n.logger.info("✨",c,o,"=",a),s.clear(),a},install:S=>oI(S,e,t)};t&&(v.family=t),i.readonlySelectors.set(o,v);const _={key:o,type:c};return t&&(_.family=t),_}function aI(n,e,t){const i=Gn(n),r=new Oi,s=new Set,o=e.key,a="readonly_pure_selector";n.logger.info("🔨",a,o,"is being created");const{get:c,find:f,json:h}=FT(i,a,o,s),y={...e,type:a,subject:r,getFrom:()=>{const _=Gn(n),S=_.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(const[w,{source:A}]of S)A!==o&&_.selectorGraph.delete(w,o);_.selectorAtoms.delete(o);const M=e.get({get:c,find:f,json:h});return n.logger.info("✨",a,o,"=",M),s.clear(),M},install:_=>aI(_,e,t)};t&&(y.family=t),i.readonlySelectors.set(o,y);const v={key:o,type:a};return t&&(v.family=t),v}function lI(n,e,t){const i=Gn(n),r=new Oi,s=new Set,{key:o,const:a}=e,c="writable_held_selector";n.logger.info("🔨",c,o,"is being created");const f=FT(i,c,o,s),{find:h,get:g,json:y}=f,v={find:h,get:g,json:y},M={...e,type:c,subject:r,getFrom:A=>{const R=A.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(const[P,{source:I}]of R)I!==o&&A.selectorGraph.delete(P,o);return A.selectorAtoms.delete(o),e.get(v,a),vu(A,M,a),n.logger.info("✨",c,o,"=",a),s.clear(),a},setSelf:()=>{e.set(f,a)},install:A=>lI(A,e,t)};t&&(M.family=t),i.writableSelectors.set(o,M);const w={key:o,type:c};return t&&(w.family=t),w}function cI(n,e,t){const i=Gn(n),r=new Oi,s=new Set,o=e.key,a="writable_pure_selector";n.logger.info("🔨",a,o,"is being created");const c=FT(i,a,o,s),{find:f,get:h,json:g}=c,y={find:f,get:h,json:g},S={...e,type:a,subject:r,getFrom:w=>{const A=w.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(const[P,{source:I}]of A)I!==o&&w.selectorGraph.delete(P,o);w.selectorAtoms.delete(o);const R=e.get(y);return n.logger.info("✨",a,o,"=",R),s.clear(),R},setSelf:w=>{e.set(c,w)},install:w=>cI(w,e,t)};t&&(S.family=t),i.writableSelectors.set(o,S);const M={key:o,type:a};return t&&(M.family=t),M}function eV(n,e){const t="set"in e,i="const"in e;if(i&&t){const s=lI(n,e,void 0);return n.on.selectorCreation.next(s),s}if(i){const s=oI(n,e,void 0);return n.on.selectorCreation.next(s),s}if(t){const s=cI(n,e,void 0);return n.on.selectorCreation.next(s),s}const r=aI(n,e,void 0);return n.on.selectorCreation.next(r),r}function nZ(n,e){const t=Gn(n),{key:i,type:r,family:s}=e;if(!s)n.logger.error("❌",r,i,"Standalone selectors cannot be disposed.");else{t.molecules.get(s.subKey)&&t.moleculeData.delete(s.subKey,s.key);let a;switch(e.type){case"writable_held_selector":t.writableSelectors.delete(i),a={key:s.key,type:"writable_held_selector_family"},Mr(n,a).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"writable_pure_selector":t.writableSelectors.delete(i),a={key:s.key,type:"writable_pure_selector_family"},Mr(n,a).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"readonly_held_selector":t.readonlySelectors.delete(i),a={key:s.key,type:"readonly_held_selector_family"},Mr(n,a).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"readonly_pure_selector":t.readonlySelectors.delete(i),a={key:s.key,type:"readonly_pure_selector_family"},Mr(n,a).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break}t.valueMap.delete(i),t.selectorAtoms.delete(i),t.selectorGraph.delete(i),t.moleculeData.delete(s.key,s.subKey),n.logger.info("🔥",e.type,i,"deleted"),ja(t)&&t.transactionMeta.phase==="building"?t.transactionMeta.update.subEvents.push({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()}):n.on.selectorDisposal.next(e)}}const iZ=(n,e)=>{const t=Gn(n);return t.operation.open?t.operation.prev.get(e.key):t.valueMap.get(e.key)},kL=(n,e,t)=>t.subject.subscribe(`${e.type}:${e.key}`,i=>{n.logger.info("📢",e.type,e.key,"root",t.key,"went",i.oldValue,"->",i.newValue);const r=iZ(n,e),s=bm(n,e);n.logger.info("✨",e.type,e.key,"went",r,"->",s),e.subject.next({newValue:s,oldValue:r})});function Sh(n,e,t,i){function r(g){n.operation.open&&s?.type==="atom"&&hI(s,"tracker:signal")&&"*"+n.operation.token.key===e.key&&"inboundTracker"in i||i(g)}tI(n,e);const s=Mr(n,e);n.logger.info("👀",s.type,s.key,`Adding subscription "${t}"`);const o=s.type==="writable_pure_selector"||s.type==="readonly_pure_selector",a=new Map;let c=r;if(o){bm(n,s);for(const[g,y]of ox(n,s.key))a.set(g,kL(n,s,y));c=function(y){const v=ox(n,s.key);for(const[_,S]of a)v.get(_)?v.delete(_):(S(),a.delete(_));for(const[_,S]of v)a.set(_,kL(n,s,S));r(y)}}const f=s.subject.subscribe(t,c);return()=>{n.logger.info("🙈",s.type,s.key,`Removing subscription "${t}"`),f();for(const g of a.values())g()}}const tV=(n,e,t,i)=>{const r=Mr(n,e);n.logger.info("👀","timeline",e.key,`Adding subscription "${t}"`);const s=r.subject.subscribe(t,i);return()=>{n.logger.info("🙈","timeline",e.key,`Removing subscription "${t}" from timeline`),s()}},nV=(n,e,t,i)=>{const r=Mr(n,e);n.logger.info("👀","transaction",e.key,`Adding subscription "${t}"`);const s=r.subject.subscribe(t,i);return()=>{n.logger.info("🙈","transaction",e.key,`Removing subscription "${t}"`),s()}};function rZ(n,e,t,i=kT()){switch(e.type){case"atom":case"mutable_atom":case"readonly_pure_selector":case"readonly_held_selector":case"writable_pure_selector":case"writable_held_selector":return Sh(n,e,i,t);case"transaction":return nV(n,e,i,t);case"timeline":return tV(n,e,i,t)}}class uI{initializeSignalAtom(e,t){const i=`*${e.key}`;t.atoms.delete(i),t.valueMap.delete(i);const r=e.family?{key:`*${e.family.key}`,subKey:e.family.subKey}:void 0,s=zT(t,{key:i,default:null},r,["tracker:signal"]);if(t.parent?.valueMap.has(i)){const o=t.parent.valueMap.get(i);t.valueMap.set(i,o)}return s}unsubscribeFromInnerValue;unsubscribeFromState;captureSignalsFromCore(e,t,i){const r=e.key,s=i.config.name,o=ja(i)?i.transactionMeta.update.token.key:"main",a=`tracker-from-core:${s}:${o}:${r}`,c=h=>{Hx(sI,i,t,h)},f=Ga(i,e);this.unsubscribeFromInnerValue=f.subscribe(a,c),this.unsubscribeFromState=Sh(i,e,a,(function(g){g.newValue!==g.oldValue&&(this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=g.newValue.subscribe(a,c))}).bind(this))}supplySignalsToCore(e,t,i){const r=e.key,s=i.config.name,o=ja(i)?i.transactionMeta.update.token.key:"main",a=`tracker-to-core:${s}:${o}:${r}`;Sh(i,t,a,Object.assign(function({newValue:f,oldValue:h}){const g=i.timelineTopics.getRelatedKey(t.key);if(g&&i.timelines.get(g)?.timeTraveling){const y=tV(i,{key:g,type:"timeline"},a,function(_){y(),Xi(i,e,S=>(_==="redo"&&f?S.do(f):_==="undo"&&h&&S.undo(h),S))});return}Xi(i,e,y=>(y.do(f),y))},{inboundTracker:!0}))}mutableAtomToken;latestSignalToken;[Symbol.dispose];constructor(e,t){const i=Gn(t),r=this.initializeSignalAtom(e,i);this.mutableAtomToken=e,this.latestSignalToken=r,this.captureSignalsFromCore(e,r,i),this.supplySignalsToCore(e,r,i),i.trackers.set(e.key,this),this[Symbol.dispose]=()=>{this.unsubscribeFromInnerValue(),this.unsubscribeFromState(),i.trackers.delete(e.key)}}}function fI(n,e,t){n.logger.info("🔨","atom",e.key,`creating in store "${n.config.name}"`);const i=Gn(n),{key:r}=e,s=i.atoms.get(r),o="mutable_atom";if(s?.type===o&&n.config.isProduction===!0)return n.logger.error("❌",o,r,"Tried to create atom, but it already exists in the store."),_h(s);const a=new Oi,c={...e,type:o,install:h=>(h.logger.info("🛠️","atom",r,`installing in store "${h.config.name}"`),fI(h,e,t)),subject:a};t&&(c.family=t),i.atoms.set(c.key,c);const f=_h(c);if(new uI(f,n),t||eV(n,{key:`${r}:JSON`,get:({get:h})=>h(f).toJSON(),set:({set:h},g)=>{h(f,e.class.fromJSON(g))}}),e.effects){let h=0;const g=[];for(const y of e.effects){const v=y({resetSelf:()=>{rI(n,f)},setSelf:_=>{Xi(n,f,_)},onSet:_=>Sh(n,f,`effect[${h}]`,_),token:f,store:XP(n)});v&&g.push(v),++h}c.cleanup=()=>{for(const y of g)y()}}return n.on.atomCreation.next(f),f}class sZ{trackers=new Map;latestSignalAtoms;mutableAtoms;constructor(e,t){const i=nI(t,{key:`*${e.key}`,default:null},["mutable","updates"]);this.latestSignalAtoms=Mr(t,i),this.mutableAtoms=e;const r=s=>{const{type:o,token:a}=s;if(a.family){const c=Tu(a.family.subKey);switch(o){case"state_creation":this.trackers.set(c,new uI(a,t));break;case"state_disposal":{const f=this.trackers.get(c);f&&(f[Symbol.dispose](),this.trackers.delete(c))}}}};this.mutableAtoms.subject.subscribe(`store=${t.config.name}::tracker-atom-family`,r)}}function iV(n,e,t){const i={key:e.key,type:"mutable_atom_family"},r=n.families.get(e.key);r&&n.config.isProduction===!0&&n.logger.error("❗","mutable_atom_family",e.key,`Overwriting an existing ${Dh[r.type]} "${r.key}" in store "${n.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const s=new Oi,a={...i,create:c=>{const f=As(c),h={key:e.key,subKey:f},g=`${e.key}(${f})`,y=Gn(n),v={key:g,class:e.class};return e.effects&&(v.effects=e.effects(c)),fI(y,v,h)},class:e.class,subject:s,install:c=>iV(c,e),internalRoles:t};return n.families.set(e.key,a),iI(n,{key:`${e.key}:JSON`,get:c=>({get:f})=>f(i,c).toJSON(),set:c=>({set:f},h)=>{f(i,c,e.class.fromJSON(h))}},["mutable","json"]),new sZ(a,n),i}const oZ=(n,e)=>{const t=Gn(e),i=`${n.key}:JSON`;return t.families.get(i)},Nu=(n,e)=>{if(e.family){const i=Gn(n),s={key:`${e.family.key}:JSON`,type:"writable_pure_selector_family"},o=Mr(i,s),a=Tu(e.family.subKey);return or(n,o,a)}return{type:"writable_pure_selector",key:`${e.key}:JSON`}},BT=n=>{const t={type:"atom",key:`*${n.key}`};return n.family&&(t.family={key:`*${n.family.key}`,subKey:n.family.subKey}),t};function QS(n){return typeof n=="object"&&n!==null&&"do"in n&&"undo"in n&&"subscribe"in n&&"READONLY_VIEW"in n&&"toJSON"in n}function vu(n,e,t){const{key:i,subject:r,type:s}=e,o=n.valueMap.get(i);if(o instanceof jw&&!o.done){const a=o;return t instanceof Promise?(a.use(t),a):(n.valueMap.set(i,t),t)}if(t instanceof Promise){const a=new jw(t);return n.valueMap.set(i,a),a.then(function(f){if(n.valueMap.get(i)===a){switch(Y2(n,e),vu(n,e,f),s){case"atom":dI(n,e);break;case"readonly_pure_selector":case"writable_pure_selector":oV(n,i);break}J2(n),r.next({newValue:f,oldValue:a})}}).catch(c=>{n.logger.error("💥",e.type,i,"rejected:",c)}),a}return n.logger.info("📝",e.type,e.key,"writing to cache",t),n.valueMap.set(i,t),t}function rV(n,e,t){n.logger.info("📖",e.type,e.key,"reading cached value");let i=n.valueMap.get(e.key);if(t==="mut"&&e.type==="mutable_atom"&&ja(n)){const s=e,{parent:o}=n;if(n.valueMap.hasOwn(s.key))return i;const a=o.valueMap.get(s.key);n.logger.info("📃","atom",s.key,"copying");const c=a.toJSON(),f=s.class.fromJSON(c);n.valueMap.set(s.key,f),new uI(s,o),i=f}return i}function sV(n,e){const t=n.valueMap.get(e);t instanceof jw||(n.operation.open&&n.operation.prev.set(e,t),n.valueMap.delete(e),n.logger.info("🗑","state",e,"evicted"))}function dI(n,e){const t=Gn(n),{key:i,type:r}=e,s=t.selectorAtoms.getRelatedKeys(i);if(t.logger.info("🧹",r,i,s?`evicting ${s.size} states downstream:`:"no downstream states",s??"to evict"),s){t.operation.open&&t.logger.info("🧹",r,i,`[ ${[...t.operation.done].join(", ")} ] already done`);for(const o of s)Z2(t,o)||(sV(t,o),UT(t,o))}}function oV(n,e){const t=Gn(n),i=t.selectorGraph.getRelationEntries({upstreamSelectorKey:e}).filter(([r,{source:s}])=>s===e);for(const[r]of i)Z2(t,r)||(sV(t,r),UT(t,r),oV(n,r))}function zT(n,e,t,i){const r="atom",{key:s}=e;n.logger.info("🔨",r,s,"is being created");const o=Gn(n),a=o.atoms.get(s);if(a?.type===r&&n.config.isProduction===!0)return n.logger.error("❌","atom",s,"Tried to create atom, but it already exists in the store."),_h(a);const c=new Oi,f={...e,type:r,install:g=>(g.logger.info("🛠️",r,s,`installing in store "${g.config.name}"`),zT(g,e,t)),subject:c};t&&(f.family=t),i&&(f.internalRoles=i),o.atoms.set(s,f);const h=_h(f);if(e.effects){let g=0;const y=[];for(const v of e.effects){const _=v({resetSelf:()=>{rI(n,h)},setSelf:S=>{Xi(n,h,S)},onSet:S=>Sh(n,h,`effect[${g}]`,S),token:h,store:XP(n)});_&&y.push(_),++g}f.cleanup=()=>{for(const v of y)v()}}return n.on.atomCreation.next(h),h}function hI(n,e){return"internalRoles"in n?n.internalRoles.includes(e):!1}function pI(n,e){const t=Gn(n),{key:i,family:r}=e,s=Mr(t,e);if(!r)n.logger.error("❌","atom",i,"Standalone atoms cannot be disposed.");else{s.cleanup?.();const o=n.valueMap.get(s.key),a=nx(n,e),f=Mr(n,a).subject,h={type:"state_disposal",subType:"atom",token:e,value:o,timestamp:Date.now()};f.next(h);const g=ja(t);if(t.atoms.delete(i),t.valueMap.delete(i),t.selectorAtoms.delete(i),t.atomsThatAreDefault.delete(i),t.moleculeData.delete(r.key,r.subKey),n.timelineTopics.delete(i),e.type==="mutable_atom"){const y=BT(e);pI(n,y),n.trackers.delete(i)}if(n.logger.info("🔥","atom",i,"deleted"),g&&t.transactionMeta.phase==="building"){const y=t.transactionMeta.update.subEvents.at(-1),_=y?.type==="molecule_disposal"&&y.values.some(([M])=>M===s.family?.key),S=hI(s,"tracker:signal");!_&&!S&&t.transactionMeta.update.subEvents.push(h)}else n.on.atomDisposal.next(e)}}function Ml(n){return n[0].toUpperCase()+n.slice(1)}const LL=B2(["add","delete","clear"]);class th extends Set{mode="record";subject=new Oi;constructor(e){super(e)}READONLY_VIEW=this;toJSON(){return[...this]}static fromJSON(e){return new th(e)}add(e){const t=super.add(e);return this.mode==="record"&&this.emit({type:"add",value:e}),t}clear(){const e=this.mode==="record"?[...this]:null;super.clear(),e&&this.emit({type:"clear",values:e})}delete(e){const t=super.delete(e);return this.mode==="record"&&this.emit({type:"delete",value:e}),t}subscribe(e,t){return this.subject.subscribe(e,t)}emit(e){this.subject.next(th.packUpdate(e))}do(e){this.mode="playback";const t=th.unpackUpdate(e);switch(t.type){case"add":this.add(t.value);break;case"delete":this.delete(t.value);break;case"clear":this.clear()}return this.mode="record",null}undo(e){const t=th.unpackUpdate(e);switch(this.mode="playback",t.type){case"add":this.delete(t.value);break;case"delete":this.add(t.value);break;case"clear":{const i=t.values;for(const r of i)this.add(r)}}return this.mode="record",null}static packUpdate(e){const t=LL[e.type]+"";return e.type==="clear"?t+e.values.map(da).join(""):t+da(e.value)}static unpackUpdate(e){const[t,i]=e.split(""),r=LL[t];return r==="clear"?{type:"clear",values:i.split("").map(ha)}:{type:r,value:ha(i)}}}class aV{toolkit;options;relations;states;relatedKeysAtoms;transact(e,t){const i=this.toolkit;this.toolkit=e,t(this),this.toolkit=i}store;[Symbol.dispose](){}constructor(e,t){this.store=e,this.options=t,this.store.miscResources.set(`join:${t.key}`,this),this.toolkit={get:((...v)=>Ga(e,...v)),set:((...v)=>{Xi(e,...v)}),find:((...v)=>or(e,...v)),json:v=>Nu(e,v)};const i=t.between[0],r=t.between[1],s=iV(e,{key:`${t.key}/relatedKeys`,class:th},["join","relations"]);this.relatedKeysAtoms=s;const o=(v,_,S)=>{const{find:M,get:w,set:A}=v,R=M(s,_),P=w(R);for(const I of P)S.includes(I)||A(s,I,U=>(U.delete(_),U));A(R,I=>{I.clear();for(const k of S){const U=M(s,k),B=w(U),N=B.has(_);if(this.relations.cardinality==="1:n"){const L=[];for(const $ of B){if($===_)continue;let W;Hx(sI,this.store,s,$,q=>(q.delete(k),W=q.size,q)),W===0&&L.push($)}!N&&B.size>0&&A(U,$=>($.clear(),$));for(const $ of L)e.keyRefsInJoins.delete(hw(k,$))}N||A(U,L=>(L.add(_),L)),I.add(k)}return I})},a=(v,_,S)=>{const{set:M}=v;M(s,_,w=>{for(const A of S)w.add(A);return w});for(const w of S)M(s,w,A=>(A.add(_),A));return!0},f={getRelatedKeys:v=>this.toolkit.get(s,v),addRelation:(v,_)=>{this.store.keyRefsInJoins.set(`"${v}"`,t.key),this.store.keyRefsInJoins.set(`"${_}"`,t.key),this.store.keyRefsInJoins.set(hw(v,_),t.key),this.toolkit.set(s,v,S=>S.add(_)),this.toolkit.set(s,_,S=>S.add(v))},deleteRelation:(v,_)=>{this.toolkit.set(s,v,M=>(M.delete(_),M)),this.toolkit.set(s,_,M=>(M.delete(v),M));const S=hw(v,_);this.store.keyRefsInJoins.delete(S)},replaceRelationsSafely:(v,_)=>{o(this.toolkit,v,_)},replaceRelationsUnsafely:(v,_)=>{a(this.toolkit,v,_)},has:(v,_)=>{const S=this.toolkit.get(s,v);return _?S.has(_):S.size>0}},h=new ac(t,{externalStore:f,isAType:t.isAType,isBType:t.isBType}),g=()=>Hw(e,{key:`${t.key}/singleRelatedKey`,get:v=>({get:_})=>{const S=_(s,v);for(const M of S)return M;return null}},["join","keys"]),y=()=>Hw(e,{key:`${t.key}/multipleRelatedKeys`,get:v=>({get:_})=>{const S=oZ(s,e);return _(S,v)}},["join","keys"]);switch(t.cardinality){case"1:1":{const v=g(),_=`${i}KeyOf${Ml(r)}`,S=`${r}KeyOf${Ml(i)}`;this.relations=h,this.states={[_]:v,[S]:v};break}case"1:n":{const v=g(),_=y(),S=`${i}KeyOf${Ml(r)}`,M=`${r}KeysOf${Ml(i)}`,w={[S]:v,[M]:_};this.relations=h,this.states=w;break}case"n:n":{const v=y(),_=`${i}KeysOf${Ml(r)}`,S=`${r}KeysOf${Ml(i)}`;this.relations=h,this.states={[_]:v,[S]:v}}}}}function aZ(n,e){return n.joins.set(e.key,new aV(n,e)),{key:e.key,type:"join",a:e.between[0],b:e.between[1],cardinality:e.cardinality}}function lV(n,e){let t=n.joins.get(e.key);if(t===void 0){const r=Ws.STORE.joins.get(e.key);if(r===void 0)throw new Error(`Join "${e.key}" not found in store "${n.config.name}"`);const s=XP(n);t=new aV(s,r.options),n.joins.set(e.key,t)}return t}function lZ(n,e,t){const i=lV(n,e);let r;switch(e.cardinality){case"1:1":{const s=`${e.a}KeyOf${Ml(e.b)}`,o=`${e.b}KeyOf${Ml(e.a)}`;r={get[s](){const a=i.states[s];return or(n,a,t)},get[o](){const a=i.states[o];return or(n,a,t)}};break}case"1:n":{const s=`${e.a}KeyOf${Ml(e.b)}`,o=`${e.b}KeysOf${Ml(e.a)}`;r={get[s](){const a=i.states[s];return or(n,a,t)},get[o](){const a=i.states[o];return or(n,a,t)}};break}case"n:n":{const s=`${e.a}KeysOf${Ml(e.b)}`,o=`${e.b}KeysOf${Ml(e.a)}`;r={get[s](){const a=i.states[s];return or(n,a,t)},get[o](){const a=i.states[o];return or(n,a,t)}}}}return r}function D3(n,e,t){const i=lV(n,e);return[i.relatedKeysAtoms,i.relatedKeysAtoms]}const wc=ne.createContext(Ws.STORE);function cV(n,e){const t=e(null);return ne.useEffect(()=>{It(n,t.current)},[n]),t}function uV(n,...e){let t;if(e.length===2){const i=e[0],r=e[1];t=or(n,i,r)}else t=e[0];return t}function ka(...n){const e=ne.useContext(wc),t=uV(e,...n),i=ne.useRef(null);return i.current??=r=>{Xi(e,t,r)},i.current}function fV(n,e){if(globalThis.env?.NODE_ENV==="development"){const r=ne.useRef(!1);ne.useEffect(()=>{let s=r.current;if(s===!1)s=n()??!0,r.current=s;else return()=>{xh(s)&&s(),r.current=!1}},e)}else ne.useEffect(n,e)}function on(...n){const e=ne.useContext(wc),t=uV(e,...n),i=ne.useId();if(t.type==="mutable_atom"||t.type==="readonly_held_selector"||t.type==="writable_held_selector"){const[,o]=ne.useState(0),a=ne.useRef(Ga(e,t));return fV(()=>Sh(e,t,`use-o:${i}`,({newValue:f})=>{a.current=f,o(h=>h+1)}),[t.key]),a.current}const r=ne.useCallback(o=>Sh(e,t,`use-o:${i}`,o),[t.key]),s=ne.useCallback(()=>Ga(e,t),[t.key]);return ne.useSyncExternalStore(r,s,s)}function VT(n,e){const t=ne.useContext(wc),i=n.type==="mutable_atom_family"?or(t,n,e):n,r=Nu(t,i);return on(r)}const cZ="modulepreload",uZ=function(n){return"/"+n},UL={},mI=function(e,t,i){let r=Promise.resolve();if(t&&t.length>0){let f=function(h){return Promise.all(h.map(g=>Promise.resolve(g).then(y=>({status:"fulfilled",value:y}),y=>({status:"rejected",reason:y}))))};var o=f;document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),c=a?.nonce||a?.getAttribute("nonce");r=f(t.map(h=>{if(h=uZ(h),h in UL)return;UL[h]=!0;const g=h.endsWith(".css"),y=g?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${h}"]${y}`))return;const v=document.createElement("link");if(v.rel=g?"stylesheet":cZ,g||(v.as="script"),v.crossOrigin="",v.href=h,c&&v.setAttribute("nonce",c),document.head.appendChild(v),g)return new Promise((_,S)=>{v.addEventListener("load",_),v.addEventListener("error",()=>S(new Error(`Unable to preload CSS for ${h}`)))})}))}function s(a){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=a,window.dispatchEvent(c),!c.defaultPrevented)throw a}return r.then(a=>{for(const c of a||[])c.status==="rejected"&&s(c.reason);return e().catch(s)})};function Uy(n,e,t){return n.on(e,t),()=>{n.off(e,t)}}class fZ extends Map{set(e,t){return this.has(e)?(console.warn("Tried to set a key that already exists in an InvariantMap",{key:e,value:t}),this):super.set(e,t)}}class $w{type="continuity";globals=[];actions=[];perspectives=[];key;constructor(e){this.key=e}static existing=new fZ;static create(e,t){const i=new $w(e),{type:r,globals:s,actions:o,perspectives:a}=t(i),c={type:r,key:e,globals:s,actions:o,perspectives:a};return $w.existing.set(e,c),c}add(...e){switch(e[0].type){case"atom":case"mutable_atom":this.globals.push(...e);break;case"transaction":this.actions.push(...e);break;case"atom_family":case"mutable_atom_family":{const[i,r]=e;this.perspectives.push({type:"realtime_perspective",resourceAtoms:i,viewAtoms:r})}break}return this}}function dZ(n){const{key:e,config:t}=n,i=$w.create(e,t),{actions:r}=i;for(const s of r)$2(Ws.STORE,e,s.key);return eI(Ws.STORE,e,-1),i}const dV=n=>n.startsWith("user::"),hV=n=>n.startsWith("room::"),P3=YP({key:"roomKeys",class:th}),xm=N2({key:"usersInRooms",between:["room","user"],cardinality:"1:n",isAType:hV,isBType:dV});Sc({key:"visibleUsersInRooms",get:n=>({get:e})=>{const[,t]=uv(xm),i=e(t,n);return[n,...i]}});Sc({key:"visibilityFromRoom",get:n=>({get:e})=>{const[t]=uv(xm),i=e(t,n);return[n,...i]}});Sc({key:"mutualUsers",get:n=>({get:e})=>{const[t,i]=uv(xm),r=e(i,n);for(const s of r)return[...e(t,s)];return[n]}});const pV=N2({key:"ownersOfRooms",between:["user","room"],cardinality:"1:n",isAType:dV,isBType:hV});var FL={};const hZ=ti({key:"mySocketKey",default:void 0}),Zf=ti({key:"myUserKey",default:null,effects:[n=>{typeof window<"u"&&mI(async()=>{const{storageSync:e}=await Promise.resolve().then(()=>$oe);return{storageSync:e}},void 0).then(({storageSync:e})=>{e(globalThis.localStorage,JSON,"myUserKey")(n)})}]}),gI=dr({key:"myRoomKey",get:({get:n})=>{if("process"in globalThis&&"env"in process&&"REALTIME_ROOM_KEY"in FL)return FL.REALTIME_ROOM_KEY;const e=n(Zf);if(!e)return null;const[,t]=uv(xm),i=n(t,e);for(const r of i)return r;return null}}),pw=ti({key:"optimisticUpdateQueue",default:()=>[]}),I3=ti({key:"confirmedUpdateQueue",default:()=>[]}),pZ=(n,e,t,i,r)=>s=>{function o(c,f){if(n.logger.info("🧑⚖️","continuity",e,"reconciling updates"),Xi(n,pw,g=>(g.shift(),g)),c.id===f.id){const g=JSON.stringify(c.subEvents),y=JSON.stringify(f.subEvents);if(g===y){n.logger.info("✅","continuity",e,`results for ${c.id} match between client and server`),t.emit(`ack:${e}`,f.epoch);return}}else n.logger.info("❌","continuity",e,`thought update #${f.epoch} was ${c.token.key}:${c.id}, but it was actually ${f.token.key}:${f.id}`);n.logger.info("🧑⚖️","continuity",e,"updates do not match",c,f);const h=i.toReversed();for(const g of h)hy(n,g,"oldValue");n.logger.info("⏪","continuity",e,"undid optimistic updates:",h),hy(n,c,"oldValue"),n.logger.info("⏪","continuity",e,"undid zeroth optimistic update",c),hy(n,f,"newValue"),n.logger.info("⏩","continuity",e,"applied confirmed update",f),t.emit(`ack:${e}`,f.epoch);for(const g of i){const y={type:"transaction",key:g.token.key},{id:v,params:_}=g;ZP(n,y,v)(..._)}n.logger.info("⏩","continuity",e,"reapplied subsequent optimistic updates:",i)}n.logger.info("🧑⚖️","continuity",e,"integrating confirmed update",{confirmedUpdate:s,confirmedUpdates:r,optimisticUpdates:i});const a=i[0];if(a)if(n.logger.info("🧑⚖️","continuity",e,"has optimistic updates to reconcile"),s.epoch===a.epoch){n.logger.info("🧑⚖️","continuity",e,`epoch of confirmed update #${s.epoch} matches zeroth optimistic update`),o(a,s);for(const c of r){const f=i[0];if(c.epoch===f?.epoch)o(f,c);else break}}else n.logger.info("🧑⚖️","continuity",e,`epoch of confirmed update #${s.epoch} does not match zeroth optimistic update #${a.epoch}`),r.some(f=>f.epoch===s.epoch)||(n.logger.info("👈","continuity",e,"pushing confirmed update to queue",s),Xi(n,I3,f=>(f.push(s),f.sort((h,g)=>h.epoch-g.epoch),f)));else{n.logger.info("🧑⚖️","continuity",e,"has no optimistic updates to deal with");let c;c=H2(n,e),c===s.epoch-1?(n.logger.info("✅","continuity",e,`integrating update #${s.epoch} (${s.token.key} ${s.id})`),hy(n,s,"newValue"),t.emit(`ack:${e}`,s.epoch),eI(n,e,s.epoch)):c!==void 0&&(n.logger.info("🧑⚖️","continuity",e,`received update #${s.epoch} but still waiting for update #${c+1}`,{clientEpoch:c,serverEpoch:s.epoch}),r.some(h=>h.epoch===s.epoch)?n.logger.info("👍","continuity",e,`confirmed update #${s.epoch} is already enqueued`):(n.logger.info("👈","continuity",e,`pushing confirmed update #${s.epoch} to queue`),Xi(n,I3,h=>(h.push(s),h.sort((g,y)=>g.epoch-y.epoch),h))))}};function mZ(n){return e=>{for(const t of e)pI(n,t)}}function gZ(n){return e=>{let t=0,i,r;for(const s of e)t%2===0?i=s:(r=s,Xi(n,i,r)),t++}}const O3=new WeakMap,BL=new WeakMap;function yZ(n){let e=O3.get(n);return e===void 0&&(e=new Map,O3.set(n,e)),e}function jT(n,e,t){BL.get(n)!==n.id&&(BL.set(n,n.id),O3.delete(n));const r=yZ(n);let s=r.get(e);if(s)s.timer.use(new Promise(()=>{})),s.refcount++;else{s={refcount:1,timer:new jw(()=>{})},r.set(e,s);const o=t(e);s.timer.then(()=>{o(),r.delete(e)})}return()=>{if(s.refcount--,s.refcount===0){const o=new Promise(a=>{setTimeout(a,50)});s.timer.use(o)}}}function mV(n,e,t){return jT(e,t.key,i=>{const r=Uy(e,`serve:${i}`,s=>{Xi(n,t,s)});return e.emit(`sub:${t.key}`),()=>{e.emit(`unsub:${i}`),r()}})}function gV(n,e,t,i){const r=or(n,t,i);return jT(e,r.key,()=>{const s=Uy(e,`serve:${r.key}`,o=>{Xi(n,r,o)});return e.emit(`sub:${t.key}`,i),()=>{e.emit(`unsub:${r.key}`),s()}})}function yV(n,e,t){const i=Nu(n,t),r=BT(t);return jT(e,t.key,()=>{const s=Uy(e,`init:${t.key}`,a=>{Xi(n,i,a)}),o=Uy(e,`next:${t.key}`,a=>{Xi(n,r,a)});return e.emit(`sub:${t.key}`),()=>{e.emit(`unsub:${t.key}`),s(),o()}})}function vV(n,e,t,i){const r=or(n,t,i),s=Nu(n,r),o=BT(r);return jT(e,r.key,()=>{const a=Uy(e,`init:${r.key}`,f=>{Xi(n,s,f)}),c=Uy(e,`next:${r.key}`,f=>{Xi(n,o,f)});return e.emit(`sub:${t.key}`,i),()=>{e.emit(`unsub:${r.key}`),a(),c()}})}function bV(n,e,t){const i=new Map,r=()=>{const o=n.selectorAtoms.getRelatedKeys(t.key);if(o){for(const[a,c]of i)o.has(a)||(c(),i.delete(a));for(const a of o){if(i.has(a))continue;const c=n.atoms.get(a);switch(c.type){case"atom":{if(c.family){const{subKey:f}=c.family,h=Tu(f),g=nx(n,c);i.set(a,gV(n,e,g,h))}else i.set(a,mV(n,e,c));break}case"mutable_atom":{if(c.family){const{subKey:f}=c.family,h=Tu(f),g=nx(n,c);i.set(a,vV(n,e,g,h))}else i.set(a,yV(n,e,c));break}}}}},s=Sh(n,t,"pull-watches-dependencies",()=>{r()});return r(),()=>{for(const[,o]of i)o();i.clear(),s()}}function vZ(n,e,t){return bV(n,e,t)}function bZ(n,e,t,i){const r=or(n,t,i);return bV(n,e,r)}function xZ(n,e,t){const i=t.key,r=Ga(n,pw),s=Ga(n,I3),o=(g,y)=>{e.off(`continuity-init:${i}`,o);let v=0,_,S;for(const M of y)v%2===0?_=M:(S=M,"type"in _&&_.type==="mutable_atom"&&(_=Nu(n,_)),Xi(n,_,S)),v++;eI(n,i,g)};e.off(`continuity-init:${i}`),e.on(`continuity-init:${i}`,o);const a=pZ(n,i,e,r,s);e.off(`tx-new:${i}`),e.on(`tx-new:${i}`,a);const c=t.actions.map(g=>($2(n,i,g.key),nV(n,g,`tx-run:${i}`,v=>{n.logger.info("🤞","continuity",i,"enqueuing optimistic update");const _=r.findIndex(S=>S.id===v.id);_===-1?(n.logger.info("🤞","continuity",i,"enqueuing new optimistic update"),Xi(n,pw,S=>(S.push(v),S.sort((M,w)=>M.epoch-w.epoch),S))):(n.logger.info("🤞","continuity",i,`replacing existing optimistic update at index ${_}`),Xi(n,pw,S=>(S[_]=v,S))),e.emit(`tx-run:${i}`,{id:v.id,token:g,params:v.params})}))),f=gZ(n),h=mZ(n);return e.on(`reveal:${i}`,f),e.on(`conceal:${i}`,h),e.emit(`get:${i}`),()=>{e.off(`continuity-init:${i}`),e.off(`tx-new:${i}`);for(const g of c)g()}}const _m=ne.createContext({socket:null,services:null}),_Z=({children:n,socket:e})=>{const t=ne.useRef(new Map).current,i=ka(hZ);return ne.useEffect(()=>{i(e?.id?`socket::${e.id}`:void 0),e?.on("connect",()=>{i(e?.id?`socket::${e.id}`:void 0)}),e?.on("disconnect",()=>{i(void 0)})},[e,i]),j.jsx(_m.Provider,{value:{socket:e,services:t},children:n})};function Sm(n,e){const{socket:t,services:i}=ne.useContext(_m);fV(()=>{let r=i?.get(n);return r?++r.consumerCount:t&&(r={consumerCount:1,dispose:e(t)},i?.set(n,r)),()=>{r&&(--r.consumerCount,r.consumerCount===0&&(r.dispose?.(),i?.delete(n)))}},[t,n])}function Eu(n){const e=ne.useContext(wc);return Sm(`pull:${n.key}`,t=>mV(e,t,n)),on(n)}function vc(n,e){const t=ne.useContext(wc),i=or(t,n,e);return Sm(`pull:${i.key}`,r=>gV(t,r,n,e)),on(i)}function yI(n){const e=ne.useContext(wc);return Sm(`pull:${n.key}`,t=>yV(e,t,n)),on(n)}function e1(n,e){const t=ne.useContext(wc),i=or(t,n,e);return Sm(`pull:${i.key}`,r=>vV(t,r,n,e)),on(i)}function rm(n){const e=ne.useContext(wc);return Sm(`pull:${n.key}`,t=>vZ(e,t,n)),on(n)}function SZ(n,e){const t=ne.useContext(wc),i=or(t,n,e);return Sm(`pull:${i.key}`,r=>bZ(t,r,n,e)),on(i)}function wm(){const n=ne.useContext(wc),{socket:e}=ne.useContext(_m);yI(P3);const t=Eu(Zf)??"user::$_NONE_$",[i,r]=D3(n,xm);e1(r,t);const s=on(r,t);let o;for(const y of s){o=y;break}const a=o??"room::$_NONE_$",c=or(n,i,a);e1(i,a);const[f,h]=D3(n,pV),g=or(n,f,t);return e1(f,t),e1(h,a),{roomSocket:e,myRoomKey:o,allRoomKeysAtom:P3,myMutualsAtom:c,myOwnedRoomsAtom:g}}function wZ(n){const e=ne.useContext(wc);Sm(`tx-sync:${n.key}`,t=>xZ(e,t,n))}var uC={exports:{}},H0={},fC={exports:{}},dC={};var zL;function MZ(){return zL||(zL=1,(function(n){function e(H,Q){var te=H.length;H.push(Q);e:for(;0<te;){var le=te-1>>>1,ce=H[le];if(0<r(ce,Q))H[le]=Q,H[te]=ce,te=le;else break e}}function t(H){return H.length===0?null:H[0]}function i(H){if(H.length===0)return null;var Q=H[0],te=H.pop();if(te!==Q){H[0]=te;e:for(var le=0,ce=H.length,F=ce>>>1;le<F;){var ee=2*(le+1)-1,re=H[ee],he=ee+1,pe=H[he];if(0>r(re,te))he<ce&&0>r(pe,re)?(H[le]=pe,H[he]=te,le=he):(H[le]=re,H[ee]=te,le=ee);else if(he<ce&&0>r(pe,te))H[le]=pe,H[he]=te,le=he;else break e}}return Q}function r(H,Q){var te=H.sortIndex-Q.sortIndex;return te!==0?te:H.id-Q.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;n.unstable_now=function(){return s.now()}}else{var o=Date,a=o.now();n.unstable_now=function(){return o.now()-a}}var c=[],f=[],h=1,g=null,y=3,v=!1,_=!1,S=!1,M=!1,w=typeof setTimeout=="function"?setTimeout:null,A=typeof clearTimeout=="function"?clearTimeout:null,R=typeof setImmediate<"u"?setImmediate:null;function P(H){for(var Q=t(f);Q!==null;){if(Q.callback===null)i(f);else if(Q.startTime<=H)i(f),Q.sortIndex=Q.expirationTime,e(c,Q);else break;Q=t(f)}}function I(H){if(S=!1,P(H),!_)if(t(c)!==null)_=!0,k||(k=!0,W());else{var Q=t(f);Q!==null&&ie(I,Q.startTime-H)}}var k=!1,U=-1,B=5,N=-1;function L(){return M?!0:!(n.unstable_now()-N<B)}function $(){if(M=!1,k){var H=n.unstable_now();N=H;var Q=!0;try{e:{_=!1,S&&(S=!1,A(U),U=-1),v=!0;var te=y;try{t:{for(P(H),g=t(c);g!==null&&!(g.expirationTime>H&&L());){var le=g.callback;if(typeof le=="function"){g.callback=null,y=g.priorityLevel;var ce=le(g.expirationTime<=H);if(H=n.unstable_now(),typeof ce=="function"){g.callback=ce,P(H),Q=!0;break t}g===t(c)&&i(c),P(H)}else i(c);g=t(c)}if(g!==null)Q=!0;else{var F=t(f);F!==null&&ie(I,F.startTime-H),Q=!1}}break e}finally{g=null,y=te,v=!1}Q=void 0}}finally{Q?W():k=!1}}}var W;if(typeof R=="function")W=function(){R($)};else if(typeof MessageChannel<"u"){var q=new MessageChannel,Y=q.port2;q.port1.onmessage=$,W=function(){Y.postMessage(null)}}else W=function(){w($,0)};function ie(H,Q){U=w(function(){H(n.unstable_now())},Q)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(H){H.callback=null},n.unstable_forceFrameRate=function(H){0>H||125<H?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):B=0<H?Math.floor(1e3/H):5},n.unstable_getCurrentPriorityLevel=function(){return y},n.unstable_next=function(H){switch(y){case 1:case 2:case 3:var Q=3;break;default:Q=y}var te=y;y=Q;try{return H()}finally{y=te}},n.unstable_requestPaint=function(){M=!0},n.unstable_runWithPriority=function(H,Q){switch(H){case 1:case 2:case 3:case 4:case 5:break;default:H=3}var te=y;y=H;try{return Q()}finally{y=te}},n.unstable_scheduleCallback=function(H,Q,te){var le=n.unstable_now();switch(typeof te=="object"&&te!==null?(te=te.delay,te=typeof te=="number"&&0<te?le+te:le):te=le,H){case 1:var ce=-1;break;case 2:ce=250;break;case 5:ce=1073741823;break;case 4:ce=1e4;break;default:ce=5e3}return ce=te+ce,H={id:h++,callback:Q,priorityLevel:H,startTime:te,expirationTime:ce,sortIndex:-1},te>le?(H.sortIndex=te,e(f,H),t(c)===null&&H===t(f)&&(S?(A(U),U=-1):S=!0,ie(I,te-le))):(H.sortIndex=ce,e(c,H),_||v||(_=!0,k||(k=!0,W()))),H},n.unstable_shouldYield=L,n.unstable_wrapCallback=function(H){var Q=y;return function(){var te=y;y=Q;try{return H.apply(this,arguments)}finally{y=te}}}})(dC)),dC}var VL;function xV(){return VL||(VL=1,fC.exports=MZ()),fC.exports}var hC={exports:{}},ro={};var jL;function TZ(){if(jL)return ro;jL=1;var n=Fx();function e(c){var f="https://react.dev/errors/"+c;if(1<arguments.length){f+="?args[]="+encodeURIComponent(arguments[1]);for(var h=2;h<arguments.length;h++)f+="&args[]="+encodeURIComponent(arguments[h])}return"Minified React error #"+c+"; visit "+f+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function t(){}var i={d:{f:t,r:function(){throw Error(e(522))},D:t,C:t,L:t,m:t,X:t,S:t,M:t},p:0,findDOMNode:null},r=Symbol.for("react.portal");function s(c,f,h){var g=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:r,key:g==null?null:""+g,children:c,containerInfo:f,implementation:h}}var o=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function a(c,f){if(c==="font")return"";if(typeof f=="string")return f==="use-credentials"?f:""}return ro.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,ro.createPortal=function(c,f){var h=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!f||f.nodeType!==1&&f.nodeType!==9&&f.nodeType!==11)throw Error(e(299));return s(c,f,null,h)},ro.flushSync=function(c){var f=o.T,h=i.p;try{if(o.T=null,i.p=2,c)return c()}finally{o.T=f,i.p=h,i.d.f()}},ro.preconnect=function(c,f){typeof c=="string"&&(f?(f=f.crossOrigin,f=typeof f=="string"?f==="use-credentials"?f:"":void 0):f=null,i.d.C(c,f))},ro.prefetchDNS=function(c){typeof c=="string"&&i.d.D(c)},ro.preinit=function(c,f){if(typeof c=="string"&&f&&typeof f.as=="string"){var h=f.as,g=a(h,f.crossOrigin),y=typeof f.integrity=="string"?f.integrity:void 0,v=typeof f.fetchPriority=="string"?f.fetchPriority:void 0;h==="style"?i.d.S(c,typeof f.precedence=="string"?f.precedence:void 0,{crossOrigin:g,integrity:y,fetchPriority:v}):h==="script"&&i.d.X(c,{crossOrigin:g,integrity:y,fetchPriority:v,nonce:typeof f.nonce=="string"?f.nonce:void 0})}},ro.preinitModule=function(c,f){if(typeof c=="string")if(typeof f=="object"&&f!==null){if(f.as==null||f.as==="script"){var h=a(f.as,f.crossOrigin);i.d.M(c,{crossOrigin:h,integrity:typeof f.integrity=="string"?f.integrity:void 0,nonce:typeof f.nonce=="string"?f.nonce:void 0})}}else f==null&&i.d.M(c)},ro.preload=function(c,f){if(typeof c=="string"&&typeof f=="object"&&f!==null&&typeof f.as=="string"){var h=f.as,g=a(h,f.crossOrigin);i.d.L(c,h,{crossOrigin:g,integrity:typeof f.integrity=="string"?f.integrity:void 0,nonce:typeof f.nonce=="string"?f.nonce:void 0,type:typeof f.type=="string"?f.type:void 0,fetchPriority:typeof f.fetchPriority=="string"?f.fetchPriority:void 0,referrerPolicy:typeof f.referrerPolicy=="string"?f.referrerPolicy:void 0,imageSrcSet:typeof f.imageSrcSet=="string"?f.imageSrcSet:void 0,imageSizes:typeof f.imageSizes=="string"?f.imageSizes:void 0,media:typeof f.media=="string"?f.media:void 0})}},ro.preloadModule=function(c,f){if(typeof c=="string")if(f){var h=a(f.as,f.crossOrigin);i.d.m(c,{as:typeof f.as=="string"&&f.as!=="script"?f.as:void 0,crossOrigin:h,integrity:typeof f.integrity=="string"?f.integrity:void 0})}else i.d.m(c)},ro.requestFormReset=function(c){i.d.r(c)},ro.unstable_batchedUpdates=function(c,f){return c(f)},ro.useFormState=function(c,f,h){return o.H.useFormState(c,f,h)},ro.useFormStatus=function(){return o.H.useHostTransitionStatus()},ro.version="19.2.3",ro}var GL;function _V(){if(GL)return hC.exports;GL=1;function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}return n(),hC.exports=TZ(),hC.exports}var HL;function EZ(){if(HL)return H0;HL=1;var n=xV(),e=Fx(),t=_V();function i(l){var u="https://react.dev/errors/"+l;if(1<arguments.length){u+="?args[]="+encodeURIComponent(arguments[1]);for(var m=2;m<arguments.length;m++)u+="&args[]="+encodeURIComponent(arguments[m])}return"Minified React error #"+l+"; visit "+u+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function r(l){return!(!l||l.nodeType!==1&&l.nodeType!==9&&l.nodeType!==11)}function s(l){var u=l,m=l;if(l.alternate)for(;u.return;)u=u.return;else{l=u;do u=l,(u.flags&4098)!==0&&(m=u.return),l=u.return;while(l)}return u.tag===3?m:null}function o(l){if(l.tag===13){var u=l.memoizedState;if(u===null&&(l=l.alternate,l!==null&&(u=l.memoizedState)),u!==null)return u.dehydrated}return null}function a(l){if(l.tag===31){var u=l.memoizedState;if(u===null&&(l=l.alternate,l!==null&&(u=l.memoizedState)),u!==null)return u.dehydrated}return null}function c(l){if(s(l)!==l)throw Error(i(188))}function f(l){var u=l.alternate;if(!u){if(u=s(l),u===null)throw Error(i(188));return u!==l?null:l}for(var m=l,b=u;;){var E=m.return;if(E===null)break;var C=E.alternate;if(C===null){if(b=E.return,b!==null){m=b;continue}break}if(E.child===C.child){for(C=E.child;C;){if(C===m)return c(E),l;if(C===b)return c(E),u;C=C.sibling}throw Error(i(188))}if(m.return!==b.return)m=E,b=C;else{for(var V=!1,Z=E.child;Z;){if(Z===m){V=!0,m=E,b=C;break}if(Z===b){V=!0,b=E,m=C;break}Z=Z.sibling}if(!V){for(Z=C.child;Z;){if(Z===m){V=!0,m=C,b=E;break}if(Z===b){V=!0,b=C,m=E;break}Z=Z.sibling}if(!V)throw Error(i(189))}}if(m.alternate!==b)throw Error(i(190))}if(m.tag!==3)throw Error(i(188));return m.stateNode.current===m?l:u}function h(l){var u=l.tag;if(u===5||u===26||u===27||u===6)return l;for(l=l.child;l!==null;){if(u=h(l),u!==null)return u;l=l.sibling}return null}var g=Object.assign,y=Symbol.for("react.element"),v=Symbol.for("react.transitional.element"),_=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),M=Symbol.for("react.strict_mode"),w=Symbol.for("react.profiler"),A=Symbol.for("react.consumer"),R=Symbol.for("react.context"),P=Symbol.for("react.forward_ref"),I=Symbol.for("react.suspense"),k=Symbol.for("react.suspense_list"),U=Symbol.for("react.memo"),B=Symbol.for("react.lazy"),N=Symbol.for("react.activity"),L=Symbol.for("react.memo_cache_sentinel"),$=Symbol.iterator;function W(l){return l===null||typeof l!="object"?null:(l=$&&l[$]||l["@@iterator"],typeof l=="function"?l:null)}var q=Symbol.for("react.client.reference");function Y(l){if(l==null)return null;if(typeof l=="function")return l.$$typeof===q?null:l.displayName||l.name||null;if(typeof l=="string")return l;switch(l){case S:return"Fragment";case w:return"Profiler";case M:return"StrictMode";case I:return"Suspense";case k:return"SuspenseList";case N:return"Activity"}if(typeof l=="object")switch(l.$$typeof){case _:return"Portal";case R:return l.displayName||"Context";case A:return(l._context.displayName||"Context")+".Consumer";case P:var u=l.render;return l=l.displayName,l||(l=u.displayName||u.name||"",l=l!==""?"ForwardRef("+l+")":"ForwardRef"),l;case U:return u=l.displayName||null,u!==null?u:Y(l.type)||"Memo";case B:u=l._payload,l=l._init;try{return Y(l(u))}catch{}}return null}var ie=Array.isArray,H=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Q=t.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,te={pending:!1,data:null,method:null,action:null},le=[],ce=-1;function F(l){return{current:l}}function ee(l){0>ce||(l.current=le[ce],le[ce]=null,ce--)}function re(l,u){ce++,le[ce]=l.current,l.current=u}var he=F(null),pe=F(null),ae=F(null),fe=F(null);function xe(l,u){switch(re(ae,u),re(pe,l),re(he,null),u.nodeType){case 9:case 11:l=(l=u.documentElement)&&(l=l.namespaceURI)?TN(l):0;break;default:if(l=u.tagName,u=u.namespaceURI)u=TN(u),l=EN(u,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}ee(he),re(he,l)}function Be(){ee(he),ee(pe),ee(ae)}function Xe(l){l.memoizedState!==null&&re(fe,l);var u=he.current,m=EN(u,l.type);u!==m&&(re(pe,l),re(he,m))}function et(l){pe.current===l&&(ee(he),ee(pe)),fe.current===l&&(ee(fe),U0._currentValue=te)}var De,tt;function ye(l){if(De===void 0)try{throw Error()}catch(m){var u=m.stack.trim().match(/\n( *(at )?)/);De=u&&u[1]||"",tt=-1<m.stack.indexOf(`
|
|
25
|
+
${r.trace}`:"(no previous disposal trace found)"),t.type){case"mutable_atom_family":{if(n.defaults.has(t.key))return n.defaults.get(t.key);const s=new t.class;return n.defaults.set(t.key,s),s.READONLY_VIEW}case"atom_family":{if(n.defaults.has(t.key))return n.defaults.get(t.key);const s=t.default,o=s(i);return n.defaults.set(t.key,o),o}case"readonly_pure_selector_family":case"writable_pure_selector_family":case"readonly_held_selector_family":case"writable_held_selector_family":{if(n.defaults.has(t.key))return n.defaults.get(t.key);const s=t.default(i);return n.defaults.set(t.key,s),s}}}function Gw(n,e){const{type:t,key:i,catch:r}=e;switch(t){case"readonly_pure_selector":case"writable_pure_selector":{let s;n.logger.info("🧮",t,i,"computing value");try{s=e.getFrom(n),s instanceof Promise&&(s=s.catch(a=>{if(n.logger.error("💥",t,i,"rejected:",a),r){for(const c of r)if(a instanceof c)return a}throw a}))}catch(a){if(n.logger.error("💥",t,i,"rejected:",a),r){for(const c of r)if(a instanceof c)return vu(n,e,a)}throw a}return vu(n,e,s)}case"atom":{let s;if(xh(e.default))try{s=e.default(),s instanceof Promise&&(s=s.catch(a=>{if(n.logger.error("💥",t,i,"rejected:",a),r){for(const c of r)if(a instanceof c)return a}throw a}))}catch(a){if(n.logger.error("💥",t,i,"rejected:",a),r){for(const c of r)if(a instanceof c)return s=vu(n,e,a),n.logger.info("✨",e.type,i,"computed default",s),s}throw a}else s=e.default,n.logger.info("✨",e.type,i,"using static default",s);return vu(n,e,s)}}}function bm(n,e,t){if(n.valueMap.has(e.key))return rV(n,e,t);n.logger.info("❔",e.type,e.key,"value not found in cache");const{key:i}=e;switch(e.type){case"readonly_held_selector":case"writable_held_selector":return n.logger.info("🧮",e.type,i,"computing value"),e.getFrom(n);case"writable_pure_selector":case"readonly_pure_selector":case"atom":return Gw(n,e);case"mutable_atom":{const r=new e.class;return n.logger.info("✨",e.type,i,"created new instance",r),vu(n,e,r)}}}function nx(n,e){return Mr(n,{key:e.family.key,type:`${e.type}_family`})}const IL={atom_family:"atom",molecule_family:"molecule",mutable_atom_family:"mutable_atom",readonly_held_selector_family:"readonly_held_selector",readonly_pure_selector_family:"readonly_pure_selector",writable_held_selector_family:"writable_held_selector",writable_pure_selector_family:"writable_pure_selector"},ix=Symbol("MUST_CREATE"),qJ=Symbol("DO_NOT_CREATE");function rx(n,e,t,i){const r=As(i),s=e.molecules.get(r);if(!s&&e.config.lifespan==="immortal"){const{type:c,key:f}=t;e.logger.warn("💣","key",r,"was used to mint a counterfeit token for",c,`"${f}"`);const h=`${f}(${r})`,g=IL[c];return{counterfeit:!0,key:h,type:g,family:{key:f,subKey:r}}}let a;if(n===ix)e.logger.info("👪",t.type,t.key,"adds member",typeof i=="string"?`\`${i}\``:i),a=t.create(i),s&&e.moleculeData.set(r,t.key);else{const{type:c,key:f}=t,h=`${f}(${r})`,g=IL[c];return{key:h,type:g,family:{key:f,subKey:r}}}return a}function tI(n,...e){let t,i,r,s,o;if(e.length===1){if(o=e[0],"family"in o){const f=nx(n,o);if(r=Mr(n,f),s=Tu(o.family.subKey),t=sx(n,f,s),"counterfeit"in o)return{token:o,family:r,subKey:s,isNew:!1};t?o=t:(i=rx(ix,n,f,s),o=i)}}else r=Mr(n,e[0]),s=e[1],t=sx(n,r,s),t?o=t:(i=rx(ix,n,r,s),o=i);const a="counterfeit"in o;if(!!i&&a===!1&&r){let f;switch(o.type){case"readonly_pure_selector":case"readonly_held_selector":f="readable";break;case"atom":case"mutable_atom":case"writable_pure_selector":case"writable_held_selector":f="writable";break}const h={type:"state_creation",subType:f,token:o,timestamp:Date.now()};r.subject.next(h);const y=Gn(n);if(o.family)if(tx(y))switch(o.type){case"atom":case"mutable_atom":n.on.atomCreation.next(o);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":n.on.selectorCreation.next(o);break}else ja(y)&&y.on.transactionApplying.state===null&&y.transactionMeta.update.subEvents.push(h)}return{token:o,family:r,subKey:s,isNew:!!i}}function Ga(n,...e){const{token:t,family:i,subKey:r}=tI(n,...e);if("counterfeit"in t&&i&&r)return q2(n,t,i,r);const s=Mr(n,t);return bm(n,s)}function sx(n,e,t){const i=As(t),r=`${e.key}(${i})`,s=Gn(n);let o;switch(e.type){case"atom_family":case"mutable_atom_family":o=s.atoms.get(r);break;case"writable_held_selector_family":case"writable_pure_selector_family":o=s.writableSelectors.get(r);break;case"readonly_held_selector_family":case"readonly_pure_selector_family":o=s.readonlySelectors.get(r);break}return o&&_h(o)}function or(n,e,t){const i=Mr(n,e),r=sx(n,e,t);return r||rx(qJ,n,i,t)}function Hw(n,e,t){const i=e.key,r="readonly_pure_selector_family",s={key:i,type:r},o=n.families.get(i);o&&n.config.isProduction===!0&&n.logger.error("❗",r,i,`Overwriting an existing ${Dh[o.type]} "${o.key}" in store "${n.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const a=new Oi,f={...s,create:h=>{const g=As(h),y={key:i,subKey:g},v=`${i}(${g})`,_=Gn(n),S={key:v,get:e.get(h)};return e.catch&&(S.catch=e.catch),aI(_,S,y)},internalRoles:t,subject:a,install:h=>Hw(h,e),default:h=>e.get(h)({get:((...y)=>Ga(n,...y)),find:((...y)=>or(n,...y)),json:y=>Nu(n,y)})};return n.families.set(i,f),s}function nI(n,e,t){const i={key:e.key,type:"atom_family"},r=n.families.get(e.key);r&&n.config.isProduction===!0&&n.logger.error("❗","atom_family",e.key,`Overwriting an existing ${Dh[r.type]} "${r.key}" in store "${n.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const s=new Oi,a={...i,create:c=>{const f=As(c),h={key:e.key,subKey:f},g=`${e.key}(${f})`,y=Gn(n),v=e.default,_={key:g,default:xh(v)?()=>v(c):v};return e.effects&&(_.effects=e.effects(c)),e.catch&&(_.catch=e.catch),zT(y,_,h)},default:e.default,subject:s,install:c=>nI(c,e),internalRoles:t};return n.families.set(e.key,a),xh(e.default)===!1&&n.defaults.set(e.key,e.default),i}function K2(n,e,t){const i=e.key,r="readonly_held_selector_family",s={key:i,type:r},o=n.families.get(i);o&&n.config.isProduction===!0&&n.logger.error("❗",r,i,`Overwriting an existing ${Dh[o.type]} "${o.key}" in store "${n.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const a=new Oi,f={...s,create:h=>{const g=As(h),y={key:i,subKey:g},v=`${i}(${g})`,_=Gn(n);return oI(_,{key:v,const:e.const(h),get:e.get(h)},y)},internalRoles:t,subject:a,install:h=>K2(h,e),default:e.const};return n.families.set(i,f),s}function X2(n,e,t){const i=e.key,r="writable_held_selector_family",s={key:i,type:r},o=n.families.get(i);o&&n.config.isProduction===!0&&n.logger.error("❗",r,i,`Overwriting an existing ${Dh[o.type]} "${o.key}" in store "${n.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const a=new Oi,f={...s,create:h=>{const g=As(h),y={key:i,subKey:g},v=`${i}(${g})`,_=Gn(n);return lI(_,{key:v,const:e.const(h),get:e.get(h),set:e.set(h)},y)},internalRoles:t,subject:a,install:h=>X2(h,e),default:e.const};return n.families.set(i,f),s}function iI(n,e,t){const i=e.key,r="writable_pure_selector_family",s={key:i,type:r},o=n.families.get(i);o&&n.config.isProduction===!0&&n.logger.error("❗",r,i,`Overwriting an existing ${Dh[o.type]} "${o.key}" in store "${n.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const a=new Oi,f={...s,create:h=>{const g=As(h),y={key:i,subKey:g},v=`${i}(${g})`,_=Gn(n),S={key:v,get:e.get(h),set:e.set(h)};return e.catch&&(S.catch=e.catch),cI(_,S,y)},internalRoles:t,subject:a,install:h=>iI(h,e),default:h=>e.get(h)({get:((...y)=>Ga(n,...y)),find:((...y)=>or(n,...y)),json:y=>Nu(n,y)})};return n.families.set(i,f),s}function KJ(n,e){const t="set"in e,i="const"in e;return i&&t?X2(n,e,void 0):i?K2(n,e,void 0):t?iI(n,e):Hw(n,e)}function LT(n,...e){let t;if(e.length===1)t=e[0];else{const i=e[0],r=e[1];t=or(n,i,r)}try{Mr(n,t)}catch{n.logger.error("❌",t.type,t.key,`could not be disposed because it was not found in the store "${n.config.name}".`);return}switch(t.type){case"atom":case"mutable_atom":pI(n,t);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":nZ(n,t);break}}function Y2(n,e){if(n.operation.open){const t=performance.now();return n.logger.info("🚫",e.type,e.key,`deferring setState at T-${t} until setState for "${n.operation.token.key}" is done`),t}return n.operation={open:!0,done:new Set,prev:new Map,timestamp:Date.now(),token:e,subEvents:[]},n.logger.info("⭕",e.type,e.key,`operation start in store "${n.config.name}"${ja(n)?` ${n.transactionMeta.phase} "${n.transactionMeta.update.token.key}"`:""}`),n}function J2(n){n.operation.open&&n.logger.info("🔴",n.operation.token.type,n.operation.token.key,`operation done in store "${n.config.name}"`),n.operation={open:!1},n.on.operationClose.next(n.operation)}const Z2=(n,e)=>n.operation.open?n.operation.done.has(e):(n.logger.error("🐞","unknown",e,"isDone called outside of an operation. This is probably a bug in AtomIO."),!0),UT=(n,e)=>{if(!n.operation.open){n.logger.error("🐞","unknown",e,"markDone called outside of an operation. This is probably a bug in AtomIO.");return}n.operation.done.add(e)};function E3(n,e,t,i,r){const{oldValue:s,newValue:o}=t,a="oldValue"in t,c=_h(e);if(i&&r){e.subject.next({newValue:o});const v={checkpoint:!0,type:"state_creation",subType:"writable",token:c,timestamp:Date.now(),value:o};n.operation.subEvents.push(v),r.subject.next(v);const S=Gn(n);if(c.family)if(tx(S))switch(c.type){case"atom":case"mutable_atom":n.on.atomCreation.next(c);break;case"writable_pure_selector":case"writable_held_selector":n.on.selectorCreation.next(c);break}else ja(S)&&S.on.transactionApplying.state===null&&S.transactionMeta.update.subEvents.push(v);return}const{key:f,subject:h,type:g}=e;let y;if(a?y={oldValue:QS(s)?s.READONLY_VIEW:s,newValue:QS(o)?o.READONLY_VIEW:o}:y={newValue:QS(o)?o.READONLY_VIEW:o},tx(n)){switch(g){case"mutable_atom":n.logger.info("📢",g,f,"is now (",o,") subscribers:",h.subscribers.keys());break;case"atom":case"writable_pure_selector":case"writable_held_selector":n.logger.info("📢",g,f,"went (",s,"->",o,") subscribers:",h.subscribers.keys())}h.next(y)}if(ja(n)&&(g==="mutable_atom"||g==="atom")){if(n.on.transactionApplying.state===null){if(QS(o))return;const{timestamp:v}=n.operation,_={type:"atom_update",token:c,timestamp:v,update:y};n.transactionMeta.update.subEvents.push(_),n.logger.info("📁","atom",f,"stowed (",s,"->",o,")");return}if(hI(e,"tracker:signal")){const v=f.slice(1),_=n.atoms.get(v);bm(n,_,"mut").do(y.newValue)===null===!0&&dI(n,_)}}}const OL=Symbol("UNSET"),A3=(n,e,t)=>{let i,r;if(xh(t)){const s=bm(n,e,"mut");i=s,r=t(s)}else n.valueMap.has(e.key)?i=rV(n,e,"mut"):e.type==="atom"&&!xh(e.default)?i=e.default:i=OL,r=t;return n.logger.info("⭐","atom",e.key,"setting value",r),r=vu(n,e,r),UT(n,e.key),dI(n,e),i===OL?{newValue:r}:{oldValue:i,newValue:r}};function cC(n,e){switch(e.type){case"mutable_atom":return A3(n,e,new e.class);case"atom":{let t;return xh(e.default)?t=Gw(n,e):t=e.default,A3(n,e,t)}}}function XJ(n,e){let t;switch(e.type){case"atom":case"mutable_atom":t=cC(n,e);break;case"writable_held_selector":{const i=ox(n,e.key);for(const s of i.values()){const o=cC(n,s);E3(n,e,o,!1)}const r=e.getFrom(n);t={oldValue:r,newValue:r}}break;case"writable_pure_selector":{const i=Gw(n,e),r=ox(n,e.key);for(const o of r.values()){const a=cC(n,o);E3(n,e,a,!1)}const s=Gw(n,e);t={oldValue:i,newValue:s}}break}return t}function Xi(n,...e){Hx(R3,n,...e)}const C3=Symbol("RESET");function rI(n,...e){const t=[...e,C3];Xi(n,...t)}function YJ(n,e,t){let i,r,s;const{type:o,key:a}=e;switch(e.type){case"writable_pure_selector":i=bm(n,e,"mut"),r=DL(t,i),r=vu(n,e,r);break;case"writable_held_selector":s=e.const,DL(t,s),i=s,r=s}return n.logger.info("⭐",o,a,"setting to",r),UT(n,a),e.setSelf(r),{oldValue:i,newValue:r}}const JJ=(n,e,t)=>{let i;switch(e.type){case"atom":case"mutable_atom":i=A3(n,e,t);break;case"writable_pure_selector":case"writable_held_selector":i=YJ(n,e,t);break}return i},R3=Symbol("OWN_OP"),sI=Symbol("JOIN_OP");function Hx(n,e,...t){let i,r,s,o,a,c;t.length===2?(s=t[0],c=t[1],"family"in s&&(o=nx(e,s),a=Tu(s.family.subKey),i=sx(e,o,a),i?s=i:s=r=rx(ix,e,o,a))):(o=Mr(e,t[0]),a=t[1],c=t[2],i=sx(e,o,a),i?s=i:s=r=rx(ix,e,o,a));const f=c===C3?"reset":"set";let h;if(n===R3){const _=Y2(e,s);if(typeof _=="number"){const M=_,w=e.on.operationClose.subscribe(`waiting to ${f} "${s.key}" at T-${M}`,function(){w(),e.logger.info("🟢",s.type,s.key,"resuming deferred",f,`from T-${M}`),Hx(n,e,s,c)});return}h=_}else h=e;if("counterfeit"in s&&"family"in s){const _=s.family.subKey,S=e.disposalTraces.buffer.find(M=>M?.key===_);e.logger.error("❌",s.type,s.key,"could not be",f,"because key",_,"is not allocated.",S?`this key was previously disposed:${S.trace}`:"(no previous disposal trace found)");return}const g=Mr(h,s);let y;c===C3?y=XJ(h,g):y=JJ(h,g,c),E3(h,g,y,!!r,o),n===R3&&J2(h)}const Q2=(n,e)=>Gn(n).atoms.has(e),ZJ=(n,e)=>Gn(n).writableSelectors.has(e),QJ=(n,e)=>Gn(n).readonlySelectors.has(e),eZ=(n,e)=>Q2(n,e)||ZJ(n,e)||QJ(n,e);function NL(n,e){return Gn(n).selectorGraph.getRelationEntries({downstreamSelectorKey:e}).filter(([i,{source:r}])=>r!==e).map(([i,{source:r}])=>r).filter(i=>eZ(n,i))}function ox(n,e,t=new Set){const i=NL(n,e),r=new Map;for(;i.length>0;){const s=i.pop();if(!t.has(s))if(t.add(s),Q2(n,s)){const o=n.atoms.get(s);r.set(o.key,o)}else i.push(...NL(n,s))}return r}function tZ(n,e,t,i,r){const s=Gn(n),{type:o,key:a}=i;if(o==="atom"||o==="mutable_atom")s.selectorAtoms.set({selectorKey:t,atomKey:a}),n.logger.info("🔍",e,t,`discovers root atom "${a}"`);else{const c=ox(n,a,r);n.logger.info("🔍",e,t,`discovers root atoms: [ ${[...c.values()].map(f=>`"${f.key}"`).join(", ")} ]`);for(const{key:f}of c.values())s.selectorAtoms=s.selectorAtoms.set({selectorKey:t,atomKey:f})}r.add(a)}function FT(n,e,t,i){return{get:(...r)=>{const s=Gn(n),{token:o,family:a,subKey:c}=tI(n,...r);let f;if("counterfeit"in o&&a&&c)f=q2(n,o,a,c);else{const h=Mr(n,o);f=bm(n,h)}return n.logger.info("🔌",e,t,`registers dependency ( "${o.key}" =`,f,")"),s.selectorGraph.set({upstreamSelectorKey:o.key,downstreamSelectorKey:t},{source:o.key}),tZ(n,e,t,o,i),f},set:((...r)=>{const s=Gn(n);Hx(sI,s,...r)}),find:((...r)=>or(n,...r)),json:r=>Nu(n,r)}}function oI(n,e,t){const i=Gn(n),r=new Oi,s=new Set,{key:o,const:a}=e,c="readonly_held_selector";n.logger.info("🔨",c,o,"is being created");const{get:f,find:h,json:g}=FT(i,c,o,s),v={...e,type:c,subject:r,getFrom:S=>{const M=S.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(const[w,{source:A}]of M)A!==o&&S.selectorGraph.delete(w,o);return S.selectorAtoms.delete(o),e.get({get:f,find:h,json:g},a),vu(S,v,a),n.logger.info("✨",c,o,"=",a),s.clear(),a},install:S=>oI(S,e,t)};t&&(v.family=t),i.readonlySelectors.set(o,v);const _={key:o,type:c};return t&&(_.family=t),_}function aI(n,e,t){const i=Gn(n),r=new Oi,s=new Set,o=e.key,a="readonly_pure_selector";n.logger.info("🔨",a,o,"is being created");const{get:c,find:f,json:h}=FT(i,a,o,s),y={...e,type:a,subject:r,getFrom:()=>{const _=Gn(n),S=_.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(const[w,{source:A}]of S)A!==o&&_.selectorGraph.delete(w,o);_.selectorAtoms.delete(o);const M=e.get({get:c,find:f,json:h});return n.logger.info("✨",a,o,"=",M),s.clear(),M},install:_=>aI(_,e,t)};t&&(y.family=t),i.readonlySelectors.set(o,y);const v={key:o,type:a};return t&&(v.family=t),v}function lI(n,e,t){const i=Gn(n),r=new Oi,s=new Set,{key:o,const:a}=e,c="writable_held_selector";n.logger.info("🔨",c,o,"is being created");const f=FT(i,c,o,s),{find:h,get:g,json:y}=f,v={find:h,get:g,json:y},M={...e,type:c,subject:r,getFrom:A=>{const R=A.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(const[P,{source:I}]of R)I!==o&&A.selectorGraph.delete(P,o);return A.selectorAtoms.delete(o),e.get(v,a),vu(A,M,a),n.logger.info("✨",c,o,"=",a),s.clear(),a},setSelf:()=>{e.set(f,a)},install:A=>lI(A,e,t)};t&&(M.family=t),i.writableSelectors.set(o,M);const w={key:o,type:c};return t&&(w.family=t),w}function cI(n,e,t){const i=Gn(n),r=new Oi,s=new Set,o=e.key,a="writable_pure_selector";n.logger.info("🔨",a,o,"is being created");const c=FT(i,a,o,s),{find:f,get:h,json:g}=c,y={find:f,get:h,json:g},S={...e,type:a,subject:r,getFrom:w=>{const A=w.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(const[P,{source:I}]of A)I!==o&&w.selectorGraph.delete(P,o);w.selectorAtoms.delete(o);const R=e.get(y);return n.logger.info("✨",a,o,"=",R),s.clear(),R},setSelf:w=>{e.set(c,w)},install:w=>cI(w,e,t)};t&&(S.family=t),i.writableSelectors.set(o,S);const M={key:o,type:a};return t&&(M.family=t),M}function eV(n,e){const t="set"in e,i="const"in e;if(i&&t){const s=lI(n,e,void 0);return n.on.selectorCreation.next(s),s}if(i){const s=oI(n,e,void 0);return n.on.selectorCreation.next(s),s}if(t){const s=cI(n,e,void 0);return n.on.selectorCreation.next(s),s}const r=aI(n,e,void 0);return n.on.selectorCreation.next(r),r}function nZ(n,e){const t=Gn(n),{key:i,type:r,family:s}=e;if(!s)n.logger.error("❌",r,i,"Standalone selectors cannot be disposed.");else{t.molecules.get(s.subKey)&&t.moleculeData.delete(s.subKey,s.key);let a;switch(e.type){case"writable_held_selector":t.writableSelectors.delete(i),a={key:s.key,type:"writable_held_selector_family"},Mr(n,a).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"writable_pure_selector":t.writableSelectors.delete(i),a={key:s.key,type:"writable_pure_selector_family"},Mr(n,a).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"readonly_held_selector":t.readonlySelectors.delete(i),a={key:s.key,type:"readonly_held_selector_family"},Mr(n,a).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"readonly_pure_selector":t.readonlySelectors.delete(i),a={key:s.key,type:"readonly_pure_selector_family"},Mr(n,a).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break}t.valueMap.delete(i),t.selectorAtoms.delete(i),t.selectorGraph.delete(i),t.moleculeData.delete(s.key,s.subKey),n.logger.info("🔥",e.type,i,"deleted"),ja(t)&&t.transactionMeta.phase==="building"?t.transactionMeta.update.subEvents.push({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()}):n.on.selectorDisposal.next(e)}}const iZ=(n,e)=>{const t=Gn(n);return t.operation.open?t.operation.prev.get(e.key):t.valueMap.get(e.key)},kL=(n,e,t)=>t.subject.subscribe(`${e.type}:${e.key}`,i=>{n.logger.info("📢",e.type,e.key,"root",t.key,"went",i.oldValue,"->",i.newValue);const r=iZ(n,e),s=bm(n,e);n.logger.info("✨",e.type,e.key,"went",r,"->",s),e.subject.next({newValue:s,oldValue:r})});function Sh(n,e,t,i){function r(g){n.operation.open&&s?.type==="atom"&&hI(s,"tracker:signal")&&"*"+n.operation.token.key===e.key&&"inboundTracker"in i||i(g)}tI(n,e);const s=Mr(n,e);n.logger.info("👀",s.type,s.key,`Adding subscription "${t}"`);const o=s.type==="writable_pure_selector"||s.type==="readonly_pure_selector",a=new Map;let c=r;if(o){bm(n,s);for(const[g,y]of ox(n,s.key))a.set(g,kL(n,s,y));c=function(y){const v=ox(n,s.key);for(const[_,S]of a)v.get(_)?v.delete(_):(S(),a.delete(_));for(const[_,S]of v)a.set(_,kL(n,s,S));r(y)}}const f=s.subject.subscribe(t,c);return()=>{n.logger.info("🙈",s.type,s.key,`Removing subscription "${t}"`),f();for(const g of a.values())g()}}const tV=(n,e,t,i)=>{const r=Mr(n,e);n.logger.info("👀","timeline",e.key,`Adding subscription "${t}"`);const s=r.subject.subscribe(t,i);return()=>{n.logger.info("🙈","timeline",e.key,`Removing subscription "${t}" from timeline`),s()}},nV=(n,e,t,i)=>{const r=Mr(n,e);n.logger.info("👀","transaction",e.key,`Adding subscription "${t}"`);const s=r.subject.subscribe(t,i);return()=>{n.logger.info("🙈","transaction",e.key,`Removing subscription "${t}"`),s()}};function rZ(n,e,t,i=kT()){switch(e.type){case"atom":case"mutable_atom":case"readonly_pure_selector":case"readonly_held_selector":case"writable_pure_selector":case"writable_held_selector":return Sh(n,e,i,t);case"transaction":return nV(n,e,i,t);case"timeline":return tV(n,e,i,t)}}class uI{initializeSignalAtom(e,t){const i=`*${e.key}`;t.atoms.delete(i),t.valueMap.delete(i);const r=e.family?{key:`*${e.family.key}`,subKey:e.family.subKey}:void 0,s=zT(t,{key:i,default:null},r,["tracker:signal"]);if(t.parent?.valueMap.has(i)){const o=t.parent.valueMap.get(i);t.valueMap.set(i,o)}return s}unsubscribeFromInnerValue;unsubscribeFromState;captureSignalsFromCore(e,t,i){const r=e.key,s=i.config.name,o=ja(i)?i.transactionMeta.update.token.key:"main",a=`tracker-from-core:${s}:${o}:${r}`,c=h=>{Hx(sI,i,t,h)},f=Ga(i,e);this.unsubscribeFromInnerValue=f.subscribe(a,c),this.unsubscribeFromState=Sh(i,e,a,(function(g){g.newValue!==g.oldValue&&(this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=g.newValue.subscribe(a,c))}).bind(this))}supplySignalsToCore(e,t,i){const r=e.key,s=i.config.name,o=ja(i)?i.transactionMeta.update.token.key:"main",a=`tracker-to-core:${s}:${o}:${r}`;Sh(i,t,a,Object.assign(function({newValue:f,oldValue:h}){const g=i.timelineTopics.getRelatedKey(t.key);if(g&&i.timelines.get(g)?.timeTraveling){const y=tV(i,{key:g,type:"timeline"},a,function(_){y(),Xi(i,e,S=>(_==="redo"&&f?S.do(f):_==="undo"&&h&&S.undo(h),S))});return}Xi(i,e,y=>(y.do(f),y))},{inboundTracker:!0}))}mutableAtomToken;latestSignalToken;[Symbol.dispose];constructor(e,t){const i=Gn(t),r=this.initializeSignalAtom(e,i);this.mutableAtomToken=e,this.latestSignalToken=r,this.captureSignalsFromCore(e,r,i),this.supplySignalsToCore(e,r,i),i.trackers.set(e.key,this),this[Symbol.dispose]=()=>{this.unsubscribeFromInnerValue(),this.unsubscribeFromState(),i.trackers.delete(e.key)}}}function fI(n,e,t){n.logger.info("🔨","atom",e.key,`creating in store "${n.config.name}"`);const i=Gn(n),{key:r}=e,s=i.atoms.get(r),o="mutable_atom";if(s?.type===o&&n.config.isProduction===!0)return n.logger.error("❌",o,r,"Tried to create atom, but it already exists in the store."),_h(s);const a=new Oi,c={...e,type:o,install:h=>(h.logger.info("🛠️","atom",r,`installing in store "${h.config.name}"`),fI(h,e,t)),subject:a};t&&(c.family=t),i.atoms.set(c.key,c);const f=_h(c);if(new uI(f,n),t||eV(n,{key:`${r}:JSON`,get:({get:h})=>h(f).toJSON(),set:({set:h},g)=>{h(f,e.class.fromJSON(g))}}),e.effects){let h=0;const g=[];for(const y of e.effects){const v=y({resetSelf:()=>{rI(n,f)},setSelf:_=>{Xi(n,f,_)},onSet:_=>Sh(n,f,`effect[${h}]`,_),token:f,store:XP(n)});v&&g.push(v),++h}c.cleanup=()=>{for(const y of g)y()}}return n.on.atomCreation.next(f),f}class sZ{trackers=new Map;latestSignalAtoms;mutableAtoms;constructor(e,t){const i=nI(t,{key:`*${e.key}`,default:null},["mutable","updates"]);this.latestSignalAtoms=Mr(t,i),this.mutableAtoms=e;const r=s=>{const{type:o,token:a}=s;if(a.family){const c=Tu(a.family.subKey);switch(o){case"state_creation":this.trackers.set(c,new uI(a,t));break;case"state_disposal":{const f=this.trackers.get(c);f&&(f[Symbol.dispose](),this.trackers.delete(c))}}}};this.mutableAtoms.subject.subscribe(`store=${t.config.name}::tracker-atom-family`,r)}}function iV(n,e,t){const i={key:e.key,type:"mutable_atom_family"},r=n.families.get(e.key);r&&n.config.isProduction===!0&&n.logger.error("❗","mutable_atom_family",e.key,`Overwriting an existing ${Dh[r.type]} "${r.key}" in store "${n.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const s=new Oi,a={...i,create:c=>{const f=As(c),h={key:e.key,subKey:f},g=`${e.key}(${f})`,y=Gn(n),v={key:g,class:e.class};return e.effects&&(v.effects=e.effects(c)),fI(y,v,h)},class:e.class,subject:s,install:c=>iV(c,e),internalRoles:t};return n.families.set(e.key,a),iI(n,{key:`${e.key}:JSON`,get:c=>({get:f})=>f(i,c).toJSON(),set:c=>({set:f},h)=>{f(i,c,e.class.fromJSON(h))}},["mutable","json"]),new sZ(a,n),i}const oZ=(n,e)=>{const t=Gn(e),i=`${n.key}:JSON`;return t.families.get(i)},Nu=(n,e)=>{if(e.family){const i=Gn(n),s={key:`${e.family.key}:JSON`,type:"writable_pure_selector_family"},o=Mr(i,s),a=Tu(e.family.subKey);return or(n,o,a)}return{type:"writable_pure_selector",key:`${e.key}:JSON`}},BT=n=>{const t={type:"atom",key:`*${n.key}`};return n.family&&(t.family={key:`*${n.family.key}`,subKey:n.family.subKey}),t};function QS(n){return typeof n=="object"&&n!==null&&"do"in n&&"undo"in n&&"subscribe"in n&&"READONLY_VIEW"in n&&"toJSON"in n}function vu(n,e,t){const{key:i,subject:r,type:s}=e,o=n.valueMap.get(i);if(o instanceof jw&&!o.done){const a=o;return t instanceof Promise?(a.use(t),a):(n.valueMap.set(i,t),t)}if(t instanceof Promise){const a=new jw(t);return n.valueMap.set(i,a),a.then(function(f){if(n.valueMap.get(i)===a){switch(Y2(n,e),vu(n,e,f),s){case"atom":dI(n,e);break;case"readonly_pure_selector":case"writable_pure_selector":oV(n,i);break}J2(n),r.next({newValue:f,oldValue:a})}}).catch(c=>{n.logger.error("💥",e.type,i,"rejected:",c)}),a}return n.logger.info("📝",e.type,e.key,"writing to cache",t),n.valueMap.set(i,t),t}function rV(n,e,t){n.logger.info("📖",e.type,e.key,"reading cached value");let i=n.valueMap.get(e.key);if(t==="mut"&&e.type==="mutable_atom"&&ja(n)){const s=e,{parent:o}=n;if(n.valueMap.hasOwn(s.key))return i;const a=o.valueMap.get(s.key);n.logger.info("📃","atom",s.key,"copying");const c=a.toJSON(),f=s.class.fromJSON(c);n.valueMap.set(s.key,f),new uI(s,o),i=f}return i}function sV(n,e){const t=n.valueMap.get(e);t instanceof jw||(n.operation.open&&n.operation.prev.set(e,t),n.valueMap.delete(e),n.logger.info("🗑","state",e,"evicted"))}function dI(n,e){const t=Gn(n),{key:i,type:r}=e,s=t.selectorAtoms.getRelatedKeys(i);if(t.logger.info("🧹",r,i,s?`evicting ${s.size} states downstream:`:"no downstream states",s??"to evict"),s){t.operation.open&&t.logger.info("🧹",r,i,`[ ${[...t.operation.done].join(", ")} ] already done`);for(const o of s)Z2(t,o)||(sV(t,o),UT(t,o))}}function oV(n,e){const t=Gn(n),i=t.selectorGraph.getRelationEntries({upstreamSelectorKey:e}).filter(([r,{source:s}])=>s===e);for(const[r]of i)Z2(t,r)||(sV(t,r),UT(t,r),oV(n,r))}function zT(n,e,t,i){const r="atom",{key:s}=e;n.logger.info("🔨",r,s,"is being created");const o=Gn(n),a=o.atoms.get(s);if(a?.type===r&&n.config.isProduction===!0)return n.logger.error("❌","atom",s,"Tried to create atom, but it already exists in the store."),_h(a);const c=new Oi,f={...e,type:r,install:g=>(g.logger.info("🛠️",r,s,`installing in store "${g.config.name}"`),zT(g,e,t)),subject:c};t&&(f.family=t),i&&(f.internalRoles=i),o.atoms.set(s,f);const h=_h(f);if(e.effects){let g=0;const y=[];for(const v of e.effects){const _=v({resetSelf:()=>{rI(n,h)},setSelf:S=>{Xi(n,h,S)},onSet:S=>Sh(n,h,`effect[${g}]`,S),token:h,store:XP(n)});_&&y.push(_),++g}f.cleanup=()=>{for(const v of y)v()}}return n.on.atomCreation.next(h),h}function hI(n,e){return"internalRoles"in n?n.internalRoles.includes(e):!1}function pI(n,e){const t=Gn(n),{key:i,family:r}=e,s=Mr(t,e);if(!r)n.logger.error("❌","atom",i,"Standalone atoms cannot be disposed.");else{s.cleanup?.();const o=n.valueMap.get(s.key),a=nx(n,e),f=Mr(n,a).subject,h={type:"state_disposal",subType:"atom",token:e,value:o,timestamp:Date.now()};f.next(h);const g=ja(t);if(t.atoms.delete(i),t.valueMap.delete(i),t.selectorAtoms.delete(i),t.atomsThatAreDefault.delete(i),t.moleculeData.delete(r.key,r.subKey),n.timelineTopics.delete(i),e.type==="mutable_atom"){const y=BT(e);pI(n,y),n.trackers.delete(i)}if(n.logger.info("🔥","atom",i,"deleted"),g&&t.transactionMeta.phase==="building"){const y=t.transactionMeta.update.subEvents.at(-1),_=y?.type==="molecule_disposal"&&y.values.some(([M])=>M===s.family?.key),S=hI(s,"tracker:signal");!_&&!S&&t.transactionMeta.update.subEvents.push(h)}else n.on.atomDisposal.next(e)}}function Ml(n){return n[0].toUpperCase()+n.slice(1)}const LL=B2(["add","delete","clear"]);class th extends Set{mode="record";subject=new Oi;constructor(e){super(e)}READONLY_VIEW=this;toJSON(){return[...this]}static fromJSON(e){return new th(e)}add(e){const t=super.add(e);return this.mode==="record"&&this.emit({type:"add",value:e}),t}clear(){const e=this.mode==="record"?[...this]:null;super.clear(),e&&this.emit({type:"clear",values:e})}delete(e){const t=super.delete(e);return this.mode==="record"&&this.emit({type:"delete",value:e}),t}subscribe(e,t){return this.subject.subscribe(e,t)}emit(e){this.subject.next(th.packUpdate(e))}do(e){this.mode="playback";const t=th.unpackUpdate(e);switch(t.type){case"add":this.add(t.value);break;case"delete":this.delete(t.value);break;case"clear":this.clear()}return this.mode="record",null}undo(e){const t=th.unpackUpdate(e);switch(this.mode="playback",t.type){case"add":this.delete(t.value);break;case"delete":this.add(t.value);break;case"clear":{const i=t.values;for(const r of i)this.add(r)}}return this.mode="record",null}static packUpdate(e){const t=LL[e.type]+"";return e.type==="clear"?t+e.values.map(da).join(""):t+da(e.value)}static unpackUpdate(e){const[t,i]=e.split(""),r=LL[t];return r==="clear"?{type:"clear",values:i.split("").map(ha)}:{type:r,value:ha(i)}}}class aV{toolkit;options;relations;states;relatedKeysAtoms;transact(e,t){const i=this.toolkit;this.toolkit=e,t(this),this.toolkit=i}store;[Symbol.dispose](){}constructor(e,t){this.store=e,this.options=t,this.store.miscResources.set(`join:${t.key}`,this),this.toolkit={get:((...v)=>Ga(e,...v)),set:((...v)=>{Xi(e,...v)}),find:((...v)=>or(e,...v)),json:v=>Nu(e,v)};const i=t.between[0],r=t.between[1],s=iV(e,{key:`${t.key}/relatedKeys`,class:th},["join","relations"]);this.relatedKeysAtoms=s;const o=(v,_,S)=>{const{find:M,get:w,set:A}=v,R=M(s,_),P=w(R);for(const I of P)S.includes(I)||A(s,I,U=>(U.delete(_),U));A(R,I=>{I.clear();for(const k of S){const U=M(s,k),B=w(U),N=B.has(_);if(this.relations.cardinality==="1:n"){const L=[];for(const $ of B){if($===_)continue;let W;Hx(sI,this.store,s,$,q=>(q.delete(k),W=q.size,q)),W===0&&L.push($)}!N&&B.size>0&&A(U,$=>($.clear(),$));for(const $ of L)e.keyRefsInJoins.delete(hw(k,$))}N||A(U,L=>(L.add(_),L)),I.add(k)}return I})},a=(v,_,S)=>{const{set:M}=v;M(s,_,w=>{for(const A of S)w.add(A);return w});for(const w of S)M(s,w,A=>(A.add(_),A));return!0},f={getRelatedKeys:v=>this.toolkit.get(s,v),addRelation:(v,_)=>{this.store.keyRefsInJoins.set(`"${v}"`,t.key),this.store.keyRefsInJoins.set(`"${_}"`,t.key),this.store.keyRefsInJoins.set(hw(v,_),t.key),this.toolkit.set(s,v,S=>S.add(_)),this.toolkit.set(s,_,S=>S.add(v))},deleteRelation:(v,_)=>{this.toolkit.set(s,v,M=>(M.delete(_),M)),this.toolkit.set(s,_,M=>(M.delete(v),M));const S=hw(v,_);this.store.keyRefsInJoins.delete(S)},replaceRelationsSafely:(v,_)=>{o(this.toolkit,v,_)},replaceRelationsUnsafely:(v,_)=>{a(this.toolkit,v,_)},has:(v,_)=>{const S=this.toolkit.get(s,v);return _?S.has(_):S.size>0}},h=new ac(t,{externalStore:f,isAType:t.isAType,isBType:t.isBType}),g=()=>Hw(e,{key:`${t.key}/singleRelatedKey`,get:v=>({get:_})=>{const S=_(s,v);for(const M of S)return M;return null}},["join","keys"]),y=()=>Hw(e,{key:`${t.key}/multipleRelatedKeys`,get:v=>({get:_})=>{const S=oZ(s,e);return _(S,v)}},["join","keys"]);switch(t.cardinality){case"1:1":{const v=g(),_=`${i}KeyOf${Ml(r)}`,S=`${r}KeyOf${Ml(i)}`;this.relations=h,this.states={[_]:v,[S]:v};break}case"1:n":{const v=g(),_=y(),S=`${i}KeyOf${Ml(r)}`,M=`${r}KeysOf${Ml(i)}`,w={[S]:v,[M]:_};this.relations=h,this.states=w;break}case"n:n":{const v=y(),_=`${i}KeysOf${Ml(r)}`,S=`${r}KeysOf${Ml(i)}`;this.relations=h,this.states={[_]:v,[S]:v}}}}}function aZ(n,e){return n.joins.set(e.key,new aV(n,e)),{key:e.key,type:"join",a:e.between[0],b:e.between[1],cardinality:e.cardinality}}function lV(n,e){let t=n.joins.get(e.key);if(t===void 0){const r=Ws.STORE.joins.get(e.key);if(r===void 0)throw new Error(`Join "${e.key}" not found in store "${n.config.name}"`);const s=XP(n);t=new aV(s,r.options),n.joins.set(e.key,t)}return t}function lZ(n,e,t){const i=lV(n,e);let r;switch(e.cardinality){case"1:1":{const s=`${e.a}KeyOf${Ml(e.b)}`,o=`${e.b}KeyOf${Ml(e.a)}`;r={get[s](){const a=i.states[s];return or(n,a,t)},get[o](){const a=i.states[o];return or(n,a,t)}};break}case"1:n":{const s=`${e.a}KeyOf${Ml(e.b)}`,o=`${e.b}KeysOf${Ml(e.a)}`;r={get[s](){const a=i.states[s];return or(n,a,t)},get[o](){const a=i.states[o];return or(n,a,t)}};break}case"n:n":{const s=`${e.a}KeysOf${Ml(e.b)}`,o=`${e.b}KeysOf${Ml(e.a)}`;r={get[s](){const a=i.states[s];return or(n,a,t)},get[o](){const a=i.states[o];return or(n,a,t)}}}}return r}function D3(n,e,t){const i=lV(n,e);return[i.relatedKeysAtoms,i.relatedKeysAtoms]}const wc=ne.createContext(Ws.STORE);function cV(n,e){const t=e(null);return ne.useEffect(()=>{It(n,t.current)},[n]),t}function uV(n,...e){let t;if(e.length===2){const i=e[0],r=e[1];t=or(n,i,r)}else t=e[0];return t}function ka(...n){const e=ne.useContext(wc),t=uV(e,...n),i=ne.useRef(null);return i.current??=r=>{Xi(e,t,r)},i.current}function fV(n,e){if(globalThis.env?.NODE_ENV==="development"){const r=ne.useRef(!1);ne.useEffect(()=>{let s=r.current;if(s===!1)s=n()??!0,r.current=s;else return()=>{xh(s)&&s(),r.current=!1}},e)}else ne.useEffect(n,e)}function on(...n){const e=ne.useContext(wc),t=uV(e,...n),i=ne.useId();if(t.type==="mutable_atom"||t.type==="readonly_held_selector"||t.type==="writable_held_selector"){const[,o]=ne.useState(0),a=ne.useRef(Ga(e,t));return fV(()=>Sh(e,t,`use-o:${i}`,({newValue:f})=>{a.current=f,o(h=>h+1)}),[t.key]),a.current}const r=ne.useCallback(o=>Sh(e,t,`use-o:${i}`,o),[t.key]),s=ne.useCallback(()=>Ga(e,t),[t.key]);return ne.useSyncExternalStore(r,s,s)}function VT(n,e){const t=ne.useContext(wc),i=n.type==="mutable_atom_family"?or(t,n,e):n,r=Nu(t,i);return on(r)}const cZ="modulepreload",uZ=function(n){return"/"+n},UL={},mI=function(e,t,i){let r=Promise.resolve();if(t&&t.length>0){let f=function(h){return Promise.all(h.map(g=>Promise.resolve(g).then(y=>({status:"fulfilled",value:y}),y=>({status:"rejected",reason:y}))))};var o=f;document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),c=a?.nonce||a?.getAttribute("nonce");r=f(t.map(h=>{if(h=uZ(h),h in UL)return;UL[h]=!0;const g=h.endsWith(".css"),y=g?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${h}"]${y}`))return;const v=document.createElement("link");if(v.rel=g?"stylesheet":cZ,g||(v.as="script"),v.crossOrigin="",v.href=h,c&&v.setAttribute("nonce",c),document.head.appendChild(v),g)return new Promise((_,S)=>{v.addEventListener("load",_),v.addEventListener("error",()=>S(new Error(`Unable to preload CSS for ${h}`)))})}))}function s(a){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=a,window.dispatchEvent(c),!c.defaultPrevented)throw a}return r.then(a=>{for(const c of a||[])c.status==="rejected"&&s(c.reason);return e().catch(s)})};function Uy(n,e,t){return n.on(e,t),n.off.bind(n,e,t)}class fZ extends Map{set(e,t){return this.has(e)?(console.warn("Tried to set a key that already exists in an InvariantMap",{key:e,value:t}),this):super.set(e,t)}}class $w{type="continuity";globals=[];actions=[];perspectives=[];key;constructor(e){this.key=e}static existing=new fZ;static create(e,t){const i=new $w(e),{type:r,globals:s,actions:o,perspectives:a}=t(i),c={type:r,key:e,globals:s,actions:o,perspectives:a};return $w.existing.set(e,c),c}add(...e){switch(e[0].type){case"atom":case"mutable_atom":this.globals.push(...e);break;case"transaction":this.actions.push(...e);break;case"atom_family":case"mutable_atom_family":{const[i,r]=e;this.perspectives.push({type:"realtime_perspective",resourceAtoms:i,viewAtoms:r})}break}return this}}function dZ(n){const{key:e,config:t}=n,i=$w.create(e,t),{actions:r}=i;for(const s of r)$2(Ws.STORE,e,s.key);return eI(Ws.STORE,e,-1),i}const dV=n=>n.startsWith("user::"),hV=n=>n.startsWith("room::"),P3=YP({key:"roomKeys",class:th}),xm=N2({key:"usersInRooms",between:["room","user"],cardinality:"1:n",isAType:hV,isBType:dV});Sc({key:"visibleUsersInRooms",get:n=>({get:e})=>{const[,t]=uv(xm),i=e(t,n);return[n,...i]}});Sc({key:"visibilityFromRoom",get:n=>({get:e})=>{const[t]=uv(xm),i=e(t,n);return[n,...i]}});Sc({key:"mutualUsers",get:n=>({get:e})=>{const[t,i]=uv(xm),r=e(i,n);for(const s of r)return[...e(t,s)];return[n]}});const pV=N2({key:"ownersOfRooms",between:["user","room"],cardinality:"1:n",isAType:dV,isBType:hV});var FL={};const hZ=ti({key:"mySocketKey",default:void 0}),Zf=ti({key:"myUserKey",default:null,effects:[n=>{typeof window<"u"&&mI(async()=>{const{storageSync:e}=await Promise.resolve().then(()=>$oe);return{storageSync:e}},void 0).then(({storageSync:e})=>{e(globalThis.localStorage,JSON,"myUserKey")(n)})}]}),gI=dr({key:"myRoomKey",get:({get:n})=>{if("process"in globalThis&&"env"in process&&"REALTIME_ROOM_KEY"in FL)return FL.REALTIME_ROOM_KEY;const e=n(Zf);if(!e)return null;const[,t]=uv(xm),i=n(t,e);for(const r of i)return r;return null}}),pw=ti({key:"optimisticUpdateQueue",default:()=>[]}),I3=ti({key:"confirmedUpdateQueue",default:()=>[]}),pZ=(n,e,t,i,r)=>s=>{function o(c,f){if(n.logger.info("🧑⚖️","continuity",e,"reconciling updates"),Xi(n,pw,g=>(g.shift(),g)),c.id===f.id){const g=JSON.stringify(c.subEvents),y=JSON.stringify(f.subEvents);if(g===y){n.logger.info("✅","continuity",e,`results for ${c.id} match between client and server`),t.emit(`ack:${e}`,f.epoch);return}}else n.logger.info("❌","continuity",e,`thought update #${f.epoch} was ${c.token.key}:${c.id}, but it was actually ${f.token.key}:${f.id}`);n.logger.info("🧑⚖️","continuity",e,"updates do not match",c,f);const h=i.toReversed();for(const g of h)hy(n,g,"oldValue");n.logger.info("⏪","continuity",e,"undid optimistic updates:",h),hy(n,c,"oldValue"),n.logger.info("⏪","continuity",e,"undid zeroth optimistic update",c),hy(n,f,"newValue"),n.logger.info("⏩","continuity",e,"applied confirmed update",f),t.emit(`ack:${e}`,f.epoch);for(const g of i){const y={type:"transaction",key:g.token.key},{id:v,params:_}=g;ZP(n,y,v)(..._)}n.logger.info("⏩","continuity",e,"reapplied subsequent optimistic updates:",i)}n.logger.info("🧑⚖️","continuity",e,"integrating confirmed update",{confirmedUpdate:s,confirmedUpdates:r,optimisticUpdates:i});const a=i[0];if(a)if(n.logger.info("🧑⚖️","continuity",e,"has optimistic updates to reconcile"),s.epoch===a.epoch){n.logger.info("🧑⚖️","continuity",e,`epoch of confirmed update #${s.epoch} matches zeroth optimistic update`),o(a,s);for(const c of r){const f=i[0];if(c.epoch===f?.epoch)o(f,c);else break}}else n.logger.info("🧑⚖️","continuity",e,`epoch of confirmed update #${s.epoch} does not match zeroth optimistic update #${a.epoch}`),r.some(f=>f.epoch===s.epoch)||(n.logger.info("👈","continuity",e,"pushing confirmed update to queue",s),Xi(n,I3,f=>(f.push(s),f.sort((h,g)=>h.epoch-g.epoch),f)));else{n.logger.info("🧑⚖️","continuity",e,"has no optimistic updates to deal with");let c;c=H2(n,e),c===s.epoch-1?(n.logger.info("✅","continuity",e,`integrating update #${s.epoch} (${s.token.key} ${s.id})`),hy(n,s,"newValue"),t.emit(`ack:${e}`,s.epoch),eI(n,e,s.epoch)):c!==void 0&&(n.logger.info("🧑⚖️","continuity",e,`received update #${s.epoch} but still waiting for update #${c+1}`,{clientEpoch:c,serverEpoch:s.epoch}),r.some(h=>h.epoch===s.epoch)?n.logger.info("👍","continuity",e,`confirmed update #${s.epoch} is already enqueued`):(n.logger.info("👈","continuity",e,`pushing confirmed update #${s.epoch} to queue`),Xi(n,I3,h=>(h.push(s),h.sort((g,y)=>g.epoch-y.epoch),h))))}};function mZ(n){return e=>{for(const t of e)pI(n,t)}}function gZ(n){return e=>{let t=0,i,r;for(const s of e)t%2===0?i=s:(r=s,Xi(n,i,r)),t++}}const O3=new WeakMap,BL=new WeakMap;function yZ(n){let e=O3.get(n);return e===void 0&&(e=new Map,O3.set(n,e)),e}function jT(n,e,t){BL.get(n)!==n.id&&(BL.set(n,n.id),O3.delete(n));const r=yZ(n);let s=r.get(e);if(s)s.timer.use(new Promise(()=>{})),s.refcount++;else{s={refcount:1,timer:new jw(()=>{})},r.set(e,s);const o=t(e);s.timer.then(()=>{o(),r.delete(e)})}return()=>{if(s.refcount--,s.refcount===0){const o=new Promise(a=>{setTimeout(a,50)});s.timer.use(o)}}}function mV(n,e,t){return jT(e,t.key,i=>{const r=Uy(e,`serve:${i}`,s=>{Xi(n,t,s)});return e.emit(`sub:${t.key}`),()=>{e.emit(`unsub:${i}`),r()}})}function gV(n,e,t,i){const r=or(n,t,i);return jT(e,r.key,()=>{const s=Uy(e,`serve:${r.key}`,o=>{Xi(n,r,o)});return e.emit(`sub:${t.key}`,i),()=>{e.emit(`unsub:${r.key}`),s()}})}function yV(n,e,t){const i=Nu(n,t),r=BT(t);return jT(e,t.key,()=>{const s=Uy(e,`init:${t.key}`,a=>{Xi(n,i,a)}),o=Uy(e,`next:${t.key}`,a=>{Xi(n,r,a)});return e.emit(`sub:${t.key}`),()=>{e.emit(`unsub:${t.key}`),s(),o()}})}function vV(n,e,t,i){const r=or(n,t,i),s=Nu(n,r),o=BT(r);return jT(e,r.key,()=>{const a=Uy(e,`init:${r.key}`,f=>{Xi(n,s,f)}),c=Uy(e,`next:${r.key}`,f=>{Xi(n,o,f)});return e.emit(`sub:${t.key}`,i),()=>{e.emit(`unsub:${r.key}`),a(),c()}})}function bV(n,e,t){const i=new Map,r=()=>{const o=n.selectorAtoms.getRelatedKeys(t.key);if(o){for(const[a,c]of i)o.has(a)||(c(),i.delete(a));for(const a of o){if(i.has(a))continue;const c=n.atoms.get(a);switch(c.type){case"atom":{if(c.family){const{subKey:f}=c.family,h=Tu(f),g=nx(n,c);i.set(a,gV(n,e,g,h))}else i.set(a,mV(n,e,c));break}case"mutable_atom":{if(c.family){const{subKey:f}=c.family,h=Tu(f),g=nx(n,c);i.set(a,vV(n,e,g,h))}else i.set(a,yV(n,e,c));break}}}}},s=Sh(n,t,"pull-watches-dependencies",()=>{r()});return r(),()=>{for(const[,o]of i)o();i.clear(),s()}}function vZ(n,e,t){return bV(n,e,t)}function bZ(n,e,t,i){const r=or(n,t,i);return bV(n,e,r)}function xZ(n,e,t){const i=t.key,r=Ga(n,pw),s=Ga(n,I3),o=(g,y)=>{e.off(`continuity-init:${i}`,o);let v=0,_,S;for(const M of y)v%2===0?_=M:(S=M,"type"in _&&_.type==="mutable_atom"&&(_=Nu(n,_)),Xi(n,_,S)),v++;eI(n,i,g)};e.off(`continuity-init:${i}`),e.on(`continuity-init:${i}`,o);const a=pZ(n,i,e,r,s);e.off(`tx-new:${i}`),e.on(`tx-new:${i}`,a);const c=t.actions.map(g=>($2(n,i,g.key),nV(n,g,`tx-run:${i}`,v=>{n.logger.info("🤞","continuity",i,"enqueuing optimistic update");const _=r.findIndex(S=>S.id===v.id);_===-1?(n.logger.info("🤞","continuity",i,"enqueuing new optimistic update"),Xi(n,pw,S=>(S.push(v),S.sort((M,w)=>M.epoch-w.epoch),S))):(n.logger.info("🤞","continuity",i,`replacing existing optimistic update at index ${_}`),Xi(n,pw,S=>(S[_]=v,S))),e.emit(`tx-run:${i}`,{id:v.id,token:g,params:v.params})}))),f=gZ(n),h=mZ(n);return e.on(`reveal:${i}`,f),e.on(`conceal:${i}`,h),e.emit(`get:${i}`),()=>{e.off(`continuity-init:${i}`),e.off(`tx-new:${i}`);for(const g of c)g()}}const _m=ne.createContext({socket:null,services:null}),_Z=({children:n,socket:e})=>{const t=ne.useRef(new Map).current,i=ka(hZ);return ne.useEffect(()=>{i(e?.id?`socket::${e.id}`:void 0),e?.on("connect",()=>{i(e?.id?`socket::${e.id}`:void 0)}),e?.on("disconnect",()=>{i(void 0)})},[e,i]),j.jsx(_m.Provider,{value:{socket:e,services:t},children:n})};function Sm(n,e){const{socket:t,services:i}=ne.useContext(_m);fV(()=>{let r=i?.get(n);return r?++r.consumerCount:t&&(r={consumerCount:1,dispose:e(t)},i?.set(n,r)),()=>{r&&(--r.consumerCount,r.consumerCount===0&&(r.dispose?.(),i?.delete(n)))}},[t,n])}function Eu(n){const e=ne.useContext(wc);return Sm(`pull:${n.key}`,t=>mV(e,t,n)),on(n)}function vc(n,e){const t=ne.useContext(wc),i=or(t,n,e);return Sm(`pull:${i.key}`,r=>gV(t,r,n,e)),on(i)}function yI(n){const e=ne.useContext(wc);return Sm(`pull:${n.key}`,t=>yV(e,t,n)),on(n)}function e1(n,e){const t=ne.useContext(wc),i=or(t,n,e);return Sm(`pull:${i.key}`,r=>vV(t,r,n,e)),on(i)}function rm(n){const e=ne.useContext(wc);return Sm(`pull:${n.key}`,t=>vZ(e,t,n)),on(n)}function SZ(n,e){const t=ne.useContext(wc),i=or(t,n,e);return Sm(`pull:${i.key}`,r=>bZ(t,r,n,e)),on(i)}function wm(){const n=ne.useContext(wc),{socket:e}=ne.useContext(_m);yI(P3);const t=Eu(Zf)??"user::$_NONE_$",[i,r]=D3(n,xm);e1(r,t);const s=on(r,t);let o;for(const y of s){o=y;break}const a=o??"room::$_NONE_$",c=or(n,i,a);e1(i,a);const[f,h]=D3(n,pV),g=or(n,f,t);return e1(f,t),e1(h,a),{roomSocket:e,myRoomKey:o,allRoomKeysAtom:P3,myMutualsAtom:c,myOwnedRoomsAtom:g}}function wZ(n){const e=ne.useContext(wc);Sm(`tx-sync:${n.key}`,t=>xZ(e,t,n))}var uC={exports:{}},H0={},fC={exports:{}},dC={};var zL;function MZ(){return zL||(zL=1,(function(n){function e(H,Q){var te=H.length;H.push(Q);e:for(;0<te;){var le=te-1>>>1,ce=H[le];if(0<r(ce,Q))H[le]=Q,H[te]=ce,te=le;else break e}}function t(H){return H.length===0?null:H[0]}function i(H){if(H.length===0)return null;var Q=H[0],te=H.pop();if(te!==Q){H[0]=te;e:for(var le=0,ce=H.length,F=ce>>>1;le<F;){var ee=2*(le+1)-1,re=H[ee],he=ee+1,pe=H[he];if(0>r(re,te))he<ce&&0>r(pe,re)?(H[le]=pe,H[he]=te,le=he):(H[le]=re,H[ee]=te,le=ee);else if(he<ce&&0>r(pe,te))H[le]=pe,H[he]=te,le=he;else break e}}return Q}function r(H,Q){var te=H.sortIndex-Q.sortIndex;return te!==0?te:H.id-Q.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;n.unstable_now=function(){return s.now()}}else{var o=Date,a=o.now();n.unstable_now=function(){return o.now()-a}}var c=[],f=[],h=1,g=null,y=3,v=!1,_=!1,S=!1,M=!1,w=typeof setTimeout=="function"?setTimeout:null,A=typeof clearTimeout=="function"?clearTimeout:null,R=typeof setImmediate<"u"?setImmediate:null;function P(H){for(var Q=t(f);Q!==null;){if(Q.callback===null)i(f);else if(Q.startTime<=H)i(f),Q.sortIndex=Q.expirationTime,e(c,Q);else break;Q=t(f)}}function I(H){if(S=!1,P(H),!_)if(t(c)!==null)_=!0,k||(k=!0,W());else{var Q=t(f);Q!==null&&ie(I,Q.startTime-H)}}var k=!1,U=-1,B=5,N=-1;function L(){return M?!0:!(n.unstable_now()-N<B)}function $(){if(M=!1,k){var H=n.unstable_now();N=H;var Q=!0;try{e:{_=!1,S&&(S=!1,A(U),U=-1),v=!0;var te=y;try{t:{for(P(H),g=t(c);g!==null&&!(g.expirationTime>H&&L());){var le=g.callback;if(typeof le=="function"){g.callback=null,y=g.priorityLevel;var ce=le(g.expirationTime<=H);if(H=n.unstable_now(),typeof ce=="function"){g.callback=ce,P(H),Q=!0;break t}g===t(c)&&i(c),P(H)}else i(c);g=t(c)}if(g!==null)Q=!0;else{var F=t(f);F!==null&&ie(I,F.startTime-H),Q=!1}}break e}finally{g=null,y=te,v=!1}Q=void 0}}finally{Q?W():k=!1}}}var W;if(typeof R=="function")W=function(){R($)};else if(typeof MessageChannel<"u"){var q=new MessageChannel,Y=q.port2;q.port1.onmessage=$,W=function(){Y.postMessage(null)}}else W=function(){w($,0)};function ie(H,Q){U=w(function(){H(n.unstable_now())},Q)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(H){H.callback=null},n.unstable_forceFrameRate=function(H){0>H||125<H?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):B=0<H?Math.floor(1e3/H):5},n.unstable_getCurrentPriorityLevel=function(){return y},n.unstable_next=function(H){switch(y){case 1:case 2:case 3:var Q=3;break;default:Q=y}var te=y;y=Q;try{return H()}finally{y=te}},n.unstable_requestPaint=function(){M=!0},n.unstable_runWithPriority=function(H,Q){switch(H){case 1:case 2:case 3:case 4:case 5:break;default:H=3}var te=y;y=H;try{return Q()}finally{y=te}},n.unstable_scheduleCallback=function(H,Q,te){var le=n.unstable_now();switch(typeof te=="object"&&te!==null?(te=te.delay,te=typeof te=="number"&&0<te?le+te:le):te=le,H){case 1:var ce=-1;break;case 2:ce=250;break;case 5:ce=1073741823;break;case 4:ce=1e4;break;default:ce=5e3}return ce=te+ce,H={id:h++,callback:Q,priorityLevel:H,startTime:te,expirationTime:ce,sortIndex:-1},te>le?(H.sortIndex=te,e(f,H),t(c)===null&&H===t(f)&&(S?(A(U),U=-1):S=!0,ie(I,te-le))):(H.sortIndex=ce,e(c,H),_||v||(_=!0,k||(k=!0,W()))),H},n.unstable_shouldYield=L,n.unstable_wrapCallback=function(H){var Q=y;return function(){var te=y;y=Q;try{return H.apply(this,arguments)}finally{y=te}}}})(dC)),dC}var VL;function xV(){return VL||(VL=1,fC.exports=MZ()),fC.exports}var hC={exports:{}},ro={};var jL;function TZ(){if(jL)return ro;jL=1;var n=Fx();function e(c){var f="https://react.dev/errors/"+c;if(1<arguments.length){f+="?args[]="+encodeURIComponent(arguments[1]);for(var h=2;h<arguments.length;h++)f+="&args[]="+encodeURIComponent(arguments[h])}return"Minified React error #"+c+"; visit "+f+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function t(){}var i={d:{f:t,r:function(){throw Error(e(522))},D:t,C:t,L:t,m:t,X:t,S:t,M:t},p:0,findDOMNode:null},r=Symbol.for("react.portal");function s(c,f,h){var g=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:r,key:g==null?null:""+g,children:c,containerInfo:f,implementation:h}}var o=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function a(c,f){if(c==="font")return"";if(typeof f=="string")return f==="use-credentials"?f:""}return ro.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,ro.createPortal=function(c,f){var h=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!f||f.nodeType!==1&&f.nodeType!==9&&f.nodeType!==11)throw Error(e(299));return s(c,f,null,h)},ro.flushSync=function(c){var f=o.T,h=i.p;try{if(o.T=null,i.p=2,c)return c()}finally{o.T=f,i.p=h,i.d.f()}},ro.preconnect=function(c,f){typeof c=="string"&&(f?(f=f.crossOrigin,f=typeof f=="string"?f==="use-credentials"?f:"":void 0):f=null,i.d.C(c,f))},ro.prefetchDNS=function(c){typeof c=="string"&&i.d.D(c)},ro.preinit=function(c,f){if(typeof c=="string"&&f&&typeof f.as=="string"){var h=f.as,g=a(h,f.crossOrigin),y=typeof f.integrity=="string"?f.integrity:void 0,v=typeof f.fetchPriority=="string"?f.fetchPriority:void 0;h==="style"?i.d.S(c,typeof f.precedence=="string"?f.precedence:void 0,{crossOrigin:g,integrity:y,fetchPriority:v}):h==="script"&&i.d.X(c,{crossOrigin:g,integrity:y,fetchPriority:v,nonce:typeof f.nonce=="string"?f.nonce:void 0})}},ro.preinitModule=function(c,f){if(typeof c=="string")if(typeof f=="object"&&f!==null){if(f.as==null||f.as==="script"){var h=a(f.as,f.crossOrigin);i.d.M(c,{crossOrigin:h,integrity:typeof f.integrity=="string"?f.integrity:void 0,nonce:typeof f.nonce=="string"?f.nonce:void 0})}}else f==null&&i.d.M(c)},ro.preload=function(c,f){if(typeof c=="string"&&typeof f=="object"&&f!==null&&typeof f.as=="string"){var h=f.as,g=a(h,f.crossOrigin);i.d.L(c,h,{crossOrigin:g,integrity:typeof f.integrity=="string"?f.integrity:void 0,nonce:typeof f.nonce=="string"?f.nonce:void 0,type:typeof f.type=="string"?f.type:void 0,fetchPriority:typeof f.fetchPriority=="string"?f.fetchPriority:void 0,referrerPolicy:typeof f.referrerPolicy=="string"?f.referrerPolicy:void 0,imageSrcSet:typeof f.imageSrcSet=="string"?f.imageSrcSet:void 0,imageSizes:typeof f.imageSizes=="string"?f.imageSizes:void 0,media:typeof f.media=="string"?f.media:void 0})}},ro.preloadModule=function(c,f){if(typeof c=="string")if(f){var h=a(f.as,f.crossOrigin);i.d.m(c,{as:typeof f.as=="string"&&f.as!=="script"?f.as:void 0,crossOrigin:h,integrity:typeof f.integrity=="string"?f.integrity:void 0})}else i.d.m(c)},ro.requestFormReset=function(c){i.d.r(c)},ro.unstable_batchedUpdates=function(c,f){return c(f)},ro.useFormState=function(c,f,h){return o.H.useFormState(c,f,h)},ro.useFormStatus=function(){return o.H.useHostTransitionStatus()},ro.version="19.2.3",ro}var GL;function _V(){if(GL)return hC.exports;GL=1;function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}return n(),hC.exports=TZ(),hC.exports}var HL;function EZ(){if(HL)return H0;HL=1;var n=xV(),e=Fx(),t=_V();function i(l){var u="https://react.dev/errors/"+l;if(1<arguments.length){u+="?args[]="+encodeURIComponent(arguments[1]);for(var m=2;m<arguments.length;m++)u+="&args[]="+encodeURIComponent(arguments[m])}return"Minified React error #"+l+"; visit "+u+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function r(l){return!(!l||l.nodeType!==1&&l.nodeType!==9&&l.nodeType!==11)}function s(l){var u=l,m=l;if(l.alternate)for(;u.return;)u=u.return;else{l=u;do u=l,(u.flags&4098)!==0&&(m=u.return),l=u.return;while(l)}return u.tag===3?m:null}function o(l){if(l.tag===13){var u=l.memoizedState;if(u===null&&(l=l.alternate,l!==null&&(u=l.memoizedState)),u!==null)return u.dehydrated}return null}function a(l){if(l.tag===31){var u=l.memoizedState;if(u===null&&(l=l.alternate,l!==null&&(u=l.memoizedState)),u!==null)return u.dehydrated}return null}function c(l){if(s(l)!==l)throw Error(i(188))}function f(l){var u=l.alternate;if(!u){if(u=s(l),u===null)throw Error(i(188));return u!==l?null:l}for(var m=l,b=u;;){var E=m.return;if(E===null)break;var C=E.alternate;if(C===null){if(b=E.return,b!==null){m=b;continue}break}if(E.child===C.child){for(C=E.child;C;){if(C===m)return c(E),l;if(C===b)return c(E),u;C=C.sibling}throw Error(i(188))}if(m.return!==b.return)m=E,b=C;else{for(var V=!1,Z=E.child;Z;){if(Z===m){V=!0,m=E,b=C;break}if(Z===b){V=!0,b=E,m=C;break}Z=Z.sibling}if(!V){for(Z=C.child;Z;){if(Z===m){V=!0,m=C,b=E;break}if(Z===b){V=!0,b=C,m=E;break}Z=Z.sibling}if(!V)throw Error(i(189))}}if(m.alternate!==b)throw Error(i(190))}if(m.tag!==3)throw Error(i(188));return m.stateNode.current===m?l:u}function h(l){var u=l.tag;if(u===5||u===26||u===27||u===6)return l;for(l=l.child;l!==null;){if(u=h(l),u!==null)return u;l=l.sibling}return null}var g=Object.assign,y=Symbol.for("react.element"),v=Symbol.for("react.transitional.element"),_=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),M=Symbol.for("react.strict_mode"),w=Symbol.for("react.profiler"),A=Symbol.for("react.consumer"),R=Symbol.for("react.context"),P=Symbol.for("react.forward_ref"),I=Symbol.for("react.suspense"),k=Symbol.for("react.suspense_list"),U=Symbol.for("react.memo"),B=Symbol.for("react.lazy"),N=Symbol.for("react.activity"),L=Symbol.for("react.memo_cache_sentinel"),$=Symbol.iterator;function W(l){return l===null||typeof l!="object"?null:(l=$&&l[$]||l["@@iterator"],typeof l=="function"?l:null)}var q=Symbol.for("react.client.reference");function Y(l){if(l==null)return null;if(typeof l=="function")return l.$$typeof===q?null:l.displayName||l.name||null;if(typeof l=="string")return l;switch(l){case S:return"Fragment";case w:return"Profiler";case M:return"StrictMode";case I:return"Suspense";case k:return"SuspenseList";case N:return"Activity"}if(typeof l=="object")switch(l.$$typeof){case _:return"Portal";case R:return l.displayName||"Context";case A:return(l._context.displayName||"Context")+".Consumer";case P:var u=l.render;return l=l.displayName,l||(l=u.displayName||u.name||"",l=l!==""?"ForwardRef("+l+")":"ForwardRef"),l;case U:return u=l.displayName||null,u!==null?u:Y(l.type)||"Memo";case B:u=l._payload,l=l._init;try{return Y(l(u))}catch{}}return null}var ie=Array.isArray,H=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Q=t.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,te={pending:!1,data:null,method:null,action:null},le=[],ce=-1;function F(l){return{current:l}}function ee(l){0>ce||(l.current=le[ce],le[ce]=null,ce--)}function re(l,u){ce++,le[ce]=l.current,l.current=u}var he=F(null),pe=F(null),ae=F(null),fe=F(null);function xe(l,u){switch(re(ae,u),re(pe,l),re(he,null),u.nodeType){case 9:case 11:l=(l=u.documentElement)&&(l=l.namespaceURI)?TN(l):0;break;default:if(l=u.tagName,u=u.namespaceURI)u=TN(u),l=EN(u,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}ee(he),re(he,l)}function Be(){ee(he),ee(pe),ee(ae)}function Xe(l){l.memoizedState!==null&&re(fe,l);var u=he.current,m=EN(u,l.type);u!==m&&(re(pe,l),re(he,m))}function et(l){pe.current===l&&(ee(he),ee(pe)),fe.current===l&&(ee(fe),U0._currentValue=te)}var De,tt;function ye(l){if(De===void 0)try{throw Error()}catch(m){var u=m.stack.trim().match(/\n( *(at )?)/);De=u&&u[1]||"",tt=-1<m.stack.indexOf(`
|
|
26
26
|
at`)?" (<anonymous>)":-1<m.stack.indexOf("@")?"@unknown:0:0":""}return`
|
|
27
27
|
`+De+l+tt}var Ce=!1;function we(l,u){if(!l||Ce)return"";Ce=!0;var m=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var b={DetermineComponentFrameRoot:function(){try{if(u){var ct=function(){throw Error()};if(Object.defineProperty(ct.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ct,[])}catch(Ke){var je=Ke}Reflect.construct(l,[],ct)}else{try{ct.call()}catch(Ke){je=Ke}l.call(ct.prototype)}}else{try{throw Error()}catch(Ke){je=Ke}(ct=l())&&typeof ct.catch=="function"&&ct.catch(function(){})}}catch(Ke){if(Ke&&je&&typeof Ke.stack=="string")return[Ke.stack,je.stack]}return[null,null]}};b.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var E=Object.getOwnPropertyDescriptor(b.DetermineComponentFrameRoot,"name");E&&E.configurable&&Object.defineProperty(b.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var C=b.DetermineComponentFrameRoot(),V=C[0],Z=C[1];if(V&&Z){var me=V.split(`
|
|
28
28
|
`),Fe=Z.split(`
|
package/app/index.html
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
/>
|
|
11
11
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
12
12
|
<title>TEMPEST</title>
|
|
13
|
-
<script type="module" crossorigin src="/assets/index-
|
|
13
|
+
<script type="module" crossorigin src="/assets/index-Cedsqfu2.js"></script>
|
|
14
14
|
<link rel="stylesheet" crossorigin href="/assets/index-92RdVh_1.css">
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
package/bin/backend.bun.js
CHANGED
|
@@ -3510,13 +3510,17 @@ var init_internal = __esm(() => {
|
|
|
3510
3510
|
});
|
|
3511
3511
|
|
|
3512
3512
|
// ../../packages/atom.io/dist/realtime/index.js
|
|
3513
|
+
function employSocket(socket, event, handleEvent) {
|
|
3514
|
+
socket.on(event, handleEvent);
|
|
3515
|
+
return socket.off.bind(socket, event, handleEvent);
|
|
3516
|
+
}
|
|
3513
3517
|
function onLoad(loadable, fn2) {
|
|
3514
3518
|
if (loadable instanceof Promise)
|
|
3515
3519
|
loadable.then(fn2);
|
|
3516
3520
|
else
|
|
3517
3521
|
fn2(loadable);
|
|
3518
3522
|
}
|
|
3519
|
-
function
|
|
3523
|
+
function guardSocket(socket, guard, logError) {
|
|
3520
3524
|
if (guard === `TRUST`)
|
|
3521
3525
|
return socket;
|
|
3522
3526
|
return {
|
|
@@ -3548,13 +3552,6 @@ function castSocket(socket, guard, logError) {
|
|
|
3548
3552
|
emit: socket.emit.bind(socket)
|
|
3549
3553
|
};
|
|
3550
3554
|
}
|
|
3551
|
-
function employSocket(socket, event, handleEvent) {
|
|
3552
|
-
socket.on(event, handleEvent);
|
|
3553
|
-
const retireSocket = () => {
|
|
3554
|
-
socket.off(event, handleEvent);
|
|
3555
|
-
};
|
|
3556
|
-
return retireSocket;
|
|
3557
|
-
}
|
|
3558
3555
|
var mutexAtoms, InvariantMap, SyncGroup, isSocketKey = (key) => key.startsWith(`socket::`), isUserKey = (key) => key.startsWith(`user::`), isRoomKey = (key) => key.startsWith(`room::`), roomKeysAtom, usersInRooms, visibleUsersInRoomsSelector, visibilityFromRoomSelector, mutualUsersSelector, ownersOfRooms;
|
|
3559
3556
|
var init_realtime = __esm(() => {
|
|
3560
3557
|
init_main();
|
|
@@ -4374,7 +4371,7 @@ function provideRooms({
|
|
|
4374
4371
|
roomNames,
|
|
4375
4372
|
userKey
|
|
4376
4373
|
}) {
|
|
4377
|
-
const roomSocket =
|
|
4374
|
+
const roomSocket = guardSocket(socket, createRoomSocketGuard(roomNames));
|
|
4378
4375
|
const exposeMutable = realtimeMutableProvider({
|
|
4379
4376
|
socket,
|
|
4380
4377
|
store,
|
|
@@ -12166,13 +12166,17 @@ var init_internal = __esm(() => {
|
|
|
12166
12166
|
});
|
|
12167
12167
|
|
|
12168
12168
|
// ../../packages/atom.io/dist/realtime/index.js
|
|
12169
|
+
function employSocket2(socket, event, handleEvent) {
|
|
12170
|
+
socket.on(event, handleEvent);
|
|
12171
|
+
return socket.off.bind(socket, event, handleEvent);
|
|
12172
|
+
}
|
|
12169
12173
|
function onLoad2(loadable, fn2) {
|
|
12170
12174
|
if (loadable instanceof Promise)
|
|
12171
12175
|
loadable.then(fn2);
|
|
12172
12176
|
else
|
|
12173
12177
|
fn2(loadable);
|
|
12174
12178
|
}
|
|
12175
|
-
function
|
|
12179
|
+
function guardSocket2(socket, guard, logError) {
|
|
12176
12180
|
if (guard === `TRUST`)
|
|
12177
12181
|
return socket;
|
|
12178
12182
|
return {
|
|
@@ -12204,13 +12208,6 @@ function castSocket2(socket, guard, logError) {
|
|
|
12204
12208
|
emit: socket.emit.bind(socket)
|
|
12205
12209
|
};
|
|
12206
12210
|
}
|
|
12207
|
-
function employSocket2(socket, event, handleEvent) {
|
|
12208
|
-
socket.on(event, handleEvent);
|
|
12209
|
-
const retireSocket = () => {
|
|
12210
|
-
socket.off(event, handleEvent);
|
|
12211
|
-
};
|
|
12212
|
-
return retireSocket;
|
|
12213
|
-
}
|
|
12214
12211
|
var mutexAtoms, InvariantMap, SyncGroup, isSocketKey = (key) => key.startsWith(`socket::`), isUserKey2 = (key) => key.startsWith(`user::`), isRoomKey2 = (key) => key.startsWith(`room::`), roomKeysAtom2, usersInRooms2, visibleUsersInRoomsSelector2, visibilityFromRoomSelector2, mutualUsersSelector2, ownersOfRooms2;
|
|
12215
12212
|
var init_realtime = __esm(() => {
|
|
12216
12213
|
init_main();
|
|
@@ -13051,7 +13048,7 @@ function provideRooms({
|
|
|
13051
13048
|
roomNames,
|
|
13052
13049
|
userKey
|
|
13053
13050
|
}) {
|
|
13054
|
-
const roomSocket =
|
|
13051
|
+
const roomSocket = guardSocket2(socket, createRoomSocketGuard(roomNames));
|
|
13055
13052
|
const exposeMutable = realtimeMutableProvider({
|
|
13056
13053
|
socket,
|
|
13057
13054
|
store,
|
|
@@ -15454,7 +15451,13 @@ function setState(...params) {
|
|
|
15454
15451
|
// src/backend.worker.bug-rangers.bun.ts
|
|
15455
15452
|
init_internal();
|
|
15456
15453
|
|
|
15457
|
-
// ../../packages/atom.io/src/realtime/
|
|
15454
|
+
// ../../packages/atom.io/src/realtime/employ-socket.ts
|
|
15455
|
+
function employSocket(socket, event, handleEvent) {
|
|
15456
|
+
socket.on(event, handleEvent);
|
|
15457
|
+
return socket.off.bind(socket, event, handleEvent);
|
|
15458
|
+
}
|
|
15459
|
+
|
|
15460
|
+
// ../../packages/atom.io/src/realtime/guard-socket.ts
|
|
15458
15461
|
function onLoad(loadable, fn2) {
|
|
15459
15462
|
if (loadable instanceof Promise) {
|
|
15460
15463
|
loadable.then(fn2);
|
|
@@ -15462,7 +15465,7 @@ function onLoad(loadable, fn2) {
|
|
|
15462
15465
|
fn2(loadable);
|
|
15463
15466
|
}
|
|
15464
15467
|
}
|
|
15465
|
-
function
|
|
15468
|
+
function guardSocket(socket, guard, logError) {
|
|
15466
15469
|
if (guard === `TRUST`) {
|
|
15467
15470
|
return socket;
|
|
15468
15471
|
}
|
|
@@ -15502,15 +15505,6 @@ function castSocket(socket, guard, logError) {
|
|
|
15502
15505
|
return guardedSocket;
|
|
15503
15506
|
}
|
|
15504
15507
|
|
|
15505
|
-
// ../../packages/atom.io/src/realtime/employ-socket.ts
|
|
15506
|
-
function employSocket(socket, event, handleEvent) {
|
|
15507
|
-
socket.on(event, handleEvent);
|
|
15508
|
-
const retireSocket = () => {
|
|
15509
|
-
socket.off(event, handleEvent);
|
|
15510
|
-
};
|
|
15511
|
-
return retireSocket;
|
|
15512
|
-
}
|
|
15513
|
-
|
|
15514
15508
|
// ../../packages/atom.io/src/realtime/realtime-key-types.ts
|
|
15515
15509
|
var isUserKey = (key) => key.startsWith(`user::`);
|
|
15516
15510
|
var isRoomKey = (key) => key.startsWith(`room::`);
|
|
@@ -29121,7 +29115,7 @@ parent.receiveRelay((socket, userKey) => {
|
|
|
29121
29115
|
const exposeState = realtimeStateProvider(config3);
|
|
29122
29116
|
const exposeMutable = realtimeMutableProvider(config3);
|
|
29123
29117
|
const exposeFamily = realtimeAtomFamilyProvider(config3);
|
|
29124
|
-
const gameSocket =
|
|
29118
|
+
const gameSocket = guardSocket(socket, bugRangersGuard, parent.logger.error);
|
|
29125
29119
|
const usersHereAtom = findState(usersInRoomsAtoms, ROOM_KEY);
|
|
29126
29120
|
const coreStack = [];
|
|
29127
29121
|
coreStack.push(exposeState(turnNumberAtom), exposeState(gameStateAtom), exposeState(turnInProgressAtom), exposeMutable(playerTurnOrderAtom), exposeMutable(gameTilesAtom), exposeFamily(playerReadyStatusAtoms, usersHereAtom), exposeFamily(playerColorAtoms, usersHereAtom), exposeFamily(playerRemainingCubesAtoms, usersHereAtom), exposeFamily(playerRemainingTilesAtoms, usersHereAtom), exposeFamily(tileOwnerAtoms, gameTilesAtom), exposeFamily(tileCubeCountAtoms, gameTilesAtom), exposeFamily(gameTilesStackHeightAtoms, gameTilesAtom), employSocket(gameSocket, `wantFirst`, () => {
|
package/bin/frontend.bun.js
CHANGED
|
@@ -12166,13 +12166,17 @@ var init_internal = __esm(() => {
|
|
|
12166
12166
|
});
|
|
12167
12167
|
|
|
12168
12168
|
// ../../packages/atom.io/dist/realtime/index.js
|
|
12169
|
+
function employSocket(socket, event, handleEvent) {
|
|
12170
|
+
socket.on(event, handleEvent);
|
|
12171
|
+
return socket.off.bind(socket, event, handleEvent);
|
|
12172
|
+
}
|
|
12169
12173
|
function onLoad(loadable, fn2) {
|
|
12170
12174
|
if (loadable instanceof Promise)
|
|
12171
12175
|
loadable.then(fn2);
|
|
12172
12176
|
else
|
|
12173
12177
|
fn2(loadable);
|
|
12174
12178
|
}
|
|
12175
|
-
function
|
|
12179
|
+
function guardSocket(socket, guard, logError) {
|
|
12176
12180
|
if (guard === `TRUST`)
|
|
12177
12181
|
return socket;
|
|
12178
12182
|
return {
|
|
@@ -12204,13 +12208,6 @@ function castSocket(socket, guard, logError) {
|
|
|
12204
12208
|
emit: socket.emit.bind(socket)
|
|
12205
12209
|
};
|
|
12206
12210
|
}
|
|
12207
|
-
function employSocket(socket, event, handleEvent) {
|
|
12208
|
-
socket.on(event, handleEvent);
|
|
12209
|
-
const retireSocket = () => {
|
|
12210
|
-
socket.off(event, handleEvent);
|
|
12211
|
-
};
|
|
12212
|
-
return retireSocket;
|
|
12213
|
-
}
|
|
12214
12211
|
var mutexAtoms, InvariantMap, SyncGroup, isSocketKey = (key) => key.startsWith(`socket::`), isUserKey = (key) => key.startsWith(`user::`), isRoomKey = (key) => key.startsWith(`room::`), roomKeysAtom, usersInRooms, visibleUsersInRoomsSelector, visibilityFromRoomSelector, mutualUsersSelector, ownersOfRooms;
|
|
12215
12212
|
var init_realtime = __esm(() => {
|
|
12216
12213
|
init_main();
|
|
@@ -13030,7 +13027,7 @@ function provideRooms({
|
|
|
13030
13027
|
roomNames,
|
|
13031
13028
|
userKey
|
|
13032
13029
|
}) {
|
|
13033
|
-
const roomSocket =
|
|
13030
|
+
const roomSocket = guardSocket(socket, createRoomSocketGuard(roomNames));
|
|
13034
13031
|
const exposeMutable = realtimeMutableProvider({
|
|
13035
13032
|
socket,
|
|
13036
13033
|
store,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tempest.games",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"socket.io-client": "4.8.3",
|
|
51
51
|
"three": "0.182.0",
|
|
52
52
|
"three-stdlib": "2.36.1",
|
|
53
|
-
"atom.io": "0.46.
|
|
53
|
+
"atom.io": "0.46.14",
|
|
54
54
|
"safedeposit": "0.1.2",
|
|
55
55
|
"treetrunks": "0.1.5"
|
|
56
56
|
},
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"vite": "7.3.0",
|
|
77
77
|
"vite-tsconfig-paths": "6.0.3",
|
|
78
78
|
"vitest": "4.0.16",
|
|
79
|
-
"flightdeck": "0.3.
|
|
79
|
+
"flightdeck": "0.3.34",
|
|
80
80
|
"varmint": "0.5.11"
|
|
81
81
|
},
|
|
82
82
|
"scripts": {
|