tempest.games 0.2.45 → 0.2.46

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
@@ -1,5 +1,13 @@
1
1
  # tempest.games
2
2
 
3
+ ## 0.2.46
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [549b0d6]
8
+ - Updated dependencies [549b0d6]
9
+ - atom.io@0.40.0
10
+
3
11
  ## 0.2.45
4
12
 
5
13
  ### Patch Changes
@@ -7,7 +7,7 @@ function Lk(t,e){for(var n=0;n<e.length;n++){const s=e[n];if(typeof s!="string"&
7
7
  * This source code is licensed under the MIT license found in the
8
8
  * LICENSE file in the root directory of this source tree.
9
9
  */var oS;function Uk(){if(oS)return Fa;oS=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(s,o,l){var u=null;if(l!==void 0&&(u=""+l),o.key!==void 0&&(u=""+o.key),"key"in o){l={};for(var d in o)d!=="key"&&(l[d]=o[d])}else l=o;return o=l.ref,{$$typeof:t,type:s,key:u,ref:o!==void 0?o:null,props:l}}return Fa.Fragment=e,Fa.jsx=n,Fa.jsxs=n,Fa}var aS;function zk(){return aS||(aS=1,Ph.exports=Uk()),Ph.exports}var Y=zk();function Kk(t){return Object.entries(t)}function js(t){return JSON.parse(t)}const Ge=t=>JSON.stringify(t);function ct(t){return of(yt.STORE,t,void 0)}function h1(t){return sy(yt.STORE,t,void 0)}function Ze(...t){return t.length===2?Wt(yt.STORE,...t):Wt(yt.STORE,...t)}function qk(t,e){return jM(yt.STORE,t,e)}function Pk(t){return LM(t,yt.STORE)}const Bs={atom_family:"atom family",atom:"atom",continuity:"continuity",key:"key",mutable_atom_family:"atom family [m]",mutable_atom:"atom [m]",readonly_held_selector_family:"selector family [h]",readonly_held_selector:"selector [h]",readonly_pure_selector_family:"selector family",readonly_pure_selector:"selector",state:"state",timeline:"timeline",transaction:"transaction",unknown:"unknown",writable_held_selector_family:"selector family [wh]",writable_held_selector:"selector [wh]",writable_pure_selector_family:"selector family [w]",writable_pure_selector:"selector [w]"},Ih=t=>(e,n,s,o,...l)=>{console[t](`${e} ${Bs[n]} \`${s}\` ${o}`,...l)},Ik={error:Ih("error"),info:Ih("info"),warn:Ih("warn")};var Hk=class{logLevel;filter;logger;constructor(t,e,n=Ik){this.logLevel=t,this.filter=e,this.logger=n}error=(...t)=>{if(this.logLevel!==null){const e=this.filter?.(...t)??!0;e===!0?this.logger.error(...t):e&&this.logger.error(...e)}};info=(...t)=>{if(this.logLevel==="info"){const e=this.filter?.(...t)??!0;e===!0?this.logger.info(...t):e&&this.logger.info(...e)}};warn=(...t)=>{if(this.logLevel!=="error"&&this.logLevel!==null){const e=this.filter?.(...t)??!0;e===!0?this.logger.warn(...t):e&&this.logger.warn(...e)}}},Fk=class{store;constructor(t=yt.STORE){this.store=t,dM("root",t)}allocate(t,e,n){return Sl(this.store,t,e,n)}fuse(t,e,n){return hM(this.store,t,e,n)}deallocate(t){wl(this.store,t)}claim(t,e,n){return ku(this.store,t,e,n)}},Gk=class{store;realm;constructor(t=yt.STORE){this.store=t,this.realm=new Fk(t)}allocate(t,e,n){Sl(this.store,t,e,n)}deallocate(t){wl(this.store,t)}claim(t,e,n){ku(this.store,t,e,n)}};function pi(t){return C1(yt.STORE,t)}function Yk(t){return MM(yt.STORE,t)}function De(...t){t.length===2?mt(yt.STORE,...t):mt(yt.STORE,...t)}function Xk(t,e,n=tf()){return CM(yt.STORE,t,e,n)}function Jk(t){return _1(yt.STORE,t)}function Zk(t,e=tf()){return Fm(yt.STORE,t,e)}var Pm=class hu extends Set{mode="record";subject=new Qe;cacheLimit=0;cache=[];cacheIdx=-1;cacheUpdateNumber=-1;constructor(e,n=0){super(e),e instanceof hu&&(this.parent=e,this.cacheUpdateNumber=e.cacheUpdateNumber),n&&(this.cacheLimit=n,this.cache=new Array(n),this.subscribe("auto cache",s=>{this.cacheIdx++,this.cacheIdx%=this.cacheLimit,this.cache[this.cacheIdx]=s}))}READONLY_VIEW=this;toJSON(){return{members:[...this],cache:this.cache,cacheLimit:this.cacheLimit,cacheIdx:this.cacheIdx,cacheUpdateNumber:this.cacheUpdateNumber}}static fromJSON(e){const n=new hu(e.members,e.cacheLimit);return n.cache=e.cache,n.cacheIdx=e.cacheIdx,n.cacheUpdateNumber=e.cacheUpdateNumber,n}add(e){const n=super.add(e);return this.mode==="record"&&(this.cacheUpdateNumber++,this.emit(`add:${Ge(e)}`)),n}clear(){const e=this.mode==="record"?[...this]:null;super.clear(),e&&(this.cacheUpdateNumber++,this.emit(`clear:${JSON.stringify(e)}`))}delete(e){const n=super.delete(e);return this.mode==="record"&&(this.cacheUpdateNumber++,this.emit(`del:${Ge(e)}`)),n}parent=null;child=null;transactionUpdates=null;transaction(e){this.mode="transaction",this.transactionUpdates=[],this.child=new hu(this);const n=this.child._subscribe("transaction",s=>{this.transactionUpdates?.push(s)});try{if(e(this.child)){for(const o of this.transactionUpdates)this.doStep(o);this.cacheUpdateNumber++,this.emit(`tx:${this.transactionUpdates.join(";")}`)}}catch(s){throw console.warn("Did not apply transaction to SetRTX; this error was thrown:",s),s}finally{n(),this.child=null,this.transactionUpdates=null,this.mode="record"}}_subscribe(e,n){return this.subject.subscribe(e,n)}subscribe(e,n){return this.subject.subscribe(e,s=>{n(`${this.cacheUpdateNumber}=${s}`)})}emit(e){this.subject.next(e)}doStep(e){const n=e.indexOf(":"),s=e.substring(0,n),o=e.substring(n+1);switch(s){case"add":this.add(JSON.parse(o));break;case"clear":this.clear();break;case"del":this.delete(JSON.parse(o));break;case"tx":for(const l of o.split(";"))this.doStep(l)}}getUpdateNumber(e){const n=e.indexOf("=");return Number(e.substring(0,n))}do(e){const n=e.indexOf("="),s=Number(e.substring(0,n)),o=s-this.cacheUpdateNumber;if(o>0){if(o===1){this.mode="playback";const u=e.substring(n+1);return this.doStep(u),this.mode="record",this.cacheUpdateNumber=s,null}return this.cacheUpdateNumber+1}if(Math.abs(o)<this.cacheLimit){const u=this.cacheIdx+o;if(this.cache[u]===e)return null;this.mode="playback";let h=!1;for(;!h;){this.cacheIdx%=this.cacheLimit;const y=this.cache[this.cacheIdx];if(this.cacheIdx--,!y)return"OUT_OF_RANGE";this.undo(y),h=this.cacheIdx===u-1}const p=e.substring(n+1);return this.doStep(p),this.mode="record",this.cacheUpdateNumber=s,null}return"OUT_OF_RANGE"}undoStep(e){const n=e.indexOf(":"),s=e.substring(0,n),o=e.substring(n+1);switch(s){case"add":this.delete(JSON.parse(o));break;case"del":this.add(JSON.parse(o));break;case"clear":{const l=JSON.parse(o);for(const u of l)this.add(u);break}case"tx":{const l=o.split(";");for(let u=l.length-1;u>=0;u--)this.undoStep(l[u])}}}undo(e){const n=e.indexOf("=");if(Number(e.substring(0,n))===this.cacheUpdateNumber){this.mode="playback";const o=e.substring(n+1);return this.undoStep(o),this.mode="record",this.cacheUpdateNumber--,null}return this.cacheUpdateNumber}};function tf(t=Math.random){return t().toString(36).slice(2)}function Ae(t){for(;t.child!==null;)t=t.child;return t}var Qk=class p1{_buffer;_index=0;constructor(e){let n;typeof e=="number"?n=e:n=e.length,this._buffer=Array.from({length:n})}get buffer(){return this._buffer}get index(){return this._index}add(e){this._buffer[this._index]=e,this._index=(this._index+1)%this._buffer.length}copy(){const e=new p1([...this._buffer]);return e._index=this._index,e}};function Cs(t){const e={key:t.key,type:t.type};return"family"in t&&(e.family=t.family),e}const Wk=Symbol("counterfeit"),eM={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"};function lS(t,e,n){const s=Ge(e),o=`${t.key}(${s})`,l=eM[t.type],u={key:o,type:l,family:{key:t.key,subKey:s}};return n&&(u.counterfeit=!0),u}var In=class extends Map{deleted=new Set;changed=new Set;source;constructor(t){super(),this.source=t}get(t){if(super.has(t))return super.get(t);if(!this.deleted.has(t)&&this.source.has(t))return this.source.get(t)}set(t,e){return this.deleted.delete(t),this.source.has(t)&&this.changed.add(t),super.set(t,e)}hasOwn(t){return super.has(t)}has(t){return!this.deleted.has(t)&&(super.has(t)||this.source.has(t))}delete(t){return this.source.has(t)&&(this.deleted.add(t),this.changed.delete(t)),super.delete(t)}clear(){this.deleted=new Set(this.source.keys()),this.changed.clear(),super.clear()}*[Symbol.iterator](){yield*super[Symbol.iterator]();for(const[t,e]of this.source)!this.deleted.has(t)&&!this.changed.has(t)&&(yield[t,e])}*entries(){yield*this[Symbol.iterator]()}*keys(){yield*super.keys();for(const t of this.source.keys())!this.deleted.has(t)&&!this.changed.has(t)&&(yield t)}*values(){for(const[,t]of this[Symbol.iterator]())yield t}forEach(t){for(const[e,n]of this[Symbol.iterator]())t(n,e,this)}get size(){return super.size+this.source.size-this.changed.size-this.deleted.size}},m1=class extends Set{deleted=new Set;source;constructor(t){super(),this.source=t}add(t){return this.source.has(t)?(this.deleted.delete(t),this):super.add(t)}hasOwn(t){return super.has(t)}has(t){return!this.deleted.has(t)&&(super.has(t)||this.source.has(t))}delete(t){return this.source.has(t)?(this.deleted.add(t),!0):super.delete(t)}clear(){this.deleted=new Set(this.source),super.clear()}*[Symbol.iterator](){yield*super[Symbol.iterator]();for(const t of this.source)this.deleted.has(t)||(yield t)}*iterateOwn(){yield*super[Symbol.iterator]()}get size(){return super.size+this.source.size-this.deleted.size}},tM=class extends Map{deleted=new Set;source;constructor(t){super(),this.source=t}get(t){if(super.has(t))return super.get(t);if(!this.deleted.has(t)&&this.source.has(t)){const n=this.source.get(t),s=new m1(n);return super.set(t,s),s}}set(t,e){return this.deleted.delete(t),super.set(t,e)}has(t){return!this.deleted.has(t)&&(super.has(t)||this.source.has(t))}delete(t){return this.deleted.add(t),super.delete(t)}},Bi=class y1{a;b;cardinality;relations=new Map;contents=new Map;isAType;isBType;isContent;makeContentKey=(e,n)=>`${e}:${n}`;warn;getRelatedKeys(e){return this.relations.get(e)}addRelation(e,n){let s=this.relations.get(e),o=this.relations.get(n);s?s.add(n):(s=new Set([n]),this.relations.set(e,s)),o?o.add(e):(o=new Set([e]),this.relations.set(n,o))}deleteRelation(e,n){const s=this.relations.get(e);if(s){s.delete(n),s.size===0&&this.relations.delete(e);const o=this.relations.get(n);o&&(o.delete(e),o.size===0&&this.relations.delete(n))}}replaceRelationsUnsafely(e,n){this.relations.set(e,new Set(n));for(const s of n){const o=new Set().add(e);this.relations.set(s,o)}}replaceRelationsSafely(e,n){const s=this.relations.get(e);let o=this.isAType?.(e)?e:void 0,l=o===void 0?e:void 0;if(s)for(const u of s){o??=u,l??=u;const d=this.relations.get(u);d&&(d.size===1?this.relations.delete(u):d.delete(e),this.contents.delete(this.makeContentKey(o,l)))}this.relations.set(e,new Set(n));for(const u of n){let d=this.relations.get(u);d?d.add(e):(d=new Set().add(e),this.relations.set(u,d))}}getContentInternal(e){return this.contents.get(e)}setContent(e,n){this.contents.set(e,n)}deleteContent(e){this.contents.delete(e)}constructor(e,n){if(this.a=e.between[0],this.b=e.between[1],this.cardinality=e.cardinality,this.isAType=n?.isAType??null,this.isBType=n?.isBType??null,this.isContent=n?.isContent??null,n?.makeContentKey&&(this.makeContentKey=n.makeContentKey),!n?.externalStore){const s=n?.source;s===void 0&&(this.relations=new Map(e.relations?.map(([o,l])=>[o,new Set(l)])),this.contents=new Map(e.contents)),s&&(this.relations=new tM(s.relations),this.contents=new In(s.contents))}if(n?.externalStore){const s=n.externalStore;this.has=(o,l)=>s.has(o,l),this.addRelation=(o,l)=>{s.addRelation(o,l)},this.deleteRelation=(o,l)=>{s.deleteRelation(o,l)},this.replaceRelationsSafely=(o,l)=>{s.replaceRelationsSafely(o,l)},this.replaceRelationsUnsafely=(o,l)=>{s.replaceRelationsUnsafely(o,l)},this.getRelatedKeys=(o=>s.getRelatedKeys(o)),s.getContent&&(this.getContentInternal=o=>s.getContent(o),this.setContent=(o,l)=>{s.setContent(o,l)},this.deleteContent=o=>{s.deleteContent(o)});for(const[o,l]of e.relations??[]){let u=this.isAType?.(o)?o:void 0,d=u===void 0?o:void 0;for(const h of l)u??=h,d??=h,this.addRelation(u,d)}for(const[o,l]of e.contents??[])this.setContent(o,l)}n?.warn&&(this.warn=n.warn)}toJSON(){return{between:[this.a,this.b],cardinality:this.cardinality,relations:[...this.relations.entries()].map(([e,n])=>[e,[...n]]),contents:[...this.contents.entries()]}}set(...e){let n,s,o;switch(e.length){case 1:{const l=e[0];n=l[this.a],s=l[this.b],o=void 0;break}case 2:{const l=e[0];typeof l=="string"?[n,s]=e:(n=l[this.a],s=l[this.b],o=e[1]);break}default:n=e[0],s=e[1],o=e[2];break}switch(this.cardinality){case"1:1":{const l=this.getRelatedKey(n);l&&l!==s&&this.delete(n,l)}case"1:n":{const l=this.getRelatedKey(s);l&&l!==n&&this.delete(l,s)}break}if(o){const l=this.makeContentKey(n,s);this.setContent(l,o)}return this.addRelation(n,s),this}delete(e,n){n=typeof n=="string"?n:e[this.b];const s=typeof e=="string"?e:e[this.a];if(s===void 0&&typeof n=="string"){const o=this.getRelatedKeys(n);if(o)for(const l of o)this.delete(l,n)}else if(typeof s=="string"&&n===void 0){const o=this.getRelatedKeys(s);if(o)for(const l of o)this.delete(s,l)}else if(typeof s=="string"&&typeof n=="string"){this.deleteRelation(s,n);const o=this.makeContentKey(s,n);this.deleteContent(o)}return this}getRelatedKey(e){const n=this.getRelatedKeys(e);if(n){n.size>1&&this.warn?.(`${n.size} related keys were found for key "${e}": (${[...n].map(o=>`"${o}"`).join(", ")}). Only one related key was expected.`);let s;for(const o of n){s=o;break}return s}}replaceRelations(e,n,s){const o=!Array.isArray(n),l=o?Object.keys(n):n;if(s?.reckless?this.replaceRelationsUnsafely(e,l):this.replaceRelationsSafely(e,l),o)for(const u of l){const d=this.makeContentKey(e,u),h=n[u];this.setContent(d,h)}return this}getContent(e,n){const s=this.makeContentKey(e,n);return this.getContentInternal(s)}getRelationEntries(e){const n=e[this.a],s=e[this.b];if(n!==void 0&&s===void 0){const o=this.getRelatedKeys(n);if(o)return[...o].map(l=>[l,this.getContent(n,l)])}if(n===void 0&&s!==void 0){const o=this.getRelatedKeys(s);if(o)return[...o].map(l=>[l,this.getContent(l,s)])}return[]}has(e,n){return n?this.getRelatedKeys(e)?.has(n)??!1:this.relations.has(e)}overlay(){const e={source:this,makeContentKey:this.makeContentKey};return this.isAType&&(e.isAType=this.isAType),this.isBType&&(e.isBType=this.isBType),this.isContent&&(e.isContent=this.isContent),this.warn&&(e.warn=this.warn),new y1({between:[this.a,this.b],cardinality:this.cardinality},e)}incorporate(e){const{relations:n,contents:s}=e;for(const[o,l]of n)if(l instanceof m1){const{source:u}=l;for(const d of l.iterateOwn())u.add(d)}else this.relations.set(o,l);for(const o of n.deleted)this.relations.delete(o);for(const[o,l]of s)this.contents.set(o,l);for(const o of s.deleted)this.contents.delete(o)}},Qe=class{Subscriber;subscribers=new Map;subscribe(t,e){return this.subscribers.set(t,e),()=>{this.unsubscribe(t)}}unsubscribe(t){this.subscribers.delete(t)}next(t){const e=this.subscribers.values();for(const n of e)n(t)}},nM=class extends Qe{state;constructor(t){super(),this.state=t}next(t){this.state=t,super.next(t)}};const iM=(t,e)=>{const n=Ae(t);return n.operation.open?n.operation.prev.get(e.key):n.valueMap.get(e.key)};function g1(t,e,n,s){const o=t.disposalTraces.buffer.find(l=>l?.key===Ge(s));switch(t.logger.error("❌",e.type,e.key,"gets a fallback value because key",s,"is not allocated",o?`This key was previously disposed:
10
- ${o.trace}`:"(no previous disposal trace found)"),n.type){case"mutable_atom_family":{if(t.defaults.has(n.key))return t.defaults.get(n.key);const l=new n.class;return t.defaults.set(n.key,l),l}case"atom_family":{if(t.defaults.has(n.key))return t.defaults.get(n.key);const l=n.default,u=l(s);return t.defaults.set(n.key,u),u}case"readonly_pure_selector_family":case"writable_pure_selector_family":case"readonly_held_selector_family":case"writable_held_selector_family":{if(t.defaults.has(n.key))return t.defaults.get(n.key);const l=n.default(s);return t.defaults.set(n.key,l),l}}}var jp=class extends Promise{fate;resolve;reject;done=!1;constructor(t){let e,n;super((s,o)=>{e=s,n=o}),this.resolve=e,this.reject=n,this.use(t instanceof Promise?t:new Promise(t))}pass(t,e){t===this.fate&&(this.resolve(e),this.done=!0)}fail(t,e){t===this.fate&&(this.reject(e),this.done=!0)}use(t){if(this!==t)if(t instanceof Promise){const e=t;this.fate=e,e.then(n=>{this.pass(e,n)},n=>{this.fail(e,n)})}else this.resolve(t),this.fate=void 0}};function fi(t){return"epoch"in t.transactionMeta}function Qt(t){return"phase"in t.transactionMeta}function b1(t,e){if(t.operation.open){const n=performance.now();return t.logger.info("🚫",e.type,e.key,`deferring setState at T-${n} until setState for "${t.operation.token.key}" is done`),n}return t.operation={open:!0,done:new Set,prev:new Map,timestamp:Date.now(),token:e},t.logger.info("⭕",e.type,e.key,`operation start in store "${t.config.name}"${Qt(t)?` ${t.transactionMeta.phase} "${t.transactionMeta.update.token.key}"`:""}`),t}function v1(t){t.operation.open&&t.logger.info("🔴",t.operation.token.type,t.operation.token.key,`operation done in store "${t.config.name}"`),t.operation={open:!1},t.on.operationClose.next(t.operation)}const S1=(t,e)=>t.operation.open?t.operation.done.has(e):(t.logger.error("🐞","unknown",e,"isDone called outside of an operation. This is probably a bug in AtomIO."),!0),nf=(t,e)=>{if(!t.operation.open){t.logger.error("🐞","unknown",e,"markDone called outside of an operation. This is probably a bug in AtomIO.");return}t.operation.done.add(e)};function Im(t,e){const n=Ae(t),{key:s,type:o}=e,l=n.selectorAtoms.getRelatedKeys(s);if(n.logger.info("🧹",o,s,l?`evicting ${l.size} states downstream:`:"no downstream states",l??"to evict"),l){n.operation.open&&n.logger.info("🧹",o,s,`[ ${[...n.operation.done].join(", ")} ] already done`);for(const u of l)S1(n,u)||(x1(n,u),nf(n,u))}}function w1(t,e){const n=Ae(t),s=n.selectorGraph.getRelationEntries({upstreamSelectorKey:e}).filter(([o,{source:l}])=>l===e);for(const[o]of s)S1(n,o)||(x1(n,o),nf(n,o),w1(t,o))}function Ki(t,e,n){const{key:s,subject:o,type:l}=e,u=t.valueMap.get(s);if(u instanceof jp&&!u.done){const d=u;return n instanceof Promise?(d.use(n),d):(t.valueMap.set(s,n),n)}if(n instanceof Promise){const d=new jp(n);return t.valueMap.set(s,d),d.then(function(p){if(t.valueMap.get(s)===d){switch(b1(t,e),Ki(t,e,p),l){case"atom":case"mutable_atom":Im(t,e);break;case"readonly_pure_selector":case"writable_pure_selector":w1(t,s);break}v1(t),o.next({newValue:p,oldValue:d})}}).catch(h=>{t.logger.error("💥","state",s,"rejected:",h)}),d}return t.logger.info("📝",e.type,e.key,"writing to cache",n),t.valueMap.set(s,n),n}function sM(t,e,n){t.logger.info("📖",e.type,e.key,"reading cached value");let s=t.valueMap.get(e.key);if(n==="mut"&&e.type==="mutable_atom"&&Qt(t)){const l=e,{parent:u}=t;if(t.valueMap.hasOwn(l.key))return s;const d=u.valueMap.get(l.key);t.logger.info("📃","atom",l.key,"copying");const h=d.toJSON(),p=l.class.fromJSON(h);t.valueMap.set(l.key,p),new iy(l,u),s=p}return s}function x1(t,e){const n=t.valueMap.get(e);if(n instanceof jp){const s=t.writableSelectors.get(e)??t.readonlySelectors.get(e);s&&s.getFrom(t);return}t.operation.open&&t.operation.prev.set(e,n),t.valueMap.delete(e),t.logger.info("🗑","state",e,"evicted")}const rM=/^\[object (?:Async|Generator|AsyncGenerator)?Function\]$/;function al(t){const e=Object.prototype.toString.call(t);return rM.test(e)}function br(t,e,n){if(t.valueMap.has(e.key))return sM(t,e,n);t.logger.info("❔",e.type,e.key,"value not found in cache");const{key:s}=e;switch(e.type){case"readonly_held_selector":case"readonly_pure_selector":case"writable_held_selector":case"writable_pure_selector":return t.logger.info("🧮",e.type,s,"computing value"),e.getFrom(t);case"atom":{let o;return al(e.default)?(o=e.default(),t.logger.info("✨",e.type,s,"computed default",o)):(o=e.default,t.logger.info("✨",e.type,s,"using static default",o)),Ki(t,e,o)}case"mutable_atom":{const o=new e.class;return t.logger.info("✨",e.type,s,"created new instance",o),Ki(t,e,o)}}}function Hm(t,e){return lt(t,{key:e.family.key,type:`${e.type}_family`})}const ll=Symbol("MUST_CREATE");function cl(t,e,n,s){const o=Ge(n),l=t.molecules.get(o);if(!l&&t.config.lifespan==="immortal")return t.logger.warn("💣","key",o,"was used to mint a counterfeit token for",e.type,`"${e.key}"`),lS(e,n,Wk);let d;return s===ll?(t.logger.info("👪",e.type,e.key,"adds member",typeof n=="string"?`\`${n}\``:n),d=e(n),l&&t.moleculeData.set(o,e.key)):d=lS(e,n),d}const oM=t=>{const e=Ae(t);if(!Qt(e)){t.logger.warn("🐞","transaction","???","abortTransaction called outside of a transaction. This is probably a bug in AtomIO.");return}t.logger.info("🪂","transaction",e.transactionMeta.update.token.key,"Aborting transaction"),e.parent.child=null};var T1=class extends Error{constructor(t,e){super(`${Bs[t.type]} ${Ge(t.key)} not found in store "${e.config.name}".`)}};function Fm(t,e,n){return(...s)=>{const o=lt(t,e);if(o)return o.run(s,n);throw new T1(e,t)}}function Bp(t,e){return al(t)?t(e):t}const Lp=(t,e,n)=>{const s=br(t,e,"mut");let o=Bp(n,s);return t.logger.info("⭐","atom",e.key,"setting value",o),o=Ki(t,e,o),nf(t,e.key),Im(t,e),{oldValue:s,newValue:o}};function cS(t,e){switch(e.type){case"mutable_atom":return Lp(t,e,new e.class);case"atom":{let n=e.default;return al(n)&&(n=n()),Lp(t,e,n)}}}function aM(t,e){let n;switch(e.type){case"atom":case"mutable_atom":n=cS(t,e);break;case"writable_pure_selector":case"writable_held_selector":{const s=e.getFrom(t),o=Mu(t,e.key);for(const u of o.values()){const d=cS(t,u);k1(t,e,d,!1)}const l=e.getFrom(t);n={oldValue:s,newValue:l}}break}return n}function mt(t,...e){Xm(t,Vp,...e)}const _u=Symbol("RESET");function Gm(t,...e){let n,s,o;e.length===1?(n=e[0],mt(t,n,_u)):(s=e[0],o=e[1],mt(t,s,o,_u))}function lM(t,e,n){let s,o,l;const{type:u,key:d}=e;switch(e.type){case"writable_pure_selector":s=br(t,e,"mut"),o=Bp(n,s),o=Ki(t,e,o);break;case"writable_held_selector":l=e.const,Bp(n,l),s=l,o=l}return t.logger.info("⭐",u,d,"setting to",o),nf(t,d),e.setSelf(o),{oldValue:s,newValue:o}}const cM=(t,e,n)=>{let s;switch(e.type){case"atom":case"mutable_atom":s=Lp(t,e,n);break;case"writable_pure_selector":case"writable_held_selector":s=lM(t,e,n);break}return s};function uM(t,e,n){const{token:s,update:{newValue:o,oldValue:l}}=e;mt(t,s,n==="newValue"?o:l)}function fM(t){const{stack:e}=t;return e?`
10
+ ${o.trace}`:"(no previous disposal trace found)"),n.type){case"mutable_atom_family":{if(t.defaults.has(n.key))return t.defaults.get(n.key);const l=new n.class;return t.defaults.set(n.key,l),l}case"atom_family":{if(t.defaults.has(n.key))return t.defaults.get(n.key);const l=n.default,u=l(s);return t.defaults.set(n.key,u),u}case"readonly_pure_selector_family":case"writable_pure_selector_family":case"readonly_held_selector_family":case"writable_held_selector_family":{if(t.defaults.has(n.key))return t.defaults.get(n.key);const l=n.default(s);return t.defaults.set(n.key,l),l}}}var jp=class extends Promise{fate;resolve;reject;done=!1;constructor(t){let e,n;super((s,o)=>{e=s,n=o}),this.resolve=e,this.reject=n,this.use(t instanceof Promise?t:new Promise(t))}pass(t,e){t===this.fate&&(this.resolve(e),this.done=!0)}fail(t,e){t===this.fate&&(this.reject(e),this.done=!0)}use(t){if(this!==t)if(t instanceof Promise){const e=t;this.fate=e,e.then(n=>{this.pass(e,n)},n=>{this.fail(e,n)})}else this.resolve(t),this.fate=void 0}};function fi(t){return"epoch"in t.transactionMeta}function Qt(t){return"phase"in t.transactionMeta}function b1(t,e){if(t.operation.open){const n=performance.now();return t.logger.info("🚫",e.type,e.key,`deferring setState at T-${n} until setState for "${t.operation.token.key}" is done`),n}return t.operation={open:!0,done:new Set,prev:new Map,timestamp:Date.now(),token:e,subEvents:[]},t.logger.info("⭕",e.type,e.key,`operation start in store "${t.config.name}"${Qt(t)?` ${t.transactionMeta.phase} "${t.transactionMeta.update.token.key}"`:""}`),t}function v1(t){t.operation.open&&t.logger.info("🔴",t.operation.token.type,t.operation.token.key,`operation done in store "${t.config.name}"`),t.operation={open:!1},t.on.operationClose.next(t.operation)}const S1=(t,e)=>t.operation.open?t.operation.done.has(e):(t.logger.error("🐞","unknown",e,"isDone called outside of an operation. This is probably a bug in AtomIO."),!0),nf=(t,e)=>{if(!t.operation.open){t.logger.error("🐞","unknown",e,"markDone called outside of an operation. This is probably a bug in AtomIO.");return}t.operation.done.add(e)};function Im(t,e){const n=Ae(t),{key:s,type:o}=e,l=n.selectorAtoms.getRelatedKeys(s);if(n.logger.info("🧹",o,s,l?`evicting ${l.size} states downstream:`:"no downstream states",l??"to evict"),l){n.operation.open&&n.logger.info("🧹",o,s,`[ ${[...n.operation.done].join(", ")} ] already done`);for(const u of l)S1(n,u)||(x1(n,u),nf(n,u))}}function w1(t,e){const n=Ae(t),s=n.selectorGraph.getRelationEntries({upstreamSelectorKey:e}).filter(([o,{source:l}])=>l===e);for(const[o]of s)S1(n,o)||(x1(n,o),nf(n,o),w1(t,o))}function Ki(t,e,n){const{key:s,subject:o,type:l}=e,u=t.valueMap.get(s);if(u instanceof jp&&!u.done){const d=u;return n instanceof Promise?(d.use(n),d):(t.valueMap.set(s,n),n)}if(n instanceof Promise){const d=new jp(n);return t.valueMap.set(s,d),d.then(function(p){if(t.valueMap.get(s)===d){switch(b1(t,e),Ki(t,e,p),l){case"atom":case"mutable_atom":Im(t,e);break;case"readonly_pure_selector":case"writable_pure_selector":w1(t,s);break}v1(t),o.next({newValue:p,oldValue:d})}}).catch(h=>{t.logger.error("💥","state",s,"rejected:",h)}),d}return t.logger.info("📝",e.type,e.key,"writing to cache",n),t.valueMap.set(s,n),n}function sM(t,e,n){t.logger.info("📖",e.type,e.key,"reading cached value");let s=t.valueMap.get(e.key);if(n==="mut"&&e.type==="mutable_atom"&&Qt(t)){const l=e,{parent:u}=t;if(t.valueMap.hasOwn(l.key))return s;const d=u.valueMap.get(l.key);t.logger.info("📃","atom",l.key,"copying");const h=d.toJSON(),p=l.class.fromJSON(h);t.valueMap.set(l.key,p),new iy(l,u),s=p}return s}function x1(t,e){const n=t.valueMap.get(e);if(n instanceof jp){const s=t.writableSelectors.get(e)??t.readonlySelectors.get(e);s&&s.getFrom(t);return}t.operation.open&&t.operation.prev.set(e,n),t.valueMap.delete(e),t.logger.info("🗑","state",e,"evicted")}const rM=/^\[object (?:Async|Generator|AsyncGenerator)?Function\]$/;function al(t){const e=Object.prototype.toString.call(t);return rM.test(e)}function br(t,e,n){if(t.valueMap.has(e.key))return sM(t,e,n);t.logger.info("❔",e.type,e.key,"value not found in cache");const{key:s}=e;switch(e.type){case"readonly_held_selector":case"readonly_pure_selector":case"writable_held_selector":case"writable_pure_selector":return t.logger.info("🧮",e.type,s,"computing value"),e.getFrom(t);case"atom":{let o;return al(e.default)?(o=e.default(),t.logger.info("✨",e.type,s,"computed default",o)):(o=e.default,t.logger.info("✨",e.type,s,"using static default",o)),Ki(t,e,o)}case"mutable_atom":{const o=new e.class;return t.logger.info("✨",e.type,s,"created new instance",o),Ki(t,e,o)}}}function Hm(t,e){return lt(t,{key:e.family.key,type:`${e.type}_family`})}const ll=Symbol("MUST_CREATE");function cl(t,e,n,s){const o=Ge(n),l=t.molecules.get(o);if(!l&&t.config.lifespan==="immortal")return t.logger.warn("💣","key",o,"was used to mint a counterfeit token for",e.type,`"${e.key}"`),lS(e,n,Wk);let d;return s===ll?(t.logger.info("👪",e.type,e.key,"adds member",typeof n=="string"?`\`${n}\``:n),d=e(n),l&&t.moleculeData.set(o,e.key)):d=lS(e,n),d}const oM=t=>{const e=Ae(t);if(!Qt(e)){t.logger.warn("🐞","transaction","???","abortTransaction called outside of a transaction. This is probably a bug in AtomIO.");return}t.logger.info("🪂","transaction",e.transactionMeta.update.token.key,"Aborting transaction"),e.parent.child=null};var T1=class extends Error{constructor(t,e){super(`${Bs[t.type]} ${Ge(t.key)} not found in store "${e.config.name}".`)}};function Fm(t,e,n){return(...s)=>{const o=lt(t,e);if(o)return o.run(s,n);throw new T1(e,t)}}function Bp(t,e){return al(t)?t(e):t}const Lp=(t,e,n)=>{const s=br(t,e,"mut");let o=Bp(n,s);return t.logger.info("⭐","atom",e.key,"setting value",o),o=Ki(t,e,o),nf(t,e.key),Im(t,e),{oldValue:s,newValue:o}};function cS(t,e){switch(e.type){case"mutable_atom":return Lp(t,e,new e.class);case"atom":{let n=e.default;return al(n)&&(n=n()),Lp(t,e,n)}}}function aM(t,e){let n;switch(e.type){case"atom":case"mutable_atom":n=cS(t,e);break;case"writable_pure_selector":case"writable_held_selector":{const s=e.getFrom(t),o=Mu(t,e.key);for(const u of o.values()){const d=cS(t,u);k1(t,e,d,!1)}const l=e.getFrom(t);n={oldValue:s,newValue:l}}break}return n}function mt(t,...e){Xm(t,Vp,...e)}const _u=Symbol("RESET");function Gm(t,...e){let n,s,o;e.length===1?(n=e[0],mt(t,n,_u)):(s=e[0],o=e[1],mt(t,s,o,_u))}function lM(t,e,n){let s,o,l;const{type:u,key:d}=e;switch(e.type){case"writable_pure_selector":s=br(t,e,"mut"),o=Bp(n,s),o=Ki(t,e,o);break;case"writable_held_selector":l=e.const,Bp(n,l),s=l,o=l}return t.logger.info("⭐",u,d,"setting to",o),nf(t,d),e.setSelf(o),{oldValue:s,newValue:o}}const cM=(t,e,n)=>{let s;switch(e.type){case"atom":case"mutable_atom":s=Lp(t,e,n);break;case"writable_pure_selector":case"writable_held_selector":s=lM(t,e,n);break}return s};function uM(t,e,n){const{token:s,update:{newValue:o,oldValue:l}}=e;mt(t,s,n==="newValue"?o:l)}function fM(t){const{stack:e}=t;return e?`
11
11
  `+e.split(`
12
12
  `)?.slice(1)?.join(`
13
13
  `):""}function dM(t,e=yt.STORE){const n={key:t,stringKey:Ge(t),dependsOn:"any"};return e.molecules.set(Ge(t),n),t}function Sl(t,e,n,s="any"){const o=e,l=Ge(n),u=[],d=Ae(t);if(Array.isArray(o))for(const y of o){const g=Ge(y);d.molecules.get(g)?t.moleculeGraph.set(g,l,{source:g}):u.push(g)}else{const y=Ge(o);d.molecules.get(y)?t.moleculeGraph.set(y,l,{source:y}):u.push(y)}u.length===0&&d.molecules.set(l,{key:n,stringKey:l,dependsOn:s});const h={type:"molecule_creation",key:n,provenance:o,timestamp:Date.now()};Qt(d)&&d.transactionMeta.phase==="building"?d.transactionMeta.update.subEvents.push(h):d.on.moleculeCreation.next(h);for(const y of u){const g=t.disposalTraces.buffer.find(v=>v?.key===y);t.logger.error("❌","key",n,"allocation failed:",`Could not allocate to ${y} in store "${t.config.name}".`,g?`
@@ -18,7 +18,7 @@ ${S.trace}`:`No previous disposal trace for ${n} was found.`);return}const o=t.m
18
18
  ${o} was most recently disposed
19
19
  ${v.trace}`:`No previous disposal trace for ${o} was found.`),n}const d=Ge(e),h=l.molecules.get(d);if(!h){const v=t.disposalTraces.buffer.find(S=>S?.key===d);return t.logger.error("❌","key",n,"claim failed:",`Could not allocate to ${d} in store "${t.config.name}".`,v?`
20
20
  ${d} was most recently disposed
21
- ${v.trace}`:`No previous disposal trace for ${d} was found.`),n}const p=t.moleculeGraph.getRelationEntries({downstreamMoleculeKey:u.stringKey}).filter(([,{source:v}])=>v!==o).map(([v])=>js(v));s&&l.moleculeGraph.delete(o),l.moleculeGraph.set({upstreamMoleculeKey:h.stringKey,downstreamMoleculeKey:u.stringKey},{source:h.stringKey});const y={type:"molecule_transfer",key:u.key,exclusive:!!s,from:p,to:[h.key],timestamp:Date.now()};return Qt(l)&&l.transactionMeta.phase==="building"&&l.transactionMeta.update.subEvents.push(y),n}function pM(t,e,n){switch(n){case"newValue":A1(t,e);break;case"oldValue":rf(t,e.token);break}}function mM(t,e,n){switch(n){case"newValue":rf(t,e.token);break;case"oldValue":A1(t,e),e.subType==="atom"&&t.valueMap.set(e.token.key,e.value);break}}function A1(t,e){const{token:n}=e;e.subType==="writable"&&e.value?mt(t,n,e.value):Wt(t,n)}function yM(t,e,n){switch(n){case"newValue":Sl(t,e.provenance,e.key);break;case"oldValue":wl(t,e.key);break}}function gM(t,e,n){switch(n){case"newValue":wl(t,e.key);break;case"oldValue":{const s=e.provenance.map(js);Sl(t,s,e.key);for(const[o,l]of e.values){const u=t.families.get(o);if(u){Wt(t,u,e.key);const d=`${o}(${Ge(e.key)})`;t.valueMap.set(d,l)}}}break}}function bM(t,e,n){switch(n){case"newValue":for(const s of e.to)ku(t,s,e.key,e.exclusive?"exclusive":void 0);break;case"oldValue":{let s="exclusive";for(const o of e.from)ku(t,o,e.key,s),s=void 0}break}}function po(t,e,n){const s=n==="newValue"?e.subEvents:[...e.subEvents].reverse();for(const o of s)switch(o.type){case"atom_update":uM(t,o,n);break;case"state_creation":pM(t,o,n);break;case"state_disposal":mM(t,o,n);break;case"molecule_creation":yM(t,o,n);break;case"molecule_disposal":gM(t,o,n);break;case"molecule_transfer":bM(t,o,n);break;case"transaction_outcome":po(t,o,n);break}}function E1(t,e){return t.transactionMeta.actionContinuities.getRelatedKey(e)}function R1(t,e){return t.transactionMeta.epoch.get(e)}function vM(t,e){if(!fi(t))return;const s=E1(t,e);if(s!==void 0)return R1(t,s)}function Ym(t,e,n){fi(t)&&e&&t.transactionMeta.epoch.set(e,n)}function SM(t,e,n){if(!fi(t))return;const o=E1(t,e);o!==void 0&&t.transactionMeta.epoch.set(o,n)}function wM(t,e){const n=Ae(t),{parent:s}=n;if(s===null||!Qt(n)||n.transactionMeta?.phase!=="building"){t.logger.warn("🐞","transaction","???","applyTransaction called outside of a transaction. This is probably a bug in AtomIO.");return}n.transactionMeta.phase="applying",n.transactionMeta.update.output=e,s.child=null,s.on.transactionApplying.next(n.transactionMeta);const{subEvents:o}=n.transactionMeta.update;t.logger.info("🛄","transaction",n.transactionMeta.update.token.key,`Applying transaction with ${o.length} updates:`,o),po(s,n.transactionMeta.update,"newValue"),fi(s)?(SM(s,n.transactionMeta.update.token.key,n.transactionMeta.update.epoch),lt(t,{key:n.transactionMeta.update.token.key,type:"transaction"})?.subject.next(n.transactionMeta.update),t.logger.info("🛬","transaction",n.transactionMeta.update.token.key,"Finished applying transaction.")):Qt(s)&&s.transactionMeta.update.subEvents.push(n.transactionMeta.update),s.on.transactionApplying.next(null)}function O1(t,e,n){if(!fi(t))return;const{epoch:o,actionContinuities:l}=t.transactionMeta;l.set(e,n),o.has(e)||o.set(e,-1)}function xM(t){return{store:t}}const TM=(t,e,n,s)=>{const o=Ae(t),l={parent:o,child:null,on:o.on,loggers:o.loggers,logger:o.logger,config:o.config,atoms:new In(o.atoms),atomsThatAreDefault:new Set(o.atomsThatAreDefault),families:new In(o.families),joins:new In(o.joins),operation:{open:!1},readonlySelectors:new In(o.readonlySelectors),timelines:new In(o.timelines),timelineTopics:o.timelineTopics.overlay(),trackers:new Map,transactions:new In(o.transactions),selectorAtoms:o.selectorAtoms.overlay(),selectorGraph:o.selectorGraph.overlay(),writableSelectors:new In(o.writableSelectors),valueMap:new In(o.valueMap),defaults:o.defaults,disposalTraces:t.disposalTraces.copy(),molecules:new In(o.molecules),moleculeGraph:o.moleculeGraph.overlay(),moleculeData:o.moleculeData.overlay(),moleculeJoins:o.moleculeJoins.overlay(),miscResources:new In(o.miscResources)},u=vM(t,e.key),d={phase:"building",update:{type:"transaction_outcome",token:e,id:s,epoch:u===void 0?NaN:u+1,timestamp:Date.now(),subEvents:[],params:n,output:void 0},toolkit:{get:((...p)=>Wt(h,...p)),set:((...p)=>{mt(h,...p)}),reset:((...p)=>{Gm(h,...p)}),run:(p,y=tf())=>Fm(h,p,y),find:((...p)=>Xi(t,...p)),json:p=>vr(h,p),dispose:((...p)=>{rf(h,...p)}),env:()=>xM(h)}},h=Object.assign(l,{transactionMeta:d});return o.child=h,t.logger.info("🛫","transaction",e.key,"Building transaction with params:",n),h};function _1(t,e){const{key:n}=e,s=t.transactions.has(n),o={key:n,type:"transaction",run:(d,h)=>{const p=Cs(o),y=TM(t,p,d,h);try{const g=Ae(t),{toolkit:v}=y.transactionMeta,S=e.do(v,...d);return wM(g,S),S}catch(g){throw oM(l),t.logger.warn("💥","transaction",n,"caught:",g),g}},install:d=>_1(d,e),subject:new Qe},l=Ae(t);l.transactions.set(n,o);const u=Cs(o);return s||t.on.transactionCreation.next(u),u}function k1(t,e,{oldValue:n,newValue:s},o,l){const u=Cs(e);if(o&&l){e.subject.next({newValue:s});const g={type:"state_creation",subType:"writable",token:u,timestamp:Date.now(),value:s};l.subject.next(g);const S=Ae(t);if(u.family)if(fi(S))switch(u.type){case"atom":case"mutable_atom":t.on.atomCreation.next(u);break;case"writable_pure_selector":case"writable_held_selector":t.on.selectorCreation.next(u);break}else Qt(S)&&S.on.transactionApplying.state===null&&S.transactionMeta.update.subEvents.push(g);return}const{key:d,subject:h,type:p}=e,y={oldValue:Hh(n)?n.READONLY_VIEW:n,newValue:Hh(s)?s.READONLY_VIEW:s};if(fi(t)){switch(p){case"mutable_atom":t.logger.info("📢",p,d,"is now (",s,") subscribers:",h.subscribers);break;case"atom":case"writable_pure_selector":case"writable_held_selector":t.logger.info("📢",p,d,"went (",n,"->",s,") subscribers:",h.subscribers)}h.next(y)}if(Qt(t)&&(p==="mutable_atom"||p==="atom")){if(t.on.transactionApplying.state===null){if(Hh(s))return;const{timestamp:g}=t.operation,v={type:"atom_update",token:u,timestamp:g,update:y};t.transactionMeta.update.subEvents.push(v),t.logger.info("📁","atom",d,"stowed (",n,"->",s,")");return}if($M(e,"tracker:signal")){const g=d.slice(1),v=t.atoms.get(g);br(t,v,"mut").do(y.newValue)===null===!0&&Im(t,v)}}}const Vp=Symbol("OWN_OP"),AM=Symbol("JOIN_OP");function Xm(t,e,...n){let s,o,l,u,d,h;n.length===2?(l=n[0],h=n[1],"family"in l&&(u=Hm(t,l),d=js(l.family.subKey),s=ul(t,u,d),s?l=s:l=o=cl(t,u,d,ll))):(u=lt(t,n[0]),d=n[1],h=n[2],s=ul(t,u,d),s?l=s:l=o=cl(t,u,d,ll));const p=h===_u?"reset":"set";let y;if(e===Vp){const x=b1(t,l);if(typeof x=="number"){const D=x,M=t.on.operationClose.subscribe(`waiting to ${p} "${l.key}" at T-${D}`,function(){M(),t.logger.info("🟢",l.type,l.key,"resuming deferred",p,`from T-${D}`),Xm(t,e,l,h)});return}y=x}else y=t;if("counterfeit"in l&&"family"in l){const x=l.family.subKey,T=t.disposalTraces.buffer.find(D=>D?.key===x);t.logger.error("❌",l.type,l.key,"could not be",p,"because key",x,"is not allocated.",T?`this key was previously disposed:${T.trace}`:"(no previous disposal trace found)");return}const g=lt(y,l);let v;h===_u?v=aM(y,g):v=cM(y,g,h),k1(y,g,v,!!o,u),e===Vp&&v1(y)}const M1=(t,e)=>Ae(t).atoms.has(e),EM=(t,e)=>Ae(t).writableSelectors.has(e),RM=(t,e)=>Ae(t).readonlySelectors.has(e),OM=(t,e)=>M1(t,e)||EM(t,e)||RM(t,e);function uS(t,e){return Ae(t).selectorGraph.getRelationEntries({downstreamSelectorKey:e}).filter(([s,{source:o}])=>o!==e).map(([s,{source:o}])=>o).filter(s=>OM(t,s))}function Mu(t,e,n=new Set){const s=uS(t,e),o=new Map;for(;s.length>0;){const l=s.pop();if(!n.has(l))if(n.add(l),M1(t,l)){const u=t.atoms.get(l);o.set(u.key,u)}else s.push(...uS(t,l))}return o}function _M(t,e,n,s,o){const l=Ae(t),{type:u,key:d}=s;if(u==="atom"||u==="mutable_atom")l.selectorAtoms.set({selectorKey:n,atomKey:d}),t.logger.info("🔍",e,n,`discovers root atom "${d}"`);else{const h=Mu(t,d,o);t.logger.info("🔍",e,n,`discovers root atoms: [ ${[...h.values()].map(p=>`"${p.key}"`).join(", ")} ]`);for(const{key:p}of h.values())l.selectorAtoms=l.selectorAtoms.set({selectorKey:n,atomKey:p})}o.add(d)}function sf(t,e,n,s){return{get:(...o)=>{const l=Ae(t),{token:u,family:d,subKey:h}=ny(t,...o);let p;if("counterfeit"in u&&d&&h)p=g1(t,u,d,h);else{const y=lt(t,u);p=br(t,y)}return t.logger.info("🔌",e,n,`registers dependency ( "${u.key}" =`,p,")"),l.selectorGraph.set({upstreamSelectorKey:u.key,downstreamSelectorKey:n},{source:u.key}),_M(t,e,n,u,s),p},set:((...o)=>{const l=Ae(t);Xm(l,AM,...o)}),find:((...o)=>Xi(t,...o)),json:o=>vr(t,o)}}function Jm(t,e,n){const s=Ae(t),o=new Qe,l=new Set,{key:u,const:d}=e,h="readonly_held_selector";t.logger.info("🔨",h,u,"is being created");const{get:p,find:y,json:g}=sf(s,h,u,l),S={...e,type:h,subject:o,getFrom:T=>{const D=T.selectorGraph.getRelationEntries({downstreamSelectorKey:u});for(const[M,{source:O}]of D)O!==u&&T.selectorGraph.delete(M,u);return T.selectorAtoms.delete(u),e.get({get:p,find:y,json:g},d),Ki(T,S,d),t.logger.info("✨",h,u,"=",d),l.clear(),d},install:T=>Jm(T,e,n)};n&&(S.family=n),s.readonlySelectors.set(u,S);const x={key:u,type:h};return n&&(x.family=n),x}function Zm(t,e,n){const s=Ae(t),o=new Qe,l=new Set,u=e.key,d="readonly_pure_selector";t.logger.info("🔨",d,u,"is being created");const{get:h,find:p,json:y}=sf(s,d,u,l),v={...e,type:d,subject:o,getFrom:()=>{const x=Ae(t),T=x.selectorGraph.getRelationEntries({downstreamSelectorKey:u});for(const[O,{source:C}]of T)C!==u&&x.selectorGraph.delete(O,u);x.selectorAtoms.delete(u);const D=e.get({get:h,find:p,json:y}),M=Ki(x,v,D);return t.logger.info("✨",d,u,"=",M),l.clear(),M},install:x=>Zm(x,e,n)};n&&(v.family=n),s.readonlySelectors.set(u,v);const S={key:u,type:d};return n&&(S.family=n),S}function Qm(t,e,n){const s=Ae(t),o=new Qe,l=new Set,{key:u,const:d}=e,h="writable_held_selector";t.logger.info("🔨",h,u,"is being created");const p=sf(s,h,u,l),{find:y,get:g,json:v}=p,S={find:y,get:g,json:v},D={...e,type:h,subject:o,getFrom:O=>{const C=O.selectorGraph.getRelationEntries({downstreamSelectorKey:u});for(const[j,{source:_}]of C)_!==u&&O.selectorGraph.delete(j,u);return O.selectorAtoms.delete(u),e.get(S,d),Ki(O,D,d),t.logger.info("✨",h,u,"=",d),l.clear(),d},setSelf:()=>{e.set(p,d)},install:O=>Qm(O,e,n)};n&&(D.family=n),s.writableSelectors.set(u,D);const M={key:u,type:h};return n&&(M.family=n),M}function Wm(t,e,n){const s=Ae(t),o=new Qe,l=new Set,u=e.key,d="writable_pure_selector";t.logger.info("🔨",d,u,"is being created");const h=sf(s,d,u,l),{find:p,get:y,json:g}=h,v={find:p,get:y,json:g},T={...e,type:d,subject:o,getFrom:M=>{const O=M.selectorGraph.getRelationEntries({downstreamSelectorKey:u});for(const[_,{source:J}]of O)J!==u&&M.selectorGraph.delete(_,u);M.selectorAtoms.delete(u);const C=e.get(v),j=Ki(M,T,C);return t.logger.info("✨",d,u,"=",j),l.clear(),j},setSelf:M=>{e.set(h,M)},install:M=>Wm(M,e,n)};n&&(T.family=n),s.writableSelectors.set(u,T);const D={key:u,type:d};return n&&(D.family=n),D}function C1(t,e){const n="set"in e,s="const"in e;if(s&&n){const l=Qm(t,e,void 0);return t.on.selectorCreation.next(l),l}if(s){const l=Jm(t,e,void 0);return t.on.selectorCreation.next(l),l}if(n){const l=Wm(t,e,void 0);return t.on.selectorCreation.next(l),l}const o=Zm(t,e,void 0);return t.on.selectorCreation.next(o),o}function kM(t,e){const n=Ae(t),{key:s,type:o,family:l}=e;if(!l)t.logger.error("❌",o,s,"Standalone selectors cannot be disposed.");else{n.molecules.get(l.subKey)&&n.moleculeData.delete(l.subKey,l.key);let d;switch(e.type){case"writable_held_selector":n.writableSelectors.delete(s),d={key:l.key,type:"writable_held_selector_family"},lt(t,d).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"writable_pure_selector":n.writableSelectors.delete(s),d={key:l.key,type:"writable_pure_selector_family"},lt(t,d).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"readonly_held_selector":n.readonlySelectors.delete(s),d={key:l.key,type:"readonly_held_selector_family"},lt(t,d).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"readonly_pure_selector":n.readonlySelectors.delete(s),d={key:l.key,type:"readonly_pure_selector_family"},lt(t,d).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break}n.valueMap.delete(s),n.selectorAtoms.delete(s),n.selectorGraph.delete(s),n.moleculeData.delete(l.key,l.subKey),t.logger.info("🔥",e.type,s,"deleted"),Qt(n)&&n.transactionMeta.phase==="building"?n.transactionMeta.update.subEvents.push({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()}):t.on.selectorDisposal.next(e)}}function mo(t,e,n){const s=e.key,o="readonly_pure_selector_family",l={key:s,type:o},u=t.families.get(s);u&&t.logger.error("❗",o,s,`Overwriting an existing ${Bs[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const d=new Qe,p=Object.assign(y=>{const g=Ge(y),v={key:s,subKey:g},S=`${s}(${g})`,x=Ae(t);return Zm(x,{key:S,get:e.get(y)},v)},l,{internalRoles:n,subject:d,install:y=>mo(y,e),default:y=>e.get(y)({get:((...v)=>Wt(t,...v)),find:((...v)=>Xi(t,...v)),json:v=>vr(t,v)})});return t.families.set(s,p),l}function ey(t,e,n){const s={key:e.key,type:"atom_family"},o=t.families.get(e.key);o&&t.logger.error("❗","atom_family",e.key,`Overwriting an existing ${Bs[o.type]} "${o.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const l=new Qe,d=Object.assign(h=>{const p=Ge(h),y={key:e.key,subKey:p},g=`${e.key}(${p})`,v=Ae(t),S=e.default,x={key:g,default:al(S)?()=>S(h):S};return e.effects&&(x.effects=e.effects(h)),of(v,x,y)},s,{default:e.default,subject:l,install:h=>ey(h,e),internalRoles:n});return t.families.set(e.key,d),al(e.default)===!1&&t.defaults.set(e.key,e.default),s}function D1(t,e,n){const s=e.key,o="readonly_held_selector_family",l={key:s,type:o},u=t.families.get(s);u&&t.logger.error("❗",o,s,`Overwriting an existing ${Bs[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const d=new Qe,p=Object.assign(y=>{const g=Ge(y),v={key:s,subKey:g},S=`${s}(${g})`,x=Ae(t);return Jm(x,{key:S,const:e.const(y),get:e.get(y)},v)},l,{internalRoles:n,subject:d,install:y=>D1(y,e),default:e.const});return t.families.set(s,p),l}function N1(t,e,n){const s=e.key,o="writable_held_selector_family",l={key:s,type:o},u=t.families.get(s);u&&t.logger.error("❗",o,s,`Overwriting an existing ${Bs[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const d=new Qe,p=Object.assign(y=>{const g=Ge(y),v={key:s,subKey:g},S=`${s}(${g})`,x=Ae(t);return Qm(x,{key:S,const:e.const(y),get:e.get(y),set:e.set(y)},v)},l,{internalRoles:n,subject:d,install:y=>N1(y,e),default:e.const});return t.families.set(s,p),l}function ty(t,e,n){const s=e.key,o="writable_pure_selector_family",l={key:s,type:o},u=t.families.get(s);u&&t.logger.error("❗",o,s,`Overwriting an existing ${Bs[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const d=new Qe,p=Object.assign(y=>{const g=Ge(y),v={key:s,subKey:g},S=`${s}(${g})`,x=Ae(t);return Wm(x,{key:S,get:e.get(y),set:e.set(y)},v)},l,{internalRoles:n,subject:d,install:y=>ty(y,e),default:y=>e.get(y)({get:((...v)=>Wt(t,...v)),find:((...v)=>Xi(t,...v)),json:v=>vr(t,v)})});return t.families.set(s,p),l}function MM(t,e){const n="set"in e,s="const"in e;return s&&n?N1(t,e,void 0):s?D1(t,e,void 0):n?ty(t,e):mo(t,e)}function ul(t,e,n){const s=Ge(n),o=`${e.key}(${s})`,l=Ae(t);let u;switch(e.type){case"atom_family":case"mutable_atom_family":u=l.atoms.get(o);break;case"writable_held_selector_family":case"writable_pure_selector_family":u=l.writableSelectors.get(o);break;case"readonly_held_selector_family":case"readonly_pure_selector_family":u=l.readonlySelectors.get(o);break}return u&&Cs(u)}function Xi(t,e,n){const s=lt(t,e),o=ul(t,e,n);return o||cl(t,s,n)}function rf(t,...e){let n;if(e.length===1)n=e[0];else{const s=e[0],o=e[1];n=Xi(t,s,o)}try{lt(t,n)}catch{t.logger.error("❌",n.type,n.key,`could not be disposed because it was not found in the store "${t.config.name}".`);return}switch(n.type){case"atom":case"mutable_atom":ry(t,n);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":kM(t,n);break}}function ny(t,...e){let n,s,o,l,u;if(e.length===1){if(u=e[0],"family"in u){const p=Hm(t,u);if(o=lt(t,p),l=js(u.family.subKey),n=ul(t,p,l),"counterfeit"in u)return{token:u,family:o,subKey:l,isNew:!1};n?u=n:(s=cl(t,p,l,ll),u=s)}}else o=lt(t,e[0]),l=e[1],n=ul(t,o,l),n?u=n:(s=cl(t,o,l,ll),u=s);const d="counterfeit"in u;if(!!s&&d===!1&&o){const p={type:"state_creation",subType:"readable",token:u,timestamp:Date.now()};o.subject.next(p);const g=Ae(t);if(u.family)if(fi(g))switch(u.type){case"atom":case"mutable_atom":t.on.atomCreation.next(u);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":t.on.selectorCreation.next(u);break}else Qt(g)&&g.on.transactionApplying.state===null&&g.transactionMeta.update.subEvents.push(p)}return{token:u,family:o,subKey:l,isNew:!!s}}function Wt(t,...e){const{token:n,family:s,subKey:o}=ny(t,...e);if("counterfeit"in n&&s&&o)return g1(t,n,s,o);const l=lt(t,n);return br(t,l)}const fS=(t,e,n)=>n.subject.subscribe(`${e.type}:${e.key}`,s=>{t.logger.info("📢",e.type,e.key,"root",n.key,"went",s.oldValue,"->",s.newValue);const o=iM(t,e),l=br(t,e);t.logger.info("✨",e.type,e.key,"went",o,"->",l),e.subject.next({newValue:l,oldValue:o})});function Mo(t,e,n,s){function o(g){if(t.operation.open){const v=t.on.operationClose.subscribe(`state subscription ${n}`,()=>{v(),s(g)})}else s(g)}ny(t,e);const l=lt(t,e);t.logger.info("👀",l.type,l.key,`Adding subscription "${n}"`);const u=l.type==="writable_pure_selector"||l.type==="readonly_pure_selector",d=new Map;let h=o;if(u){br(t,l);for(const[g,v]of Mu(t,l.key))d.set(g,fS(t,l,v));h=function(v){const S=Mu(t,l.key);for(const[x,T]of d)S.get(x)?S.delete(x):(T(),d.delete(x));for(const[x,T]of S)d.set(x,fS(t,l,T));o(v)}}const p=l.subject.subscribe(n,h);return()=>{t.logger.info("🙈",l.type,l.key,`Removing subscription "${n}"`),p();for(const g of d.values())g()}}function lt(t,e){let n,s=t;for(;s!==null;){switch(e.type){case"atom":case"mutable_atom":n=s.atoms.get(e.key);break;case"writable_pure_selector":case"writable_held_selector":n=s.writableSelectors.get(e.key);break;case"readonly_pure_selector":case"readonly_held_selector":n=s.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":n=s.families.get(e.key);break;case"timeline":n=s.timelines.get(e.key);break;case"transaction":n=s.transactions.get(e.key);break}if(n)return n;s=s.child}throw new T1(e,t)}const $1=(t,e,n,s)=>{const o=lt(t,e);t.logger.info("👀","timeline",e.key,`Adding subscription "${n}"`);const l=o.subject.subscribe(n,s);return()=>{t.logger.info("🙈","timeline",e.key,`Removing subscription "${n}" from timeline`),l()}},j1=(t,e,n,s)=>{const o=lt(t,e);t.logger.info("👀","transaction",e.key,`Adding subscription "${n}"`);const l=o.subject.subscribe(n,s);return()=>{t.logger.info("🙈","transaction",e.key,`Removing subscription "${n}"`),l()}};function CM(t,e,n,s=tf()){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 Mo(t,e,s,n);case"transaction":return j1(t,e,s,n);case"timeline":return $1(t,e,s,n)}}var iy=class{initializeSignalAtom(t,e){const n=`*${t.key}`;e.atoms.delete(n),e.valueMap.delete(n);const s=t.family?{key:`*${t.family.key}`,subKey:t.family.subKey}:void 0,o=of(e,{key:n,default:null},s,["tracker:signal"]);if(e.parent?.valueMap.has(n)){const l=e.parent.valueMap.get(n);e.valueMap.set(n,l)}return o}unsubscribeFromInnerValue;unsubscribeFromState;captureSignalsFromCore(t,e,n){const s=t.key,o=n.config.name,l=Qt(n)?n.transactionMeta.update.token.key:"main",u=`tracker:${o}:${l}:${s}`,d=p=>{mt(n,e,p)},h=Wt(n,t);this.unsubscribeFromInnerValue=h.subscribe(u,d),this.unsubscribeFromState=Mo(n,t,u,(function(y){y.newValue!==y.oldValue&&(this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=y.newValue.subscribe(u,d))}).bind(this))}supplySignalsToCore(t,e,n){const s=`tracker:${n.config.name}:${Qt(n)?n.transactionMeta.update.token.key:"main"}:${t.key}`;Mo(n,e,s,function({newValue:l,oldValue:u}){const d=n.timelineTopics.getRelatedKey(e.key);if(d&&n.timelines.get(d)?.timeTraveling){const g=$1(n,{key:d,type:"timeline"},s,function(S){g(),mt(n,t,x=>(S==="redo"&&l?x.do(l):S==="undo"&&u&&x.undo(u),x))});return}const h=Wt(n,t),p=h.getUpdateNumber(l),y=p-h.cacheUpdateNumber;if(l&&y===1)mt(n,t,g=>(g.do(l),g));else{const g=h.cacheUpdateNumber+1;n.logger.info("❌","mutable_atom",t.key,"could not be updated. Expected update number",g,"but got",p)}})}mutableAtomToken;latestSignalToken;[Symbol.dispose];constructor(t,e){const n=Ae(e),s=this.initializeSignalAtom(t,n);this.mutableAtomToken=t,this.latestSignalToken=s,this.captureSignalsFromCore(t,s,n),this.supplySignalsToCore(t,s,n),n.trackers.set(t.key,this),this[Symbol.dispose]=()=>{this.unsubscribeFromInnerValue(),this.unsubscribeFromState(),n.trackers.delete(t.key)}}};function sy(t,e,n){t.logger.info("🔨","atom",e.key,`creating in store "${t.config.name}"`);const s=Ae(t),{key:o}=e,l=s.atoms.get(o),u="mutable_atom";if(l&&l.type===u)return t.logger.error("❌",u,o,"Tried to create atom, but it already exists in the store."),Cs(l);const d=new Qe,h={...e,type:u,install:y=>(y.logger.info("🛠️","atom",o,`installing in store "${y.config.name}"`),sy(y,e,n)),subject:d};n&&(h.family=n),s.atoms.set(h.key,h);const p=Cs(h);if(e.effects){let y=0;const g=[];for(const v of e.effects){const S=v({resetSelf:()=>{Gm(t,p)},setSelf:x=>{mt(t,p,x)},onSet:x=>Mo(t,p,`effect[${y}]`,x)});S&&g.push(S),++y}h.cleanup=()=>{for(const v of g)v()}}return new iy(p,t),n||C1(t,{key:`${o}:JSON`,get:({get:y})=>y(p).toJSON(),set:({set:y},g)=>{y(p,e.class.fromJSON(g))}}),t.on.atomCreation.next(p),p}var DM=class{trackers=new Map;latestSignalAtoms;mutableAtoms;constructor(t,e){const n=ey(e,{key:`*${t.key}`,default:null},["mutable","updates"]);this.latestSignalAtoms=lt(e,n),this.mutableAtoms=t;const s=o=>{const{type:l,token:u}=o;if(u.family){const d=js(u.family.subKey);switch(l){case"state_creation":this.trackers.set(d,new iy(u,e));break;case"state_disposal":{const h=this.trackers.get(d);h&&(h[Symbol.dispose](),this.trackers.delete(d))}}}};this.mutableAtoms.subject.subscribe(`store=${e.config.name}::tracker-atom-family`,s)}};function B1(t,e,n){const s={key:e.key,type:"mutable_atom_family"},o=t.families.get(e.key);o&&t.logger.error("❗","mutable_atom_family",e.key,`Overwriting an existing ${Bs[o.type]} "${o.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const l=new Qe,d=Object.assign(h=>{const p=Ge(h),y={key:e.key,subKey:p},g=`${e.key}(${p})`,v=Ae(t),S={key:g,class:e.class};return e.effects&&(S.effects=e.effects(h)),sy(v,S,y)},s,{class:e.class,subject:l,install:h=>B1(h,e),internalRoles:n});return t.families.set(e.key,d),ty(t,{key:`${e.key}:JSON`,get:h=>({get:p})=>p(s,h).toJSON(),set:h=>({set:p},y)=>{p(s,h,e.class.fromJSON(y))}},["mutable","json"]),new DM(d,t),s}const dS=(t,e)=>{const n=Ae(e),s=`${t.key}:JSON`;return n.families.get(s)},vr=(t,e)=>{if(e.family){const s=Ae(t),l={key:`${e.family.key}:JSON`,type:"writable_pure_selector_family"},u=lt(s,l),d=js(e.family.subKey);return Xi(t,u,d)}return{type:"writable_pure_selector",key:`${e.key}:JSON`}},L1=t=>{const n={type:"atom",key:`*${t.key}`};return t.family&&(n.family={key:`*${t.family.key}`,subKey:t.family.subKey}),n};function Hh(t){return typeof t=="object"&&t!==null&&"do"in t&&"undo"in t&&"subscribe"in t&&"cacheUpdateNumber"in t&&"getUpdateNumber"in t&&"READONLY_VIEW"in t&&"toJSON"in t}var NM=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 Bi({between:["selectorKey","atomKey"],cardinality:"n:n"});selectorGraph=new Bi({between:["upstreamSelectorKey","downstreamSelectorKey"],cardinality:"n:n"},{makeContentKey:(...t)=>t.sort().join(":")});trackers=new Map;families=new Map;joins=new Map;transactions=new Map;transactionMeta={epoch:new Map,actionContinuities:new Bi({between:["continuity","action"],cardinality:"1:n"})};timelines=new Map;timelineTopics=new Bi({between:["timelineKey","topicKey"],cardinality:"1:n"});disposalTraces=new Qk(100);molecules=new Map;moleculeJoins=new Bi({between:["moleculeKey","joinKey"],cardinality:"n:n"},{makeContentKey:(...t)=>t.sort().join(":")});moleculeGraph=new Bi({between:["upstreamMoleculeKey","downstreamMoleculeKey"],cardinality:"n:n"},{makeContentKey:(...t)=>t.sort().join(":")});moleculeData=new Bi({between:["moleculeKey","stateFamilyKey"],cardinality:"n:n"},{makeContentKey:(...t)=>t.sort().join(":")});miscResources=new Map;on={atomCreation:new Qe,atomDisposal:new Qe,selectorCreation:new Qe,selectorDisposal:new Qe,timelineCreation:new Qe,transactionCreation:new Qe,transactionApplying:new nM(null),operationClose:new Qe,moleculeCreation:new Qe,moleculeDisposal:new Qe};operation={open:!1};config={name:"IMPLICIT_STORE",lifespan:"ephemeral"};loggers=[new Hk("warn",(t,e,n)=>!VM(n))];logger={error:(...t)=>{for(const e of this.loggers)e.error(...t)},info:(...t)=>{for(const e of this.loggers)e.info(...t)},warn:(...t)=>{for(const e of this.loggers)e.warn(...t)}};constructor(t,e=null){if(this.config={...e?.config,...t},e!==null){this.operation={...e?.operation},fi(e)&&(this.transactionMeta={epoch:new Map(e?.transactionMeta.epoch),actionContinuities:new Bi(e?.transactionMeta.actionContinuities.toJSON())});for(const[,s]of e.families)s.internalRoles?.includes("mutable")||s.internalRoles?.includes("join")||s.install(this);const n=new Set;for(const[,s]of e.atoms)if(!n.has(s.key)&&(s.install(this),s.type==="mutable_atom")){const o=vr(e,s),l=L1(s);n.add(o.key),n.add(l.key)}for(const[,s]of e.readonlySelectors)s.install(this);for(const[,s]of e.writableSelectors)n.has(s.key)||s.install(this);for(const[,s]of e.transactions)s.install(this);for(const[,s]of e.timelines)s.install(this)}}};const yt={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new NM({name:"IMPLICIT_STORE",lifespan:"ephemeral"}),globalThis.ATOM_IO_IMPLICIT_STORE}};function of(t,e,n,s){const o="atom",{key:l}=e;t.logger.info("🔨",o,l,"is being created");const u=Ae(t),d=u.atoms.get(l);if(d&&d.type===o)return t.logger.error("❌","atom",l,"Tried to create atom, but it already exists in the store."),Cs(d);const h=new Qe,p={...e,type:o,install:g=>(g.logger.info("🛠️",o,l,`installing in store "${g.config.name}"`),of(g,e,n)),subject:h};n&&(p.family=n),s&&(p.internalRoles=s),u.atoms.set(l,p);const y=Cs(p);if(e.effects){let g=0;const v=[];for(const S of e.effects){const x=S({resetSelf:()=>{Gm(t,y)},setSelf:T=>{mt(t,y,T)},onSet:T=>Mo(t,y,`effect[${g}]`,T)});x&&v.push(x),++g}p.cleanup=()=>{for(const S of v)S()}}return t.on.atomCreation.next(y),y}function ry(t,e){const n=Ae(t),{key:s,family:o}=e,l=lt(n,e);if(!o)t.logger.error("❌","atom",s,"Standalone atoms cannot be disposed.");else{l.cleanup?.();const u=t.valueMap.get(l.key),d=Hm(t,e),p=lt(t,d).subject,y={type:"state_disposal",subType:"atom",token:e,value:u,timestamp:Date.now()};p.next(y);const g=Qt(n);if(n.atoms.delete(s),n.valueMap.delete(s),n.selectorAtoms.delete(s),n.atomsThatAreDefault.delete(s),n.moleculeData.delete(o.key,o.subKey),t.timelineTopics.delete(s),e.type==="mutable_atom"){const v=L1(e);ry(t,v),t.trackers.delete(s)}if(t.logger.info("🔥","atom",s,"deleted"),g&&n.transactionMeta.phase==="building"){const v=n.transactionMeta.update.subEvents.at(-1);v?.type==="molecule_disposal"&&v.values.some(([T])=>T===l.family?.key)||n.transactionMeta.update.subEvents.push(y)}else t.on.atomDisposal.next(e)}}function $M(t,e){return"internalRoles"in t?t.internalRoles.includes(e):!1}function bn(t){return t[0].toUpperCase()+t.slice(1)}var V1=class{toolkit;options;defaultContent;molecules=new Map;relations;states;core;transact(t,e){const n=this.toolkit;this.toolkit=t,e(this),this.toolkit=n}store;realm;[Symbol.dispose](){}constructor(t,e,n=yt.STORE){this.store=n,this.realm=new Gk(n),this.options=t,this.defaultContent=e,this.store.miscResources.set(`join:${t.key}`,this),this.realm.allocate("root",t.key),this.toolkit={get:((...j)=>Wt(n,...j)),set:((...j)=>{mt(n,...j)}),find:((...j)=>Xi(n,...j)),json:j=>vr(n,j)};const s=t.between[0],o=t.between[1],l=B1(n,{key:`${t.key}/relatedKeys`,class:Pm},["join","relations"]);this.core={relatedKeysAtoms:l};const u=({get:j},_)=>j(l,_),d=({set:j},_,J)=>{this.store.molecules.has(Ge(_))||this.realm.allocate(t.key,_),j(l,_,G=>G.add(J)),j(l,J,G=>G.add(_))},h=({set:j},_,J)=>{j(l,_,G=>(G.delete(J),G)),j(l,J,G=>(G.delete(_),G))},p=(j,_,J)=>{const{find:G,get:H,set:ie}=j,oe=G(l,_),fe=H(oe);for(const ge of fe)J.includes(ge)||ie(l,ge,Q=>(Q.delete(_),Q));ie(oe,ge=>(ge.transaction(be=>{be.clear();for(const Q of J){const W=u(j,Q),B=W.has(_);if(this.relations.cardinality==="1:n"){const q=[];for(const z of W){if(z===_)continue;const ee=u(j,z);ee.delete(Q),ee.size===0&&q.push(z)}!B&&W.size>0&&W.clear();for(const z of q){const ee=[Q,z].sort(),A=`"${ee[0]}:${ee[1]}"`;this.molecules.delete(A)}}B||W.add(_),be.add(Q)}return!0}),ge))},y=(j,_,J)=>{const{set:G}=j;G(l,_,H=>(H.transaction(ie=>{for(const oe of J)ie.add(oe);return!0}),H));for(const H of J)G(l,H,ie=>(ie.add(_),ie));return!0},g=(j,_,J)=>{const G=u(j,_);return J?G.has(J):G.size>0},v={getRelatedKeys:j=>u(this.toolkit,j),addRelation:(j,_)=>{this.store.moleculeJoins.set(j,t.key),this.store.moleculeJoins.set(_,t.key),d(this.toolkit,j,_)},deleteRelation:(j,_)=>{h(this.toolkit,j,_)},replaceRelationsSafely:(j,_)=>{p(this.toolkit,j,_)},replaceRelationsUnsafely:(j,_)=>{y(this.toolkit,j,_)},has:(j,_)=>g(this.toolkit,j,_)};let S,x;if(e){x=ey(n,{key:`${t.key}/content`,default:e},["join","content"]);const j=({get:G},H)=>G(x,H),_=({set:G},H,ie)=>{G(x,H,ie)};S=Object.assign(v,{getContent:G=>j(this.toolkit,G),setContent:(G,H)=>{_(this.toolkit,G,H)},deleteContent:G=>{this.realm.deallocate(G)}})}else S=v;const T=new Bi(t,{externalStore:S,isAType:t.isAType,isBType:t.isBType,makeContentKey:(...j)=>{const[_,J]=j,G=j.sort(),H=`${G[0]}:${G[1]}`,ie=n.molecules.get(Ge(_)),oe=n.molecules.get(Ge(J));return ie||this.realm.allocate(t.key,_),oe||this.realm.allocate(t.key,J),this.realm.allocate(_,H,"all"),this.realm.claim(J,H),this.store.moleculeJoins.set(H,t.key),H}}),D=()=>mo(n,{key:`${t.key}/singleRelatedKey`,get:j=>({get:_})=>{const J=_(l,j);for(const G of J)return G;return null}},["join","keys"]),M=()=>mo(n,{key:`${t.key}/multipleRelatedKeys`,get:j=>({get:_})=>{const J=dS(l,n);return _(J,j).members}},["join","keys"]),O=()=>mo(n,{key:`${t.key}/singleRelatedEntry`,get:j=>({get:_})=>{const J=_(l,j);for(const G of J){let H=T.isAType?.(j)?j:void 0,ie=H===void 0?j:void 0;H??=G,ie??=G;const oe=T.makeContentKey(H,ie),fe=_(x,oe);return[G,fe]}return null}},["join","entries"]),C=()=>mo(n,{key:`${t.key}/multipleRelatedEntries`,get:j=>({get:_})=>{const J=dS(l,n);return _(J,j).members.map(H=>{let ie=T.isAType?.(j)?j:void 0,oe=ie===void 0?j:void 0;ie??=H,oe??=H;const fe=T.makeContentKey(ie,oe),ge=_(x,fe);return[H,ge]})}},["join","entries"]);switch(t.cardinality){case"1:1":{const j=D(),_=`${s}KeyOf${bn(o)}`,J=`${o}KeyOf${bn(s)}`,G={[_]:j,[J]:j};let H;if(e){const ie=O(),oe=`${s}EntryOf${bn(o)}`,fe=`${o}EntryOf${bn(s)}`,ge={[oe]:ie,[fe]:ie};H=Object.assign(G,ge)}else H=G;this.relations=T,this.states=H;break}case"1:n":{const j=D(),_=M(),J=`${s}KeyOf${bn(o)}`,G=`${o}KeysOf${bn(s)}`,H={[J]:j,[G]:_};let ie;if(e){const oe=O(),fe=C(),ge=`${s}EntryOf${bn(o)}`,be=`${o}EntriesOf${bn(s)}`,Q={[ge]:oe,[be]:fe};ie=Object.assign(H,Q)}else ie=H;this.relations=T,this.states=ie;break}case"n:n":{const j=M(),_=`${s}KeysOf${bn(o)}`,J=`${o}KeysOf${bn(s)}`,G={[_]:j,[J]:j};let H;if(e){const ie=C(),oe=`${s}EntriesOf${bn(o)}`,fe=`${o}EntriesOf${bn(s)}`,ge={[oe]:ie,[fe]:ie};H=Object.assign(G,ge)}else H=G;this.relations=T,this.states=H}}}};function jM(t,e,n){return t.joins.set(e.key,new V1(e,n,t)),{key:e.key,type:"join",a:e.between[0],b:e.between[1],cardinality:e.cardinality}}function BM(t,e){let n=e.joins.get(t.key);if(n===void 0){const o=yt.STORE.joins.get(t.key);if(o===void 0)throw new Error(`Join "${t.key}" not found in store "${e.config.name}"`);n=new V1(o.options,o.defaultContent,e),e.joins.set(t.key,n)}return n}function LM(t,e){return BM(t,e).core.relatedKeysAtoms}function VM(t){return t.startsWith("🔍 ")}var Fh={exports:{}},Se={};/**
21
+ ${v.trace}`:`No previous disposal trace for ${d} was found.`),n}const p=t.moleculeGraph.getRelationEntries({downstreamMoleculeKey:u.stringKey}).filter(([,{source:v}])=>v!==o).map(([v])=>js(v));s&&l.moleculeGraph.delete(o),l.moleculeGraph.set({upstreamMoleculeKey:h.stringKey,downstreamMoleculeKey:u.stringKey},{source:h.stringKey});const y={type:"molecule_transfer",key:u.key,exclusive:!!s,from:p,to:[h.key],timestamp:Date.now()};return Qt(l)&&l.transactionMeta.phase==="building"&&l.transactionMeta.update.subEvents.push(y),n}function pM(t,e,n){switch(n){case"newValue":A1(t,e);break;case"oldValue":rf(t,e.token);break}}function mM(t,e,n){switch(n){case"newValue":rf(t,e.token);break;case"oldValue":A1(t,e),e.subType==="atom"&&t.valueMap.set(e.token.key,e.value);break}}function A1(t,e){const{token:n}=e;e.subType==="writable"&&e.value?mt(t,n,e.value):Wt(t,n)}function yM(t,e,n){switch(n){case"newValue":Sl(t,e.provenance,e.key);break;case"oldValue":wl(t,e.key);break}}function gM(t,e,n){switch(n){case"newValue":wl(t,e.key);break;case"oldValue":{const s=e.provenance.map(js);Sl(t,s,e.key);for(const[o,l]of e.values){const u=t.families.get(o);if(u){Wt(t,u,e.key);const d=`${o}(${Ge(e.key)})`;t.valueMap.set(d,l)}}}break}}function bM(t,e,n){switch(n){case"newValue":for(const s of e.to)ku(t,s,e.key,e.exclusive?"exclusive":void 0);break;case"oldValue":{let s="exclusive";for(const o of e.from)ku(t,o,e.key,s),s=void 0}break}}function po(t,e,n){const s=n==="newValue"?e.subEvents:[...e.subEvents].reverse();for(const o of s)switch(o.type){case"atom_update":uM(t,o,n);break;case"state_creation":pM(t,o,n);break;case"state_disposal":mM(t,o,n);break;case"molecule_creation":yM(t,o,n);break;case"molecule_disposal":gM(t,o,n);break;case"molecule_transfer":bM(t,o,n);break;case"transaction_outcome":po(t,o,n);break}}function E1(t,e){return t.transactionMeta.actionContinuities.getRelatedKey(e)}function R1(t,e){return t.transactionMeta.epoch.get(e)}function vM(t,e){if(!fi(t))return;const s=E1(t,e);if(s!==void 0)return R1(t,s)}function Ym(t,e,n){fi(t)&&e&&t.transactionMeta.epoch.set(e,n)}function SM(t,e,n){if(!fi(t))return;const o=E1(t,e);o!==void 0&&t.transactionMeta.epoch.set(o,n)}function wM(t,e){const n=Ae(t),{parent:s}=n;if(s===null||!Qt(n)||n.transactionMeta?.phase!=="building"){t.logger.warn("🐞","transaction","???","applyTransaction called outside of a transaction. This is probably a bug in AtomIO.");return}n.transactionMeta.phase="applying",n.transactionMeta.update.output=e,s.child=null,s.on.transactionApplying.next(n.transactionMeta);const{subEvents:o}=n.transactionMeta.update;t.logger.info("🛄","transaction",n.transactionMeta.update.token.key,`applying ${o.length} subEvents:`,o),po(s,n.transactionMeta.update,"newValue"),fi(s)?(SM(s,n.transactionMeta.update.token.key,n.transactionMeta.update.epoch),lt(t,{key:n.transactionMeta.update.token.key,type:"transaction"})?.subject.next(n.transactionMeta.update),t.logger.info("🛬","transaction",n.transactionMeta.update.token.key,"applied")):Qt(s)&&s.transactionMeta.update.subEvents.push(n.transactionMeta.update),s.on.transactionApplying.next(null)}function O1(t,e,n){if(!fi(t))return;const{epoch:o,actionContinuities:l}=t.transactionMeta;l.set(e,n),o.has(e)||o.set(e,-1)}function xM(t){return{store:t}}const TM=(t,e,n,s)=>{const o=Ae(t),l={parent:o,child:null,on:o.on,loggers:o.loggers,logger:o.logger,config:o.config,atoms:new In(o.atoms),atomsThatAreDefault:new Set(o.atomsThatAreDefault),families:new In(o.families),joins:new In(o.joins),operation:{open:!1},readonlySelectors:new In(o.readonlySelectors),timelines:new In(o.timelines),timelineTopics:o.timelineTopics.overlay(),trackers:new Map,transactions:new In(o.transactions),selectorAtoms:o.selectorAtoms.overlay(),selectorGraph:o.selectorGraph.overlay(),writableSelectors:new In(o.writableSelectors),valueMap:new In(o.valueMap),defaults:o.defaults,disposalTraces:t.disposalTraces.copy(),molecules:new In(o.molecules),moleculeGraph:o.moleculeGraph.overlay(),moleculeData:o.moleculeData.overlay(),moleculeJoins:o.moleculeJoins.overlay(),miscResources:new In(o.miscResources)},u=vM(t,e.key),d={phase:"building",update:{type:"transaction_outcome",token:e,id:s,epoch:u===void 0?NaN:u+1,timestamp:Date.now(),subEvents:[],params:n,output:void 0},toolkit:{get:((...p)=>Wt(h,...p)),set:((...p)=>{mt(h,...p)}),reset:((...p)=>{Gm(h,...p)}),run:(p,y=tf())=>Fm(h,p,y),find:((...p)=>Xi(t,...p)),json:p=>vr(h,p),dispose:((...p)=>{rf(h,...p)}),env:()=>xM(h)}},h=Object.assign(l,{transactionMeta:d});return o.child=h,t.logger.info("🛫","transaction",e.key,"building with params:",n),h};function _1(t,e){const{key:n}=e,s=t.transactions.has(n),o={key:n,type:"transaction",run:(d,h)=>{const p=Cs(o),y=TM(t,p,d,h);try{const g=Ae(t),{toolkit:v}=y.transactionMeta,S=e.do(v,...d);return wM(g,S),S}catch(g){throw oM(l),t.logger.warn("💥","transaction",n,"caught:",g),g}},install:d=>_1(d,e),subject:new Qe},l=Ae(t);l.transactions.set(n,o);const u=Cs(o);return s||t.on.transactionCreation.next(u),u}function k1(t,e,{oldValue:n,newValue:s},o,l){const u=Cs(e);if(o&&l){e.subject.next({newValue:s});const g={write:!0,type:"state_creation",subType:"writable",token:u,timestamp:Date.now(),value:s};t.operation.subEvents.push(g),l.subject.next(g);const S=Ae(t);if(u.family)if(fi(S))switch(u.type){case"atom":case"mutable_atom":t.on.atomCreation.next(u);break;case"writable_pure_selector":case"writable_held_selector":t.on.selectorCreation.next(u);break}else Qt(S)&&S.on.transactionApplying.state===null&&S.transactionMeta.update.subEvents.push(g);return}const{key:d,subject:h,type:p}=e,y={oldValue:Hh(n)?n.READONLY_VIEW:n,newValue:Hh(s)?s.READONLY_VIEW:s};if(fi(t)){switch(p){case"mutable_atom":t.logger.info("📢",p,d,"is now (",s,") subscribers:",h.subscribers.keys());break;case"atom":case"writable_pure_selector":case"writable_held_selector":t.logger.info("📢",p,d,"went (",n,"->",s,") subscribers:",h.subscribers.keys())}h.next(y)}if(Qt(t)&&(p==="mutable_atom"||p==="atom")){if(t.on.transactionApplying.state===null){if(Hh(s))return;const{timestamp:g}=t.operation,v={type:"atom_update",token:u,timestamp:g,update:y};t.transactionMeta.update.subEvents.push(v),t.logger.info("📁","atom",d,"stowed (",n,"->",s,")");return}if($M(e,"tracker:signal")){const g=d.slice(1),v=t.atoms.get(g);br(t,v,"mut").do(y.newValue)===null===!0&&Im(t,v)}}}const Vp=Symbol("OWN_OP"),AM=Symbol("JOIN_OP");function Xm(t,e,...n){let s,o,l,u,d,h;n.length===2?(l=n[0],h=n[1],"family"in l&&(u=Hm(t,l),d=js(l.family.subKey),s=ul(t,u,d),s?l=s:l=o=cl(t,u,d,ll))):(u=lt(t,n[0]),d=n[1],h=n[2],s=ul(t,u,d),s?l=s:l=o=cl(t,u,d,ll));const p=h===_u?"reset":"set";let y;if(e===Vp){const x=b1(t,l);if(typeof x=="number"){const D=x,M=t.on.operationClose.subscribe(`waiting to ${p} "${l.key}" at T-${D}`,function(){M(),t.logger.info("🟢",l.type,l.key,"resuming deferred",p,`from T-${D}`),Xm(t,e,l,h)});return}y=x}else y=t;if("counterfeit"in l&&"family"in l){const x=l.family.subKey,T=t.disposalTraces.buffer.find(D=>D?.key===x);t.logger.error("❌",l.type,l.key,"could not be",p,"because key",x,"is not allocated.",T?`this key was previously disposed:${T.trace}`:"(no previous disposal trace found)");return}const g=lt(y,l);let v;h===_u?v=aM(y,g):v=cM(y,g,h),k1(y,g,v,!!o,u),e===Vp&&v1(y)}const M1=(t,e)=>Ae(t).atoms.has(e),EM=(t,e)=>Ae(t).writableSelectors.has(e),RM=(t,e)=>Ae(t).readonlySelectors.has(e),OM=(t,e)=>M1(t,e)||EM(t,e)||RM(t,e);function uS(t,e){return Ae(t).selectorGraph.getRelationEntries({downstreamSelectorKey:e}).filter(([s,{source:o}])=>o!==e).map(([s,{source:o}])=>o).filter(s=>OM(t,s))}function Mu(t,e,n=new Set){const s=uS(t,e),o=new Map;for(;s.length>0;){const l=s.pop();if(!n.has(l))if(n.add(l),M1(t,l)){const u=t.atoms.get(l);o.set(u.key,u)}else s.push(...uS(t,l))}return o}function _M(t,e,n,s,o){const l=Ae(t),{type:u,key:d}=s;if(u==="atom"||u==="mutable_atom")l.selectorAtoms.set({selectorKey:n,atomKey:d}),t.logger.info("🔍",e,n,`discovers root atom "${d}"`);else{const h=Mu(t,d,o);t.logger.info("🔍",e,n,`discovers root atoms: [ ${[...h.values()].map(p=>`"${p.key}"`).join(", ")} ]`);for(const{key:p}of h.values())l.selectorAtoms=l.selectorAtoms.set({selectorKey:n,atomKey:p})}o.add(d)}function sf(t,e,n,s){return{get:(...o)=>{const l=Ae(t),{token:u,family:d,subKey:h}=ny(t,...o);let p;if("counterfeit"in u&&d&&h)p=g1(t,u,d,h);else{const y=lt(t,u);p=br(t,y)}return t.logger.info("🔌",e,n,`registers dependency ( "${u.key}" =`,p,")"),l.selectorGraph.set({upstreamSelectorKey:u.key,downstreamSelectorKey:n},{source:u.key}),_M(t,e,n,u,s),p},set:((...o)=>{const l=Ae(t);Xm(l,AM,...o)}),find:((...o)=>Xi(t,...o)),json:o=>vr(t,o)}}function Jm(t,e,n){const s=Ae(t),o=new Qe,l=new Set,{key:u,const:d}=e,h="readonly_held_selector";t.logger.info("🔨",h,u,"is being created");const{get:p,find:y,json:g}=sf(s,h,u,l),S={...e,type:h,subject:o,getFrom:T=>{const D=T.selectorGraph.getRelationEntries({downstreamSelectorKey:u});for(const[M,{source:O}]of D)O!==u&&T.selectorGraph.delete(M,u);return T.selectorAtoms.delete(u),e.get({get:p,find:y,json:g},d),Ki(T,S,d),t.logger.info("✨",h,u,"=",d),l.clear(),d},install:T=>Jm(T,e,n)};n&&(S.family=n),s.readonlySelectors.set(u,S);const x={key:u,type:h};return n&&(x.family=n),x}function Zm(t,e,n){const s=Ae(t),o=new Qe,l=new Set,u=e.key,d="readonly_pure_selector";t.logger.info("🔨",d,u,"is being created");const{get:h,find:p,json:y}=sf(s,d,u,l),v={...e,type:d,subject:o,getFrom:()=>{const x=Ae(t),T=x.selectorGraph.getRelationEntries({downstreamSelectorKey:u});for(const[O,{source:C}]of T)C!==u&&x.selectorGraph.delete(O,u);x.selectorAtoms.delete(u);const D=e.get({get:h,find:p,json:y}),M=Ki(x,v,D);return t.logger.info("✨",d,u,"=",M),l.clear(),M},install:x=>Zm(x,e,n)};n&&(v.family=n),s.readonlySelectors.set(u,v);const S={key:u,type:d};return n&&(S.family=n),S}function Qm(t,e,n){const s=Ae(t),o=new Qe,l=new Set,{key:u,const:d}=e,h="writable_held_selector";t.logger.info("🔨",h,u,"is being created");const p=sf(s,h,u,l),{find:y,get:g,json:v}=p,S={find:y,get:g,json:v},D={...e,type:h,subject:o,getFrom:O=>{const C=O.selectorGraph.getRelationEntries({downstreamSelectorKey:u});for(const[j,{source:_}]of C)_!==u&&O.selectorGraph.delete(j,u);return O.selectorAtoms.delete(u),e.get(S,d),Ki(O,D,d),t.logger.info("✨",h,u,"=",d),l.clear(),d},setSelf:()=>{e.set(p,d)},install:O=>Qm(O,e,n)};n&&(D.family=n),s.writableSelectors.set(u,D);const M={key:u,type:h};return n&&(M.family=n),M}function Wm(t,e,n){const s=Ae(t),o=new Qe,l=new Set,u=e.key,d="writable_pure_selector";t.logger.info("🔨",d,u,"is being created");const h=sf(s,d,u,l),{find:p,get:y,json:g}=h,v={find:p,get:y,json:g},T={...e,type:d,subject:o,getFrom:M=>{const O=M.selectorGraph.getRelationEntries({downstreamSelectorKey:u});for(const[_,{source:J}]of O)J!==u&&M.selectorGraph.delete(_,u);M.selectorAtoms.delete(u);const C=e.get(v),j=Ki(M,T,C);return t.logger.info("✨",d,u,"=",j),l.clear(),j},setSelf:M=>{e.set(h,M)},install:M=>Wm(M,e,n)};n&&(T.family=n),s.writableSelectors.set(u,T);const D={key:u,type:d};return n&&(D.family=n),D}function C1(t,e){const n="set"in e,s="const"in e;if(s&&n){const l=Qm(t,e,void 0);return t.on.selectorCreation.next(l),l}if(s){const l=Jm(t,e,void 0);return t.on.selectorCreation.next(l),l}if(n){const l=Wm(t,e,void 0);return t.on.selectorCreation.next(l),l}const o=Zm(t,e,void 0);return t.on.selectorCreation.next(o),o}function kM(t,e){const n=Ae(t),{key:s,type:o,family:l}=e;if(!l)t.logger.error("❌",o,s,"Standalone selectors cannot be disposed.");else{n.molecules.get(l.subKey)&&n.moleculeData.delete(l.subKey,l.key);let d;switch(e.type){case"writable_held_selector":n.writableSelectors.delete(s),d={key:l.key,type:"writable_held_selector_family"},lt(t,d).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"writable_pure_selector":n.writableSelectors.delete(s),d={key:l.key,type:"writable_pure_selector_family"},lt(t,d).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"readonly_held_selector":n.readonlySelectors.delete(s),d={key:l.key,type:"readonly_held_selector_family"},lt(t,d).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"readonly_pure_selector":n.readonlySelectors.delete(s),d={key:l.key,type:"readonly_pure_selector_family"},lt(t,d).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break}n.valueMap.delete(s),n.selectorAtoms.delete(s),n.selectorGraph.delete(s),n.moleculeData.delete(l.key,l.subKey),t.logger.info("🔥",e.type,s,"deleted"),Qt(n)&&n.transactionMeta.phase==="building"?n.transactionMeta.update.subEvents.push({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()}):t.on.selectorDisposal.next(e)}}function mo(t,e,n){const s=e.key,o="readonly_pure_selector_family",l={key:s,type:o},u=t.families.get(s);u&&t.logger.error("❗",o,s,`Overwriting an existing ${Bs[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const d=new Qe,p=Object.assign(y=>{const g=Ge(y),v={key:s,subKey:g},S=`${s}(${g})`,x=Ae(t);return Zm(x,{key:S,get:e.get(y)},v)},l,{internalRoles:n,subject:d,install:y=>mo(y,e),default:y=>e.get(y)({get:((...v)=>Wt(t,...v)),find:((...v)=>Xi(t,...v)),json:v=>vr(t,v)})});return t.families.set(s,p),l}function ey(t,e,n){const s={key:e.key,type:"atom_family"},o=t.families.get(e.key);o&&t.logger.error("❗","atom_family",e.key,`Overwriting an existing ${Bs[o.type]} "${o.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const l=new Qe,d=Object.assign(h=>{const p=Ge(h),y={key:e.key,subKey:p},g=`${e.key}(${p})`,v=Ae(t),S=e.default,x={key:g,default:al(S)?()=>S(h):S};return e.effects&&(x.effects=e.effects(h)),of(v,x,y)},s,{default:e.default,subject:l,install:h=>ey(h,e),internalRoles:n});return t.families.set(e.key,d),al(e.default)===!1&&t.defaults.set(e.key,e.default),s}function D1(t,e,n){const s=e.key,o="readonly_held_selector_family",l={key:s,type:o},u=t.families.get(s);u&&t.logger.error("❗",o,s,`Overwriting an existing ${Bs[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const d=new Qe,p=Object.assign(y=>{const g=Ge(y),v={key:s,subKey:g},S=`${s}(${g})`,x=Ae(t);return Jm(x,{key:S,const:e.const(y),get:e.get(y)},v)},l,{internalRoles:n,subject:d,install:y=>D1(y,e),default:e.const});return t.families.set(s,p),l}function N1(t,e,n){const s=e.key,o="writable_held_selector_family",l={key:s,type:o},u=t.families.get(s);u&&t.logger.error("❗",o,s,`Overwriting an existing ${Bs[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const d=new Qe,p=Object.assign(y=>{const g=Ge(y),v={key:s,subKey:g},S=`${s}(${g})`,x=Ae(t);return Qm(x,{key:S,const:e.const(y),get:e.get(y),set:e.set(y)},v)},l,{internalRoles:n,subject:d,install:y=>N1(y,e),default:e.const});return t.families.set(s,p),l}function ty(t,e,n){const s=e.key,o="writable_pure_selector_family",l={key:s,type:o},u=t.families.get(s);u&&t.logger.error("❗",o,s,`Overwriting an existing ${Bs[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const d=new Qe,p=Object.assign(y=>{const g=Ge(y),v={key:s,subKey:g},S=`${s}(${g})`,x=Ae(t);return Wm(x,{key:S,get:e.get(y),set:e.set(y)},v)},l,{internalRoles:n,subject:d,install:y=>ty(y,e),default:y=>e.get(y)({get:((...v)=>Wt(t,...v)),find:((...v)=>Xi(t,...v)),json:v=>vr(t,v)})});return t.families.set(s,p),l}function MM(t,e){const n="set"in e,s="const"in e;return s&&n?N1(t,e,void 0):s?D1(t,e,void 0):n?ty(t,e):mo(t,e)}function ul(t,e,n){const s=Ge(n),o=`${e.key}(${s})`,l=Ae(t);let u;switch(e.type){case"atom_family":case"mutable_atom_family":u=l.atoms.get(o);break;case"writable_held_selector_family":case"writable_pure_selector_family":u=l.writableSelectors.get(o);break;case"readonly_held_selector_family":case"readonly_pure_selector_family":u=l.readonlySelectors.get(o);break}return u&&Cs(u)}function Xi(t,e,n){const s=lt(t,e),o=ul(t,e,n);return o||cl(t,s,n)}function rf(t,...e){let n;if(e.length===1)n=e[0];else{const s=e[0],o=e[1];n=Xi(t,s,o)}try{lt(t,n)}catch{t.logger.error("❌",n.type,n.key,`could not be disposed because it was not found in the store "${t.config.name}".`);return}switch(n.type){case"atom":case"mutable_atom":ry(t,n);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":kM(t,n);break}}function ny(t,...e){let n,s,o,l,u;if(e.length===1){if(u=e[0],"family"in u){const p=Hm(t,u);if(o=lt(t,p),l=js(u.family.subKey),n=ul(t,p,l),"counterfeit"in u)return{token:u,family:o,subKey:l,isNew:!1};n?u=n:(s=cl(t,p,l,ll),u=s)}}else o=lt(t,e[0]),l=e[1],n=ul(t,o,l),n?u=n:(s=cl(t,o,l,ll),u=s);const d="counterfeit"in u;if(!!s&&d===!1&&o){let p;switch(u.type){case"readonly_pure_selector":case"readonly_held_selector":p="readable";break;case"atom":case"mutable_atom":case"writable_pure_selector":case"writable_held_selector":p="writable";break}const y={type:"state_creation",subType:p,token:u,timestamp:Date.now()};o.subject.next(y);const v=Ae(t);if(u.family)if(fi(v))switch(u.type){case"atom":case"mutable_atom":t.on.atomCreation.next(u);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":t.on.selectorCreation.next(u);break}else Qt(v)&&v.on.transactionApplying.state===null&&v.transactionMeta.update.subEvents.push(y)}return{token:u,family:o,subKey:l,isNew:!!s}}function Wt(t,...e){const{token:n,family:s,subKey:o}=ny(t,...e);if("counterfeit"in n&&s&&o)return g1(t,n,s,o);const l=lt(t,n);return br(t,l)}const fS=(t,e,n)=>n.subject.subscribe(`${e.type}:${e.key}`,s=>{t.logger.info("📢",e.type,e.key,"root",n.key,"went",s.oldValue,"->",s.newValue);const o=iM(t,e),l=br(t,e);t.logger.info("✨",e.type,e.key,"went",o,"->",l),e.subject.next({newValue:l,oldValue:o})});function Mo(t,e,n,s){function o(g){if(t.operation.open){const v=t.on.operationClose.subscribe(`state subscription ${n}`,()=>{v(),s(g)})}else s(g)}ny(t,e);const l=lt(t,e);t.logger.info("👀",l.type,l.key,`Adding subscription "${n}"`);const u=l.type==="writable_pure_selector"||l.type==="readonly_pure_selector",d=new Map;let h=o;if(u){br(t,l);for(const[g,v]of Mu(t,l.key))d.set(g,fS(t,l,v));h=function(v){const S=Mu(t,l.key);for(const[x,T]of d)S.get(x)?S.delete(x):(T(),d.delete(x));for(const[x,T]of S)d.set(x,fS(t,l,T));o(v)}}const p=l.subject.subscribe(n,h);return()=>{t.logger.info("🙈",l.type,l.key,`Removing subscription "${n}"`),p();for(const g of d.values())g()}}function lt(t,e){let n,s=t;for(;s!==null;){switch(e.type){case"atom":case"mutable_atom":n=s.atoms.get(e.key);break;case"writable_pure_selector":case"writable_held_selector":n=s.writableSelectors.get(e.key);break;case"readonly_pure_selector":case"readonly_held_selector":n=s.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":n=s.families.get(e.key);break;case"timeline":n=s.timelines.get(e.key);break;case"transaction":n=s.transactions.get(e.key);break}if(n)return n;s=s.child}throw new T1(e,t)}const $1=(t,e,n,s)=>{const o=lt(t,e);t.logger.info("👀","timeline",e.key,`Adding subscription "${n}"`);const l=o.subject.subscribe(n,s);return()=>{t.logger.info("🙈","timeline",e.key,`Removing subscription "${n}" from timeline`),l()}},j1=(t,e,n,s)=>{const o=lt(t,e);t.logger.info("👀","transaction",e.key,`Adding subscription "${n}"`);const l=o.subject.subscribe(n,s);return()=>{t.logger.info("🙈","transaction",e.key,`Removing subscription "${n}"`),l()}};function CM(t,e,n,s=tf()){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 Mo(t,e,s,n);case"transaction":return j1(t,e,s,n);case"timeline":return $1(t,e,s,n)}}var iy=class{initializeSignalAtom(t,e){const n=`*${t.key}`;e.atoms.delete(n),e.valueMap.delete(n);const s=t.family?{key:`*${t.family.key}`,subKey:t.family.subKey}:void 0,o=of(e,{key:n,default:null},s,["tracker:signal"]);if(e.parent?.valueMap.has(n)){const l=e.parent.valueMap.get(n);e.valueMap.set(n,l)}return o}unsubscribeFromInnerValue;unsubscribeFromState;captureSignalsFromCore(t,e,n){const s=t.key,o=n.config.name,l=Qt(n)?n.transactionMeta.update.token.key:"main",u=`tracker:${o}:${l}:${s}`,d=p=>{mt(n,e,p)},h=Wt(n,t);this.unsubscribeFromInnerValue=h.subscribe(u,d),this.unsubscribeFromState=Mo(n,t,u,(function(y){y.newValue!==y.oldValue&&(this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=y.newValue.subscribe(u,d))}).bind(this))}supplySignalsToCore(t,e,n){const s=`tracker:${n.config.name}:${Qt(n)?n.transactionMeta.update.token.key:"main"}:${t.key}`;Mo(n,e,s,function({newValue:l,oldValue:u}){const d=n.timelineTopics.getRelatedKey(e.key);if(d&&n.timelines.get(d)?.timeTraveling){const g=$1(n,{key:d,type:"timeline"},s,function(S){g(),mt(n,t,x=>(S==="redo"&&l?x.do(l):S==="undo"&&u&&x.undo(u),x))});return}const h=Wt(n,t),p=h.getUpdateNumber(l),y=p-h.cacheUpdateNumber;if(l&&y===1)mt(n,t,g=>(g.do(l),g));else{const g=h.cacheUpdateNumber+1;n.logger.info("❌","mutable_atom",t.key,"could not be updated. Expected update number",g,"but got",p)}})}mutableAtomToken;latestSignalToken;[Symbol.dispose];constructor(t,e){const n=Ae(e),s=this.initializeSignalAtom(t,n);this.mutableAtomToken=t,this.latestSignalToken=s,this.captureSignalsFromCore(t,s,n),this.supplySignalsToCore(t,s,n),n.trackers.set(t.key,this),this[Symbol.dispose]=()=>{this.unsubscribeFromInnerValue(),this.unsubscribeFromState(),n.trackers.delete(t.key)}}};function sy(t,e,n){t.logger.info("🔨","atom",e.key,`creating in store "${t.config.name}"`);const s=Ae(t),{key:o}=e,l=s.atoms.get(o),u="mutable_atom";if(l&&l.type===u)return t.logger.error("❌",u,o,"Tried to create atom, but it already exists in the store."),Cs(l);const d=new Qe,h={...e,type:u,install:y=>(y.logger.info("🛠️","atom",o,`installing in store "${y.config.name}"`),sy(y,e,n)),subject:d};n&&(h.family=n),s.atoms.set(h.key,h);const p=Cs(h);if(e.effects){let y=0;const g=[];for(const v of e.effects){const S=v({resetSelf:()=>{Gm(t,p)},setSelf:x=>{mt(t,p,x)},onSet:x=>Mo(t,p,`effect[${y}]`,x)});S&&g.push(S),++y}h.cleanup=()=>{for(const v of g)v()}}return new iy(p,t),n||C1(t,{key:`${o}:JSON`,get:({get:y})=>y(p).toJSON(),set:({set:y},g)=>{y(p,e.class.fromJSON(g))}}),t.on.atomCreation.next(p),p}var DM=class{trackers=new Map;latestSignalAtoms;mutableAtoms;constructor(t,e){const n=ey(e,{key:`*${t.key}`,default:null},["mutable","updates"]);this.latestSignalAtoms=lt(e,n),this.mutableAtoms=t;const s=o=>{const{type:l,token:u}=o;if(u.family){const d=js(u.family.subKey);switch(l){case"state_creation":this.trackers.set(d,new iy(u,e));break;case"state_disposal":{const h=this.trackers.get(d);h&&(h[Symbol.dispose](),this.trackers.delete(d))}}}};this.mutableAtoms.subject.subscribe(`store=${e.config.name}::tracker-atom-family`,s)}};function B1(t,e,n){const s={key:e.key,type:"mutable_atom_family"},o=t.families.get(e.key);o&&t.logger.error("❗","mutable_atom_family",e.key,`Overwriting an existing ${Bs[o.type]} "${o.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const l=new Qe,d=Object.assign(h=>{const p=Ge(h),y={key:e.key,subKey:p},g=`${e.key}(${p})`,v=Ae(t),S={key:g,class:e.class};return e.effects&&(S.effects=e.effects(h)),sy(v,S,y)},s,{class:e.class,subject:l,install:h=>B1(h,e),internalRoles:n});return t.families.set(e.key,d),ty(t,{key:`${e.key}:JSON`,get:h=>({get:p})=>p(s,h).toJSON(),set:h=>({set:p},y)=>{p(s,h,e.class.fromJSON(y))}},["mutable","json"]),new DM(d,t),s}const dS=(t,e)=>{const n=Ae(e),s=`${t.key}:JSON`;return n.families.get(s)},vr=(t,e)=>{if(e.family){const s=Ae(t),l={key:`${e.family.key}:JSON`,type:"writable_pure_selector_family"},u=lt(s,l),d=js(e.family.subKey);return Xi(t,u,d)}return{type:"writable_pure_selector",key:`${e.key}:JSON`}},L1=t=>{const n={type:"atom",key:`*${t.key}`};return t.family&&(n.family={key:`*${t.family.key}`,subKey:t.family.subKey}),n};function Hh(t){return typeof t=="object"&&t!==null&&"do"in t&&"undo"in t&&"subscribe"in t&&"cacheUpdateNumber"in t&&"getUpdateNumber"in t&&"READONLY_VIEW"in t&&"toJSON"in t}var NM=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 Bi({between:["selectorKey","atomKey"],cardinality:"n:n"});selectorGraph=new Bi({between:["upstreamSelectorKey","downstreamSelectorKey"],cardinality:"n:n"},{makeContentKey:(...t)=>t.sort().join(":")});trackers=new Map;families=new Map;joins=new Map;transactions=new Map;transactionMeta={epoch:new Map,actionContinuities:new Bi({between:["continuity","action"],cardinality:"1:n"})};timelines=new Map;timelineTopics=new Bi({between:["timelineKey","topicKey"],cardinality:"1:n"});disposalTraces=new Qk(100);molecules=new Map;moleculeJoins=new Bi({between:["moleculeKey","joinKey"],cardinality:"n:n"},{makeContentKey:(...t)=>t.sort().join(":")});moleculeGraph=new Bi({between:["upstreamMoleculeKey","downstreamMoleculeKey"],cardinality:"n:n"},{makeContentKey:(...t)=>t.sort().join(":")});moleculeData=new Bi({between:["moleculeKey","stateFamilyKey"],cardinality:"n:n"},{makeContentKey:(...t)=>t.sort().join(":")});miscResources=new Map;on={atomCreation:new Qe,atomDisposal:new Qe,selectorCreation:new Qe,selectorDisposal:new Qe,timelineCreation:new Qe,transactionCreation:new Qe,transactionApplying:new nM(null),operationClose:new Qe,moleculeCreation:new Qe,moleculeDisposal:new Qe};operation={open:!1};config={name:"IMPLICIT_STORE",lifespan:"ephemeral"};loggers=[new Hk("warn",(t,e,n)=>!VM(n))];logger={error:(...t)=>{for(const e of this.loggers)e.error(...t)},info:(...t)=>{for(const e of this.loggers)e.info(...t)},warn:(...t)=>{for(const e of this.loggers)e.warn(...t)}};constructor(t,e=null){if(this.config={...e?.config,...t},e!==null){this.operation={...e?.operation},fi(e)&&(this.transactionMeta={epoch:new Map(e?.transactionMeta.epoch),actionContinuities:new Bi(e?.transactionMeta.actionContinuities.toJSON())});for(const[,s]of e.families)s.internalRoles?.includes("mutable")||s.internalRoles?.includes("join")||s.install(this);const n=new Set;for(const[,s]of e.atoms)if(!n.has(s.key)&&(s.install(this),s.type==="mutable_atom")){const o=vr(e,s),l=L1(s);n.add(o.key),n.add(l.key)}for(const[,s]of e.readonlySelectors)s.install(this);for(const[,s]of e.writableSelectors)n.has(s.key)||s.install(this);for(const[,s]of e.transactions)s.install(this);for(const[,s]of e.timelines)s.install(this)}}};const yt={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new NM({name:"IMPLICIT_STORE",lifespan:"ephemeral"}),globalThis.ATOM_IO_IMPLICIT_STORE}};function of(t,e,n,s){const o="atom",{key:l}=e;t.logger.info("🔨",o,l,"is being created");const u=Ae(t),d=u.atoms.get(l);if(d&&d.type===o)return t.logger.error("❌","atom",l,"Tried to create atom, but it already exists in the store."),Cs(d);const h=new Qe,p={...e,type:o,install:g=>(g.logger.info("🛠️",o,l,`installing in store "${g.config.name}"`),of(g,e,n)),subject:h};n&&(p.family=n),s&&(p.internalRoles=s),u.atoms.set(l,p);const y=Cs(p);if(e.effects){let g=0;const v=[];for(const S of e.effects){const x=S({resetSelf:()=>{Gm(t,y)},setSelf:T=>{mt(t,y,T)},onSet:T=>Mo(t,y,`effect[${g}]`,T)});x&&v.push(x),++g}p.cleanup=()=>{for(const S of v)S()}}return t.on.atomCreation.next(y),y}function ry(t,e){const n=Ae(t),{key:s,family:o}=e,l=lt(n,e);if(!o)t.logger.error("❌","atom",s,"Standalone atoms cannot be disposed.");else{l.cleanup?.();const u=t.valueMap.get(l.key),d=Hm(t,e),p=lt(t,d).subject,y={type:"state_disposal",subType:"atom",token:e,value:u,timestamp:Date.now()};p.next(y);const g=Qt(n);if(n.atoms.delete(s),n.valueMap.delete(s),n.selectorAtoms.delete(s),n.atomsThatAreDefault.delete(s),n.moleculeData.delete(o.key,o.subKey),t.timelineTopics.delete(s),e.type==="mutable_atom"){const v=L1(e);ry(t,v),t.trackers.delete(s)}if(t.logger.info("🔥","atom",s,"deleted"),g&&n.transactionMeta.phase==="building"){const v=n.transactionMeta.update.subEvents.at(-1);v?.type==="molecule_disposal"&&v.values.some(([T])=>T===l.family?.key)||n.transactionMeta.update.subEvents.push(y)}else t.on.atomDisposal.next(e)}}function $M(t,e){return"internalRoles"in t?t.internalRoles.includes(e):!1}function bn(t){return t[0].toUpperCase()+t.slice(1)}var V1=class{toolkit;options;defaultContent;molecules=new Map;relations;states;core;transact(t,e){const n=this.toolkit;this.toolkit=t,e(this),this.toolkit=n}store;realm;[Symbol.dispose](){}constructor(t,e,n=yt.STORE){this.store=n,this.realm=new Gk(n),this.options=t,this.defaultContent=e,this.store.miscResources.set(`join:${t.key}`,this),this.realm.allocate("root",t.key),this.toolkit={get:((...j)=>Wt(n,...j)),set:((...j)=>{mt(n,...j)}),find:((...j)=>Xi(n,...j)),json:j=>vr(n,j)};const s=t.between[0],o=t.between[1],l=B1(n,{key:`${t.key}/relatedKeys`,class:Pm},["join","relations"]);this.core={relatedKeysAtoms:l};const u=({get:j},_)=>j(l,_),d=({set:j},_,J)=>{this.store.molecules.has(Ge(_))||this.realm.allocate(t.key,_),j(l,_,G=>G.add(J)),j(l,J,G=>G.add(_))},h=({set:j},_,J)=>{j(l,_,G=>(G.delete(J),G)),j(l,J,G=>(G.delete(_),G))},p=(j,_,J)=>{const{find:G,get:H,set:ie}=j,oe=G(l,_),fe=H(oe);for(const ge of fe)J.includes(ge)||ie(l,ge,Q=>(Q.delete(_),Q));ie(oe,ge=>(ge.transaction(be=>{be.clear();for(const Q of J){const W=u(j,Q),B=W.has(_);if(this.relations.cardinality==="1:n"){const q=[];for(const z of W){if(z===_)continue;const ee=u(j,z);ee.delete(Q),ee.size===0&&q.push(z)}!B&&W.size>0&&W.clear();for(const z of q){const ee=[Q,z].sort(),A=`"${ee[0]}:${ee[1]}"`;this.molecules.delete(A)}}B||W.add(_),be.add(Q)}return!0}),ge))},y=(j,_,J)=>{const{set:G}=j;G(l,_,H=>(H.transaction(ie=>{for(const oe of J)ie.add(oe);return!0}),H));for(const H of J)G(l,H,ie=>(ie.add(_),ie));return!0},g=(j,_,J)=>{const G=u(j,_);return J?G.has(J):G.size>0},v={getRelatedKeys:j=>u(this.toolkit,j),addRelation:(j,_)=>{this.store.moleculeJoins.set(j,t.key),this.store.moleculeJoins.set(_,t.key),d(this.toolkit,j,_)},deleteRelation:(j,_)=>{h(this.toolkit,j,_)},replaceRelationsSafely:(j,_)=>{p(this.toolkit,j,_)},replaceRelationsUnsafely:(j,_)=>{y(this.toolkit,j,_)},has:(j,_)=>g(this.toolkit,j,_)};let S,x;if(e){x=ey(n,{key:`${t.key}/content`,default:e},["join","content"]);const j=({get:G},H)=>G(x,H),_=({set:G},H,ie)=>{G(x,H,ie)};S=Object.assign(v,{getContent:G=>j(this.toolkit,G),setContent:(G,H)=>{_(this.toolkit,G,H)},deleteContent:G=>{this.realm.deallocate(G)}})}else S=v;const T=new Bi(t,{externalStore:S,isAType:t.isAType,isBType:t.isBType,makeContentKey:(...j)=>{const[_,J]=j,G=j.sort(),H=`${G[0]}:${G[1]}`,ie=n.molecules.get(Ge(_)),oe=n.molecules.get(Ge(J));return ie||this.realm.allocate(t.key,_),oe||this.realm.allocate(t.key,J),this.realm.allocate(_,H,"all"),this.realm.claim(J,H),this.store.moleculeJoins.set(H,t.key),H}}),D=()=>mo(n,{key:`${t.key}/singleRelatedKey`,get:j=>({get:_})=>{const J=_(l,j);for(const G of J)return G;return null}},["join","keys"]),M=()=>mo(n,{key:`${t.key}/multipleRelatedKeys`,get:j=>({get:_})=>{const J=dS(l,n);return _(J,j).members}},["join","keys"]),O=()=>mo(n,{key:`${t.key}/singleRelatedEntry`,get:j=>({get:_})=>{const J=_(l,j);for(const G of J){let H=T.isAType?.(j)?j:void 0,ie=H===void 0?j:void 0;H??=G,ie??=G;const oe=T.makeContentKey(H,ie),fe=_(x,oe);return[G,fe]}return null}},["join","entries"]),C=()=>mo(n,{key:`${t.key}/multipleRelatedEntries`,get:j=>({get:_})=>{const J=dS(l,n);return _(J,j).members.map(H=>{let ie=T.isAType?.(j)?j:void 0,oe=ie===void 0?j:void 0;ie??=H,oe??=H;const fe=T.makeContentKey(ie,oe),ge=_(x,fe);return[H,ge]})}},["join","entries"]);switch(t.cardinality){case"1:1":{const j=D(),_=`${s}KeyOf${bn(o)}`,J=`${o}KeyOf${bn(s)}`,G={[_]:j,[J]:j};let H;if(e){const ie=O(),oe=`${s}EntryOf${bn(o)}`,fe=`${o}EntryOf${bn(s)}`,ge={[oe]:ie,[fe]:ie};H=Object.assign(G,ge)}else H=G;this.relations=T,this.states=H;break}case"1:n":{const j=D(),_=M(),J=`${s}KeyOf${bn(o)}`,G=`${o}KeysOf${bn(s)}`,H={[J]:j,[G]:_};let ie;if(e){const oe=O(),fe=C(),ge=`${s}EntryOf${bn(o)}`,be=`${o}EntriesOf${bn(s)}`,Q={[ge]:oe,[be]:fe};ie=Object.assign(H,Q)}else ie=H;this.relations=T,this.states=ie;break}case"n:n":{const j=M(),_=`${s}KeysOf${bn(o)}`,J=`${o}KeysOf${bn(s)}`,G={[_]:j,[J]:j};let H;if(e){const ie=C(),oe=`${s}EntriesOf${bn(o)}`,fe=`${o}EntriesOf${bn(s)}`,ge={[oe]:ie,[fe]:ie};H=Object.assign(G,ge)}else H=G;this.relations=T,this.states=H}}}};function jM(t,e,n){return t.joins.set(e.key,new V1(e,n,t)),{key:e.key,type:"join",a:e.between[0],b:e.between[1],cardinality:e.cardinality}}function BM(t,e){let n=e.joins.get(t.key);if(n===void 0){const o=yt.STORE.joins.get(t.key);if(o===void 0)throw new Error(`Join "${t.key}" not found in store "${e.config.name}"`);n=new V1(o.options,o.defaultContent,e),e.joins.set(t.key,n)}return n}function LM(t,e){return BM(t,e).core.relatedKeysAtoms}function VM(t){return t.startsWith("🔍 ")}var Fh={exports:{}},Se={};/**
22
22
  * @license React
23
23
  * react.production.js
24
24
  *
package/app/index.html CHANGED
@@ -5,7 +5,7 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>TEMPEST</title>
8
- <script type="module" crossorigin src="/assets/index-BBnrgliK.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-BOXn8u0C.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-ki_mruCb.css">
10
10
  </head>
11
11
  <body>