tempest.games 0.2.63 → 0.2.65

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.
@@ -11,7 +11,7 @@ ${D.trace}`:`No previous disposal trace for ${q} was found.`);return}z.subject.n
11
11
  ${H} was most recently disposed
12
12
  ${_.trace}`:`No previous disposal trace for ${H} was found.`),q}let G=h(Z),N=X.molecules.get(G);if(!N){let _=Q.disposalTraces.buffer.find((D)=>D?.key===G);return Q.logger.error("\u274C","key",q,"claim failed:",`Could not allocate to ${G} in store "${Q.config.name}".`,_?`
13
13
  ${G} was most recently disposed
14
- ${_.trace}`:`No previous disposal trace for ${G} was found.`),q}let j=Q.moleculeGraph.getRelationEntries({downstreamMoleculeKey:Y.stringKey}).filter(([,{source:_}])=>_!==H).map(([_])=>R(_));if(z)X.moleculeGraph.delete(H);X.moleculeGraph.set({upstreamMoleculeKey:N.stringKey,downstreamMoleculeKey:Y.stringKey},{source:N.stringKey});let W={type:"molecule_transfer",key:Y.key,exclusive:Boolean(z),from:j,to:[N.key],timestamp:Date.now()};if(F(X)&&X.transactionMeta.phase==="building")X.transactionMeta.update.subEvents.push(W);return q}function nQ(Q,Z,q){switch(q){case"newValue":CQ(Q,Z);break;case"oldValue":n(Q,Z.token);break}}function rQ(Q,Z,q){switch(q){case"newValue":n(Q,Z.token);break;case"oldValue":if(CQ(Q,Z),Z.subType==="atom")Q.valueMap.set(Z.token.key,Z.value);break}}function CQ(Q,Z){let{token:q}=Z;if(Z.subType==="writable"&&Z.value)f(Q,q,Z.value);else I(Q,q)}function sQ(Q,Z,q){switch(q){case"newValue":P0(Q,Z.provenance,Z.key);break;case"oldValue":T0(Q,Z.key);break}}function oQ(Q,Z,q){switch(q){case"newValue":T0(Q,Z.key);break;case"oldValue":P0(Q,Z.provenance.map(R),Z.key);for(let[z,H]of Z.values){let X=Q.families.get(z);if(X){I(Q,X,Z.key);let Y=`${z}(${h(Z.key)})`;Q.valueMap.set(Y,H)}}break}}function tQ(Q,Z,q){switch(q){case"newValue":for(let z of Z.to)O0(Q,z,Z.key,Z.exclusive?"exclusive":void 0);break;case"oldValue":{let z="exclusive";for(let H of Z.from)O0(Q,H,Z.key,z),z=void 0}break}}function EQ(Q,Z,q){let z=q==="newValue"?Z.subEvents:[...Z.subEvents].reverse();for(let H of z)switch(H.type){case"atom_update":iQ(Q,H,q);break;case"state_creation":nQ(Q,H,q);break;case"state_disposal":rQ(Q,H,q);break;case"molecule_creation":sQ(Q,H,q);break;case"molecule_disposal":oQ(Q,H,q);break;case"molecule_transfer":tQ(Q,H,q);break;case"transaction_outcome":EQ(Q,H,q);break}}function u(Q){return"epoch"in Q.transactionMeta}function F(Q){return"phase"in Q.transactionMeta}function BQ(Q,Z){return Q.transactionMeta.actionContinuities.getRelatedKey(Z)}function eQ(Q,Z){return Q.transactionMeta.epoch.get(Z)}function QZ(Q,Z){let q=BQ(Q,Z);if(q===void 0)return;return eQ(Q,q)}function ZZ(Q,Z,q){let z=BQ(Q,Z);if(z!==void 0)Q.transactionMeta.epoch.set(z,q)}function qZ(Q,Z){let q=C(Q),{parent:z}=q;q.transactionMeta.phase="applying",q.transactionMeta.update.output=Z,z.child=null,z.on.transactionApplying.next(q.transactionMeta);let{subEvents:H}=q.transactionMeta.update;if(Q.logger.info("\uD83D\uDEC4","transaction",q.transactionMeta.update.token.key,`applying ${H.length} subEvents:`,H),EQ(z,q.transactionMeta.update,"newValue"),u(z))ZZ(z,q.transactionMeta.update.token.key,q.transactionMeta.update.epoch),B(Q,{key:q.transactionMeta.update.token.key,type:"transaction"})?.subject.next(q.transactionMeta.update),Q.logger.info("\uD83D\uDEEC","transaction",q.transactionMeta.update.token.key,"applied");else if(F(z))z.transactionMeta.update.subEvents.push(q.transactionMeta.update);z.on.transactionApplying.next(null)}function zZ(Q){return{store:Q}}var HZ=(Q,Z,q,z)=>{let H=C(Q),X={parent:H,child:null,on:H.on,loggers:H.loggers,logger:H.logger,config:H.config,atoms:new K(H.atoms),atomsThatAreDefault:new Set(H.atomsThatAreDefault),families:new K(H.families),joins:new K(H.joins),operation:{open:!1},readonlySelectors:new K(H.readonlySelectors),timelines:new K(H.timelines),timelineTopics:H.timelineTopics.overlay(),trackers:new Map,transactions:new K(H.transactions),selectorAtoms:H.selectorAtoms.overlay(),selectorGraph:H.selectorGraph.overlay(),writableSelectors:new K(H.writableSelectors),valueMap:new K(H.valueMap),defaults:H.defaults,disposalTraces:Q.disposalTraces.copy(),molecules:new K(H.molecules),moleculeGraph:H.moleculeGraph.overlay(),moleculeData:H.moleculeData.overlay(),keyRefsInJoins:H.keyRefsInJoins.overlay(),miscResources:new K(H.miscResources)},Y=QZ(Q,Z.key),G={phase:"building",update:{type:"transaction_outcome",token:Z,id:z,epoch:Y===void 0?NaN:Y+1,timestamp:Date.now(),subEvents:[],params:q,output:void 0},toolkit:{get:(...j)=>I(N,...j),set:(...j)=>{f(N,...j)},reset:(...j)=>{W0(N,...j)},run:(j,W=QQ())=>L0(N,j,W),find:(...j)=>M(Q,...j),json:(j)=>p(N,j),dispose:(...j)=>{n(N,...j)},env:()=>zZ(N)}},N=Object.assign(X,{transactionMeta:G});return H.child=N,Q.logger.info("\uD83D\uDEEB","transaction",Z.key,"building with params:",q),N};function M0(Q,Z){let{key:q}=Z,z=Q.transactions.has(q),H={key:q,type:"transaction",run:(Y,G)=>{let N=HZ(Q,b(H),Y,G);try{let{toolkit:j}=N.transactionMeta,W=Z.do(j,...Y);return qZ(N,W),W}catch(j){throw lQ(N),Q.logger.warn("\uD83D\uDCA5","transaction",q,"caught:",j),j}},install:(Y)=>M0(Y,Z),subject:new E};C(Q).transactions.set(q,H);let X=b(H);if(!z)Q.on.transactionCreation.next(X);return X}var ZQ=class{parent=null;child=null;valueMap=new Map;defaults=new Map;atoms=new Map;writableSelectors=new Map;readonlySelectors=new Map;atomsThatAreDefault=new Set;selectorAtoms=new T({between:["selectorKey","atomKey"],cardinality:"n:n"});selectorGraph=new T({between:["upstreamSelectorKey","downstreamSelectorKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});trackers=new Map;families=new Map;joins=new Map;transactions=new Map;transactionMeta={epoch:new Map,actionContinuities:new T({between:["continuity","action"],cardinality:"1:n"})};timelines=new Map;timelineTopics=new T({between:["timelineKey","topicKey"],cardinality:"1:n"});disposalTraces=new mQ(100);molecules=new Map;moleculeGraph=new T({between:["upstreamMoleculeKey","downstreamMoleculeKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});moleculeData=new T({between:["moleculeKey","stateFamilyKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});keyRefsInJoins=new T({between:["moleculeKey","joinKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});miscResources=new Map;on={atomCreation:new E,atomDisposal:new E,selectorCreation:new E,selectorDisposal:new E,timelineCreation:new E,transactionCreation:new E,transactionApplying:new pQ(null),operationClose:new E,moleculeCreation:new E,moleculeDisposal:new E};operation={open:!1};config={name:"IMPLICIT_STORE",lifespan:"ephemeral",isProduction:globalThis.process?.env?.NODE_ENV==="production"};loggers=[new t0("warn",(Q,Z,q)=>!uQ(q))];logger={error:(...Q)=>{for(let Z of this.loggers)Z.error(...Q)},info:(...Q)=>{for(let Z of this.loggers)Z.info(...Q)},warn:(...Q)=>{for(let Z of this.loggers)Z.warn(...Q)}};constructor(Q,Z=null){if(this.config={...Z?.config,...Q},Z!==null){if(this.operation={...Z?.operation},u(Z))this.transactionMeta={epoch:new Map(Z?.transactionMeta.epoch),actionContinuities:new T(Z?.transactionMeta.actionContinuities.toJSON())};for(let[,z]of Z.families){if(z.internalRoles?.includes("mutable")||z.internalRoles?.includes("join"))continue;z.install(this)}let q=new Set;for(let[,z]of Z.atoms){if(q.has(z.key))continue;if(z.install(this),z.type==="mutable_atom"){let H=p(Z,z),X=j0(z);q.add(H.key),q.add(X.key)}}for(let[,z]of Z.readonlySelectors)z.install(this);for(let[,z]of Z.writableSelectors){if(q.has(z.key))continue;z.install(this)}for(let[,z]of Z.transactions)z.install(this);for(let[,z]of Z.timelines)z.install(this)}}},A={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new ZQ({name:"IMPLICIT_STORE",lifespan:"ephemeral",isProduction:process?.env?.NODE_ENV==="production"}),globalThis.ATOM_IO_IMPLICIT_STORE}};var XZ=class extends Error{constructor(Q,Z){super(`${S[Q.type]} ${h(Q.key)} not found in store "${Z.config.name}".`)}};function B(Q,Z){let q,z=Q;while(z!==null){switch(Z.type){case"atom":case"mutable_atom":q=z.atoms.get(Z.key);break;case"writable_pure_selector":case"writable_held_selector":q=z.writableSelectors.get(Z.key);break;case"readonly_pure_selector":case"readonly_held_selector":q=z.readonlySelectors.get(Z.key);break;case"atom_family":case"mutable_atom_family":case"writable_pure_selector_family":case"readonly_pure_selector_family":case"writable_held_selector_family":case"readonly_held_selector_family":q=z.families.get(Z.key);break;case"timeline":q=z.timelines.get(Z.key);break;case"transaction":q=z.transactions.get(Z.key);break}if(q)return q;z=z.child}throw new XZ(Z,Q)}function hQ(Q,Z,q,z){let H=Q.disposalTraces.buffer.find((X)=>X?.key===h(z));switch(Q.logger.error("\u274C",Z.type,Z.key,"gets a fallback value because key",z,"is not allocated",H?`This key was previously disposed:
14
+ ${_.trace}`:`No previous disposal trace for ${G} was found.`),q}let j=Q.moleculeGraph.getRelationEntries({downstreamMoleculeKey:Y.stringKey}).filter(([,{source:_}])=>_!==H).map(([_])=>R(_));if(z)X.moleculeGraph.delete(H);X.moleculeGraph.set({upstreamMoleculeKey:N.stringKey,downstreamMoleculeKey:Y.stringKey},{source:N.stringKey});let W={type:"molecule_transfer",key:Y.key,exclusive:Boolean(z),from:j,to:[N.key],timestamp:Date.now()};if(F(X)&&X.transactionMeta.phase==="building")X.transactionMeta.update.subEvents.push(W);return q}function nQ(Q,Z,q){switch(q){case"newValue":CQ(Q,Z);break;case"oldValue":n(Q,Z.token);break}}function rQ(Q,Z,q){switch(q){case"newValue":n(Q,Z.token);break;case"oldValue":if(CQ(Q,Z),Z.subType==="atom")Q.valueMap.set(Z.token.key,Z.value);break}}function CQ(Q,Z){let{token:q}=Z;if(Z.subType==="writable"&&Z.value)f(Q,q,Z.value);else I(Q,q)}function sQ(Q,Z,q){switch(q){case"newValue":P0(Q,Z.provenance,Z.key);break;case"oldValue":T0(Q,Z.key);break}}function oQ(Q,Z,q){switch(q){case"newValue":T0(Q,Z.key);break;case"oldValue":P0(Q,Z.provenance.map(R),Z.key);for(let[z,H]of Z.values){let X=Q.families.get(z);if(X){I(Q,X,Z.key);let Y=`${z}(${h(Z.key)})`;Q.valueMap.set(Y,H)}}break}}function tQ(Q,Z,q){switch(q){case"newValue":for(let z of Z.to)O0(Q,z,Z.key,Z.exclusive?"exclusive":void 0);break;case"oldValue":{let z="exclusive";for(let H of Z.from)O0(Q,H,Z.key,z),z=void 0}break}}function EQ(Q,Z,q){let z=q==="newValue"?Z.subEvents:[...Z.subEvents].reverse();for(let H of z)switch(H.type){case"atom_update":iQ(Q,H,q);break;case"state_creation":nQ(Q,H,q);break;case"state_disposal":rQ(Q,H,q);break;case"molecule_creation":sQ(Q,H,q);break;case"molecule_disposal":oQ(Q,H,q);break;case"molecule_transfer":tQ(Q,H,q);break;case"transaction_outcome":EQ(Q,H,q);break}}function u(Q){return"epoch"in Q.transactionMeta}function F(Q){return"phase"in Q.transactionMeta}function BQ(Q,Z){return Q.transactionMeta.actionContinuities.getRelatedKey(Z)}function eQ(Q,Z){return Q.transactionMeta.epoch.get(Z)}function QZ(Q,Z){let q=BQ(Q,Z);if(q===void 0)return;return eQ(Q,q)}function ZZ(Q,Z,q){let z=BQ(Q,Z);if(z!==void 0)Q.transactionMeta.epoch.set(z,q)}function qZ(Q,Z){let q=C(Q),{parent:z}=q;q.transactionMeta.phase="applying",q.transactionMeta.update.output=Z,z.child=null,z.on.transactionApplying.next(q.transactionMeta);let{subEvents:H}=q.transactionMeta.update;if(Q.logger.info("\uD83D\uDEC4","transaction",q.transactionMeta.update.token.key,`applying ${H.length} subEvents:`,H),EQ(z,q.transactionMeta.update,"newValue"),u(z))ZZ(z,q.transactionMeta.update.token.key,q.transactionMeta.update.epoch),B(Q,{key:q.transactionMeta.update.token.key,type:"transaction"})?.subject.next(q.transactionMeta.update),Q.logger.info("\uD83D\uDEEC","transaction",q.transactionMeta.update.token.key,"applied");else if(F(z))z.transactionMeta.update.subEvents.push(q.transactionMeta.update);z.on.transactionApplying.next(null)}function zZ(Q){return{store:Q}}var HZ=(Q,Z,q,z)=>{let H=C(Q),X={parent:H,child:null,on:H.on,loggers:H.loggers,logger:H.logger,config:H.config,atoms:new K(H.atoms),atomsThatAreDefault:new Set(H.atomsThatAreDefault),families:new K(H.families),joins:new K(H.joins),operation:{open:!1},readonlySelectors:new K(H.readonlySelectors),timelines:new K(H.timelines),timelineTopics:H.timelineTopics.overlay(),trackers:new Map,transactions:new K(H.transactions),selectorAtoms:H.selectorAtoms.overlay(),selectorGraph:H.selectorGraph.overlay(),writableSelectors:new K(H.writableSelectors),valueMap:new K(H.valueMap),defaults:H.defaults,disposalTraces:Q.disposalTraces.copy(),molecules:new K(H.molecules),moleculeGraph:H.moleculeGraph.overlay(),moleculeData:H.moleculeData.overlay(),keyRefsInJoins:H.keyRefsInJoins.overlay(),miscResources:new K(H.miscResources)},Y=QZ(Q,Z.key),G={phase:"building",update:{type:"transaction_outcome",token:Z,id:z,epoch:Y===void 0?NaN:Y+1,timestamp:Date.now(),subEvents:[],params:q,output:void 0},toolkit:{get:(...j)=>I(N,...j),set:(...j)=>{f(N,...j)},reset:(...j)=>{W0(N,...j)},run:(j,W=QQ())=>L0(N,j,W),find:(...j)=>M(Q,...j),json:(j)=>p(N,j),dispose:(...j)=>{n(N,...j)},env:()=>zZ(N)}},N=Object.assign(X,{transactionMeta:G});return H.child=N,Q.logger.info("\uD83D\uDEEB","transaction",Z.key,"building with params:",q),N};function M0(Q,Z){let{key:q}=Z,z=Q.transactions.has(q),H={key:q,type:"transaction",run:(Y,G)=>{let N=HZ(Q,b(H),Y,G);try{let{toolkit:j}=N.transactionMeta,W=Z.do(j,...Y);return qZ(N,W),W}catch(j){throw lQ(N),Q.logger.warn("\uD83D\uDCA5","transaction",q,"caught:",j),j}},install:(Y)=>M0(Y,Z),subject:new E};C(Q).transactions.set(q,H);let X=b(H);if(!z)Q.on.transactionCreation.next(X);return X}var ZQ=class{parent=null;child=null;valueMap=new Map;defaults=new Map;atoms=new Map;writableSelectors=new Map;readonlySelectors=new Map;atomsThatAreDefault=new Set;selectorAtoms=new T({between:["selectorKey","atomKey"],cardinality:"n:n"});selectorGraph=new T({between:["upstreamSelectorKey","downstreamSelectorKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});trackers=new Map;families=new Map;joins=new Map;transactions=new Map;transactionMeta={epoch:new Map,actionContinuities:new T({between:["continuity","action"],cardinality:"1:n"})};timelines=new Map;timelineTopics=new T({between:["timelineKey","topicKey"],cardinality:"1:n"});disposalTraces=new mQ(100);molecules=new Map;moleculeGraph=new T({between:["upstreamMoleculeKey","downstreamMoleculeKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});moleculeData=new T({between:["moleculeKey","stateFamilyKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});keyRefsInJoins=new T({between:["moleculeKey","joinKey"],cardinality:"n:n"},{makeContentKey:(...Q)=>Q.sort().join(":")});miscResources=new Map;on={atomCreation:new E,atomDisposal:new E,selectorCreation:new E,selectorDisposal:new E,timelineCreation:new E,transactionCreation:new E,transactionApplying:new pQ(null),operationClose:new E,moleculeCreation:new E,moleculeDisposal:new E};operation={open:!1};config={name:"IMPLICIT_STORE",lifespan:"ephemeral",isProduction:globalThis.process?.env?.NODE_ENV==="production"};loggers=[new t0("warn",(Q,Z,q)=>!uQ(q))];logger={error:(...Q)=>{for(let Z of this.loggers)Z.error(...Q)},info:(...Q)=>{for(let Z of this.loggers)Z.info(...Q)},warn:(...Q)=>{for(let Z of this.loggers)Z.warn(...Q)}};constructor(Q,Z=null){if(this.config={...Z?.config,...Q},Z!==null){if(this.operation={...Z?.operation},u(Z))this.transactionMeta={epoch:new Map(Z?.transactionMeta.epoch),actionContinuities:new T(Z?.transactionMeta.actionContinuities.toJSON())};for(let[,z]of Z.families){if(z.internalRoles?.includes("mutable")||z.internalRoles?.includes("join"))continue;z.install(this)}let q=new Set;for(let[,z]of Z.atoms){if(q.has(z.key))continue;if(z.install(this),z.type==="mutable_atom"){let H=p(Z,z),X=j0(z);q.add(H.key),q.add(X.key)}}for(let[,z]of Z.readonlySelectors)z.install(this);for(let[,z]of Z.writableSelectors){if(q.has(z.key))continue;z.install(this)}for(let[,z]of Z.transactions)z.install(this);for(let[,z]of Z.timelines)z.install(this)}}},A={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new ZQ({name:"IMPLICIT_STORE",lifespan:"ephemeral",isProduction:globalThis.process?.env?.NODE_ENV==="production"}),globalThis.ATOM_IO_IMPLICIT_STORE}};var XZ=class extends Error{constructor(Q,Z){super(`${S[Q.type]} ${h(Q.key)} not found in store "${Z.config.name}".`)}};function B(Q,Z){let q,z=Q;while(z!==null){switch(Z.type){case"atom":case"mutable_atom":q=z.atoms.get(Z.key);break;case"writable_pure_selector":case"writable_held_selector":q=z.writableSelectors.get(Z.key);break;case"readonly_pure_selector":case"readonly_held_selector":q=z.readonlySelectors.get(Z.key);break;case"atom_family":case"mutable_atom_family":case"writable_pure_selector_family":case"readonly_pure_selector_family":case"writable_held_selector_family":case"readonly_held_selector_family":q=z.families.get(Z.key);break;case"timeline":q=z.timelines.get(Z.key);break;case"transaction":q=z.transactions.get(Z.key);break}if(q)return q;z=z.child}throw new XZ(Z,Q)}function hQ(Q,Z,q,z){let H=Q.disposalTraces.buffer.find((X)=>X?.key===h(z));switch(Q.logger.error("\u274C",Z.type,Z.key,"gets a fallback value because key",z,"is not allocated",H?`This key was previously disposed:
15
15
  ${H.trace}`:"(no previous disposal trace found)"),q.type){case"mutable_atom_family":{if(Q.defaults.has(q.key))return Q.defaults.get(q.key);let X=new q.class;return Q.defaults.set(q.key,X),X.READONLY_VIEW}case"atom_family":{if(Q.defaults.has(q.key))return Q.defaults.get(q.key);let X=q.default,Y=X(z);return Q.defaults.set(q.key,Y),Y}case"readonly_pure_selector_family":case"writable_pure_selector_family":case"readonly_held_selector_family":case"writable_held_selector_family":{if(Q.defaults.has(q.key))return Q.defaults.get(q.key);let X=q.default(z);return Q.defaults.set(q.key,X),X}}}function D0(Q,Z){let{type:q,key:z,catch:H}=Z;switch(q){case"readonly_pure_selector":case"writable_pure_selector":{let X;Q.logger.info("\uD83E\uDDEE",q,z,"computing value");try{if(X=Z.getFrom(Q),X instanceof Promise)return X.catch((Y)=>{if(Q.logger.error("\uD83D\uDCA5",q,z,"rejected:",Y),H){for(let G of H)if(Y instanceof G)return Y}throw Y})}catch(Y){if(Q.logger.error("\uD83D\uDCA5",q,z,"rejected:",Y),H){for(let G of H)if(Y instanceof G)return w(Q,Z,Y)}throw Y}return w(Q,Z,X)}case"atom":{let X;if(s(Z.default))try{if(X=Z.default(),X instanceof Promise)X=X.catch((Y)=>{if(Q.logger.error("\uD83D\uDCA5",q,z,"rejected:",Y),H){for(let G of H)if(Y instanceof G)return Y}throw Y})}catch(Y){if(Q.logger.error("\uD83D\uDCA5",q,z,"rejected:",Y),H){for(let G of H)if(Y instanceof G)return X=w(Q,Z,Y),Q.logger.info("\u2728",Z.type,z,"computed default",X),X}throw Y}else X=Z.default,Q.logger.info("\u2728",Z.type,z,"using static default",X);return w(Q,Z,X)}}}function y(Q,Z,q){if(Q.valueMap.has(Z.key))return hZ(Q,Z,q);Q.logger.info("\u2754",Z.type,Z.key,"value not found in cache");let{key:z}=Z;switch(Z.type){case"readonly_held_selector":case"writable_held_selector":return Q.logger.info("\uD83E\uDDEE",Z.type,z,"computing value"),Z.getFrom(Q);case"writable_pure_selector":case"readonly_pure_selector":case"atom":return D0(Q,Z);case"mutable_atom":{let H=new Z.class;return Q.logger.info("\u2728",Z.type,z,"created new instance",H),w(Q,Z,H)}}}function g0(Q,Z){return B(Q,{key:Z.family.key,type:`${Z.type}_family`})}var DQ={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"},o=Symbol("MUST_CREATE"),YZ=Symbol("DO_NOT_CREATE");function t(Q,Z,q,z){let H=h(z),X=Z.molecules.get(H);if(!X&&Z.config.lifespan==="immortal"){let{type:G,key:N}=q;return Z.logger.warn("\uD83D\uDCA3","key",H,"was used to mint a counterfeit token for",G,`"${N}"`),{counterfeit:!0,key:`${N}(${H})`,type:DQ[G],family:{key:N,subKey:H}}}let Y;if(Q===o){if(Z.logger.info("\uD83D\uDC6A",q.type,q.key,"adds member",typeof z==="string"?`\`${z}\``:z),Y=q.create(z),X)Z.moleculeData.set(H,q.key)}else{let{type:G,key:N}=q;return{key:`${N}(${H})`,type:DQ[G],family:{key:N,subKey:H}}}return Y}function b0(Q,...Z){let q,z,H,X,Y;if(Z.length===1){if(Y=Z[0],"family"in Y){let N=g0(Q,Y);if(H=B(Q,N),X=R(Y.family.subKey),q=e(Q,N,X),"counterfeit"in Y)return{token:Y,family:H,subKey:X,isNew:!1};if(!q)z=t(o,Q,N,X),Y=z;else Y=q}}else if(H=B(Q,Z[0]),X=Z[1],q=e(Q,H,X),!q)z=t(o,Q,H,X),Y=z;else Y=q;let G="counterfeit"in Y;if(Boolean(z)&&G===!1&&H){let N;switch(Y.type){case"readonly_pure_selector":case"readonly_held_selector":N="readable";break;case"atom":case"mutable_atom":case"writable_pure_selector":case"writable_held_selector":N="writable";break}let j={type:"state_creation",subType:N,token:Y,timestamp:Date.now()};H.subject.next(j);let W=C(Q);if(Y.family){if(u(W))switch(Y.type){case"atom":case"mutable_atom":Q.on.atomCreation.next(Y);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":Q.on.selectorCreation.next(Y);break}else if(F(W)&&W.on.transactionApplying.state===null)W.transactionMeta.update.subEvents.push(j)}}return{token:Y,family:H,subKey:X,isNew:Boolean(z)}}function I(Q,...Z){let{token:q,family:z,subKey:H}=b0(Q,...Z);if("counterfeit"in q&&z&&H)return hQ(Q,q,z,H);return y(Q,B(Q,q))}function e(Q,Z,q){let z=h(q),H=`${Z.key}(${z})`,X=C(Q),Y;switch(Z.type){case"atom_family":case"mutable_atom_family":Y=X.atoms.get(H);break;case"writable_held_selector_family":case"writable_pure_selector_family":Y=X.writableSelectors.get(H);break;case"readonly_held_selector_family":case"readonly_pure_selector_family":Y=X.readonlySelectors.get(H);break}if(Y)return b(Y);return Y}function M(Q,Z,q){let z=B(Q,Z),H=e(Q,Z,q);if(H)return H;return t(YZ,Q,z,q)}function $0(Q,Z,q){let z=Z.key,H="readonly_pure_selector_family",X={key:z,type:"readonly_pure_selector_family"},Y=Q.families.get(z);if(Y&&Q.config.isProduction===!0)Q.logger.error("\u2757","readonly_pure_selector_family",z,`Overwriting an existing ${S[Y.type]} "${Y.key}" in store "${Q.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let G=new E,j={...X,create:(W)=>{let _=h(W),D={key:z,subKey:_},$=`${z}(${_})`,J=C(Q),V={key:$,get:Z.get(W)};if(Z.catch)V.catch=Z.catch;return p0(J,V,D)},internalRoles:q,subject:G,install:(W)=>$0(W,Z),default:(W)=>{return Z.get(W)({get:(..._)=>I(Q,..._),find:(..._)=>M(Q,..._),json:(_)=>p(Q,_)})}};return Q.families.set(z,j),X}function G0(Q,Z,q){let z={key:Z.key,type:"atom_family"},H=Q.families.get(Z.key);if(H&&Q.config.isProduction===!0)Q.logger.error("\u2757","atom_family",Z.key,`Overwriting an existing ${S[H.type]} "${H.key}" in store "${Q.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let X=new E,G={...z,create:(N)=>{let j=h(N),W={key:Z.key,subKey:j},_=`${Z.key}(${j})`,D=C(Q),$=Z.default,J={key:_,default:s($)?()=>$(N):$};if(Z.effects)J.effects=Z.effects(N);if(Z.catch)J.catch=Z.catch;return N0(D,J,W)},default:Z.default,subject:X,install:(N)=>G0(N,Z),internalRoles:q};if(Q.families.set(Z.key,G),s(Z.default)===!1)Q.defaults.set(Z.key,Z.default);return z}function LQ(Q,Z,q){let z=Z.key,H="readonly_held_selector_family",X={key:z,type:"readonly_held_selector_family"},Y=Q.families.get(z);if(Y&&Q.config.isProduction===!0)Q.logger.error("\u2757","readonly_held_selector_family",z,`Overwriting an existing ${S[Y.type]} "${Y.key}" in store "${Q.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let G=new E,j={...X,create:(W)=>{let _=h(W),D={key:z,subKey:_},$=`${z}(${_})`;return y0(C(Q),{key:$,const:Z.const(W),get:Z.get(W)},D)},internalRoles:q,subject:G,install:(W)=>LQ(W,Z),default:Z.const};return Q.families.set(z,j),X}function PQ(Q,Z,q){let z=Z.key,H="writable_held_selector_family",X={key:z,type:"writable_held_selector_family"},Y=Q.families.get(z);if(Y&&Q.config.isProduction===!0)Q.logger.error("\u2757","writable_held_selector_family",z,`Overwriting an existing ${S[Y.type]} "${Y.key}" in store "${Q.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let G=new E,j={...X,create:(W)=>{let _=h(W),D={key:z,subKey:_},$=`${z}(${_})`;return m0(C(Q),{key:$,const:Z.const(W),get:Z.get(W),set:Z.set(W)},D)},internalRoles:q,subject:G,install:(W)=>PQ(W,Z),default:Z.const};return Q.families.set(z,j),X}function d0(Q,Z,q){let z=Z.key,H="writable_pure_selector_family",X={key:z,type:"writable_pure_selector_family"},Y=Q.families.get(z);if(Y&&Q.config.isProduction===!0)Q.logger.error("\u2757","writable_pure_selector_family",z,`Overwriting an existing ${S[Y.type]} "${Y.key}" in store "${Q.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let G=new E,j={...X,create:(W)=>{let _=h(W),D={key:z,subKey:_},$=`${z}(${_})`,J=C(Q),V={key:$,get:Z.get(W),set:Z.set(W)};if(Z.catch)V.catch=Z.catch;return c0(J,V,D)},internalRoles:q,subject:G,install:(W)=>d0(W,Z),default:(W)=>{return Z.get(W)({get:(..._)=>I(Q,..._),find:(..._)=>M(Q,..._),json:(_)=>p(Q,_)})}};return Q.families.set(z,j),X}function qQ(Q,Z){let q="set"in Z,z="const"in Z;if(z&&q)return PQ(Q,Z,void 0);if(z)return LQ(Q,Z,void 0);if(q)return d0(Q,Z);return $0(Q,Z)}function n(Q,...Z){let q;if(Z.length===1)q=Z[0];else{let z=Z[0],H=Z[1];q=M(Q,z,H)}try{B(Q,q)}catch(z){Q.logger.error("\u274C",q.type,q.key,`could not be disposed because it was not found in the store "${Q.config.name}".`);return}switch(q.type){case"atom":case"mutable_atom":wQ(Q,q);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":JZ(Q,q);break}}function OQ(Q,Z){if(Q.operation.open){let q=performance.now();return Q.logger.info("\uD83D\uDEAB",Z.type,Z.key,`deferring setState at T-${q} until setState for "${Q.operation.token.key}" is done`),q}return Q.operation={open:!0,done:new Set,prev:new Map,timestamp:Date.now(),token:Z,subEvents:[]},Q.logger.info("\u2B55",Z.type,Z.key,`operation start in store "${Q.config.name}"${F(Q)?` ${Q.transactionMeta.phase} "${Q.transactionMeta.update.token.key}"`:""}`),Q}function MQ(Q){if(Q.operation.open)Q.logger.info("\uD83D\uDD34",Q.operation.token.type,Q.operation.token.key,`operation done in store "${Q.config.name}"`);Q.operation={open:!1},Q.on.operationClose.next(Q.operation)}var RQ=(Q,Z)=>{if(!Q.operation.open)return Q.logger.error("\uD83D\uDC1E","unknown",Z,"isDone called outside of an operation. This is probably a bug in AtomIO."),!0;return Q.operation.done.has(Z)},V0=(Q,Z)=>{if(!Q.operation.open){Q.logger.error("\uD83D\uDC1E","unknown",Z,"markDone called outside of an operation. This is probably a bug in AtomIO.");return}Q.operation.done.add(Z)};function f0(Q,Z,{oldValue:q,newValue:z},H,X){let Y=b(Z);if(H&&X){Z.subject.next({newValue:z});let _={checkpoint:!0,type:"state_creation",subType:"writable",token:Y,timestamp:Date.now(),value:z};Q.operation.subEvents.push(_),X.subject.next(_);let D=C(Q);if(Y.family){if(u(D))switch(Y.type){case"atom":case"mutable_atom":Q.on.atomCreation.next(Y);break;case"writable_pure_selector":case"writable_held_selector":Q.on.selectorCreation.next(Y);break}else if(F(D)&&D.on.transactionApplying.state===null)D.transactionMeta.update.subEvents.push(_)}return}let{key:G,subject:N,type:j}=Z,W={oldValue:w0(q)?q.READONLY_VIEW:q,newValue:w0(z)?z.READONLY_VIEW:z};if(u(Q)){switch(j){case"mutable_atom":Q.logger.info("\uD83D\uDCE2",j,G,"is now (",z,") subscribers:",N.subscribers.keys());break;case"atom":case"writable_pure_selector":case"writable_held_selector":Q.logger.info("\uD83D\uDCE2",j,G,"went (",q,"->",z,") subscribers:",N.subscribers.keys())}N.next(W)}if(F(Q)&&(j==="mutable_atom"||j==="atom")){if(Q.on.transactionApplying.state===null){if(w0(z))return;let{timestamp:_}=Q.operation,D={type:"atom_update",token:Y,timestamp:_,update:W};Q.transactionMeta.update.subEvents.push(D),Q.logger.info("\uD83D\uDCC1","atom",G,"stowed (",q,"->",z,")");return}if(i0(Z,"tracker:signal")){let _=G.slice(1),D=Q.atoms.get(_);if(y(Q,D,"mut").do(W.newValue)===null===!0)l0(Q,D)}}}var K0=(Q,Z,q)=>{let z=y(Q,Z,"mut"),H=A0(q,z);return Q.logger.info("\u2B50","atom",Z.key,"setting value",H),H=w(Q,Z,H),V0(Q,Z.key),l0(Q,Z),{oldValue:z,newValue:H}};function x0(Q,Z){switch(Z.type){case"mutable_atom":return K0(Q,Z,new Z.class);case"atom":{let q;if(s(Z.default))q=D0(Q,Z);else q=Z.default;return K0(Q,Z,q)}}}function GZ(Q,Z){let q;switch(Z.type){case"atom":case"mutable_atom":q=x0(Q,Z);break;case"writable_held_selector":{let z=Q0(Q,Z.key);for(let X of z.values())f0(Q,Z,x0(Q,X),!1);let H=Z.getFrom(Q);q={oldValue:H,newValue:H}}break;case"writable_pure_selector":{let z=D0(Q,Z),H=Q0(Q,Z.key);for(let X of H.values())f0(Q,Z,x0(Q,X),!1);q={oldValue:z,newValue:D0(Q,Z)}}break}return q}function f(Q,...Z){l(J0,Q,...Z)}var S0=Symbol("RESET");function W0(Q,...Z){f(Q,...[...Z,S0])}function WZ(Q,Z,q){let z,H,X,{type:Y,key:G}=Z;switch(Z.type){case"writable_pure_selector":z=y(Q,Z,"mut"),H=A0(q,z),H=w(Q,Z,H);break;case"writable_held_selector":X=Z.const,A0(q,X),z=X,H=X}return Q.logger.info("\u2B50",Y,G,"setting to",H),V0(Q,G),Z.setSelf(H),{oldValue:z,newValue:H}}var _Z=(Q,Z,q)=>{let z;switch(Z.type){case"atom":case"mutable_atom":z=K0(Q,Z,q);break;case"writable_pure_selector":case"writable_held_selector":z=WZ(Q,Z,q);break}return z},J0=Symbol("OWN_OP"),k0=Symbol("JOIN_OP");function l(Q,Z,...q){let z,H,X,Y,G,N;if(q.length===2){if(X=q[0],N=q[1],"family"in X)if(Y=g0(Z,X),G=R(X.family.subKey),z=e(Z,Y,G),!z)X=H=t(o,Z,Y,G);else X=z}else if(Y=B(Z,q[0]),G=q[1],N=q[2],z=e(Z,Y,G),!z)X=H=t(o,Z,Y,G);else X=z;let j=N===S0?"reset":"set",W;if(Q===J0){let $=OQ(Z,X);if(typeof $==="number"){let J=$,V=Z.on.operationClose.subscribe(`waiting to ${j} "${X.key}" at T-${J}`,function(){V(),Z.logger.info("\uD83D\uDFE2",X.type,X.key,"resuming deferred",j,`from T-${J}`),l(Q,Z,X,N)});return}W=$}else W=Z;if("counterfeit"in X&&"family"in X){let $=X.family.subKey,J=Z.disposalTraces.buffer.find((V)=>V?.key===$);Z.logger.error("\u274C",X.type,X.key,"could not be",j,"because key",$,"is not allocated.",J?`this key was previously disposed:${J.trace}`:"(no previous disposal trace found)");return}let _=B(W,X),D;if(N===S0)D=GZ(W,_);else D=_Z(W,_,N);if(f0(W,_,D,Boolean(H),Y),Q===J0)MQ(W)}var FQ=(Q,Z)=>C(Q).atoms.has(Z),NZ=(Q,Z)=>C(Q).writableSelectors.has(Z),jZ=(Q,Z)=>C(Q).readonlySelectors.has(Z),DZ=(Q,Z)=>FQ(Q,Z)||NZ(Q,Z)||jZ(Q,Z);function $Q(Q,Z){return C(Q).selectorGraph.getRelationEntries({downstreamSelectorKey:Z}).filter(([q,{source:z}])=>z!==Z).map(([q,{source:z}])=>z).filter((q)=>DZ(Q,q))}function Q0(Q,Z,q=new Set){let z=$Q(Q,Z),H=new Map;while(z.length>0){let X=z.pop();if(q.has(X))continue;if(q.add(X),FQ(Q,X)){let Y=Q.atoms.get(X);H.set(Y.key,Y)}else z.push(...$Q(Q,X))}return H}function $Z(Q,Z,q,z,H){let X=C(Q),{type:Y,key:G}=z;if(Y==="atom"||Y==="mutable_atom")X.selectorAtoms.set({selectorKey:q,atomKey:G}),Q.logger.info("\uD83D\uDD0D",Z,q,`discovers root atom "${G}"`);else{let N=Q0(Q,G,H);Q.logger.info("\uD83D\uDD0D",Z,q,`discovers root atoms: [ ${[...N.values()].map((j)=>`"${j.key}"`).join(", ")} ]`);for(let{key:j}of N.values())X.selectorAtoms=X.selectorAtoms.set({selectorKey:q,atomKey:j})}H.add(G)}function C0(Q,Z,q,z){return{get:(...H)=>{let X=C(Q),{token:Y,family:G,subKey:N}=b0(Q,...H),j;if("counterfeit"in Y&&G&&N)j=hQ(Q,Y,G,N);else j=y(Q,B(Q,Y));return Q.logger.info("\uD83D\uDD0C",Z,q,`registers dependency ( "${Y.key}" =`,j,")"),X.selectorGraph.set({upstreamSelectorKey:Y.key,downstreamSelectorKey:q},{source:Y.key}),$Z(Q,Z,q,Y,z),j},set:(...H)=>{l(k0,C(Q),...H)},find:(...H)=>M(Q,...H),json:(H)=>p(Q,H)}}function y0(Q,Z,q){let z=C(Q),H=new E,X=new Set,{key:Y,const:G}=Z,N="readonly_held_selector";Q.logger.info("\uD83D\uDD28","readonly_held_selector",Y,"is being created");let{get:j,find:W,json:_}=C0(z,"readonly_held_selector",Y,X),$={...Z,type:"readonly_held_selector",subject:H,getFrom:(V)=>{let P=V.selectorGraph.getRelationEntries({downstreamSelectorKey:Y});for(let[O,{source:L}]of P)if(L!==Y)V.selectorGraph.delete(O,Y);return V.selectorAtoms.delete(Y),Z.get({get:j,find:W,json:_},G),w(V,$,G),Q.logger.info("\u2728","readonly_held_selector",Y,"=",G),X.clear(),G},install:(V)=>y0(V,Z,q)};if(q)$.family=q;z.readonlySelectors.set(Y,$);let J={key:Y,type:"readonly_held_selector"};if(q)J.family=q;return J}function p0(Q,Z,q){let z=C(Q),H=new E,X=new Set,Y=Z.key,G="readonly_pure_selector";Q.logger.info("\uD83D\uDD28","readonly_pure_selector",Y,"is being created");let{get:N,find:j,json:W}=C0(z,"readonly_pure_selector",Y,X),D={...Z,type:"readonly_pure_selector",subject:H,getFrom:()=>{let J=C(Q),V=J.selectorGraph.getRelationEntries({downstreamSelectorKey:Y});for(let[O,{source:L}]of V)if(L!==Y)J.selectorGraph.delete(O,Y);J.selectorAtoms.delete(Y);let P=w(J,D,Z.get({get:N,find:j,json:W}));return Q.logger.info("\u2728","readonly_pure_selector",Y,"=",P),X.clear(),P},install:(J)=>p0(J,Z,q)};if(q)D.family=q;z.readonlySelectors.set(Y,D);let $={key:Y,type:"readonly_pure_selector"};if(q)$.family=q;return $}function m0(Q,Z,q){let z=C(Q),H=new E,X=new Set,{key:Y,const:G}=Z,N="writable_held_selector";Q.logger.info("\uD83D\uDD28","writable_held_selector",Y,"is being created");let j=C0(z,"writable_held_selector",Y,X),{find:W,get:_,json:D}=j,$={find:W,get:_,json:D},P={...Z,type:"writable_held_selector",subject:H,getFrom:(L)=>{let U=L.selectorGraph.getRelationEntries({downstreamSelectorKey:Y});for(let[d,{source:k}]of U)if(k!==Y)L.selectorGraph.delete(d,Y);return L.selectorAtoms.delete(Y),Z.get($,G),w(L,P,G),Q.logger.info("\u2728","writable_held_selector",Y,"=",G),X.clear(),G},setSelf:()=>{Z.set(j,G)},install:(L)=>m0(L,Z,q)};if(q)P.family=q;z.writableSelectors.set(Y,P);let O={key:Y,type:"writable_held_selector"};if(q)O.family=q;return O}function c0(Q,Z,q){let z=C(Q),H=new E,X=new Set,Y=Z.key,G="writable_pure_selector";Q.logger.info("\uD83D\uDD28","writable_pure_selector",Y,"is being created");let N=C0(z,"writable_pure_selector",Y,X),{find:j,get:W,json:_}=N,D={find:j,get:W,json:_},V={...Z,type:"writable_pure_selector",subject:H,getFrom:(O)=>{let L=O.selectorGraph.getRelationEntries({downstreamSelectorKey:Y});for(let[d,{source:k}]of L)if(k!==Y)O.selectorGraph.delete(d,Y);O.selectorAtoms.delete(Y);let U=w(O,V,Z.get(D));return Q.logger.info("\u2728","writable_pure_selector",Y,"=",U),X.clear(),U},setSelf:(O)=>{Z.set(N,O)},install:(O)=>c0(O,Z,q)};if(q)V.family=q;z.writableSelectors.set(Y,V);let P={key:Y,type:"writable_pure_selector"};if(q)P.family=q;return P}function zQ(Q,Z){let q="set"in Z,z="const"in Z;if(z&&q){let X=m0(Q,Z,void 0);return Q.on.selectorCreation.next(X),X}if(z){let X=y0(Q,Z,void 0);return Q.on.selectorCreation.next(X),X}if(q){let X=c0(Q,Z,void 0);return Q.on.selectorCreation.next(X),X}let H=p0(Q,Z,void 0);return Q.on.selectorCreation.next(H),H}function JZ(Q,Z){let q=C(Q),{key:z,type:H,family:X}=Z;if(!X)Q.logger.error("\u274C",H,z,"Standalone selectors cannot be disposed.");else{if(q.molecules.get(X.subKey))q.moleculeData.delete(X.subKey,X.key);let Y;switch(Z.type){case"writable_held_selector":q.writableSelectors.delete(z),Y={key:X.key,type:"writable_held_selector_family"},B(Q,Y).subject.next({type:"state_disposal",subType:"selector",token:Z,timestamp:Date.now()});break;case"writable_pure_selector":q.writableSelectors.delete(z),Y={key:X.key,type:"writable_pure_selector_family"},B(Q,Y).subject.next({type:"state_disposal",subType:"selector",token:Z,timestamp:Date.now()});break;case"readonly_held_selector":q.readonlySelectors.delete(z),Y={key:X.key,type:"readonly_held_selector_family"},B(Q,Y).subject.next({type:"state_disposal",subType:"selector",token:Z,timestamp:Date.now()});break;case"readonly_pure_selector":q.readonlySelectors.delete(z),Y={key:X.key,type:"readonly_pure_selector_family"},B(Q,Y).subject.next({type:"state_disposal",subType:"selector",token:Z,timestamp:Date.now()});break}if(q.valueMap.delete(z),q.selectorAtoms.delete(z),q.selectorGraph.delete(z),q.moleculeData.delete(X.key,X.subKey),Q.logger.info("\uD83D\uDD25",Z.type,z,"deleted"),F(q)&&q.transactionMeta.phase==="building")q.transactionMeta.update.subEvents.push({type:"state_disposal",subType:"selector",token:Z,timestamp:Date.now()});else Q.on.selectorDisposal.next(Z)}}var VZ=(Q,Z)=>{let q=C(Q);if(q.operation.open)return q.operation.prev.get(Z.key);return q.valueMap.get(Z.key)},JQ=(Q,Z,q)=>{return q.subject.subscribe(`${Z.type}:${Z.key}`,(z)=>{Q.logger.info("\uD83D\uDCE2",Z.type,Z.key,"root",q.key,"went",z.oldValue,"->",z.newValue);let H=VZ(Q,Z),X=y(Q,Z);Q.logger.info("\u2728",Z.type,Z.key,"went",H,"->",X),Z.subject.next({newValue:X,oldValue:H})})};function Z0(Q,Z,q,z){function H(_){if(Q.operation.open){if(X?.type==="atom"&&i0(X,"tracker:signal")&&"*"+Q.operation.token.key===Z.key&&"inboundTracker"in z)return;let D=Q.on.operationClose.subscribe(`state subscription ${q}`,()=>{D(),z(_)})}else z(_)}b0(Q,Z);let X=B(Q,Z);Q.logger.info("\uD83D\uDC40",X.type,X.key,`Adding subscription "${q}"`);let Y=X.type==="writable_pure_selector"||X.type==="readonly_pure_selector",G=new Map,N=H;if(Y){y(Q,X);for(let[_,D]of Q0(Q,X.key))G.set(_,JQ(Q,X,D));N=function(D){let $=Q0(Q,X.key);for(let[J,V]of G)if($.get(J))$.delete(J);else V(),G.delete(J);for(let[J,V]of $)G.set(J,JQ(Q,X,V));H(D)}}let j=X.subject.subscribe(q,N);return()=>{Q.logger.info("\uD83D\uDE48",X.type,X.key,`Removing subscription "${q}"`),j();for(let _ of G.values())_()}}var CZ=(Q,Z,q,z)=>{let H=B(Q,Z);Q.logger.info("\uD83D\uDC40","timeline",Z.key,`Adding subscription "${q}"`);let X=H.subject.subscribe(q,z);return()=>{Q.logger.info("\uD83D\uDE48","timeline",Z.key,`Removing subscription "${q}" from timeline`),X()}};var u0=class{initializeSignalAtom(Q,Z){let q=`*${Q.key}`;Z.atoms.delete(q),Z.valueMap.delete(q);let z=Q.family?{key:`*${Q.family.key}`,subKey:Q.family.subKey}:void 0,H=N0(Z,{key:q,default:null},z,["tracker:signal"]);if(Z.parent?.valueMap.has(q)){let X=Z.parent.valueMap.get(q);Z.valueMap.set(q,X)}return H}unsubscribeFromInnerValue;unsubscribeFromState;captureSignalsFromCore(Q,Z,q){let z=Q.key,H=`tracker-from-core:${q.config.name}:${F(q)?q.transactionMeta.update.token.key:"main"}:${z}`,X=(Y)=>{l(k0,q,Z,Y)};this.unsubscribeFromInnerValue=I(q,Q).subscribe(H,X),this.unsubscribeFromState=Z0(q,Q,H,function(G){if(G.newValue!==G.oldValue)this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=G.newValue.subscribe(H,X)}.bind(this))}supplySignalsToCore(Q,Z,q){let z=Q.key,H=`tracker-to-core:${q.config.name}:${F(q)?q.transactionMeta.update.token.key:"main"}:${z}`;Z0(q,Z,H,Object.assign(function({newValue:Y,oldValue:G}){let N=q.timelineTopics.getRelatedKey(Z.key);if(N&&q.timelines.get(N)?.timeTraveling){let j=CZ(q,{key:N,type:"timeline"},H,function(_){j(),f(q,Q,(D)=>{if(_==="redo"&&Y)D.do(Y);else if(_==="undo"&&G)D.undo(G);return D})});return}f(q,Q,(j)=>(j.do(Y),j))},{inboundTracker:!0}))}mutableAtomToken;latestSignalToken;[Symbol.dispose];constructor(Q,Z){let q=C(Z),z=this.initializeSignalAtom(Q,q);this.mutableAtomToken=Q,this.latestSignalToken=z,this.captureSignalsFromCore(Q,z,q),this.supplySignalsToCore(Q,z,q),q.trackers.set(Q.key,this),this[Symbol.dispose]=()=>{this.unsubscribeFromInnerValue(),this.unsubscribeFromState(),q.trackers.delete(Q.key)}}};function _0(Q,Z,q){Q.logger.info("\uD83D\uDD28","atom",Z.key,`creating in store "${Q.config.name}"`);let z=C(Q),{key:H}=Z,X=z.atoms.get(H),Y="mutable_atom";if(X?.type===Y&&Q.config.isProduction===!0)return Q.logger.error("\u274C",Y,H,"Tried to create atom, but it already exists in the store."),b(X);let G=new E,N={...Z,type:Y,install:(W)=>{return W.logger.info("\uD83D\uDEE0\uFE0F","atom",H,`installing in store "${W.config.name}"`),_0(W,Z,q)},subject:G};if(q)N.family=q;z.atoms.set(N.key,N);let j=b(N);if(new u0(j,Q),!q)zQ(Q,{key:`${H}:JSON`,get:({get:W})=>W(j).toJSON(),set:({set:W},_)=>{W(j,Z.class.fromJSON(_))}});if(Z.effects){let W=0,_=[];for(let D of Z.effects){let $=D({resetSelf:()=>{W0(Q,j)},setSelf:(J)=>{f(Q,j,J)},onSet:(J)=>Z0(Q,j,`effect[${W}]`,J),token:j,store:v0(Q)});if($)_.push($);++W}N.cleanup=()=>{for(let D of _)D()}}return Q.on.atomCreation.next(j),j}var EZ=class{trackers=new Map;latestSignalAtoms;mutableAtoms;constructor(Q,Z){this.latestSignalAtoms=B(Z,G0(Z,{key:`*${Q.key}`,default:null},["mutable","updates"])),this.mutableAtoms=Q;let q=(z)=>{let{type:H,token:X}=z;if(X.family){let Y=R(X.family.subKey);switch(H){case"state_creation":this.trackers.set(Y,new u0(X,Z));break;case"state_disposal":{let G=this.trackers.get(Y);if(G)G[Symbol.dispose](),this.trackers.delete(Y)}}}};this.mutableAtoms.subject.subscribe(`store=${Z.config.name}::tracker-atom-family`,q)}};function R0(Q,Z,q){let z={key:Z.key,type:"mutable_atom_family"},H=Q.families.get(Z.key);if(H&&Q.config.isProduction===!0)Q.logger.error("\u2757","mutable_atom_family",Z.key,`Overwriting an existing ${S[H.type]} "${H.key}" in store "${Q.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let X=new E,G={...z,create:(N)=>{let j=h(N),W={key:Z.key,subKey:j},_=`${Z.key}(${j})`,D=C(Q),$={key:_,class:Z.class};if(Z.effects)$.effects=Z.effects(N);return _0(D,$,W)},class:Z.class,subject:X,install:(N)=>R0(N,Z),internalRoles:q};return Q.families.set(Z.key,G),d0(Q,{key:`${Z.key}:JSON`,get:(N)=>({get:j})=>j(z,N).toJSON(),set:(N)=>({set:j},W)=>{j(z,N,Z.class.fromJSON(W))}},["mutable","json"]),new EZ(G,Q),z}var BZ=(Q,Z)=>{let q=C(Z),z=`${Q.key}:JSON`;return q.families.get(z)},p=(Q,Z)=>{if(Z.family)return M(Q,B(C(Q),{key:`${Z.family.key}:JSON`,type:"writable_pure_selector_family"}),R(Z.family.subKey));return{type:"writable_pure_selector",key:`${Z.key}:JSON`}};var j0=(Q)=>{let Z={type:"atom",key:`*${Q.key}`};if(Q.family)Z.family={key:`*${Q.family.key}`,subKey:Q.family.subKey};return Z};function w0(Q){return typeof Q==="object"&&Q!==null&&"do"in Q&&"undo"in Q&&"subscribe"in Q&&"READONLY_VIEW"in Q&&"toJSON"in Q}function w(Q,Z,q){let{key:z,subject:H,type:X}=Z,Y=Q.valueMap.get(z);if(Y instanceof I0&&!Y.done){let G=Y;if(q instanceof Promise)return G.use(q),G;return Q.valueMap.set(z,q),q}if(q instanceof Promise){let G=new I0(q);return Q.valueMap.set(z,G),G.then(function(j){if(Q.valueMap.get(z)===G){switch(OQ(Q,Z),w(Q,Z,j),X){case"atom":l0(Q,Z);break;case"readonly_pure_selector":case"writable_pure_selector":xQ(Q,z);break}MQ(Q),H.next({newValue:j,oldValue:G})}}).catch((N)=>{Q.logger.error("\uD83D\uDCA5",Z.type,z,"rejected:",N)}),G}return Q.logger.info("\uD83D\uDCDD",Z.type,Z.key,"writing to cache",q),Q.valueMap.set(z,q),q}function hZ(Q,Z,q){Q.logger.info("\uD83D\uDCD6",Z.type,Z.key,"reading cached value");let z=Q.valueMap.get(Z.key);if(q==="mut"&&Z.type==="mutable_atom"&&F(Q)){let H=Z,{parent:X}=Q;if(Q.valueMap.hasOwn(H.key))return z;let Y=X.valueMap.get(H.key);Q.logger.info("\uD83D\uDCC3","atom",H.key,"copying");let G=Y.toJSON(),N=H.class.fromJSON(G);Q.valueMap.set(H.key,N),new u0(H,X),z=N}return z}function UQ(Q,Z){let q=Q.valueMap.get(Z);if(q instanceof I0){let z=Q.writableSelectors.get(Z)??Q.readonlySelectors.get(Z);if(z)z.getFrom(Q);return}if(Q.operation.open)Q.operation.prev.set(Z,q);Q.valueMap.delete(Z),Q.logger.info("\uD83D\uDDD1","state",Z,"evicted")}function l0(Q,Z){let q=C(Q),{key:z,type:H}=Z,X=q.selectorAtoms.getRelatedKeys(z);if(q.logger.info("\uD83E\uDDF9",H,z,X?`evicting ${X.size} states downstream:`:"no downstream states",X??"to evict"),X){if(q.operation.open)q.logger.info("\uD83E\uDDF9",H,z,`[ ${[...q.operation.done].join(", ")} ] already done`);for(let Y of X){if(RQ(q,Y))continue;UQ(q,Y),V0(q,Y)}}}function xQ(Q,Z){let q=C(Q),z=q.selectorGraph.getRelationEntries({upstreamSelectorKey:Z}).filter(([H,{source:X}])=>X===Z);for(let[H]of z){if(RQ(q,H))continue;UQ(q,H),V0(q,H),xQ(Q,H)}}function N0(Q,Z,q,z){let{key:X}=Z;Q.logger.info("\uD83D\uDD28","atom",X,"is being created");let Y=C(Q),G=Y.atoms.get(X);if(G?.type==="atom"&&Q.config.isProduction===!0)return Q.logger.error("\u274C","atom",X,"Tried to create atom, but it already exists in the store."),b(G);let N=new E,j={...Z,type:"atom",install:(_)=>{return _.logger.info("\uD83D\uDEE0\uFE0F","atom",X,`installing in store "${_.config.name}"`),N0(_,Z,q)},subject:N};if(q)j.family=q;if(z)j.internalRoles=z;Y.atoms.set(X,j);let W=b(j);if(Z.effects){let _=0,D=[];for(let $ of Z.effects){let J=$({resetSelf:()=>{W0(Q,W)},setSelf:(V)=>{f(Q,W,V)},onSet:(V)=>Z0(Q,W,`effect[${_}]`,V),token:W,store:v0(Q)});if(J)D.push(J);++_}j.cleanup=()=>{for(let $ of D)$()}}return Q.on.atomCreation.next(W),W}function i0(Q,Z){if("internalRoles"in Q===!1)return!1;return Q.internalRoles.includes(Z)}function wQ(Q,Z){let q=C(Q),{key:z,family:H}=Z,X=B(q,Z);if(!H)Q.logger.error("\u274C","atom",z,"Standalone atoms cannot be disposed.");else{X.cleanup?.();let Y=Q.valueMap.get(X.key),G=B(Q,g0(Q,Z)).subject,N={type:"state_disposal",subType:"atom",token:Z,value:Y,timestamp:Date.now()};G.next(N);let j=F(q);if(q.atoms.delete(z),q.valueMap.delete(z),q.selectorAtoms.delete(z),q.atomsThatAreDefault.delete(z),q.moleculeData.delete(H.key,H.subKey),Q.timelineTopics.delete(z),Z.type==="mutable_atom")wQ(Q,j0(Z)),Q.trackers.delete(z);if(Q.logger.info("\uD83D\uDD25","atom",z,"deleted"),j&&q.transactionMeta.phase==="building"){let W=q.transactionMeta.update.subEvents.at(-1),_=W?.type==="molecule_disposal"&&W.values.some(([$])=>$===X.family?.key),D=i0(X,"tracker:signal");if(!_&&!D)q.transactionMeta.update.subEvents.push(N)}else Q.on.atomDisposal.next(Z)}}function x(Q){return Q[0].toUpperCase()+Q.slice(1)}var AQ=class{toolkit;options;relations;states;relatedKeysAtoms;transact(Q,Z){let q=this.toolkit;this.toolkit=Q,Z(this),this.toolkit=q}store;[Symbol.dispose](){}constructor(Q,Z=A.STORE){this.store=Z,this.options=Q,this.store.miscResources.set(`join:${Q.key}`,this),this.toolkit={get:(...W)=>I(Z,...W),set:(...W)=>{f(Z,...W)},find:(...W)=>M(Z,...W),json:(W)=>p(Z,W)};let q=Q.between[0],z=Q.between[1],H=R0(Z,{key:`${Q.key}/relatedKeys`,class:v},["join","relations"]);this.relatedKeysAtoms=H;let X=(W,_,D)=>{let{find:$,get:J,set:V}=W,P=$(H,_),O=J(P);for(let L of O){if(D.includes(L))continue;V(H,L,(U)=>{return U.delete(_),U})}V(P,(L)=>{L.clear();for(let U of D){let d=$(H,U),k=J(d),r0=k.has(_);if(this.relations.cardinality==="1:n"){let i=[];for(let g of k){if(g===_)continue;let s0;if(l(k0,this.store,H,g,(E0)=>{return E0.delete(U),s0=E0.size,E0}),s0===0)i.push(g)}if(!r0&&k.size>0)V(d,(g)=>{return g.clear(),g});for(let g of i)Z.keyRefsInJoins.delete(a(U,g))}if(!r0)V(d,(i)=>{return i.add(_),i});L.add(U)}return L})},Y=(W,_,D)=>{let{set:$}=W;$(H,_,(J)=>{for(let V of D)J.add(V);return J});for(let J of D)$(H,J,(V)=>{return V.add(_),V});return!0},G=new T(Q,{externalStore:{getRelatedKeys:(W)=>this.toolkit.get(H,W),addRelation:(W,_)=>{this.store.keyRefsInJoins.set(`"${W}"`,Q.key),this.store.keyRefsInJoins.set(`"${_}"`,Q.key),this.store.keyRefsInJoins.set(a(W,_),Q.key),this.toolkit.set(H,W,(D)=>D.add(_)),this.toolkit.set(H,_,(D)=>D.add(W))},deleteRelation:(W,_)=>{this.toolkit.set(H,W,($)=>{return $.delete(_),$}),this.toolkit.set(H,_,($)=>{return $.delete(W),$});let D=a(W,_);this.store.keyRefsInJoins.delete(D)},replaceRelationsSafely:(W,_)=>{X(this.toolkit,W,_)},replaceRelationsUnsafely:(W,_)=>{Y(this.toolkit,W,_)},has:(W,_)=>{let D=this.toolkit.get(H,W);return _?D.has(_):D.size>0}},isAType:Q.isAType,isBType:Q.isBType}),N=()=>$0(Z,{key:`${Q.key}/singleRelatedKey`,get:(W)=>({get:_})=>{let D=_(H,W);for(let $ of D)return $;return null}},["join","keys"]),j=()=>{return $0(Z,{key:`${Q.key}/multipleRelatedKeys`,get:(W)=>({get:_})=>{return _(BZ(H,Z),W)}},["join","keys"])};switch(Q.cardinality){case"1:1":{let W=N(),_=`${q}KeyOf${x(z)}`,D=`${z}KeyOf${x(q)}`;this.relations=G,this.states={[_]:W,[D]:W};break}case"1:n":{let W=N(),_=j(),D=`${q}KeyOf${x(z)}`,$=`${z}KeysOf${x(q)}`,J={[D]:W,[$]:_};this.relations=G,this.states=J;break}case"n:n":{let W=j(),_=`${q}KeysOf${x(z)}`,D=`${z}KeysOf${x(q)}`;this.relations=G,this.states={[_]:W,[D]:W}}}}};function HQ(Q,Z){return Q.joins.set(Z.key,new AQ(Z)),{key:Z.key,type:"join",a:Z.between[0],b:Z.between[1],cardinality:Z.cardinality}}function a0(Q,Z){let q=Z.joins.get(Q.key);if(q===void 0){let z=A.STORE.joins.get(Q.key);if(z===void 0)throw Error(`Join "${Q.key}" not found in store "${Z.config.name}"`);let H=v0(Z);q=new AQ(z.options,H),Z.joins.set(Q.key,q)}return q}function r(Q,Z,q){let z=a0(Q,q),H=C(q);if(F(H)){let{toolkit:X}=H.transactionMeta;z.transact(X,({relations:Y})=>{Z(Y)})}else Z(z.relations)}function kQ(Q,Z,q){let z=a0(Q,q),H;switch(Q.cardinality){case"1:1":{let X=`${Q.a}KeyOf${x(Q.b)}`,Y=`${Q.b}KeyOf${x(Q.a)}`;H={get[X](){let G=z.states[X];return M(q,G,Z)},get[Y](){let G=z.states[Y];return M(q,G,Z)}};break}case"1:n":{let X=`${Q.a}KeyOf${x(Q.b)}`,Y=`${Q.b}KeysOf${x(Q.a)}`;H={get[X](){let G=z.states[X];return M(q,G,Z)},get[Y](){let G=z.states[Y];return M(q,G,Z)}};break}case"n:n":{let X=`${Q.a}KeysOf${x(Q.b)}`,Y=`${Q.b}KeysOf${x(Q.a)}`;H={get[X](){let G=z.states[X];return M(q,G,Z)},get[Y](){let G=z.states[Y];return M(q,G,Z)}}}}return H}function XQ(Q,Z){return a0(Q,Z).relatedKeysAtoms}var LZ=c({key:"mutex",default:!1}),PZ=class extends Map{set(Q,Z){if(this.has(Q))return console.warn("Tried to set a key that already exists in an InvariantMap",{key:Q,value:Z}),this;return super.set(Q,Z)}},_3=class Q{type="continuity";globals=[];actions=[];perspectives=[];key;constructor(Z){this.key=Z}static existing=new PZ;static create(Z,q){let{type:z,globals:H,actions:X,perspectives:Y}=q(new Q(Z)),G={type:z,key:Z,globals:H,actions:X,perspectives:Y};return Q.existing.set(Z,G),G}add(...Z){switch(Z[0].type){case"atom":case"mutable_atom":this.globals.push(...Z);break;case"transaction":this.actions.push(...Z);break;case"atom_family":case"mutable_atom_family":{let[q,z]=Z;this.perspectives.push({type:"realtime_perspective",resourceAtoms:q,viewAtoms:z})}break}return this}};var N3=m({key:"usersInRoomIndex",class:v}),IQ=m({key:"roomIndex",class:v});var q0=H0({key:"usersInRooms",between:["room","user"],cardinality:"1:n",isAType:(Q)=>typeof Q==="string",isBType:(Q)=>typeof Q==="string"}),j3=X0({key:"usersInMyRoomView",get:(Q)=>({find:Z})=>{return[Z(o0(q0),Q)]}});var P3=c({key:"redactor",default:{occlude:(Q)=>Q}}),O3=c({key:"unacknowledgedUpdates",default:()=>[]});var n0=class{listeners;globalListeners;handleEvent(...Q){let[Z,...q]=Q;for(let H of this.globalListeners)H(Z,...q);let z=this.listeners.get(Z);if(z)for(let H of z)H(...q)}id="no_id_retrieved";emit;constructor(Q){this.emit=Q,this.listeners=new Map,this.globalListeners=new Set}on(Q,Z){let q=this.listeners.get(Q);if(q)q.add(Z);else this.listeners.set(Q,new Set([Z]));return this}onAny(Q){return this.globalListeners.add(Q),this}off(Q,Z){let q=this.listeners.get(Q);if(q)if(Z)q.delete(Z);else this.listeners.delete(Q);return this}offAny(Q){return this.globalListeners.delete(Q),this}},M3=class extends n0{incompleteData="";unprocessedEvents=[];incompleteLog="";unprocessedLogs=[];id="#####";proc;key;logger;handleLog(Q){if(Array.isArray(Q)){let[Z,...q]=Q;switch(Z){case"i":this.logger.info(...q);break;case"w":this.logger.warn(...q);break;case"e":this.logger.error(...q);break}}}constructor(Q,Z,q){super((z,...H)=>{let X=JSON.stringify([z,...H])+"\x03",Y=(G)=>{if(G.code==="EPIPE")console.error("EPIPE error during write",this.proc.stdin);this.proc.stdin.removeListener("error",Y)};return this.proc.stdin.once("error",Y),this.proc.stdin.write(X),this});if(this.proc=Q,this.key=Z,this.logger=q??{info:(...z)=>{console.info(this.id,this.key,...z)},warn:(...z)=>{console.warn(this.id,this.key,...z)},error:(...z)=>{console.error(this.id,this.key,...z)}},this.proc.stdout.on("data",(z)=>{let H=z.toString();if(H==="ALIVE"){this.logger.info(H);return}let X=H.split("\x03"),Y=X[0];X[0]=this.incompleteData+Y;let G=0;for(let N of X){if(N==="")continue;try{let j=R(N);this.handleEvent(...j),this.incompleteData=""}catch(j){if(j instanceof Error)console.error(["\u274C Malformed data received from child process","",N,"",j.message].join(`
16
16
  \u274C `));try{if(G===0){this.incompleteData=N;let W=R(Y);this.handleEvent(...W),this.incompleteData=""}else this.incompleteData+=N}catch(W){if(W instanceof Error)console.error(["\u274C Malformed data received from child process","",Y,"",W.message].join(`
17
17
  \u274C `))}}++G}}),this.proc.stderr.on("data",(z)=>{let H=z.toString().split("\x03"),X=H[0];H[0]=this.incompleteData+X;let Y=0;for(let G of H){if(G==="")continue;try{let N=R(G);this.handleLog(N),this.incompleteData=""}catch(N){if(N instanceof Error)console.error(["\u274C Malformed log received from child process","",G,"",N.message].join(`