tempest.games 0.2.48 → 0.2.49

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,12 @@
1
1
  # tempest.games
2
2
 
3
+ ## 0.2.49
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [9b5a3fa]
8
+ - atom.io@0.40.3
9
+
3
10
  ## 0.2.48
4
11
 
5
12
  ### Patch Changes
@@ -7,7 +7,7 @@ function Lk(t,e){for(var n=0;n<e.length;n++){const r=e[n];if(typeof r!="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 aS;function Uk(){if(aS)return Ha;aS=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(r,o,l){var u=null;if(l!==void 0&&(u=""+l),o.key!==void 0&&(u=""+o.key),"key"in o){l={};for(var f in o)f!=="key"&&(l[f]=o[f])}else l=o;return o=l.ref,{$$typeof:t,type:r,key:u,ref:o!==void 0?o:null,props:l}}return Ha.Fragment=e,Ha.jsx=n,Ha.jsxs=n,Ha}var lS;function zk(){return lS||(lS=1,Ph.exports=Uk()),Ph.exports}var G=zk();function Kk(t){return Object.entries(t)}function Nr(t){return JSON.parse(t)}const Ge=t=>JSON.stringify(t);function ct(t){return of(Bt.STORE,t,void 0)}function p1(t){return sy(Bt.STORE,t,void 0)}function Ze(...t){return ln(Bt.STORE,...t)}function qk(t,e){return jM(Bt.STORE,t,e)}function Pk(t){return LM(t,Bt.STORE)}const $r={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,r,o,...l)=>{console[t](`${e} ${$r[n]} \`${r}\` ${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;deallocateTX;claimTX;constructor(t=Bt.STORE){this.store=t,this.deallocateTX=hM(t),this.claimTX=pM(t),dM("root",t)}allocate(t,e,n){Ym(this.store,t,e,n)}deallocate(t){ef(this.store,this.deallocateTX,Sl())(t)}claim(t,e,n){Ou(this.store,t,e,n)}};function pi(t){return M1(Bt.STORE,t)}function Gk(t){return CM(Bt.STORE,t)}function De(...t){kt(Bt.STORE,...t)}function Yk(t,e,n=Sl()){return DM(Bt.STORE,t,e,n)}function Xk(t){return nf(Bt.STORE,t)}function Jk(t,e=Sl()){return ef(Bt.STORE,t,e)}var Im=class du extends Set{mode="record";subject=new Qe;cacheLimit=0;cache=[];cacheIdx=-1;cacheUpdateNumber=-1;constructor(e,n=0){super(e),e instanceof du&&(this.parent=e,this.cacheUpdateNumber=e.cacheUpdateNumber),n&&(this.cacheLimit=n,this.cache=new Array(n),this.subscribe("auto cache",r=>{this.cacheIdx++,this.cacheIdx%=this.cacheLimit,this.cache[this.cacheIdx]=r}))}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 du(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 du(this);const n=this.child._subscribe("transaction",r=>{this.transactionUpdates?.push(r)});try{if(e(this.child)){for(const o of this.transactionUpdates)this.doStep(o);this.cacheUpdateNumber++,this.emit(`tx:${this.transactionUpdates.join(";")}`)}}catch(r){throw console.warn("Did not apply transaction to SetRTX; this error was thrown:",r),r}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,r=>{n(`${this.cacheUpdateNumber}=${r}`)})}emit(e){this.subject.next(e)}doStep(e){const n=e.indexOf(":"),r=e.substring(0,n),o=e.substring(n+1);switch(r){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("="),r=Number(e.substring(0,n)),o=r-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=r,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=r,null}return"OUT_OF_RANGE"}undoStep(e){const n=e.indexOf(":"),r=e.substring(0,n),o=e.substring(n+1);switch(r){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 Sl(t=Math.random){return t().toString(36).slice(2)}function _e(t){for(;t.child!==null;)t=t.child;return t}function Zk(t){for(;t.parent!==null;)t=t.parent;return t}var Qk=class m1{_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 m1([...this._buffer]);return e._index=this._index,e}};function kr(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 cS(t,e,n){const r=Ge(e),o=`${t.key}(${r})`,l=eM[t.type],u={key:o,type:l,family:{key:t.key,subKey:r}};return n&&(u.counterfeit=!0),u}var Hn=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}},y1=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),r=new y1(n);return super.set(t,r),r}}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 g1{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 r=this.relations.get(e),o=this.relations.get(n);r?r.add(n):(r=new Set([n]),this.relations.set(e,r)),o?o.add(e):(o=new Set([e]),this.relations.set(n,o))}deleteRelation(e,n){const r=this.relations.get(e);if(r){r.delete(n),r.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 r of n){const o=new Set().add(e);this.relations.set(r,o)}}replaceRelationsSafely(e,n){const r=this.relations.get(e);let o=this.isAType?.(e)?e:void 0,l=o===void 0?e:void 0;if(r)for(const u of r){o??=u,l??=u;const f=this.relations.get(u);f&&(f.size===1?this.relations.delete(u):f.delete(e),this.contents.delete(this.makeContentKey(o,l)))}this.relations.set(e,new Set(n));for(const u of n){let f=this.relations.get(u);f?f.add(e):(f=new Set().add(e),this.relations.set(u,f))}}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 r=n?.source;r===void 0&&(this.relations=new Map(e.relations?.map(([o,l])=>[o,new Set(l)])),this.contents=new Map(e.contents)),r&&(this.relations=new tM(r.relations),this.contents=new Hn(r.contents))}if(n?.externalStore){const r=n.externalStore;this.has=(o,l)=>r.has(o,l),this.addRelation=(o,l)=>{r.addRelation(o,l)},this.deleteRelation=(o,l)=>{r.deleteRelation(o,l)},this.replaceRelationsSafely=(o,l)=>{r.replaceRelationsSafely(o,l)},this.replaceRelationsUnsafely=(o,l)=>{r.replaceRelationsUnsafely(o,l)},this.getRelatedKeys=(o=>r.getRelatedKeys(o)),r.getContent&&(this.getContentInternal=o=>r.getContent(o),this.setContent=(o,l)=>{r.setContent(o,l)},this.deleteContent=o=>{r.deleteContent(o)});for(const[o,l]of e.relations??[]){let u=this.isAType?.(o)?o:void 0,f=u===void 0?o:void 0;for(const h of l)u??=h,f??=h,this.addRelation(u,f)}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,r,o;switch(e.length){case 1:{const l=e[0];n=l[this.a],r=l[this.b],o=void 0;break}case 2:{const l=e[0];typeof l=="string"?[n,r]=e:(n=l[this.a],r=l[this.b],o=e[1]);break}default:n=e[0],r=e[1],o=e[2];break}switch(this.cardinality){case"1:1":{const l=this.getRelatedKey(n);l&&l!==r&&this.delete(n,l)}case"1:n":{const l=this.getRelatedKey(r);l&&l!==n&&this.delete(l,r)}break}if(o){const l=this.makeContentKey(n,r);this.setContent(l,o)}return this.addRelation(n,r),this}delete(e,n){n=typeof n=="string"?n:e[this.b];const r=typeof e=="string"?e:e[this.a];if(r===void 0&&typeof n=="string"){const o=this.getRelatedKeys(n);if(o)for(const l of o)this.delete(l,n)}else if(typeof r=="string"&&n===void 0){const o=this.getRelatedKeys(r);if(o)for(const l of o)this.delete(r,l)}else if(typeof r=="string"&&typeof n=="string"){this.deleteRelation(r,n);const o=this.makeContentKey(r,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 r;for(const o of n){r=o;break}return r}}replaceRelations(e,n,r){const o=!Array.isArray(n),l=o?Object.keys(n):n;if(r?.reckless?this.replaceRelationsUnsafely(e,l):this.replaceRelationsSafely(e,l),o)for(const u of l){const f=this.makeContentKey(e,u),h=n[u];this.setContent(f,h)}return this}getContent(e,n){const r=this.makeContentKey(e,n);return this.getContentInternal(r)}getRelationEntries(e){const n=e[this.a],r=e[this.b];if(n!==void 0&&r===void 0){const o=this.getRelatedKeys(n);if(o)return[...o].map(l=>[l,this.getContent(n,l)])}if(n===void 0&&r!==void 0){const o=this.getRelatedKeys(r);if(o)return[...o].map(l=>[l,this.getContent(l,r)])}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 g1({between:[this.a,this.b],cardinality:this.cardinality},e)}incorporate(e){const{relations:n,contents:r}=e;for(const[o,l]of n)if(l instanceof y1){const{source:u}=l;for(const f of l.iterateOwn())u.add(f)}else this.relations.set(o,l);for(const o of n.deleted)this.relations.delete(o);for(const[o,l]of r)this.contents.set(o,l);for(const o of r.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=_e(t);return n.operation.open?n.operation.prev.get(e.key):n.valueMap.get(e.key)};function b1(t,e,n,r){const o=t.disposalTraces.buffer.find(l=>l?.key===Ge(r));switch(t.logger.error("❌",e.type,e.key,"gets a fallback value because key",r,"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.READONLY_VIEW}case"atom_family":{if(t.defaults.has(n.key))return t.defaults.get(n.key);const l=n.default,u=l(r);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(r);return t.defaults.set(n.key,l),l}}}var jp=class extends Promise{fate;resolve;reject;done=!1;constructor(t){let e,n;super((r,o)=>{e=r,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 ol(t){return"epoch"in t.transactionMeta}function wn(t){return"phase"in t.transactionMeta}function v1(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}"${wn(t)?` ${t.transactionMeta.phase} "${t.transactionMeta.update.token.key}"`:""}`),t}function S1(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 w1=(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),Wu=(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 Hm(t,e){const n=_e(t),{key:r,type:o}=e,l=n.selectorAtoms.getRelatedKeys(r);if(n.logger.info("🧹",o,r,l?`evicting ${l.size} states downstream:`:"no downstream states",l??"to evict"),l){n.operation.open&&n.logger.info("🧹",o,r,`[ ${[...n.operation.done].join(", ")} ] already done`);for(const u of l)w1(n,u)||(T1(n,u),Wu(n,u))}}function x1(t,e){const n=_e(t),r=n.selectorGraph.getRelationEntries({upstreamSelectorKey:e}).filter(([o,{source:l}])=>l===e);for(const[o]of r)w1(n,o)||(T1(n,o),Wu(n,o),x1(t,o))}function sn(t,e,n){const{key:r,subject:o,type:l}=e,u=t.valueMap.get(r);if(u instanceof jp&&!u.done){const f=u;return n instanceof Promise?(f.use(n),f):(t.valueMap.set(r,n),n)}if(n instanceof Promise){const f=new jp(n);return t.valueMap.set(r,f),f.then(function(p){if(t.valueMap.get(r)===f){switch(v1(t,e),sn(t,e,p),l){case"atom":case"mutable_atom":Hm(t,e);break;case"readonly_pure_selector":case"writable_pure_selector":x1(t,r);break}S1(t),o.next({newValue:p,oldValue:f})}}).catch(h=>{t.logger.error("💥","state",r,"rejected:",h)}),f}return t.logger.info("📝",e.type,e.key,"writing to cache",n),t.valueMap.set(r,n),n}function rM(t,e,n){t.logger.info("📖",e.type,e.key,"reading cached value");let r=t.valueMap.get(e.key);if(n==="mut"&&e.type==="mutable_atom"&&wn(t)){const l=e,{parent:u}=t;if(t.valueMap.hasOwn(l.key))return r;const f=u.valueMap.get(l.key);t.logger.info("📃","atom",l.key,"copying");const h=f.toJSON(),p=l.class.fromJSON(h);t.valueMap.set(l.key,p),new ry(l,u),r=p}return r}function T1(t,e){const n=t.valueMap.get(e);if(n instanceof jp){const r=t.writableSelectors.get(e)??t.readonlySelectors.get(e);r&&r.getFrom(t);return}t.operation.open&&t.operation.prev.set(e,n),t.valueMap.delete(e),t.logger.info("🗑","state",e,"evicted")}const sM=/^\[object (?:Async|Generator|AsyncGenerator)?Function\]$/;function al(t){const e=Object.prototype.toString.call(t);return sM.test(e)}function gs(t,e,n){if(t.valueMap.has(e.key))return rM(t,e,n);t.logger.info("❔",e.type,e.key,"value not found in cache");const{key:r}=e;switch(e.type){case"readonly_held_selector":case"writable_held_selector":return t.logger.info("🧮",e.type,r,"computing value"),e.getFrom(t);case"readonly_pure_selector":case"writable_pure_selector":{let o;t.logger.info("🧮",e.type,r,"computing value");try{if(o=e.getFrom(t),o instanceof Promise)return o.catch(u=>{if(t.logger.error("💥",e.type,r,"rejected:",u),e.catch){for(const f of e.catch)if(u instanceof f)return sn(t,e,u)}throw u})}catch(u){if(t.logger.error("💥",e.type,r,"rejected:",u),e.catch){for(const f of e.catch)if(u instanceof f)return sn(t,e,u)}throw u}return sn(t,e,o)}case"atom":{let o;if(al(e.default))try{o=e.default(),o instanceof Promise&&(o=o.catch(u=>{if(t.logger.error("💥",e.type,r,"rejected:",u),e.catch){for(const f of e.catch)if(u instanceof f)return o=sn(t,e,u),o}throw u}))}catch(u){if(t.logger.error("💥",e.type,r,"rejected:",u),e.catch){for(const f of e.catch)if(u instanceof f)return o=sn(t,e,u),t.logger.info("✨",e.type,r,"computed default",o),o}throw u}else o=e.default,t.logger.info("✨",e.type,r,"using static default",o);return sn(t,e,o)}case"mutable_atom":{const o=new e.class;return t.logger.info("✨",e.type,r,"created new instance",o),sn(t,e,o)}}}function Fm(t,e){return lt(t,{key:e.family.key,type:`${e.type}_family`})}const ll=Symbol("MUST_CREATE");function cl(t,e,n,r){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}"`),cS(e,n,Wk);let f;return r===ll?(t.logger.info("👪",e.type,e.key,"adds member",typeof n=="string"?`\`${n}\``:n),f=e(n),l&&t.moleculeData.set(o,e.key)):f=cS(e,n),f}const oM=t=>{t.logger.info("🪂","transaction",t.transactionMeta.update.token.key,"Aborting transaction"),t.parent.child=null};function ef(t,e,n){return(...r)=>lt(t,e).run(r,n)}function Bp(t,e){return al(t)?t(e):t}const Lp=(t,e,n)=>{const r=gs(t,e,"mut");let o=Bp(n,r);return t.logger.info("⭐","atom",e.key,"setting value",o),o=sn(t,e,o),Wu(t,e.key),Hm(t,e),{oldValue:r,newValue:o}};function uS(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=uS(t,e);break;case"writable_pure_selector":case"writable_held_selector":{const r=e.getFrom(t),o=_u(t,e.key);for(const u of o.values()){const f=uS(t,u);_1(t,e,f,!1)}const l=e.getFrom(t);n={oldValue:r,newValue:l}}break}return n}function kt(t,...e){Jm(t,Up,...e)}const Vp=Symbol("RESET");function Gm(t,...e){const n=[...e,Vp];kt(t,...n)}function lM(t,e,n){let r,o,l;const{type:u,key:f}=e;switch(e.type){case"writable_pure_selector":r=gs(t,e,"mut"),o=Bp(n,r),o=sn(t,e,o);break;case"writable_held_selector":l=e.const,Bp(n,l),r=l,o=l}return t.logger.info("⭐",u,f,"setting to",o),Wu(t,f),e.setSelf(o),{oldValue:r,newValue:o}}const cM=(t,e,n)=>{let r;switch(e.type){case"atom":case"mutable_atom":r=Lp(t,e,n);break;case"writable_pure_selector":case"writable_held_selector":r=lM(t,e,n);break}return r};function uM(t,e,n){const{token:r,update:{newValue:o,oldValue:l}}=e;kt(t,r,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.READONLY_VIEW}case"atom_family":{if(t.defaults.has(n.key))return t.defaults.get(n.key);const l=n.default,u=l(r);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(r);return t.defaults.set(n.key,l),l}}}var jp=class extends Promise{fate;resolve;reject;done=!1;constructor(t){let e,n;super((r,o)=>{e=r,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 ol(t){return"epoch"in t.transactionMeta}function wn(t){return"phase"in t.transactionMeta}function v1(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}"${wn(t)?` ${t.transactionMeta.phase} "${t.transactionMeta.update.token.key}"`:""}`),t}function S1(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 w1=(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),Wu=(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 Hm(t,e){const n=_e(t),{key:r,type:o}=e,l=n.selectorAtoms.getRelatedKeys(r);if(n.logger.info("🧹",o,r,l?`evicting ${l.size} states downstream:`:"no downstream states",l??"to evict"),l){n.operation.open&&n.logger.info("🧹",o,r,`[ ${[...n.operation.done].join(", ")} ] already done`);for(const u of l)w1(n,u)||(T1(n,u),Wu(n,u))}}function x1(t,e){const n=_e(t),r=n.selectorGraph.getRelationEntries({upstreamSelectorKey:e}).filter(([o,{source:l}])=>l===e);for(const[o]of r)w1(n,o)||(T1(n,o),Wu(n,o),x1(t,o))}function sn(t,e,n){const{key:r,subject:o,type:l}=e,u=t.valueMap.get(r);if(u instanceof jp&&!u.done){const f=u;return n instanceof Promise?(f.use(n),f):(t.valueMap.set(r,n),n)}if(n instanceof Promise){const f=new jp(n);return t.valueMap.set(r,f),f.then(function(p){if(t.valueMap.get(r)===f){switch(v1(t,e),sn(t,e,p),l){case"atom":case"mutable_atom":Hm(t,e);break;case"readonly_pure_selector":case"writable_pure_selector":x1(t,r);break}S1(t),o.next({newValue:p,oldValue:f})}}).catch(h=>{t.logger.error("💥","state",r,"rejected:",h)}),f}return t.logger.info("📝",e.type,e.key,"writing to cache",n),t.valueMap.set(r,n),n}function rM(t,e,n){t.logger.info("📖",e.type,e.key,"reading cached value");let r=t.valueMap.get(e.key);if(n==="mut"&&e.type==="mutable_atom"&&wn(t)){const l=e,{parent:u}=t;if(t.valueMap.hasOwn(l.key))return r;const f=u.valueMap.get(l.key);t.logger.info("📃","atom",l.key,"copying");const h=f.toJSON(),p=l.class.fromJSON(h);t.valueMap.set(l.key,p),new ry(l,u),r=p}return r}function T1(t,e){const n=t.valueMap.get(e);if(n instanceof jp){const r=t.writableSelectors.get(e)??t.readonlySelectors.get(e);r&&r.getFrom(t);return}t.operation.open&&t.operation.prev.set(e,n),t.valueMap.delete(e),t.logger.info("🗑","state",e,"evicted")}const sM=/^\[object (?:Async|Generator|AsyncGenerator)?Function\]$/;function al(t){const e=Object.prototype.toString.call(t);return sM.test(e)}function gs(t,e,n){if(t.valueMap.has(e.key))return rM(t,e,n);t.logger.info("❔",e.type,e.key,"value not found in cache");const{key:r}=e;switch(e.type){case"readonly_held_selector":case"writable_held_selector":return t.logger.info("🧮",e.type,r,"computing value"),e.getFrom(t);case"readonly_pure_selector":case"writable_pure_selector":{let o;t.logger.info("🧮",e.type,r,"computing value");try{if(o=e.getFrom(t),o instanceof Promise)return o.catch(u=>{if(t.logger.error("💥",e.type,r,"rejected:",u),e.catch){for(const f of e.catch)if(u instanceof f)return sn(t,e,u)}throw u})}catch(u){if(t.logger.error("💥",e.type,r,"rejected:",u),e.catch){for(const f of e.catch)if(u instanceof f)return sn(t,e,u)}throw u}return sn(t,e,o)}case"atom":{let o;if(al(e.default))try{o=e.default(),o instanceof Promise&&(o=o.catch(u=>{if(t.logger.error("💥",e.type,r,"rejected:",u),e.catch){for(const f of e.catch)if(u instanceof f)return o=sn(t,e,u),o}throw u}))}catch(u){if(t.logger.error("💥",e.type,r,"rejected:",u),e.catch){for(const f of e.catch)if(u instanceof f)return o=sn(t,e,u),t.logger.info("✨",e.type,r,"computed default",o),o}throw u}else o=e.default,t.logger.info("✨",e.type,r,"using static default",o);return sn(t,e,o)}case"mutable_atom":{const o=new e.class;return t.logger.info("✨",e.type,r,"created new instance",o),sn(t,e,o)}}}function Fm(t,e){return lt(t,{key:e.family.key,type:`${e.type}_family`})}const ll=Symbol("MUST_CREATE");function cl(t,e,n,r){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}"`),cS(e,n,Wk);let f;return r===ll?(t.logger.info("👪",e.type,e.key,"adds member",typeof n=="string"?`\`${n}\``:n),f=e.create(n),l&&t.moleculeData.set(o,e.key)):f=cS(e,n),f}const oM=t=>{t.logger.info("🪂","transaction",t.transactionMeta.update.token.key,"Aborting transaction"),t.parent.child=null};function ef(t,e,n){return(...r)=>lt(t,e).run(r,n)}function Bp(t,e){return al(t)?t(e):t}const Lp=(t,e,n)=>{const r=gs(t,e,"mut");let o=Bp(n,r);return t.logger.info("⭐","atom",e.key,"setting value",o),o=sn(t,e,o),Wu(t,e.key),Hm(t,e),{oldValue:r,newValue:o}};function uS(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=uS(t,e);break;case"writable_pure_selector":case"writable_held_selector":{const r=e.getFrom(t),o=_u(t,e.key);for(const u of o.values()){const f=uS(t,u);_1(t,e,f,!1)}const l=e.getFrom(t);n={oldValue:r,newValue:l}}break}return n}function kt(t,...e){Jm(t,Up,...e)}const Vp=Symbol("RESET");function Gm(t,...e){const n=[...e,Vp];kt(t,...n)}function lM(t,e,n){let r,o,l;const{type:u,key:f}=e;switch(e.type){case"writable_pure_selector":r=gs(t,e,"mut"),o=Bp(n,r),o=sn(t,e,o);break;case"writable_held_selector":l=e.const,Bp(n,l),r=l,o=l}return t.logger.info("⭐",u,f,"setting to",o),Wu(t,f),e.setSelf(o),{oldValue:r,newValue:o}}const cM=(t,e,n)=>{let r;switch(e.type){case"atom":case"mutable_atom":r=Lp(t,e,n);break;case"writable_pure_selector":case"writable_held_selector":r=lM(t,e,n);break}return r};function uM(t,e,n){const{token:r,update:{newValue:o,oldValue:l}}=e;kt(t,r,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=Bt.STORE){const n={key:t,stringKey:Ge(t),dependsOn:"any"};return e.molecules.set(Ge(t),n),t}function Ym(t,e,n,r="any"){const o=e,l=Ge(n),u=[],f=_e(t);if(Array.isArray(o))for(const y of o){const g=Ge(y);f.molecules.get(g)?t.moleculeGraph.set(g,l,{source:g}):u.push(g)}else{const y=Ge(o);f.molecules.get(y)?t.moleculeGraph.set(y,l,{source:y}):u.push(y)}u.length===0&&f.molecules.set(l,{key:n,stringKey:l,dependsOn:r});const h={type:"molecule_creation",key:n,provenance:o,timestamp:Date.now()};wn(f)&&f.transactionMeta.phase==="building"?f.transactionMeta.update.subEvents.push(h):f.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 @@ ${v.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 f=Ge(e),h=l.molecules.get(f);if(!h){const v=t.disposalTraces.buffer.find(S=>S?.key===f);return t.logger.error("❌","key",n,"claim failed:",`Could not allocate to ${f} in store "${t.config.name}".`,v?`
20
20
  ${f} was most recently disposed
21
- ${v.trace}`:`No previous disposal trace for ${f} was found.`),n}const p=t.moleculeGraph.getRelationEntries({downstreamMoleculeKey:u.stringKey}).filter(([,{source:v}])=>v!==o).map(([v])=>Nr(v));r&&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:!!r,from:p,to:[h.key],timestamp:Date.now()};return wn(l)&&l.transactionMeta.phase==="building"&&l.transactionMeta.update.subEvents.push(y),n}function mM(t,e,n){switch(n){case"newValue":A1(t,e);break;case"oldValue":sf(t,e.token);break}}function yM(t,e,n){switch(n){case"newValue":sf(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?kt(t,n,e.value):ln(t,n)}function gM(t,e,n){switch(n){case"newValue":Ym(t,e.provenance,e.key);break;case"oldValue":tf(t,e.key);break}}function bM(t,e,n){switch(n){case"newValue":tf(t,e.key);break;case"oldValue":{const r=e.provenance.map(Nr);Ym(t,r,e.key);for(const[o,l]of e.values){const u=t.families.get(o);if(u){ln(t,u,e.key);const f=`${o}(${Ge(e.key)})`;t.valueMap.set(f,l)}}}break}}function vM(t,e,n){switch(n){case"newValue":for(const r of e.to)Ou(t,r,e.key,e.exclusive?"exclusive":void 0);break;case"oldValue":{let r="exclusive";for(const o of e.from)Ou(t,o,e.key,r),r=void 0}break}}function ho(t,e,n){const r=n==="newValue"?e.subEvents:[...e.subEvents].reverse();for(const o of r)switch(o.type){case"atom_update":uM(t,o,n);break;case"state_creation":mM(t,o,n);break;case"state_disposal":yM(t,o,n);break;case"molecule_creation":gM(t,o,n);break;case"molecule_disposal":bM(t,o,n);break;case"molecule_transfer":vM(t,o,n);break;case"transaction_outcome":ho(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 SM(t,e){const n=E1(t,e);if(n!==void 0)return R1(t,n)}function Xm(t,e,n){t.transactionMeta.epoch.set(e,n)}function wM(t,e,n){const r=E1(t,e);r!==void 0&&t.transactionMeta.epoch.set(r,n)}function xM(t,e){const n=_e(t),{parent:r}=n;n.transactionMeta.phase="applying",n.transactionMeta.update.output=e,r.child=null,r.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),ho(r,n.transactionMeta.update,"newValue"),ol(r)?(wM(r,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")):wn(r)&&r.transactionMeta.update.subEvents.push(n.transactionMeta.update),r.on.transactionApplying.next(null)}function O1(t,e,n){const{epoch:r,actionContinuities:o}=t.transactionMeta;o.set(e,n),r.has(e)||r.set(e,-1)}function TM(t){return{store:t}}const AM=(t,e,n,r)=>{const o=_e(t),l={parent:o,child:null,on:o.on,loggers:o.loggers,logger:o.logger,config:o.config,atoms:new Hn(o.atoms),atomsThatAreDefault:new Set(o.atomsThatAreDefault),families:new Hn(o.families),joins:new Hn(o.joins),operation:{open:!1},readonlySelectors:new Hn(o.readonlySelectors),timelines:new Hn(o.timelines),timelineTopics:o.timelineTopics.overlay(),trackers:new Map,transactions:new Hn(o.transactions),selectorAtoms:o.selectorAtoms.overlay(),selectorGraph:o.selectorGraph.overlay(),writableSelectors:new Hn(o.writableSelectors),valueMap:new Hn(o.valueMap),defaults:o.defaults,disposalTraces:t.disposalTraces.copy(),molecules:new Hn(o.molecules),moleculeGraph:o.moleculeGraph.overlay(),moleculeData:o.moleculeData.overlay(),moleculeJoins:o.moleculeJoins.overlay(),miscResources:new Hn(o.miscResources)},u=SM(t,e.key),f={phase:"building",update:{type:"transaction_outcome",token:e,id:r,epoch:u===void 0?NaN:u+1,timestamp:Date.now(),subEvents:[],params:n,output:void 0},toolkit:{get:((...p)=>ln(h,...p)),set:((...p)=>{kt(h,...p)}),reset:((...p)=>{Gm(h,...p)}),run:(p,y=Sl())=>ef(h,p,y),find:((...p)=>jr(t,...p)),json:p=>bs(h,p),dispose:((...p)=>{sf(h,...p)}),env:()=>TM(h)}},h=Object.assign(l,{transactionMeta:f});return o.child=h,t.logger.info("🛫","transaction",e.key,"building with params:",n),h};function nf(t,e){const{key:n}=e,r=t.transactions.has(n),o={key:n,type:"transaction",run:(f,h)=>{const p=kr(o),y=AM(t,p,f,h);try{const{toolkit:g}=y.transactionMeta,v=e.do(g,...f);return xM(y,v),v}catch(g){throw oM(y),t.logger.warn("💥","transaction",n,"caught:",g),g}},install:f=>nf(f,e),subject:new Qe};_e(t).transactions.set(n,o);const u=kr(o);return r||t.on.transactionCreation.next(u),u}function _1(t,e,{oldValue:n,newValue:r},o,l){const u=kr(e);if(o&&l){e.subject.next({newValue:r});const g={checkpoint:!0,type:"state_creation",subType:"writable",token:u,timestamp:Date.now(),value:r};t.operation.subEvents.push(g),l.subject.next(g);const S=_e(t);if(u.family)if(ol(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 wn(S)&&S.on.transactionApplying.state===null&&S.transactionMeta.update.subEvents.push(g);return}const{key:f,subject:h,type:p}=e,y={oldValue:Hh(n)?n.READONLY_VIEW:n,newValue:Hh(r)?r.READONLY_VIEW:r};if(ol(t)){switch(p){case"mutable_atom":t.logger.info("📢",p,f,"is now (",r,") subscribers:",h.subscribers.keys());break;case"atom":case"writable_pure_selector":case"writable_held_selector":t.logger.info("📢",p,f,"went (",n,"->",r,") subscribers:",h.subscribers.keys())}h.next(y)}if(wn(t)&&(p==="mutable_atom"||p==="atom")){if(t.on.transactionApplying.state===null){if(Hh(r))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",f,"stowed (",n,"->",r,")");return}if(L1(e,"tracker:signal")){const g=f.slice(1),v=t.atoms.get(g);gs(t,v,"mut").do(y.newValue)===null===!0&&Hm(t,v)}}}const Up=Symbol("OWN_OP"),EM=Symbol("JOIN_OP");function Jm(t,e,...n){let r,o,l,u,f,h;n.length===2?(l=n[0],h=n[1],"family"in l&&(u=Fm(t,l),f=Nr(l.family.subKey),r=ul(t,u,f),r?l=r:l=o=cl(t,u,f,ll))):(u=lt(t,n[0]),f=n[1],h=n[2],r=ul(t,u,f),r?l=r:l=o=cl(t,u,f,ll));const p=h===Vp?"reset":"set";let y;if(e===Up){const x=v1(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}`),Jm(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===Vp?v=aM(y,g):v=cM(y,g,h),_1(y,g,v,!!o,u),e===Up&&S1(y)}const k1=(t,e)=>_e(t).atoms.has(e),RM=(t,e)=>_e(t).writableSelectors.has(e),OM=(t,e)=>_e(t).readonlySelectors.has(e),_M=(t,e)=>k1(t,e)||RM(t,e)||OM(t,e);function fS(t,e){return _e(t).selectorGraph.getRelationEntries({downstreamSelectorKey:e}).filter(([r,{source:o}])=>o!==e).map(([r,{source:o}])=>o).filter(r=>_M(t,r))}function _u(t,e,n=new Set){const r=fS(t,e),o=new Map;for(;r.length>0;){const l=r.pop();if(!n.has(l))if(n.add(l),k1(t,l)){const u=t.atoms.get(l);o.set(u.key,u)}else r.push(...fS(t,l))}return o}function kM(t,e,n,r,o){const l=_e(t),{type:u,key:f}=r;if(u==="atom"||u==="mutable_atom")l.selectorAtoms.set({selectorKey:n,atomKey:f}),t.logger.info("🔍",e,n,`discovers root atom "${f}"`);else{const h=_u(t,f,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(f)}function rf(t,e,n,r){return{get:(...o)=>{const l=_e(t),{token:u,family:f,subKey:h}=iy(t,...o);let p;if("counterfeit"in u&&f&&h)p=b1(t,u,f,h);else{const y=lt(t,u);p=gs(t,y)}return t.logger.info("🔌",e,n,`registers dependency ( "${u.key}" =`,p,")"),l.selectorGraph.set({upstreamSelectorKey:u.key,downstreamSelectorKey:n},{source:u.key}),kM(t,e,n,u,r),p},set:((...o)=>{const l=_e(t);Jm(l,EM,...o)}),find:((...o)=>jr(t,...o)),json:o=>bs(t,o)}}function Zm(t,e,n){const r=_e(t),o=new Qe,l=new Set,{key:u,const:f}=e,h="readonly_held_selector";t.logger.info("🔨",h,u,"is being created");const{get:p,find:y,json:g}=rf(r,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},f),sn(T,S,f),t.logger.info("✨",h,u,"=",f),l.clear(),f},install:T=>Zm(T,e,n)};n&&(S.family=n),r.readonlySelectors.set(u,S);const x={key:u,type:h};return n&&(x.family=n),x}function Qm(t,e,n){const r=_e(t),o=new Qe,l=new Set,u=e.key,f="readonly_pure_selector";t.logger.info("🔨",f,u,"is being created");const{get:h,find:p,json:y}=rf(r,f,u,l),v={...e,type:f,subject:o,getFrom:()=>{const x=_e(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=sn(x,v,D);return t.logger.info("✨",f,u,"=",M),l.clear(),M},install:x=>Qm(x,e,n)};n&&(v.family=n),r.readonlySelectors.set(u,v);const S={key:u,type:f};return n&&(S.family=n),S}function Wm(t,e,n){const r=_e(t),o=new Qe,l=new Set,{key:u,const:f}=e,h="writable_held_selector";t.logger.info("🔨",h,u,"is being created");const p=rf(r,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,f),sn(O,D,f),t.logger.info("✨",h,u,"=",f),l.clear(),f},setSelf:()=>{e.set(p,f)},install:O=>Wm(O,e,n)};n&&(D.family=n),r.writableSelectors.set(u,D);const M={key:u,type:h};return n&&(M.family=n),M}function ey(t,e,n){const r=_e(t),o=new Qe,l=new Set,u=e.key,f="writable_pure_selector";t.logger.info("🔨",f,u,"is being created");const h=rf(r,f,u,l),{find:p,get:y,json:g}=h,v={find:p,get:y,json:g},T={...e,type:f,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=sn(M,T,C);return t.logger.info("✨",f,u,"=",j),l.clear(),j},setSelf:M=>{e.set(h,M)},install:M=>ey(M,e,n)};n&&(T.family=n),r.writableSelectors.set(u,T);const D={key:u,type:f};return n&&(D.family=n),D}function M1(t,e){const n="set"in e,r="const"in e;if(r&&n){const l=Wm(t,e,void 0);return t.on.selectorCreation.next(l),l}if(r){const l=Zm(t,e,void 0);return t.on.selectorCreation.next(l),l}if(n){const l=ey(t,e,void 0);return t.on.selectorCreation.next(l),l}const o=Qm(t,e,void 0);return t.on.selectorCreation.next(o),o}function MM(t,e){const n=_e(t),{key:r,type:o,family:l}=e;if(!l)t.logger.error("❌",o,r,"Standalone selectors cannot be disposed.");else{n.molecules.get(l.subKey)&&n.moleculeData.delete(l.subKey,l.key);let f;switch(e.type){case"writable_held_selector":n.writableSelectors.delete(r),f={key:l.key,type:"writable_held_selector_family"},lt(t,f).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"writable_pure_selector":n.writableSelectors.delete(r),f={key:l.key,type:"writable_pure_selector_family"},lt(t,f).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"readonly_held_selector":n.readonlySelectors.delete(r),f={key:l.key,type:"readonly_held_selector_family"},lt(t,f).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"readonly_pure_selector":n.readonlySelectors.delete(r),f={key:l.key,type:"readonly_pure_selector_family"},lt(t,f).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break}n.valueMap.delete(r),n.selectorAtoms.delete(r),n.selectorGraph.delete(r),n.moleculeData.delete(l.key,l.subKey),t.logger.info("🔥",e.type,r,"deleted"),wn(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 po(t,e,n){const r=e.key,o="readonly_pure_selector_family",l={key:r,type:o},u=t.families.get(r);u&&t.logger.error("❗",o,r,`Overwriting an existing ${$r[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const f=new Qe,p=Object.assign(y=>{const g=Ge(y),v={key:r,subKey:g},S=`${r}(${g})`,x=_e(t),T={key:S,get:e.get(y)};return e.catch&&(T.catch=e.catch),Qm(x,T,v)},l,{internalRoles:n,subject:f,install:y=>po(y,e),default:y=>e.get(y)({get:((...v)=>ln(t,...v)),find:((...v)=>jr(t,...v)),json:v=>bs(t,v)}),...e.catch?{catch:e.catch}:{}});return t.families.set(r,p),l}function ty(t,e,n){const r={key:e.key,type:"atom_family"},o=t.families.get(e.key);o&&t.logger.error("❗","atom_family",e.key,`Overwriting an existing ${$r[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,f=Object.assign(h=>{const p=Ge(h),y={key:e.key,subKey:p},g=`${e.key}(${p})`,v=_e(t),S=e.default,x={key:g,default:al(S)?()=>S(h):S};return e.effects&&(x.effects=e.effects(h)),e.catch&&(x.catch=e.catch),of(v,x,y)},{...r,default:e.default,subject:l,install:h=>ty(h,e),internalRoles:n,...e.catch?{catch:e.catch}:{}});return t.families.set(e.key,f),al(e.default)===!1&&t.defaults.set(e.key,e.default),r}function C1(t,e,n){const r=e.key,o="readonly_held_selector_family",l={key:r,type:o},u=t.families.get(r);u&&t.logger.error("❗",o,r,`Overwriting an existing ${$r[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const f=new Qe,p=Object.assign(y=>{const g=Ge(y),v={key:r,subKey:g},S=`${r}(${g})`,x=_e(t);return Zm(x,{key:S,const:e.const(y),get:e.get(y)},v)},l,{internalRoles:n,subject:f,install:y=>C1(y,e),default:e.const});return t.families.set(r,p),l}function D1(t,e,n){const r=e.key,o="writable_held_selector_family",l={key:r,type:o},u=t.families.get(r);u&&t.logger.error("❗",o,r,`Overwriting an existing ${$r[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const f=new Qe,p=Object.assign(y=>{const g=Ge(y),v={key:r,subKey:g},S=`${r}(${g})`,x=_e(t);return Wm(x,{key:S,const:e.const(y),get:e.get(y),set:e.set(y)},v)},l,{internalRoles:n,subject:f,install:y=>D1(y,e),default:e.const});return t.families.set(r,p),l}function ny(t,e,n){const r=e.key,o="writable_pure_selector_family",l={key:r,type:o},u=t.families.get(r);u&&t.logger.error("❗",o,r,`Overwriting an existing ${$r[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const f=new Qe,p=Object.assign(y=>{const g=Ge(y),v={key:r,subKey:g},S=`${r}(${g})`,x=_e(t),T={key:S,get:e.get(y),set:e.set(y)};return e.catch&&(T.catch=e.catch),ey(x,T,v)},l,{internalRoles:n,subject:f,install:y=>ny(y,e),default:y=>e.get(y)({get:((...v)=>ln(t,...v)),find:((...v)=>jr(t,...v)),json:v=>bs(t,v)}),...e.catch?{catch:e.catch}:{}});return t.families.set(r,p),l}function CM(t,e){const n="set"in e,r="const"in e;return r&&n?D1(t,e,void 0):r?C1(t,e,void 0):n?ny(t,e):po(t,e)}function ul(t,e,n){const r=Ge(n),o=`${e.key}(${r})`,l=_e(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&&kr(u)}function jr(t,e,n){const r=lt(t,e),o=ul(t,e,n);return o||cl(t,r,n)}function sf(t,...e){let n;if(e.length===1)n=e[0];else{const r=e[0],o=e[1];n=jr(t,r,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":oy(t,n);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":MM(t,n);break}}function iy(t,...e){let n,r,o,l,u;if(e.length===1){if(u=e[0],"family"in u){const p=Fm(t,u);if(o=lt(t,p),l=Nr(u.family.subKey),n=ul(t,p,l),"counterfeit"in u)return{token:u,family:o,subKey:l,isNew:!1};n?u=n:(r=cl(t,p,l,ll),u=r)}}else o=lt(t,e[0]),l=e[1],n=ul(t,o,l),n?u=n:(r=cl(t,o,l,ll),u=r);const f="counterfeit"in u;if(!!r&&f===!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=_e(t);if(u.family)if(ol(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 wn(v)&&v.on.transactionApplying.state===null&&v.transactionMeta.update.subEvents.push(y)}return{token:u,family:o,subKey:l,isNew:!!r}}function ln(t,...e){const{token:n,family:r,subKey:o}=iy(t,...e);if("counterfeit"in n&&r&&o)return b1(t,n,r,o);const l=lt(t,n);return gs(t,l)}const dS=(t,e,n)=>n.subject.subscribe(`${e.type}:${e.key}`,r=>{t.logger.info("📢",e.type,e.key,"root",n.key,"went",r.oldValue,"->",r.newValue);const o=iM(t,e),l=gs(t,e);t.logger.info("✨",e.type,e.key,"went",o,"->",l),e.subject.next({newValue:l,oldValue:o})});function ko(t,e,n,r){function o(g){if(t.operation.open){const v=t.on.operationClose.subscribe(`state subscription ${n}`,()=>{v(),r(g)})}else r(g)}iy(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",f=new Map;let h=o;if(u){gs(t,l);for(const[g,v]of _u(t,l.key))f.set(g,dS(t,l,v));h=function(v){const S=_u(t,l.key);for(const[x,T]of f)S.get(x)?S.delete(x):(T(),f.delete(x));for(const[x,T]of S)f.set(x,dS(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 f.values())g()}}function lt(t,e){let n,r=t;for(;r!==null;){switch(e.type){case"atom":case"mutable_atom":n=r.atoms.get(e.key);break;case"writable_pure_selector":case"writable_held_selector":n=r.writableSelectors.get(e.key);break;case"readonly_pure_selector":case"readonly_held_selector":n=r.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=r.families.get(e.key);break;case"timeline":n=r.timelines.get(e.key);break;case"transaction":n=r.transactions.get(e.key);break}if(n)return n;r=r.child}throw new VM(e,t)}const N1=(t,e,n,r)=>{const o=lt(t,e);t.logger.info("👀","timeline",e.key,`Adding subscription "${n}"`);const l=o.subject.subscribe(n,r);return()=>{t.logger.info("🙈","timeline",e.key,`Removing subscription "${n}" from timeline`),l()}},$1=(t,e,n,r)=>{const o=lt(t,e);t.logger.info("👀","transaction",e.key,`Adding subscription "${n}"`);const l=o.subject.subscribe(n,r);return()=>{t.logger.info("🙈","transaction",e.key,`Removing subscription "${n}"`),l()}};function DM(t,e,n,r=Sl()){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 ko(t,e,r,n);case"transaction":return $1(t,e,r,n);case"timeline":return N1(t,e,r,n)}}var ry=class{initializeSignalAtom(t,e){const n=`*${t.key}`;e.atoms.delete(n),e.valueMap.delete(n);const r=t.family?{key:`*${t.family.key}`,subKey:t.family.subKey}:void 0,o=of(e,{key:n,default:null},r,["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 r=t.key,o=n.config.name,l=wn(n)?n.transactionMeta.update.token.key:"main",u=`tracker:${o}:${l}:${r}`,f=p=>{kt(n,e,p)},h=ln(n,t);this.unsubscribeFromInnerValue=h.subscribe(u,f),this.unsubscribeFromState=ko(n,t,u,(function(y){y.newValue!==y.oldValue&&(this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=y.newValue.subscribe(u,f))}).bind(this))}supplySignalsToCore(t,e,n){const r=`tracker:${n.config.name}:${wn(n)?n.transactionMeta.update.token.key:"main"}:${t.key}`;ko(n,e,r,function({newValue:l,oldValue:u}){const f=n.timelineTopics.getRelatedKey(e.key);if(f&&n.timelines.get(f)?.timeTraveling){const g=N1(n,{key:f,type:"timeline"},r,function(S){g(),kt(n,t,x=>(S==="redo"&&l?x.do(l):S==="undo"&&u&&x.undo(u),x))});return}const h=ln(n,t),p=h.getUpdateNumber(l),y=p-h.cacheUpdateNumber;if(l&&y===1)kt(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=_e(e),r=this.initializeSignalAtom(t,n);this.mutableAtomToken=t,this.latestSignalToken=r,this.captureSignalsFromCore(t,r,n),this.supplySignalsToCore(t,r,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 r=_e(t),{key:o}=e,l=r.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."),kr(l);const f=new Qe,h={...e,type:u,install:y=>(y.logger.info("🛠️","atom",o,`installing in store "${y.config.name}"`),sy(y,e,n)),subject:f};n&&(h.family=n),r.atoms.set(h.key,h);const p=kr(h);if(e.effects){let y=0;const g=[];for(const v of e.effects){const S=v({resetSelf:()=>{Gm(t,p)},setSelf:x=>{kt(t,p,x)},onSet:x=>ko(t,p,`effect[${y}]`,x)});S&&g.push(S),++y}h.cleanup=()=>{for(const v of g)v()}}return new ry(p,t),n||M1(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 NM=class{trackers=new Map;latestSignalAtoms;mutableAtoms;constructor(t,e){const n=ty(e,{key:`*${t.key}`,default:null},["mutable","updates"]);this.latestSignalAtoms=lt(e,n),this.mutableAtoms=t;const r=o=>{const{type:l,token:u}=o;if(u.family){const f=Nr(u.family.subKey);switch(l){case"state_creation":this.trackers.set(f,new ry(u,e));break;case"state_disposal":{const h=this.trackers.get(f);h&&(h[Symbol.dispose](),this.trackers.delete(f))}}}};this.mutableAtoms.subject.subscribe(`store=${e.config.name}::tracker-atom-family`,r)}};function j1(t,e,n){const r={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 ${$r[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,f=Object.assign(h=>{const p=Ge(h),y={key:e.key,subKey:p},g=`${e.key}(${p})`,v=_e(t),S={key:g,class:e.class};return e.effects&&(S.effects=e.effects(h)),sy(v,S,y)},r,{class:e.class,subject:l,install:h=>j1(h,e),internalRoles:n});return t.families.set(e.key,f),ny(t,{key:`${e.key}:JSON`,get:h=>({get:p})=>p(r,h).toJSON(),set:h=>({set:p},y)=>{p(r,h,e.class.fromJSON(y))}},["mutable","json"]),new NM(f,t),r}const hS=(t,e)=>{const n=_e(e),r=`${t.key}:JSON`;return n.families.get(r)},bs=(t,e)=>{if(e.family){const r=_e(t),l={key:`${e.family.key}:JSON`,type:"writable_pure_selector_family"},u=lt(r,l),f=Nr(e.family.subKey);return jr(t,u,f)}return{type:"writable_pure_selector",key:`${e.key}:JSON`}},B1=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 $M=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)=>!UM(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},ol(e)&&(this.transactionMeta={epoch:new Map(e?.transactionMeta.epoch),actionContinuities:new Bi(e?.transactionMeta.actionContinuities.toJSON())});for(const[,r]of e.families)r.internalRoles?.includes("mutable")||r.internalRoles?.includes("join")||r.install(this);const n=new Set;for(const[,r]of e.atoms)if(!n.has(r.key)&&(r.install(this),r.type==="mutable_atom")){const o=bs(e,r),l=B1(r);n.add(o.key),n.add(l.key)}for(const[,r]of e.readonlySelectors)r.install(this);for(const[,r]of e.writableSelectors)n.has(r.key)||r.install(this);for(const[,r]of e.transactions)r.install(this);for(const[,r]of e.timelines)r.install(this)}}};const Bt={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new $M({name:"IMPLICIT_STORE",lifespan:"ephemeral"}),globalThis.ATOM_IO_IMPLICIT_STORE}};function of(t,e,n,r){const o="atom",{key:l}=e;t.logger.info("🔨",o,l,"is being created");const u=_e(t),f=u.atoms.get(l);if(f&&f.type===o)return t.logger.error("❌","atom",l,"Tried to create atom, but it already exists in the store."),kr(f);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),r&&(p.internalRoles=r),u.atoms.set(l,p);const y=kr(p);if(e.effects){let g=0;const v=[];for(const S of e.effects){const x=S({resetSelf:()=>{Gm(t,y)},setSelf:T=>{kt(t,y,T)},onSet:T=>ko(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 oy(t,e){const n=_e(t),{key:r,family:o}=e,l=lt(n,e);if(!o)t.logger.error("❌","atom",r,"Standalone atoms cannot be disposed.");else{l.cleanup?.();const u=t.valueMap.get(l.key),f=Fm(t,e),p=lt(t,f).subject,y={type:"state_disposal",subType:"atom",token:e,value:u,timestamp:Date.now()};p.next(y);const g=wn(n);if(n.atoms.delete(r),n.valueMap.delete(r),n.selectorAtoms.delete(r),n.atomsThatAreDefault.delete(r),n.moleculeData.delete(o.key,o.subKey),t.timelineTopics.delete(r),e.type==="mutable_atom"){const v=B1(e);oy(t,v),t.trackers.delete(r)}if(t.logger.info("🔥","atom",r,"deleted"),g&&n.transactionMeta.phase==="building"){const v=n.transactionMeta.update.subEvents.at(-1),x=v?.type==="molecule_disposal"&&v.values.some(([D])=>D===l.family?.key),T=L1(l,"tracker:signal");!x&&!T&&n.transactionMeta.update.subEvents.push(y)}else t.on.atomDisposal.next(e)}}function L1(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;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=Bt.STORE){this.store=n,this.realm=new Fk(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)=>ln(n,...j)),set:((...j)=>{kt(n,...j)}),find:((...j)=>jr(n,...j)),json:j=>bs(n,j)};const r=t.between[0],o=t.between[1],l=j1(n,{key:`${t.key}/relatedKeys`,class:Im},["join","relations"]);this.core={relatedKeysAtoms:l};const u=({get:j},_)=>j(l,_),f=({set:j},_,J)=>{this.store.molecules.has(Ge(_))||this.realm.allocate(t.key,_),j(l,_,Y=>Y.add(J)),j(l,J,Y=>Y.add(_))},h=({set:j},_,J)=>{j(l,_,re=>(re.delete(J),re)),j(l,J,re=>(re.delete(_),re));const[Y,F]=[_,J].sort(),ee=`${Y}:${F}`;this.store.moleculeJoins.delete(ee)},p=(j,_,J)=>{const{find:Y,get:F,set:ee}=j,re=Y(l,_),ue=F(re);for(const ge of ue)J.includes(ge)||ee(l,ge,Q=>(Q.delete(_),Q));ee(re,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 ne=u(j,z);ne.delete(Q),ne.size===0&&q.push(z)}!B&&W.size>0&&W.clear();for(const z of q){const[ne,A]=[Q,z].sort(),P=`${ne}:${A}`;n.moleculeJoins.delete(P)}}B||W.add(_),be.add(Q)}return!0}),ge))},y=(j,_,J)=>{const{set:Y}=j;Y(l,_,F=>(F.transaction(ee=>{for(const re of J)ee.add(re);return!0}),F));for(const F of J)Y(l,F,ee=>(ee.add(_),ee));return!0},g=(j,_,J)=>{const Y=u(j,_);return J?Y.has(J):Y.size>0},v={getRelatedKeys:j=>u(this.toolkit,j),addRelation:(j,_)=>{this.store.moleculeJoins.set(`"${j}"`,t.key),this.store.moleculeJoins.set(`"${_}"`,t.key),f(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=ty(n,{key:`${t.key}/content`,default:e},["join","content"]);const j=({get:Y},F)=>Y(x,F),_=({set:Y},F,ee)=>{Y(x,F,ee)};S=Object.assign(v,{getContent:Y=>j(this.toolkit,Y),setContent:(Y,F)=>{_(this.toolkit,Y,F)},deleteContent:Y=>{}})}else S=v;const T=new Bi(t,{externalStore:S,isAType:t.isAType,isBType:t.isBType,makeContentKey:(...j)=>{const[_,J]=j,[Y,F]=j.sort(),ee=`${Y}:${F}`,re=n.molecules.get(Ge(_)),ue=n.molecules.get(Ge(J));return re||this.realm.allocate(t.key,_),ue||this.realm.allocate(t.key,J),this.realm.allocate(_,ee,"all"),this.realm.claim(J,ee),this.store.moleculeJoins.set(ee,t.key),ee}}),D=()=>po(n,{key:`${t.key}/singleRelatedKey`,get:j=>({get:_})=>{const J=_(l,j);for(const Y of J)return Y;return null}},["join","keys"]),M=()=>po(n,{key:`${t.key}/multipleRelatedKeys`,get:j=>({get:_})=>{const J=hS(l,n);return _(J,j).members}},["join","keys"]),O=()=>po(n,{key:`${t.key}/singleRelatedEntry`,get:j=>({get:_})=>{const J=_(l,j);for(const Y of J){let F=T.isAType?.(j)?j:void 0,ee=F===void 0?j:void 0;F??=Y,ee??=Y;const re=T.makeContentKey(F,ee),ue=_(x,re);return[Y,ue]}return null}},["join","entries"]),C=()=>po(n,{key:`${t.key}/multipleRelatedEntries`,get:j=>({get:_})=>{const J=hS(l,n);return _(J,j).members.map(F=>{let ee=T.isAType?.(j)?j:void 0,re=ee===void 0?j:void 0;ee??=F,re??=F;const ue=T.makeContentKey(ee,re),ge=_(x,ue);return[F,ge]})}},["join","entries"]);switch(t.cardinality){case"1:1":{const j=D(),_=`${r}KeyOf${bn(o)}`,J=`${o}KeyOf${bn(r)}`,Y={[_]:j,[J]:j};let F;if(e){const ee=O(),re=`${r}EntryOf${bn(o)}`,ue=`${o}EntryOf${bn(r)}`,ge={[re]:ee,[ue]:ee};F=Object.assign(Y,ge)}else F=Y;this.relations=T,this.states=F;break}case"1:n":{const j=D(),_=M(),J=`${r}KeyOf${bn(o)}`,Y=`${o}KeysOf${bn(r)}`,F={[J]:j,[Y]:_};let ee;if(e){const re=O(),ue=C(),ge=`${r}EntryOf${bn(o)}`,be=`${o}EntriesOf${bn(r)}`,Q={[ge]:re,[be]:ue};ee=Object.assign(F,Q)}else ee=F;this.relations=T,this.states=ee;break}case"n:n":{const j=M(),_=`${r}KeysOf${bn(o)}`,J=`${o}KeysOf${bn(r)}`,Y={[_]:j,[J]:j};let F;if(e){const ee=C(),re=`${r}EntriesOf${bn(o)}`,ue=`${o}EntriesOf${bn(r)}`,ge={[re]:ee,[ue]:ee};F=Object.assign(Y,ge)}else F=Y;this.relations=T,this.states=F}}}};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=Bt.STORE.joins.get(t.key);if(o===void 0)throw new Error(`Join "${t.key}" not found in store "${e.config.name}"`);const l=Zk(e);n=new V1(o.options,o.defaultContent,l),e.joins.set(t.key,n)}return n}function LM(t,e){return BM(t,e).core.relatedKeysAtoms}var VM=class extends Error{constructor(t,e){super(`${$r[t.type]} ${Ge(t.key)} not found in store "${e.config.name}".`)}};function UM(t){return t.startsWith("🔍 ")}var Fh={exports:{}},Se={};/**
21
+ ${v.trace}`:`No previous disposal trace for ${f} was found.`),n}const p=t.moleculeGraph.getRelationEntries({downstreamMoleculeKey:u.stringKey}).filter(([,{source:v}])=>v!==o).map(([v])=>Nr(v));r&&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:!!r,from:p,to:[h.key],timestamp:Date.now()};return wn(l)&&l.transactionMeta.phase==="building"&&l.transactionMeta.update.subEvents.push(y),n}function mM(t,e,n){switch(n){case"newValue":A1(t,e);break;case"oldValue":sf(t,e.token);break}}function yM(t,e,n){switch(n){case"newValue":sf(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?kt(t,n,e.value):ln(t,n)}function gM(t,e,n){switch(n){case"newValue":Ym(t,e.provenance,e.key);break;case"oldValue":tf(t,e.key);break}}function bM(t,e,n){switch(n){case"newValue":tf(t,e.key);break;case"oldValue":{const r=e.provenance.map(Nr);Ym(t,r,e.key);for(const[o,l]of e.values){const u=t.families.get(o);if(u){ln(t,u,e.key);const f=`${o}(${Ge(e.key)})`;t.valueMap.set(f,l)}}}break}}function vM(t,e,n){switch(n){case"newValue":for(const r of e.to)Ou(t,r,e.key,e.exclusive?"exclusive":void 0);break;case"oldValue":{let r="exclusive";for(const o of e.from)Ou(t,o,e.key,r),r=void 0}break}}function ho(t,e,n){const r=n==="newValue"?e.subEvents:[...e.subEvents].reverse();for(const o of r)switch(o.type){case"atom_update":uM(t,o,n);break;case"state_creation":mM(t,o,n);break;case"state_disposal":yM(t,o,n);break;case"molecule_creation":gM(t,o,n);break;case"molecule_disposal":bM(t,o,n);break;case"molecule_transfer":vM(t,o,n);break;case"transaction_outcome":ho(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 SM(t,e){const n=E1(t,e);if(n!==void 0)return R1(t,n)}function Xm(t,e,n){t.transactionMeta.epoch.set(e,n)}function wM(t,e,n){const r=E1(t,e);r!==void 0&&t.transactionMeta.epoch.set(r,n)}function xM(t,e){const n=_e(t),{parent:r}=n;n.transactionMeta.phase="applying",n.transactionMeta.update.output=e,r.child=null,r.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),ho(r,n.transactionMeta.update,"newValue"),ol(r)?(wM(r,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")):wn(r)&&r.transactionMeta.update.subEvents.push(n.transactionMeta.update),r.on.transactionApplying.next(null)}function O1(t,e,n){const{epoch:r,actionContinuities:o}=t.transactionMeta;o.set(e,n),r.has(e)||r.set(e,-1)}function TM(t){return{store:t}}const AM=(t,e,n,r)=>{const o=_e(t),l={parent:o,child:null,on:o.on,loggers:o.loggers,logger:o.logger,config:o.config,atoms:new Hn(o.atoms),atomsThatAreDefault:new Set(o.atomsThatAreDefault),families:new Hn(o.families),joins:new Hn(o.joins),operation:{open:!1},readonlySelectors:new Hn(o.readonlySelectors),timelines:new Hn(o.timelines),timelineTopics:o.timelineTopics.overlay(),trackers:new Map,transactions:new Hn(o.transactions),selectorAtoms:o.selectorAtoms.overlay(),selectorGraph:o.selectorGraph.overlay(),writableSelectors:new Hn(o.writableSelectors),valueMap:new Hn(o.valueMap),defaults:o.defaults,disposalTraces:t.disposalTraces.copy(),molecules:new Hn(o.molecules),moleculeGraph:o.moleculeGraph.overlay(),moleculeData:o.moleculeData.overlay(),moleculeJoins:o.moleculeJoins.overlay(),miscResources:new Hn(o.miscResources)},u=SM(t,e.key),f={phase:"building",update:{type:"transaction_outcome",token:e,id:r,epoch:u===void 0?NaN:u+1,timestamp:Date.now(),subEvents:[],params:n,output:void 0},toolkit:{get:((...p)=>ln(h,...p)),set:((...p)=>{kt(h,...p)}),reset:((...p)=>{Gm(h,...p)}),run:(p,y=Sl())=>ef(h,p,y),find:((...p)=>jr(t,...p)),json:p=>bs(h,p),dispose:((...p)=>{sf(h,...p)}),env:()=>TM(h)}},h=Object.assign(l,{transactionMeta:f});return o.child=h,t.logger.info("🛫","transaction",e.key,"building with params:",n),h};function nf(t,e){const{key:n}=e,r=t.transactions.has(n),o={key:n,type:"transaction",run:(f,h)=>{const p=kr(o),y=AM(t,p,f,h);try{const{toolkit:g}=y.transactionMeta,v=e.do(g,...f);return xM(y,v),v}catch(g){throw oM(y),t.logger.warn("💥","transaction",n,"caught:",g),g}},install:f=>nf(f,e),subject:new Qe};_e(t).transactions.set(n,o);const u=kr(o);return r||t.on.transactionCreation.next(u),u}function _1(t,e,{oldValue:n,newValue:r},o,l){const u=kr(e);if(o&&l){e.subject.next({newValue:r});const g={checkpoint:!0,type:"state_creation",subType:"writable",token:u,timestamp:Date.now(),value:r};t.operation.subEvents.push(g),l.subject.next(g);const S=_e(t);if(u.family)if(ol(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 wn(S)&&S.on.transactionApplying.state===null&&S.transactionMeta.update.subEvents.push(g);return}const{key:f,subject:h,type:p}=e,y={oldValue:Hh(n)?n.READONLY_VIEW:n,newValue:Hh(r)?r.READONLY_VIEW:r};if(ol(t)){switch(p){case"mutable_atom":t.logger.info("📢",p,f,"is now (",r,") subscribers:",h.subscribers.keys());break;case"atom":case"writable_pure_selector":case"writable_held_selector":t.logger.info("📢",p,f,"went (",n,"->",r,") subscribers:",h.subscribers.keys())}h.next(y)}if(wn(t)&&(p==="mutable_atom"||p==="atom")){if(t.on.transactionApplying.state===null){if(Hh(r))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",f,"stowed (",n,"->",r,")");return}if(L1(e,"tracker:signal")){const g=f.slice(1),v=t.atoms.get(g);gs(t,v,"mut").do(y.newValue)===null===!0&&Hm(t,v)}}}const Up=Symbol("OWN_OP"),EM=Symbol("JOIN_OP");function Jm(t,e,...n){let r,o,l,u,f,h;n.length===2?(l=n[0],h=n[1],"family"in l&&(u=Fm(t,l),f=Nr(l.family.subKey),r=ul(t,u,f),r?l=r:l=o=cl(t,u,f,ll))):(u=lt(t,n[0]),f=n[1],h=n[2],r=ul(t,u,f),r?l=r:l=o=cl(t,u,f,ll));const p=h===Vp?"reset":"set";let y;if(e===Up){const x=v1(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}`),Jm(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===Vp?v=aM(y,g):v=cM(y,g,h),_1(y,g,v,!!o,u),e===Up&&S1(y)}const k1=(t,e)=>_e(t).atoms.has(e),RM=(t,e)=>_e(t).writableSelectors.has(e),OM=(t,e)=>_e(t).readonlySelectors.has(e),_M=(t,e)=>k1(t,e)||RM(t,e)||OM(t,e);function fS(t,e){return _e(t).selectorGraph.getRelationEntries({downstreamSelectorKey:e}).filter(([r,{source:o}])=>o!==e).map(([r,{source:o}])=>o).filter(r=>_M(t,r))}function _u(t,e,n=new Set){const r=fS(t,e),o=new Map;for(;r.length>0;){const l=r.pop();if(!n.has(l))if(n.add(l),k1(t,l)){const u=t.atoms.get(l);o.set(u.key,u)}else r.push(...fS(t,l))}return o}function kM(t,e,n,r,o){const l=_e(t),{type:u,key:f}=r;if(u==="atom"||u==="mutable_atom")l.selectorAtoms.set({selectorKey:n,atomKey:f}),t.logger.info("🔍",e,n,`discovers root atom "${f}"`);else{const h=_u(t,f,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(f)}function rf(t,e,n,r){return{get:(...o)=>{const l=_e(t),{token:u,family:f,subKey:h}=iy(t,...o);let p;if("counterfeit"in u&&f&&h)p=b1(t,u,f,h);else{const y=lt(t,u);p=gs(t,y)}return t.logger.info("🔌",e,n,`registers dependency ( "${u.key}" =`,p,")"),l.selectorGraph.set({upstreamSelectorKey:u.key,downstreamSelectorKey:n},{source:u.key}),kM(t,e,n,u,r),p},set:((...o)=>{const l=_e(t);Jm(l,EM,...o)}),find:((...o)=>jr(t,...o)),json:o=>bs(t,o)}}function Zm(t,e,n){const r=_e(t),o=new Qe,l=new Set,{key:u,const:f}=e,h="readonly_held_selector";t.logger.info("🔨",h,u,"is being created");const{get:p,find:y,json:g}=rf(r,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},f),sn(T,S,f),t.logger.info("✨",h,u,"=",f),l.clear(),f},install:T=>Zm(T,e,n)};n&&(S.family=n),r.readonlySelectors.set(u,S);const x={key:u,type:h};return n&&(x.family=n),x}function Qm(t,e,n){const r=_e(t),o=new Qe,l=new Set,u=e.key,f="readonly_pure_selector";t.logger.info("🔨",f,u,"is being created");const{get:h,find:p,json:y}=rf(r,f,u,l),v={...e,type:f,subject:o,getFrom:()=>{const x=_e(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=sn(x,v,D);return t.logger.info("✨",f,u,"=",M),l.clear(),M},install:x=>Qm(x,e,n)};n&&(v.family=n),r.readonlySelectors.set(u,v);const S={key:u,type:f};return n&&(S.family=n),S}function Wm(t,e,n){const r=_e(t),o=new Qe,l=new Set,{key:u,const:f}=e,h="writable_held_selector";t.logger.info("🔨",h,u,"is being created");const p=rf(r,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,f),sn(O,D,f),t.logger.info("✨",h,u,"=",f),l.clear(),f},setSelf:()=>{e.set(p,f)},install:O=>Wm(O,e,n)};n&&(D.family=n),r.writableSelectors.set(u,D);const M={key:u,type:h};return n&&(M.family=n),M}function ey(t,e,n){const r=_e(t),o=new Qe,l=new Set,u=e.key,f="writable_pure_selector";t.logger.info("🔨",f,u,"is being created");const h=rf(r,f,u,l),{find:p,get:y,json:g}=h,v={find:p,get:y,json:g},T={...e,type:f,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=sn(M,T,C);return t.logger.info("✨",f,u,"=",j),l.clear(),j},setSelf:M=>{e.set(h,M)},install:M=>ey(M,e,n)};n&&(T.family=n),r.writableSelectors.set(u,T);const D={key:u,type:f};return n&&(D.family=n),D}function M1(t,e){const n="set"in e,r="const"in e;if(r&&n){const l=Wm(t,e,void 0);return t.on.selectorCreation.next(l),l}if(r){const l=Zm(t,e,void 0);return t.on.selectorCreation.next(l),l}if(n){const l=ey(t,e,void 0);return t.on.selectorCreation.next(l),l}const o=Qm(t,e,void 0);return t.on.selectorCreation.next(o),o}function MM(t,e){const n=_e(t),{key:r,type:o,family:l}=e;if(!l)t.logger.error("❌",o,r,"Standalone selectors cannot be disposed.");else{n.molecules.get(l.subKey)&&n.moleculeData.delete(l.subKey,l.key);let f;switch(e.type){case"writable_held_selector":n.writableSelectors.delete(r),f={key:l.key,type:"writable_held_selector_family"},lt(t,f).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"writable_pure_selector":n.writableSelectors.delete(r),f={key:l.key,type:"writable_pure_selector_family"},lt(t,f).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"readonly_held_selector":n.readonlySelectors.delete(r),f={key:l.key,type:"readonly_held_selector_family"},lt(t,f).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break;case"readonly_pure_selector":n.readonlySelectors.delete(r),f={key:l.key,type:"readonly_pure_selector_family"},lt(t,f).subject.next({type:"state_disposal",subType:"selector",token:e,timestamp:Date.now()});break}n.valueMap.delete(r),n.selectorAtoms.delete(r),n.selectorGraph.delete(r),n.moleculeData.delete(l.key,l.subKey),t.logger.info("🔥",e.type,r,"deleted"),wn(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 po(t,e,n){const r=e.key,o="readonly_pure_selector_family",l={key:r,type:o},u=t.families.get(r);u&&t.logger.error("❗",o,r,`Overwriting an existing ${$r[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const f=new Qe,p={...l,create:y=>{const g=Ge(y),v={key:r,subKey:g},S=`${r}(${g})`,x=_e(t),T={key:S,get:e.get(y)};return e.catch&&(T.catch=e.catch),Qm(x,T,v)},internalRoles:n,subject:f,install:y=>po(y,e),default:y=>e.get(y)({get:((...v)=>ln(t,...v)),find:((...v)=>jr(t,...v)),json:v=>bs(t,v)})};return t.families.set(r,p),l}function ty(t,e,n){const r={key:e.key,type:"atom_family"},o=t.families.get(e.key);o&&t.logger.error("❗","atom_family",e.key,`Overwriting an existing ${$r[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,f={...r,create:h=>{const p=Ge(h),y={key:e.key,subKey:p},g=`${e.key}(${p})`,v=_e(t),S=e.default,x={key:g,default:al(S)?()=>S(h):S};return e.effects&&(x.effects=e.effects(h)),e.catch&&(x.catch=e.catch),of(v,x,y)},default:e.default,subject:l,install:h=>ty(h,e),internalRoles:n};return t.families.set(e.key,f),al(e.default)===!1&&t.defaults.set(e.key,e.default),r}function C1(t,e,n){const r=e.key,o="readonly_held_selector_family",l={key:r,type:o},u=t.families.get(r);u&&t.logger.error("❗",o,r,`Overwriting an existing ${$r[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const f=new Qe,p={...l,create:y=>{const g=Ge(y),v={key:r,subKey:g},S=`${r}(${g})`,x=_e(t);return Zm(x,{key:S,const:e.const(y),get:e.get(y)},v)},internalRoles:n,subject:f,install:y=>C1(y,e),default:e.const};return t.families.set(r,p),l}function D1(t,e,n){const r=e.key,o="writable_held_selector_family",l={key:r,type:o},u=t.families.get(r);u&&t.logger.error("❗",o,r,`Overwriting an existing ${$r[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const f=new Qe,p={...l,create:y=>{const g=Ge(y),v={key:r,subKey:g},S=`${r}(${g})`,x=_e(t);return Wm(x,{key:S,const:e.const(y),get:e.get(y),set:e.set(y)},v)},internalRoles:n,subject:f,install:y=>D1(y,e),default:e.const};return t.families.set(r,p),l}function ny(t,e,n){const r=e.key,o="writable_pure_selector_family",l={key:r,type:o},u=t.families.get(r);u&&t.logger.error("❗",o,r,`Overwriting an existing ${$r[u.type]} "${u.key}" in store "${t.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const f=new Qe,p={...l,create:y=>{const g=Ge(y),v={key:r,subKey:g},S=`${r}(${g})`,x=_e(t),T={key:S,get:e.get(y),set:e.set(y)};return e.catch&&(T.catch=e.catch),ey(x,T,v)},internalRoles:n,subject:f,install:y=>ny(y,e),default:y=>e.get(y)({get:((...v)=>ln(t,...v)),find:((...v)=>jr(t,...v)),json:v=>bs(t,v)})};return t.families.set(r,p),l}function CM(t,e){const n="set"in e,r="const"in e;return r&&n?D1(t,e,void 0):r?C1(t,e,void 0):n?ny(t,e):po(t,e)}function ul(t,e,n){const r=Ge(n),o=`${e.key}(${r})`,l=_e(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&&kr(u)}function jr(t,e,n){const r=lt(t,e),o=ul(t,e,n);return o||cl(t,r,n)}function sf(t,...e){let n;if(e.length===1)n=e[0];else{const r=e[0],o=e[1];n=jr(t,r,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":oy(t,n);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":MM(t,n);break}}function iy(t,...e){let n,r,o,l,u;if(e.length===1){if(u=e[0],"family"in u){const p=Fm(t,u);if(o=lt(t,p),l=Nr(u.family.subKey),n=ul(t,p,l),"counterfeit"in u)return{token:u,family:o,subKey:l,isNew:!1};n?u=n:(r=cl(t,p,l,ll),u=r)}}else o=lt(t,e[0]),l=e[1],n=ul(t,o,l),n?u=n:(r=cl(t,o,l,ll),u=r);const f="counterfeit"in u;if(!!r&&f===!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=_e(t);if(u.family)if(ol(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 wn(v)&&v.on.transactionApplying.state===null&&v.transactionMeta.update.subEvents.push(y)}return{token:u,family:o,subKey:l,isNew:!!r}}function ln(t,...e){const{token:n,family:r,subKey:o}=iy(t,...e);if("counterfeit"in n&&r&&o)return b1(t,n,r,o);const l=lt(t,n);return gs(t,l)}const dS=(t,e,n)=>n.subject.subscribe(`${e.type}:${e.key}`,r=>{t.logger.info("📢",e.type,e.key,"root",n.key,"went",r.oldValue,"->",r.newValue);const o=iM(t,e),l=gs(t,e);t.logger.info("✨",e.type,e.key,"went",o,"->",l),e.subject.next({newValue:l,oldValue:o})});function ko(t,e,n,r){function o(g){if(t.operation.open){const v=t.on.operationClose.subscribe(`state subscription ${n}`,()=>{v(),r(g)})}else r(g)}iy(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",f=new Map;let h=o;if(u){gs(t,l);for(const[g,v]of _u(t,l.key))f.set(g,dS(t,l,v));h=function(v){const S=_u(t,l.key);for(const[x,T]of f)S.get(x)?S.delete(x):(T(),f.delete(x));for(const[x,T]of S)f.set(x,dS(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 f.values())g()}}function lt(t,e){let n,r=t;for(;r!==null;){switch(e.type){case"atom":case"mutable_atom":n=r.atoms.get(e.key);break;case"writable_pure_selector":case"writable_held_selector":n=r.writableSelectors.get(e.key);break;case"readonly_pure_selector":case"readonly_held_selector":n=r.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=r.families.get(e.key);break;case"timeline":n=r.timelines.get(e.key);break;case"transaction":n=r.transactions.get(e.key);break}if(n)return n;r=r.child}throw new VM(e,t)}const N1=(t,e,n,r)=>{const o=lt(t,e);t.logger.info("👀","timeline",e.key,`Adding subscription "${n}"`);const l=o.subject.subscribe(n,r);return()=>{t.logger.info("🙈","timeline",e.key,`Removing subscription "${n}" from timeline`),l()}},$1=(t,e,n,r)=>{const o=lt(t,e);t.logger.info("👀","transaction",e.key,`Adding subscription "${n}"`);const l=o.subject.subscribe(n,r);return()=>{t.logger.info("🙈","transaction",e.key,`Removing subscription "${n}"`),l()}};function DM(t,e,n,r=Sl()){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 ko(t,e,r,n);case"transaction":return $1(t,e,r,n);case"timeline":return N1(t,e,r,n)}}var ry=class{initializeSignalAtom(t,e){const n=`*${t.key}`;e.atoms.delete(n),e.valueMap.delete(n);const r=t.family?{key:`*${t.family.key}`,subKey:t.family.subKey}:void 0,o=of(e,{key:n,default:null},r,["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 r=t.key,o=n.config.name,l=wn(n)?n.transactionMeta.update.token.key:"main",u=`tracker:${o}:${l}:${r}`,f=p=>{kt(n,e,p)},h=ln(n,t);this.unsubscribeFromInnerValue=h.subscribe(u,f),this.unsubscribeFromState=ko(n,t,u,(function(y){y.newValue!==y.oldValue&&(this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=y.newValue.subscribe(u,f))}).bind(this))}supplySignalsToCore(t,e,n){const r=`tracker:${n.config.name}:${wn(n)?n.transactionMeta.update.token.key:"main"}:${t.key}`;ko(n,e,r,function({newValue:l,oldValue:u}){const f=n.timelineTopics.getRelatedKey(e.key);if(f&&n.timelines.get(f)?.timeTraveling){const g=N1(n,{key:f,type:"timeline"},r,function(S){g(),kt(n,t,x=>(S==="redo"&&l?x.do(l):S==="undo"&&u&&x.undo(u),x))});return}const h=ln(n,t),p=h.getUpdateNumber(l),y=p-h.cacheUpdateNumber;if(l&&y===1)kt(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=_e(e),r=this.initializeSignalAtom(t,n);this.mutableAtomToken=t,this.latestSignalToken=r,this.captureSignalsFromCore(t,r,n),this.supplySignalsToCore(t,r,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 r=_e(t),{key:o}=e,l=r.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."),kr(l);const f=new Qe,h={...e,type:u,install:y=>(y.logger.info("🛠️","atom",o,`installing in store "${y.config.name}"`),sy(y,e,n)),subject:f};n&&(h.family=n),r.atoms.set(h.key,h);const p=kr(h);if(e.effects){let y=0;const g=[];for(const v of e.effects){const S=v({resetSelf:()=>{Gm(t,p)},setSelf:x=>{kt(t,p,x)},onSet:x=>ko(t,p,`effect[${y}]`,x)});S&&g.push(S),++y}h.cleanup=()=>{for(const v of g)v()}}return new ry(p,t),n||M1(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 NM=class{trackers=new Map;latestSignalAtoms;mutableAtoms;constructor(t,e){const n=ty(e,{key:`*${t.key}`,default:null},["mutable","updates"]);this.latestSignalAtoms=lt(e,n),this.mutableAtoms=t;const r=o=>{const{type:l,token:u}=o;if(u.family){const f=Nr(u.family.subKey);switch(l){case"state_creation":this.trackers.set(f,new ry(u,e));break;case"state_disposal":{const h=this.trackers.get(f);h&&(h[Symbol.dispose](),this.trackers.delete(f))}}}};this.mutableAtoms.subject.subscribe(`store=${e.config.name}::tracker-atom-family`,r)}};function j1(t,e,n){const r={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 ${$r[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,f={...r,create:h=>{const p=Ge(h),y={key:e.key,subKey:p},g=`${e.key}(${p})`,v=_e(t),S={key:g,class:e.class};return e.effects&&(S.effects=e.effects(h)),sy(v,S,y)},class:e.class,subject:l,install:h=>j1(h,e),internalRoles:n};return t.families.set(e.key,f),ny(t,{key:`${e.key}:JSON`,get:h=>({get:p})=>p(r,h).toJSON(),set:h=>({set:p},y)=>{p(r,h,e.class.fromJSON(y))}},["mutable","json"]),new NM(f,t),r}const hS=(t,e)=>{const n=_e(e),r=`${t.key}:JSON`;return n.families.get(r)},bs=(t,e)=>{if(e.family){const r=_e(t),l={key:`${e.family.key}:JSON`,type:"writable_pure_selector_family"},u=lt(r,l),f=Nr(e.family.subKey);return jr(t,u,f)}return{type:"writable_pure_selector",key:`${e.key}:JSON`}},B1=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 $M=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)=>!UM(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},ol(e)&&(this.transactionMeta={epoch:new Map(e?.transactionMeta.epoch),actionContinuities:new Bi(e?.transactionMeta.actionContinuities.toJSON())});for(const[,r]of e.families)r.internalRoles?.includes("mutable")||r.internalRoles?.includes("join")||r.install(this);const n=new Set;for(const[,r]of e.atoms)if(!n.has(r.key)&&(r.install(this),r.type==="mutable_atom")){const o=bs(e,r),l=B1(r);n.add(o.key),n.add(l.key)}for(const[,r]of e.readonlySelectors)r.install(this);for(const[,r]of e.writableSelectors)n.has(r.key)||r.install(this);for(const[,r]of e.transactions)r.install(this);for(const[,r]of e.timelines)r.install(this)}}};const Bt={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new $M({name:"IMPLICIT_STORE",lifespan:"ephemeral"}),globalThis.ATOM_IO_IMPLICIT_STORE}};function of(t,e,n,r){const o="atom",{key:l}=e;t.logger.info("🔨",o,l,"is being created");const u=_e(t),f=u.atoms.get(l);if(f&&f.type===o)return t.logger.error("❌","atom",l,"Tried to create atom, but it already exists in the store."),kr(f);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),r&&(p.internalRoles=r),u.atoms.set(l,p);const y=kr(p);if(e.effects){let g=0;const v=[];for(const S of e.effects){const x=S({resetSelf:()=>{Gm(t,y)},setSelf:T=>{kt(t,y,T)},onSet:T=>ko(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 oy(t,e){const n=_e(t),{key:r,family:o}=e,l=lt(n,e);if(!o)t.logger.error("❌","atom",r,"Standalone atoms cannot be disposed.");else{l.cleanup?.();const u=t.valueMap.get(l.key),f=Fm(t,e),p=lt(t,f).subject,y={type:"state_disposal",subType:"atom",token:e,value:u,timestamp:Date.now()};p.next(y);const g=wn(n);if(n.atoms.delete(r),n.valueMap.delete(r),n.selectorAtoms.delete(r),n.atomsThatAreDefault.delete(r),n.moleculeData.delete(o.key,o.subKey),t.timelineTopics.delete(r),e.type==="mutable_atom"){const v=B1(e);oy(t,v),t.trackers.delete(r)}if(t.logger.info("🔥","atom",r,"deleted"),g&&n.transactionMeta.phase==="building"){const v=n.transactionMeta.update.subEvents.at(-1),x=v?.type==="molecule_disposal"&&v.values.some(([D])=>D===l.family?.key),T=L1(l,"tracker:signal");!x&&!T&&n.transactionMeta.update.subEvents.push(y)}else t.on.atomDisposal.next(e)}}function L1(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;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=Bt.STORE){this.store=n,this.realm=new Fk(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)=>ln(n,...j)),set:((...j)=>{kt(n,...j)}),find:((...j)=>jr(n,...j)),json:j=>bs(n,j)};const r=t.between[0],o=t.between[1],l=j1(n,{key:`${t.key}/relatedKeys`,class:Im},["join","relations"]);this.core={relatedKeysAtoms:l};const u=({get:j},_)=>j(l,_),f=({set:j},_,J)=>{this.store.molecules.has(Ge(_))||this.realm.allocate(t.key,_),j(l,_,Y=>Y.add(J)),j(l,J,Y=>Y.add(_))},h=({set:j},_,J)=>{j(l,_,re=>(re.delete(J),re)),j(l,J,re=>(re.delete(_),re));const[Y,F]=[_,J].sort(),ee=`${Y}:${F}`;this.store.moleculeJoins.delete(ee)},p=(j,_,J)=>{const{find:Y,get:F,set:ee}=j,re=Y(l,_),ue=F(re);for(const ge of ue)J.includes(ge)||ee(l,ge,Q=>(Q.delete(_),Q));ee(re,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 ne=u(j,z);ne.delete(Q),ne.size===0&&q.push(z)}!B&&W.size>0&&W.clear();for(const z of q){const[ne,A]=[Q,z].sort(),P=`${ne}:${A}`;n.moleculeJoins.delete(P)}}B||W.add(_),be.add(Q)}return!0}),ge))},y=(j,_,J)=>{const{set:Y}=j;Y(l,_,F=>(F.transaction(ee=>{for(const re of J)ee.add(re);return!0}),F));for(const F of J)Y(l,F,ee=>(ee.add(_),ee));return!0},g=(j,_,J)=>{const Y=u(j,_);return J?Y.has(J):Y.size>0},v={getRelatedKeys:j=>u(this.toolkit,j),addRelation:(j,_)=>{this.store.moleculeJoins.set(`"${j}"`,t.key),this.store.moleculeJoins.set(`"${_}"`,t.key),f(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=ty(n,{key:`${t.key}/content`,default:e},["join","content"]);const j=({get:Y},F)=>Y(x,F),_=({set:Y},F,ee)=>{Y(x,F,ee)};S=Object.assign(v,{getContent:Y=>j(this.toolkit,Y),setContent:(Y,F)=>{_(this.toolkit,Y,F)},deleteContent:Y=>{}})}else S=v;const T=new Bi(t,{externalStore:S,isAType:t.isAType,isBType:t.isBType,makeContentKey:(...j)=>{const[_,J]=j,[Y,F]=j.sort(),ee=`${Y}:${F}`,re=n.molecules.get(Ge(_)),ue=n.molecules.get(Ge(J));return re||this.realm.allocate(t.key,_),ue||this.realm.allocate(t.key,J),this.realm.allocate(_,ee,"all"),this.realm.claim(J,ee),this.store.moleculeJoins.set(ee,t.key),ee}}),D=()=>po(n,{key:`${t.key}/singleRelatedKey`,get:j=>({get:_})=>{const J=_(l,j);for(const Y of J)return Y;return null}},["join","keys"]),M=()=>po(n,{key:`${t.key}/multipleRelatedKeys`,get:j=>({get:_})=>{const J=hS(l,n);return _(J,j).members}},["join","keys"]),O=()=>po(n,{key:`${t.key}/singleRelatedEntry`,get:j=>({get:_})=>{const J=_(l,j);for(const Y of J){let F=T.isAType?.(j)?j:void 0,ee=F===void 0?j:void 0;F??=Y,ee??=Y;const re=T.makeContentKey(F,ee),ue=_(x,re);return[Y,ue]}return null}},["join","entries"]),C=()=>po(n,{key:`${t.key}/multipleRelatedEntries`,get:j=>({get:_})=>{const J=hS(l,n);return _(J,j).members.map(F=>{let ee=T.isAType?.(j)?j:void 0,re=ee===void 0?j:void 0;ee??=F,re??=F;const ue=T.makeContentKey(ee,re),ge=_(x,ue);return[F,ge]})}},["join","entries"]);switch(t.cardinality){case"1:1":{const j=D(),_=`${r}KeyOf${bn(o)}`,J=`${o}KeyOf${bn(r)}`,Y={[_]:j,[J]:j};let F;if(e){const ee=O(),re=`${r}EntryOf${bn(o)}`,ue=`${o}EntryOf${bn(r)}`,ge={[re]:ee,[ue]:ee};F=Object.assign(Y,ge)}else F=Y;this.relations=T,this.states=F;break}case"1:n":{const j=D(),_=M(),J=`${r}KeyOf${bn(o)}`,Y=`${o}KeysOf${bn(r)}`,F={[J]:j,[Y]:_};let ee;if(e){const re=O(),ue=C(),ge=`${r}EntryOf${bn(o)}`,be=`${o}EntriesOf${bn(r)}`,Q={[ge]:re,[be]:ue};ee=Object.assign(F,Q)}else ee=F;this.relations=T,this.states=ee;break}case"n:n":{const j=M(),_=`${r}KeysOf${bn(o)}`,J=`${o}KeysOf${bn(r)}`,Y={[_]:j,[J]:j};let F;if(e){const ee=C(),re=`${r}EntriesOf${bn(o)}`,ue=`${o}EntriesOf${bn(r)}`,ge={[re]:ee,[ue]:ee};F=Object.assign(Y,ge)}else F=Y;this.relations=T,this.states=F}}}};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=Bt.STORE.joins.get(t.key);if(o===void 0)throw new Error(`Join "${t.key}" not found in store "${e.config.name}"`);const l=Zk(e);n=new V1(o.options,o.defaultContent,l),e.joins.set(t.key,n)}return n}function LM(t,e){return BM(t,e).core.relatedKeysAtoms}var VM=class extends Error{constructor(t,e){super(`${$r[t.type]} ${Ge(t.key)} not found in store "${e.config.name}".`)}};function UM(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-BInxQBUV.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-rL2PwV4P.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-ki_mruCb.css">
10
10
  </head>
11
11
  <body>