atom.io 0.33.3 → 0.33.5

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.
Files changed (43) hide show
  1. package/dist/data/index.d.ts +0 -3
  2. package/dist/data/index.d.ts.map +1 -1
  3. package/dist/eslint-plugin/index.d.ts +0 -5
  4. package/dist/eslint-plugin/index.d.ts.map +1 -1
  5. package/dist/internal/index.d.ts +19 -100
  6. package/dist/internal/index.d.ts.map +1 -1
  7. package/dist/internal/index.js +33 -33
  8. package/dist/internal/index.js.map +1 -1
  9. package/dist/introspection/index.d.ts +1 -8
  10. package/dist/introspection/index.d.ts.map +1 -1
  11. package/dist/introspection/index.js +8 -8
  12. package/dist/introspection/index.js.map +1 -1
  13. package/dist/json/index.d.ts +0 -4
  14. package/dist/json/index.d.ts.map +1 -1
  15. package/dist/main/index.d.ts +5 -28
  16. package/dist/main/index.d.ts.map +1 -1
  17. package/dist/main/index.js.map +1 -1
  18. package/dist/react/index.d.ts +0 -5
  19. package/dist/react/index.d.ts.map +1 -1
  20. package/dist/react-devtools/index.css.map +1 -1
  21. package/dist/react-devtools/index.d.ts +0 -11
  22. package/dist/react-devtools/index.d.ts.map +1 -1
  23. package/dist/react-devtools/index.js +5 -2
  24. package/dist/react-devtools/index.js.map +1 -1
  25. package/dist/realtime/index.d.ts +1 -2
  26. package/dist/realtime/index.d.ts.map +1 -1
  27. package/dist/realtime-client/index.d.ts +3 -14
  28. package/dist/realtime-client/index.d.ts.map +1 -1
  29. package/dist/realtime-react/index.d.ts +0 -11
  30. package/dist/realtime-react/index.d.ts.map +1 -1
  31. package/dist/realtime-react/index.js +1 -1
  32. package/dist/realtime-react/index.js.map +1 -1
  33. package/dist/realtime-server/index.d.ts +25 -15
  34. package/dist/realtime-server/index.d.ts.map +1 -1
  35. package/dist/realtime-server/index.js +5 -5
  36. package/dist/realtime-server/index.js.map +1 -1
  37. package/dist/realtime-testing/index.d.ts +0 -1
  38. package/dist/transceivers/set-rtx/index.d.ts +0 -1
  39. package/dist/web/index.d.ts +0 -1
  40. package/package.json +26 -26
  41. package/src/internal/store/withdraw.ts +13 -13
  42. package/src/main/logger.ts +2 -2
  43. package/src/react-devtools/AtomIODevtools.tsx +2 -2
@@ -5,11 +5,9 @@ import { AtomToken, ReadableToken, ReadonlyPureSelectorFamilyToken, ReadonlyPure
5
5
 
6
6
  //#region src/introspection/attach-atom-index.d.ts
7
7
  type AtomTokenIndex = WritableTokenIndex<AtomToken<unknown>>;
8
-
9
8
  //#endregion
10
9
  //#region src/introspection/attach-selector-index.d.ts
11
10
  type SelectorTokenIndex = WritableTokenIndex<SelectorToken<unknown>>;
12
-
13
11
  //#endregion
14
12
  //#region src/introspection/attach-introspection-states.d.ts
15
13
  type IntrospectionStates = {
@@ -22,7 +20,6 @@ type IntrospectionStates = {
22
20
  typeSelectors: ReadonlyPureSelectorFamilyToken<string, string>;
23
21
  };
24
22
  declare const attachIntrospectionStates: (store: Store) => IntrospectionStates;
25
-
26
23
  //#endregion
27
24
  //#region src/introspection/auditor.d.ts
28
25
  type ListResourcesParam = {
@@ -58,7 +55,6 @@ declare class Auditor {
58
55
  listResources(param?: ListResourcesParam): (readonly [ReadableToken<unknown>, number])[];
59
56
  [Symbol.dispose](): void;
60
57
  }
61
-
62
58
  //#endregion
63
59
  //#region src/introspection/refinery.d.ts
64
60
  type ClassSignature = abstract new (...args: any) => any;
@@ -97,7 +93,6 @@ declare const jsonRefinery: Refinery<{
97
93
  }>;
98
94
  type JsonType = keyof typeof jsonRefinery.supported;
99
95
  declare const discoverType: (input: unknown) => JsonType | `Map` | `Set` | `undefined` | (string & {});
100
-
101
96
  //#endregion
102
97
  //#region src/introspection/differ.d.ts
103
98
  declare function diffNumber(a: number, b: number): Delta;
@@ -130,16 +125,15 @@ declare const prettyJson: Differ<{
130
125
  object: (input: unknown) => input is Json.Tree.Object;
131
126
  array: (input: unknown) => input is Json.Tree.Array;
132
127
  }>;
133
-
134
128
  //#endregion
135
129
  //#region src/introspection/sprawl.d.ts
130
+ // if you found what you were looking for, return true and break
136
131
  type InspectionResult = Partial<{
137
132
  pathComplete: true;
138
133
  jobComplete: true;
139
134
  }>;
140
135
  type InspectNode = (path: string[], node: unknown) => InspectionResult | void;
141
136
  declare const sprawl: (tree: Array<unknown> | object, inspector: InspectNode) => void;
142
-
143
137
  //#endregion
144
138
  //#region src/introspection/index.d.ts
145
139
  type FamilyNode<Token extends ReadableToken<unknown>> = {
@@ -147,7 +141,6 @@ type FamilyNode<Token extends ReadableToken<unknown>> = {
147
141
  familyMembers: Map<string, Token>;
148
142
  };
149
143
  type WritableTokenIndex<Token extends ReadableToken<unknown>> = Map<string, FamilyNode<Token> | Token>;
150
-
151
144
  //#endregion
152
145
  export { Auditor, ClassSignature, Differ, FamilyNode, InspectNode, InspectionResult, IntrospectionStates, JsonType, ListResourcesParam, RefinementStrategy, RefinementSupport, Refinery, Supported, WritableTokenIndex, attachIntrospectionStates, diffArray, diffBoolean, diffNumber, diffObject, diffString, discoverType, isPlainObject, jsonRefinery, jsonTreeRefinery, prettyJson, primitiveRefinery, sprawl };
153
146
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["store: Store","store: Store","store: Store","store: Internal.Store","param: ListResourcesParam","supported: SupportedTypes","input: T","primitiveRefinery: Refinery<{\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","input: unknown","jsonTreeRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n}>","jsonRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","a: number","b: number","a: string","b: string","a: boolean","b: boolean","a: Json.Tree.Object","b: Json.Tree.Object","recurse: Diff<unknown>","a: Json.Tree.Array","b: Json.Tree.Array","a: T","b: T","recurse: Differ<any, any>[`diff`]","leafRefinery: Refinery<Leaf>","treeRefinery: Refinery<Tree>","diffFunctions: {\n\t\t\t[KT in keyof Tree]: DiffTree<Supported<Tree[KT]>>\n\t\t} & { [KL in keyof Leaf]: Diff<Supported<Leaf[KL]>> }","a: unknown","b: unknown","prettyJson: Differ<\n\t{\n\t\tnumber: (input: unknown) => input is number\n\t\tstring: (input: unknown) => input is string\n\t\tboolean: (input: unknown) => input is boolean\n\t\tnull: (input: unknown) => input is null\n\t},\n\t{\n\t\tobject: (input: unknown) => input is Json.Tree.Object\n\t\tarray: (input: unknown) => input is Json.Tree.Array\n\t}\n>","input: unknown","path: string[]","node: unknown","tree: Array<unknown> | object","inspector: InspectNode"],"sources":["../../src/introspection/attach-atom-index.ts","../../src/introspection/attach-selector-index.ts","../../src/introspection/attach-introspection-states.ts","../../src/introspection/auditor.ts","../../src/introspection/refinery.ts","../../src/introspection/differ.ts","../../src/introspection/sprawl.ts","../../src/introspection/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["store: Store","store: Store","store: Store","store: Internal.Store","param: ListResourcesParam","supported: SupportedTypes","input: T","primitiveRefinery: Refinery<{\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","input: unknown","jsonTreeRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n}>","jsonRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","a: number","b: number","a: string","b: string","a: boolean","b: boolean","a: Json.Tree.Object","b: Json.Tree.Object","recurse: Diff<unknown>","a: Json.Tree.Array","b: Json.Tree.Array","a: T","b: T","recurse: Differ<any, any>[`diff`]","leafRefinery: Refinery<Leaf>","treeRefinery: Refinery<Tree>","diffFunctions: {\n\t\t\t[KT in keyof Tree]: DiffTree<Supported<Tree[KT]>>\n\t\t} & { [KL in keyof Leaf]: Diff<Supported<Leaf[KL]>> }","a: unknown","b: unknown","prettyJson: Differ<\n\t{\n\t\tnumber: (input: unknown) => input is number\n\t\tstring: (input: unknown) => input is string\n\t\tboolean: (input: unknown) => input is boolean\n\t\tnull: (input: unknown) => input is null\n\t},\n\t{\n\t\tobject: (input: unknown) => input is Json.Tree.Object\n\t\tarray: (input: unknown) => input is Json.Tree.Array\n\t}\n>","input: unknown","path: string[]","node: unknown","tree: Array<unknown> | object","inspector: InspectNode"],"sources":["../../src/introspection/attach-atom-index.ts","../../src/introspection/attach-selector-index.ts","../../src/introspection/attach-introspection-states.ts","../../src/introspection/auditor.ts","../../src/introspection/refinery.ts","../../src/introspection/differ.ts","../../src/introspection/sprawl.ts","../../src/introspection/index.ts"],"sourcesContent":[],"mappings":";;;;;;KAWY,cAAA,GAAiB,mBAAmB;;;KCApC,kBAAA,GAAqB,mBAAmB;;;KCOxC,mBAAA;aACA,0BAA0B;EFRtC,aAAY,EESI,yBFTJ,CES8B,kBFT9B,CAAA;EAAA,gBAAA,EEUO,yBFVP,CEUiC,gBFVjC,CEUkD,IFVlD,CAAA,EAAA,CAAA;EAAA,uBAAoC,EEWtB,+BFXsB,CEY9C,iBFZ8C,CEY5B,IFZ4B,CAAA,EAAA,EAAA,MAAA,CAAA;EAAA,aAAnB,EEeb,yBFfa,CEea,aFfb,CAAA,GAAA,CAAA,EAAA,CAAA;EAAA,iBAAA,EEgBT,+BFhBS,CEgBuB,QFhBvB,CAAA,GAAA,CAAA,EAAA,MAAA,CAAA;iBEiBb;;cAGH,mCAAoC,UAAQ;;;KChB7C,kBAAA;;EHJZ,gBAAY,EAAA,OAAA;CAAA;;;AAAiB;;cGahB,OAAA;kBACW,QAAA,CAAS;EFdjC,gBAAY,EAAA,MAAA;EAAA,eAAA,EEgBa,GFhBb,CAAA,MAAA,EAAA,MAAA,CAAA;EAAA,SAAwC,SAAA,EEiBxB,yBFjBwB,CEiBE,cFjBF,CAAA;EAAA,SAAnB,aAAA,EEkBD,yBFlBC,CEkByB,kBFlBzB,CAAA;EAAA,QAAA,EAAA,OAAA;;;;ECOjC,iBAAY,+BAAA;EAAA;;;EACA,WAC8B,CAAA,KAAA,CAAA,ECoBf,QAAA,CAAS,KDpBM;EAAA,gBAA1B,4BAAA,ECuDsC,kBDvDtC;EAAA;;;;;;EAEU,aAIgB,CAAA,KAAA,CAAA,EC4DjC,kBD5DiC,CAAA,EAAA,CAAA,SAAA,CC6D3B,aD7D2B,CAAA,OAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA;EAAA,CCqGjC,MAAA,CAAO,OAAA,GDrGA,EAAA,IAAA;;;;KEvBJ,cAAA;KAEA,kBAAA,GAAqB,iBAAiB;KAEtC,yBAAyB,sBACpC,eAAe,+BACZ,IACA,eAAe,iBACd,aAAa;KAGN,iBAAA,GAAoB,eAAe;AJHnC,cIKC,QJLD,CAAA,uBIKiC,iBJLjC,CAAA,CAAA;EAAA,SAAA,EIMO,cJNP;EAAA,WAAoC,CAAA,SAAA,EIQjB,cJRiB;EAAA,MAAnB,CAAA,CAAA,CAAA,CAAA,KAAA,EIYJ,CJZI,CAAA,EIazB,IJbyB,CAAA,QAAA,MIcb,cJda,GIcI,CJdJ,SIcc,SJdd,CIcwB,cJdxB,CIcuC,CJdvC,CAAA,CAAA,GAAA;IAAA,IAAA,EIgBhB,CJhBgB;UIiBhB,UAAU,eAAe;MAE/B,UAAU,eAAe,YAAY;UAE9B;IHrBd,IAAY,EGsBE,SHtBF,CGsBY,cHtBZ,CGsB2B,CHtB3B,CAAA,CAAA;EAAA,CAAA,GAAA,KAAA,EAAA,CAAA,CAAA,MGyBC,cHzBD,CAAA,GAAA,CG0BP,CH1BO,SG0BG,SH1BH,CG0Ba,cH1Bb,CAAA,MG0BkC,cH1BlC,CAAA,CAAA,GAAA,KAAA,GAAA,IAAA,CAAA;;AAAqB,cGkDpBO,iBHlDoB,EGkDD,QHlDC,CAAA;EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IAAA,MAAA;;;;ACOjC,CAAA,CAAA;AAAY,iBEuDI,aAAA,CFvDJ,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,IEuD4C,IAAA,CAAK,IAAA,CAAK,MFvDtD;AAC0B,cE8DzBE,gBF9DyB,EE8DP,QF9DO,CAAA;EAAA,MAA1B,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IE+D0B,IAAA,CAAK,IAAA,CAAK,MF/DpC;EAAA,KAAA,EAC8B,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IE+DL,IAAA,CAAK,IAAA,CAAK,KF/DL;CAAA,CAAA;AACoB,cEoEjDC,YFpEiD,EEoEnC,QFpEmC,CAAA;EAAA,MAAjB,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IEqEP,IAAA,CAAK,IAAA,CAAK,MFrEH;EAAA,KAAA,EAA1B,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IEsEkB,IAAA,CAAK,IAAA,CAAK,KFtE5B;EAAA,MAEC,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IAAA,MAAA;EAAA,MAAlB,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IAAA,MAAA;EAAA,OADwB,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IAAA,OAAA;EAAA,IAAA,EAIgB,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IAAA,IAAA;CAAA,CAAA;AACU,KE0ExC,QAAA,GF1EwC,MAAA,OE0EhB,YAAA,CAAa,SF1EG;AAAhC,cE4EP,YF5EO,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GE8EjB,QF9EiB,GAAA,KAAA,GAAA,KAAA,GAAA,WAAA,GAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;;;iBGrBJ,UAAA,wBAAkC;iBAOlC,UAAA,wBAAkC;iBAOlC,WAAA,0BAAqC;iBAMrC,UAAA,IACZ,IAAA,CAAK,IAAA,CAAK,WACV,IAAA,CAAK,IAAA,CAAK,iBACJ,gBACP;ALnBS,iBK4DI,SAAA,CL5DJ,CAAA,EK6DR,IAAA,CAAK,IAAA,CAAK,KL7DF,EAAA,CAAA,EK8DR,IAAA,CAAK,IAAA,CAAK,KL9DF,EAAA,OAAA,EK+DF,IL/DE,CAAA,OAAA,CAAA,CAAA,EKgET,KLhES;KKoEP,KAAA,GLpEO;EAAA,OAAoC,EAAA,MAAA;EAAA,KAAA,CAAnB,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,MAAA,CAAA,EAAA;EAAA,OAAA,CAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,MAAA,CAAA,EAAA;kCKwEI;;KAG5B,cAAc,MAAM,MAAM;AJ3E/B,KI4EK,QJ5EO,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,EI4EW,CJ5EX,EAAA,CAAA,EI4EiB,CJ5EjB,EAAA,OAAA,EI4E6B,MJ5E7B,CAAA,GAAA,EAAA,GAAA,CAAA,CAAA,MAAA,CAAA,EAAA,GI4E0D,KJ5E1D;AAAA,cI8EC,MJ9ED,CAAA,aI+EE,MJ/EsC,CAAA,MAAA,EAAA,GAAA,CAAA,EAAA,aIgFtC,MJhFmB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA;gBIkFX,SAAS;gBACT,SAAS;8BACK,OAAO,KAAK,UAAU,KAAK;EH7E/D,WAAY,EAAA,SAAA,MG8EwB,IH9ExB,GG8E+B,QH9E/B,CG8EwC,SH9ExC,CG8EkD,IH9ElD,CG8EuD,EH9EvD,CAAA,CAAA,CAAA,EAAA;EAAA,WAAA,CAAA,YAAA,EGiFI,QHjFJ,CGiFa,IHjFb,CAAA,EAAA,YAAA,EGkFI,QHlFJ,CGkFa,IHlFb,CAAA,EAAA,aAAA,EAAA,SAAA,MGoFI,IHpFJ,GGoFW,QHpFX,CGoFoB,SHpFpB,CGoF8B,IHpF9B,CGoFmC,EHpFnC,CAAA,CAAA,CAAA,EAAA,GAAA,SAAA,MGqFS,IHrFT,GGqFgB,IHrFhB,CGqFqB,SHrFrB,CGqF+B,IHrF/B,CGqFoC,EHrFpC,CAAA,CAAA,CAAA,EAAA;EAAA,IAAA,CAAA,CAC0B,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EGoGA,KHpGA;;AACI,cG2I7BoB,UH3I6B,EG2IjB,MH3IiB,CAAA;EAAA,MAA1B,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IAAA,MAAA;EAAA,MAC8C,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IAAA,MAAA;EAAA,OAAjB,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IAAA,OAAA;EAAA,IAAA,EAA1B,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IAAA,IAAA;CAAA,EAAA;EAEC,MAAlB,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IGgJqC,IAAA,CAAK,IAAA,CAAK,MHhJ/C;EAAA,KAAA,EADwB,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,KAAA,IGkJY,IAAA,CAAK,IAAA,CAAK,KHlJtB;CAAA,CAAA;;;;KInBd,gBAAA,GAAmB;;;;KAInB,WAAA,sCAGP;ANCO,cMCC,MNDD,EAAA,CAAA,IAAA,EMEL,KNFK,CAAA,OAAA,CAAA,GAAA,MAAA,EAAA,SAAA,EMGA,WNHA,EAAA,GAAA,IAAA;;;AAAA,KOHA,UPGA,CAAA,cOHyB,aPGzB,CAAA,OAAA,CAAA,CAAA,GAAA;EAAA,GAAA,EAAA,MAAA;EAAA,aAAoC,EODhC,GPCgC,CAAA,MAAA,EODpB,KPCoB,CAAA;CAAA;AAAnB,KOEjB,kBPFiB,CAAA,cOEgB,aPFhB,CAAA,OAAA,CAAA,CAAA,GOE0C,GPF1C,CAAA,MAAA,EOI5B,UPJ4B,COIjB,KPJiB,CAAA,GOIR,KPJQ,CAAA"}
@@ -7,7 +7,7 @@ const attachAtomIndex = (store) => {
7
7
  const atomTokenIndexState__INTERNAL = createRegularAtom(store, {
8
8
  key: `🔍 Atom Token Index (Internal)`,
9
9
  default: () => {
10
- const base = new Map();
10
+ const base = /* @__PURE__ */ new Map();
11
11
  for (const [key, val] of store.atoms) {
12
12
  if (isReservedIntrospectionKey(key)) continue;
13
13
  const token = deposit(val);
@@ -16,7 +16,7 @@ const attachAtomIndex = (store) => {
16
16
  if (!familyNode || !(`familyMembers` in familyNode)) {
17
17
  familyNode = {
18
18
  key: val.family.key,
19
- familyMembers: new Map()
19
+ familyMembers: /* @__PURE__ */ new Map()
20
20
  };
21
21
  base.set(val.family.key, familyNode);
22
22
  }
@@ -35,7 +35,7 @@ const attachAtomIndex = (store) => {
35
35
  if (familyNode === void 0 || !(`familyMembers` in familyNode)) {
36
36
  familyNode = {
37
37
  key: familyKey,
38
- familyMembers: new Map()
38
+ familyMembers: /* @__PURE__ */ new Map()
39
39
  };
40
40
  self.set(familyKey, familyNode);
41
41
  }
@@ -71,7 +71,7 @@ const attachSelectorIndex = (store) => {
71
71
  const readonlySelectorTokenIndexState__INTERNAL = createRegularAtom(store, {
72
72
  key: `🔍 Selector Token Index (Internal)`,
73
73
  default: () => {
74
- const base = new Map();
74
+ const base = /* @__PURE__ */ new Map();
75
75
  for (const map of [store.readonlySelectors, store.writableSelectors]) for (const [key, val] of map) {
76
76
  if (isReservedIntrospectionKey(key)) continue;
77
77
  const token = deposit(val);
@@ -80,7 +80,7 @@ const attachSelectorIndex = (store) => {
80
80
  if (!familyNode || !(`familyMembers` in familyNode)) {
81
81
  familyNode = {
82
82
  key: val.family.key,
83
- familyMembers: new Map()
83
+ familyMembers: /* @__PURE__ */ new Map()
84
84
  };
85
85
  base.set(val.family.key, familyNode);
86
86
  }
@@ -99,7 +99,7 @@ const attachSelectorIndex = (store) => {
99
99
  if (familyNode === void 0 || !(`familyMembers` in familyNode)) {
100
100
  familyNode = {
101
101
  key: familyKey,
102
- familyMembers: new Map()
102
+ familyMembers: /* @__PURE__ */ new Map()
103
103
  };
104
104
  self.set(familyKey, familyNode);
105
105
  }
@@ -144,7 +144,7 @@ const attachTimelineFamily = (store) => {
144
144
  transactionKey: null,
145
145
  install: () => {},
146
146
  subject: new Subject(),
147
- subscriptions: new Map()
147
+ subscriptions: /* @__PURE__ */ new Map()
148
148
  },
149
149
  effects: (key) => [({ setSelf }) => {
150
150
  const tl = store.timelines.get(key);
@@ -322,7 +322,7 @@ const attachIntrospectionStates = (store) => {
322
322
  var Auditor = class Auditor {
323
323
  store;
324
324
  auditorCreatedAt = performance.now();
325
- statesCreatedAt = new Map();
325
+ statesCreatedAt = /* @__PURE__ */ new Map();
326
326
  atomIndex;
327
327
  selectorIndex;
328
328
  disposed = false;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["store: Store","base: AtomTokenIndex","store: Store","base: SelectorTokenIndex","store: Store","store: Store","store: Store","store: Store","supported: SupportedTypes","input: T","primitiveRefinery: Refinery<{\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","input: unknown","jsonTreeRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n}>","jsonRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","store: Store","state: unknown","store: Store","store: Internal.Store","param: ListResourcesParam","resources: (readonly [ReadableToken<unknown>, number])[]","tree: Array<unknown> | object","inspector: InspectNode","path: string[]","node: unknown","p: string[]","n: unknown","result","a: number","b: number","a: string","b: string","a: boolean","b: boolean","a: Json.Tree.Object","b: Json.Tree.Object","recurse: Diff<unknown>","added: Delta[`added`]","removed: Delta[`removed`]","changed: Delta[`changed`]","key: string","a: Json.Tree.Array","b: Json.Tree.Array","leafRefinery: Refinery<Leaf>","treeRefinery: Refinery<Tree>","diffFunctions: {\n\t\t\t[KT in keyof Tree]: DiffTree<Supported<Tree[KT]>>\n\t\t} & { [KL in keyof Leaf]: Diff<Supported<Leaf[KL]>> }","a: unknown","b: unknown","prettyJson: Differ<\n\t{\n\t\tnumber: (input: unknown) => input is number\n\t\tstring: (input: unknown) => input is string\n\t\tboolean: (input: unknown) => input is boolean\n\t\tnull: (input: unknown) => input is null\n\t},\n\t{\n\t\tobject: (input: unknown) => input is Json.Tree.Object\n\t\tarray: (input: unknown) => input is Json.Tree.Array\n\t}\n>"],"sources":["../../src/introspection/attach-atom-index.ts","../../src/introspection/attach-selector-index.ts","../../src/introspection/attach-timeline-family.ts","../../src/introspection/attach-timeline-index.ts","../../src/introspection/attach-transaction-index.ts","../../src/introspection/attach-transaction-logs.ts","../../src/introspection/refinery.ts","../../src/introspection/attach-type-selectors.ts","../../src/introspection/attach-introspection-states.ts","../../src/introspection/auditor.ts","../../src/introspection/sprawl.ts","../../src/introspection/differ.ts"],"sourcesContent":["import type { AtomToken, ReadonlyPureSelectorToken } from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport {\n\tcreateRegularAtom,\n\tcreateStandaloneSelector,\n\tdeposit,\n\tisReservedIntrospectionKey,\n} from \"atom.io/internal\"\n\nimport type { WritableTokenIndex } from \".\"\n\nexport type AtomTokenIndex = WritableTokenIndex<AtomToken<unknown>>\n\nexport const attachAtomIndex = (\n\tstore: Store,\n): ReadonlyPureSelectorToken<AtomTokenIndex> => {\n\tconst atomTokenIndexState__INTERNAL = createRegularAtom<AtomTokenIndex>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Atom Token Index (Internal)`,\n\t\t\tdefault: () => {\n\t\t\t\tconst base: AtomTokenIndex = new Map()\n\t\t\t\tfor (const [key, val] of store.atoms) {\n\t\t\t\t\tif (isReservedIntrospectionKey(key)) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tconst token = deposit(val)\n\t\t\t\t\tif (val.family) {\n\t\t\t\t\t\tlet familyNode = base.get(val.family.key)\n\t\t\t\t\t\tif (!familyNode || !(`familyMembers` in familyNode)) {\n\t\t\t\t\t\t\tfamilyNode = {\n\t\t\t\t\t\t\t\tkey: val.family.key,\n\t\t\t\t\t\t\t\tfamilyMembers: new Map(),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbase.set(val.family.key, familyNode)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfamilyNode.familyMembers.set(val.family.subKey, token)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbase.set(key, token)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn base\n\t\t\t},\n\t\t\teffects: [\n\t\t\t\t({ setSelf }) => {\n\t\t\t\t\tstore.on.atomCreation.subscribe(`introspection`, (atomToken) => {\n\t\t\t\t\t\tif (isReservedIntrospectionKey(atomToken.key)) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetSelf((self) => {\n\t\t\t\t\t\t\tif (atomToken.family) {\n\t\t\t\t\t\t\t\tconst { key: familyKey, subKey } = atomToken.family\n\t\t\t\t\t\t\t\tlet familyNode = self.get(familyKey)\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tfamilyNode === undefined ||\n\t\t\t\t\t\t\t\t\t!(`familyMembers` in familyNode)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tfamilyNode = {\n\t\t\t\t\t\t\t\t\t\tkey: familyKey,\n\t\t\t\t\t\t\t\t\t\tfamilyMembers: new Map(),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tself.set(familyKey, familyNode)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfamilyNode.familyMembers.set(subKey, atomToken)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tself.set(atomToken.key, atomToken)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn self\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\tstore.on.atomDisposal.subscribe(`introspection`, (atomToken) => {\n\t\t\t\t\t\tsetSelf((self) => {\n\t\t\t\t\t\t\tif (atomToken.family) {\n\t\t\t\t\t\t\t\tconst { key: familyKey, subKey } = atomToken.family\n\t\t\t\t\t\t\t\tconst familyNode = self.get(familyKey)\n\t\t\t\t\t\t\t\tif (familyNode && `familyMembers` in familyNode) {\n\t\t\t\t\t\t\t\t\tfamilyNode.familyMembers.delete(subKey)\n\t\t\t\t\t\t\t\t\tif (familyNode.familyMembers.size === 0) {\n\t\t\t\t\t\t\t\t\t\tself.delete(familyKey)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tself.delete(atomToken.key)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn self\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tundefined,\n\t)\n\treturn createStandaloneSelector(store, {\n\t\tkey: `🔍 Atom Token Index`,\n\t\tget: ({ get }) => get(atomTokenIndexState__INTERNAL),\n\t})\n}\n","import type { ReadonlyPureSelectorToken, SelectorToken } from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport {\n\tcreateRegularAtom,\n\tcreateStandaloneSelector,\n\tdeposit,\n\tisReservedIntrospectionKey,\n} from \"atom.io/internal\"\n\nimport type { WritableTokenIndex } from \".\"\n\nexport type SelectorTokenIndex = WritableTokenIndex<SelectorToken<unknown>>\n\nexport const attachSelectorIndex = (\n\tstore: Store,\n): ReadonlyPureSelectorToken<SelectorTokenIndex> => {\n\tconst readonlySelectorTokenIndexState__INTERNAL =\n\t\tcreateRegularAtom<SelectorTokenIndex>(\n\t\t\tstore,\n\n\t\t\t{\n\t\t\t\tkey: `🔍 Selector Token Index (Internal)`,\n\t\t\t\tdefault: () => {\n\t\t\t\t\tconst base: SelectorTokenIndex = new Map()\n\t\t\t\t\tfor (const map of [store.readonlySelectors, store.writableSelectors]) {\n\t\t\t\t\t\tfor (const [key, val] of map) {\n\t\t\t\t\t\t\tif (isReservedIntrospectionKey(key)) {\n\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst token = deposit(val)\n\t\t\t\t\t\t\tif (val.family) {\n\t\t\t\t\t\t\t\tlet familyNode = base.get(val.family.key)\n\t\t\t\t\t\t\t\tif (!familyNode || !(`familyMembers` in familyNode)) {\n\t\t\t\t\t\t\t\t\tfamilyNode = {\n\t\t\t\t\t\t\t\t\t\tkey: val.family.key,\n\t\t\t\t\t\t\t\t\t\tfamilyMembers: new Map(),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbase.set(val.family.key, familyNode)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfamilyNode.familyMembers.set(val.family.subKey, token)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbase.set(key, token)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn base\n\t\t\t\t},\n\t\t\t\teffects: [\n\t\t\t\t\t({ setSelf }) => {\n\t\t\t\t\t\tstore.on.selectorCreation.subscribe(\n\t\t\t\t\t\t\t`introspection`,\n\t\t\t\t\t\t\t(selectorToken) => {\n\t\t\t\t\t\t\t\tif (isReservedIntrospectionKey(selectorToken.key)) {\n\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsetSelf((self) => {\n\t\t\t\t\t\t\t\t\tif (selectorToken.family) {\n\t\t\t\t\t\t\t\t\t\tconst { key: familyKey, subKey } = selectorToken.family\n\t\t\t\t\t\t\t\t\t\tlet familyNode = self.get(familyKey)\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tfamilyNode === undefined ||\n\t\t\t\t\t\t\t\t\t\t\t!(`familyMembers` in familyNode)\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tfamilyNode = {\n\t\t\t\t\t\t\t\t\t\t\t\tkey: familyKey,\n\t\t\t\t\t\t\t\t\t\t\t\tfamilyMembers: new Map(),\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tself.set(familyKey, familyNode)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tfamilyNode.familyMembers.set(subKey, selectorToken)\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tself.set(selectorToken.key, selectorToken)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn self\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tstore.on.selectorDisposal.subscribe(\n\t\t\t\t\t\t\t`introspection`,\n\t\t\t\t\t\t\t(selectorToken) => {\n\t\t\t\t\t\t\t\tsetSelf((self) => {\n\t\t\t\t\t\t\t\t\tif (selectorToken.family) {\n\t\t\t\t\t\t\t\t\t\tconst { key: familyKey, subKey } = selectorToken.family\n\t\t\t\t\t\t\t\t\t\tconst familyNode = self.get(familyKey)\n\t\t\t\t\t\t\t\t\t\tif (familyNode && `familyMembers` in familyNode) {\n\t\t\t\t\t\t\t\t\t\t\tfamilyNode.familyMembers.delete(subKey)\n\t\t\t\t\t\t\t\t\t\t\tif (familyNode.familyMembers.size === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tself.delete(familyKey)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tself.delete(selectorToken.key)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn self\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\tundefined,\n\t\t)\n\treturn createStandaloneSelector(store, {\n\t\tkey: `🔍 Selector Token Index`,\n\t\tget: ({ get }) => get(readonlySelectorTokenIndexState__INTERNAL),\n\t})\n}\n","import type { ReadonlyPureSelectorFamilyToken } from \"atom.io\"\nimport type { Store, Timeline } from \"atom.io/internal\"\nimport {\n\tcreateRegularAtomFamily,\n\tcreateSelectorFamily,\n\tSubject,\n} from \"atom.io/internal\"\n\nexport const attachTimelineFamily = (\n\tstore: Store,\n): ReadonlyPureSelectorFamilyToken<Timeline<any>, string> => {\n\tconst findTimelineLogState__INTERNAL = createRegularAtomFamily<\n\t\tTimeline<any>,\n\t\tstring\n\t>(store, {\n\t\tkey: `🔍 Timeline Update Log (Internal)`,\n\t\tdefault: (key) =>\n\t\t\tstore.timelines.get(key) ?? {\n\t\t\t\ttype: `timeline`,\n\t\t\t\tkey: ``,\n\t\t\t\tat: 0,\n\t\t\t\ttimeTraveling: null,\n\t\t\t\thistory: [],\n\t\t\t\tselectorTime: null,\n\t\t\t\ttransactionKey: null,\n\t\t\t\tinstall: () => {},\n\t\t\t\tsubject: new Subject(),\n\t\t\t\tsubscriptions: new Map(),\n\t\t\t},\n\t\teffects: (key) => [\n\t\t\t({ setSelf }) => {\n\t\t\t\tconst tl = store.timelines.get(key)\n\t\t\t\ttl?.subject.subscribe(`introspection`, (_) => {\n\t\t\t\t\tsetSelf({ ...tl })\n\t\t\t\t})\n\t\t\t},\n\t\t],\n\t})\n\tconst findTimelineLogState = createSelectorFamily<Timeline<any>, string>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Timeline Update Log`,\n\t\t\tget:\n\t\t\t\t(key) =>\n\t\t\t\t({ get }) =>\n\t\t\t\t\tget(findTimelineLogState__INTERNAL, key),\n\t\t},\n\t)\n\treturn findTimelineLogState\n}\n","import type { ReadonlyPureSelectorToken, TimelineToken } from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { createRegularAtom, createStandaloneSelector } from \"atom.io/internal\"\n\nexport const attachTimelineIndex = (\n\tstore: Store,\n): ReadonlyPureSelectorToken<TimelineToken<any>[]> => {\n\tconst timelineTokenIndexState__INTERNAL = createRegularAtom<\n\t\tTimelineToken<any>[]\n\t>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Timeline Token Index (Internal)`,\n\t\t\tdefault: () =>\n\t\t\t\t[...store.timelines].map(([key]): TimelineToken<any> => {\n\t\t\t\t\treturn { key, type: `timeline` }\n\t\t\t\t}),\n\t\t\teffects: [\n\t\t\t\t({ setSelf }) => {\n\t\t\t\t\tstore.on.timelineCreation.subscribe(\n\t\t\t\t\t\t`introspection`,\n\t\t\t\t\t\t(timelineToken) => {\n\t\t\t\t\t\t\tsetSelf((state) => [...state, timelineToken])\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tundefined,\n\t)\n\tconst timelineTokenIndex = createStandaloneSelector(store, {\n\t\tkey: `🔍 Timeline Token Index`,\n\t\tget: ({ get }) => get(timelineTokenIndexState__INTERNAL),\n\t})\n\treturn timelineTokenIndex\n}\n","import type { ReadonlyPureSelectorToken, TransactionToken } from \"atom.io\"\nimport type { Func, Store } from \"atom.io/internal\"\nimport { createRegularAtom, createStandaloneSelector } from \"atom.io/internal\"\n\nexport const attachTransactionIndex = (\n\tstore: Store,\n): ReadonlyPureSelectorToken<TransactionToken<Func>[]> => {\n\tconst transactionTokenIndexState__INTERNAL = createRegularAtom<\n\t\tTransactionToken<Func>[]\n\t>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Transaction Token Index (Internal)`,\n\t\t\tdefault: () =>\n\t\t\t\t[...store.transactions].map(([key]): TransactionToken<Func> => {\n\t\t\t\t\treturn { key, type: `transaction` }\n\t\t\t\t}),\n\t\t\teffects: [\n\t\t\t\t({ setSelf }) => {\n\t\t\t\t\tstore.on.transactionCreation.subscribe(\n\t\t\t\t\t\t`introspection`,\n\t\t\t\t\t\t(transactionToken) => {\n\t\t\t\t\t\t\tsetSelf((state) => [...state, transactionToken])\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tundefined,\n\t)\n\tconst transactionTokenIndex = createStandaloneSelector(store, {\n\t\tkey: `🔍 Transaction Token Index`,\n\t\tget: ({ get }) => get(transactionTokenIndexState__INTERNAL),\n\t})\n\treturn transactionTokenIndex\n}\n","import type { ReadonlyPureSelectorFamilyToken, TransactionUpdate } from \"atom.io\"\nimport type { Func, Store } from \"atom.io/internal\"\nimport { createRegularAtomFamily, createSelectorFamily } from \"atom.io/internal\"\n\nexport const attachTransactionLogs = (\n\tstore: Store,\n): ReadonlyPureSelectorFamilyToken<TransactionUpdate<Func>[], string> => {\n\tconst transactionUpdateLogAtoms = createRegularAtomFamily<\n\t\tTransactionUpdate<Func>[],\n\t\tstring\n\t>(store, {\n\t\tkey: `🔍 Transaction Update Log (Internal)`,\n\t\tdefault: () => [],\n\t\teffects: (key) => [\n\t\t\t({ setSelf }) => {\n\t\t\t\tconst tx = store.transactions.get(key)\n\t\t\t\ttx?.subject.subscribe(`introspection`, (transactionUpdate) => {\n\t\t\t\t\tif (transactionUpdate.key === key) {\n\t\t\t\t\t\tsetSelf((state) => [...state, transactionUpdate])\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t],\n\t})\n\tconst findTransactionUpdateLogState = createSelectorFamily<\n\t\tTransactionUpdate<Func>[],\n\t\tstring\n\t>(store, {\n\t\tkey: `🔍 Transaction Update Log`,\n\t\tget:\n\t\t\t(key) =>\n\t\t\t({ get }) =>\n\t\t\t\tget(transactionUpdateLogAtoms, key),\n\t})\n\treturn findTransactionUpdateLogState\n}\n","import type { Flat, Refinement } from \"atom.io/internal\"\nimport type { Json } from \"atom.io/json\"\n\nexport type ClassSignature = abstract new (...args: any) => any\n\nexport type RefinementStrategy = ClassSignature | Refinement<unknown, any>\n\nexport type Supported<Refine extends RefinementStrategy> =\n\tRefine extends Refinement<unknown, infer T>\n\t\t? T\n\t\t: Refine extends ClassSignature\n\t\t\t? InstanceType<Refine>\n\t\t\t: never\n\nexport type RefinementSupport = Record<string, RefinementStrategy>\n\nexport class Refinery<SupportedTypes extends RefinementSupport> {\n\tpublic supported: SupportedTypes\n\n\tpublic constructor(supported: SupportedTypes) {\n\t\tthis.supported = supported\n\t}\n\n\tpublic refine<T>(input: T):\n\t\t| Flat<{\n\t\t\t\t[K in keyof SupportedTypes]: T extends Supported<SupportedTypes[K]>\n\t\t\t\t\t? {\n\t\t\t\t\t\t\ttype: K\n\t\t\t\t\t\t\tdata: Supported<SupportedTypes[K]>\n\t\t\t\t\t\t}\n\t\t\t\t\t: Supported<SupportedTypes[K]> extends T\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ttype: K\n\t\t\t\t\t\t\t\tdata: Supported<SupportedTypes[K]>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: never\n\t\t }>[keyof SupportedTypes]\n\t\t| (T extends Supported<SupportedTypes[keyof SupportedTypes]>\n\t\t\t\t? never\n\t\t\t\t: null) {\n\t\tfor (const [key, refiner] of Object.entries(this.supported)) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\t// @ts-expect-error that's the point\n\t\t\t\t\trefiner(input) === true &&\n\t\t\t\t\trefiner !== Boolean\n\t\t\t\t) {\n\t\t\t\t\treturn { type: key, data: input } as any\n\t\t\t\t}\n\t\t\t} catch (_) {\n\t\t\t\ttry {\n\t\t\t\t\tif (input instanceof refiner) {\n\t\t\t\t\t\treturn { type: key, data: input } as any\n\t\t\t\t\t}\n\t\t\t\t} catch (__) {}\n\t\t\t}\n\t\t}\n\t\treturn null as any\n\t}\n}\n\nexport const primitiveRefinery: Refinery<{\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}> = new Refinery({\n\tnumber: (input: unknown): input is number => typeof input === `number`,\n\tstring: (input: unknown): input is string => typeof input === `string`,\n\tboolean: (input: unknown): input is boolean => typeof input === `boolean`,\n\tnull: (input: unknown): input is null => input === null,\n})\n\nexport function isPlainObject(input: unknown): input is Json.Tree.Object {\n\tif (!input) {\n\t\treturn false\n\t}\n\tconst prototype = Object.getPrototypeOf(input)\n\treturn prototype === Object.prototype\n}\n\nexport const jsonTreeRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n}> = new Refinery({\n\tobject: isPlainObject,\n\tarray: (input: unknown): input is Json.Tree.Array => Array.isArray(input),\n})\n\nexport const jsonRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}> = new Refinery({\n\t...primitiveRefinery.supported,\n\t...jsonTreeRefinery.supported,\n})\n\nexport type JsonType = keyof typeof jsonRefinery.supported\n\nexport const discoverType = (\n\tinput: unknown,\n): JsonType | `Map` | `Set` | `undefined` | (string & {}) => {\n\tif (input === undefined) {\n\t\treturn `undefined`\n\t}\n\tconst refined = jsonRefinery.refine(input)\n\tif (refined) {\n\t\treturn refined.type\n\t}\n\treturn Object.getPrototypeOf(input).constructor.name\n}\n","import type { ReadonlyPureSelectorFamilyToken } from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { createReadonlyPureSelectorFamily } from \"atom.io/internal\"\n\nimport { discoverType } from \"./refinery\"\n\nexport const attachTypeSelectors = (\n\tstore: Store,\n): ReadonlyPureSelectorFamilyToken<string, string> => {\n\tconst typeSelectors = createReadonlyPureSelectorFamily<string, string>(store, {\n\t\tkey: `🔍 State Type`,\n\t\tget:\n\t\t\t(key) =>\n\t\t\t({ get }) => {\n\t\t\t\tlet state: unknown\n\t\t\t\ttry {\n\t\t\t\t\tconst token =\n\t\t\t\t\t\tstore.atoms.get(key) ??\n\t\t\t\t\t\tstore.writableSelectors.get(key) ??\n\t\t\t\t\t\tstore.readonlySelectors.get(key)\n\t\t\t\t\tif (token === undefined) {\n\t\t\t\t\t\tthrow new Error(`Could not find state with key \"${key}\"`)\n\t\t\t\t\t}\n\t\t\t\t\tstate = get(token)\n\t\t\t\t} catch (thrown) {\n\t\t\t\t\treturn `error`\n\t\t\t\t}\n\t\t\t\tconst typeOfState = discoverType(state)\n\t\t\t\treturn typeOfState\n\t\t\t},\n\t})\n\treturn typeSelectors\n}\n","import type {\n\tReadonlyPureSelectorFamilyToken,\n\tReadonlyPureSelectorToken,\n\tTimelineToken,\n\tTransactionToken,\n\tTransactionUpdate,\n} from \"atom.io\"\nimport type { Func, Store, Timeline } from \"atom.io/internal\"\n\nimport { type AtomTokenIndex, attachAtomIndex } from \"./attach-atom-index\"\nimport type { SelectorTokenIndex } from \"./attach-selector-index\"\nimport { attachSelectorIndex } from \"./attach-selector-index\"\nimport { attachTimelineFamily } from \"./attach-timeline-family\"\nimport { attachTimelineIndex } from \"./attach-timeline-index\"\nimport { attachTransactionIndex } from \"./attach-transaction-index\"\nimport { attachTransactionLogs } from \"./attach-transaction-logs\"\nimport { attachTypeSelectors } from \"./attach-type-selectors\"\n\nexport type IntrospectionStates = {\n\tatomIndex: ReadonlyPureSelectorToken<AtomTokenIndex>\n\tselectorIndex: ReadonlyPureSelectorToken<SelectorTokenIndex>\n\ttransactionIndex: ReadonlyPureSelectorToken<TransactionToken<Func>[]>\n\ttransactionLogSelectors: ReadonlyPureSelectorFamilyToken<\n\t\tTransactionUpdate<Func>[],\n\t\tstring\n\t>\n\ttimelineIndex: ReadonlyPureSelectorToken<TimelineToken<any>[]>\n\ttimelineSelectors: ReadonlyPureSelectorFamilyToken<Timeline<any>, string>\n\ttypeSelectors: ReadonlyPureSelectorFamilyToken<string, string>\n}\n\nexport const attachIntrospectionStates = (store: Store): IntrospectionStates => {\n\treturn {\n\t\tatomIndex: attachAtomIndex(store),\n\t\tselectorIndex: attachSelectorIndex(store),\n\t\ttransactionIndex: attachTransactionIndex(store),\n\t\ttransactionLogSelectors: attachTransactionLogs(store),\n\t\ttimelineIndex: attachTimelineIndex(store),\n\t\ttimelineSelectors: attachTimelineFamily(store),\n\t\ttypeSelectors: attachTypeSelectors(store),\n\t}\n}\n","import {\n\ttype AtomToken,\n\tgetState,\n\ttype ReadableToken,\n\ttype ReadonlyPureSelectorToken,\n\ttype SelectorToken,\n} from \"atom.io\"\nimport * as Internal from \"atom.io/internal\"\n\nimport type { FamilyNode } from \".\"\nimport type { AtomTokenIndex } from \"./attach-atom-index\"\nimport { attachAtomIndex } from \"./attach-atom-index\"\nimport type { SelectorTokenIndex } from \"./attach-selector-index\"\nimport { attachSelectorIndex } from \"./attach-selector-index\"\n\nexport type ListResourcesParam = {\n\tatomFamilies: boolean\n\tselectorFamilies: boolean\n}\n\n/**\n * Auditor is a tool for identifying lingering resources in your store that may result in memory leaks.\n * @experimental\n */\nexport class Auditor {\n\tpublic readonly store: Internal.Store\n\tpublic auditorCreatedAt: number = performance.now()\n\tpublic statesCreatedAt: Map<string, number> = new Map()\n\tpublic readonly atomIndex: ReadonlyPureSelectorToken<AtomTokenIndex>\n\tpublic readonly selectorIndex: ReadonlyPureSelectorToken<SelectorTokenIndex>\n\tpublic disposed = false\n\n\tprivate readonly unsubscribeFromAtomCreation: () => void\n\tprivate readonly unsubscribeFromAtomDisposal: () => void\n\tprivate readonly unsubscribeFromSelectorCreation: () => void\n\tprivate readonly unsubscribeFromSelectorDisposal: () => void\n\n\t/**\n\t * @param {Store} store - The store to audit.\n\t */\n\tpublic constructor(store: Internal.Store = Internal.IMPLICIT.STORE) {\n\t\tthis.store = store\n\t\tthis.atomIndex = attachAtomIndex(this.store)\n\t\tthis.selectorIndex = attachSelectorIndex(this.store)\n\t\tthis.unsubscribeFromAtomCreation = this.store.on.atomCreation.subscribe(\n\t\t\t`auditor-${this.auditorCreatedAt}`,\n\t\t\t({ key }) => {\n\t\t\t\tthis.statesCreatedAt.set(key, performance.now() - this.auditorCreatedAt)\n\t\t\t},\n\t\t)\n\t\tthis.unsubscribeFromAtomDisposal = this.store.on.atomDisposal.subscribe(\n\t\t\t`auditor-${this.auditorCreatedAt}`,\n\t\t\t({ key }) => {\n\t\t\t\tthis.statesCreatedAt.delete(key)\n\t\t\t},\n\t\t)\n\t\tthis.unsubscribeFromSelectorCreation =\n\t\t\tthis.store.on.selectorCreation.subscribe(\n\t\t\t\t`auditor-${this.auditorCreatedAt}`,\n\t\t\t\t({ key }) => {\n\t\t\t\t\tthis.statesCreatedAt.set(\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tperformance.now() - this.auditorCreatedAt,\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t)\n\t\tthis.unsubscribeFromSelectorDisposal =\n\t\t\tthis.store.on.selectorDisposal.subscribe(\n\t\t\t\t`auditor-${this.auditorCreatedAt}`,\n\t\t\t\t({ key }) => {\n\t\t\t\t\tthis.statesCreatedAt.delete(key)\n\t\t\t\t},\n\t\t\t)\n\t}\n\n\tpublic static readonly DEFAULT_LIST_RESOURCES_PARAM: ListResourcesParam = {\n\t\tatomFamilies: true,\n\t\tselectorFamilies: true,\n\t} satisfies ListResourcesParam\n\t/**\n\t * Lists all resources in the store, along with their creation time.\n\t *\n\t * @param {ListResourcesParam} [param] - Optional parameters for filtering the list of resources.\n\t * @returns {readonly [ReadableToken<unknown>, number]}[] - An array of tuples, where each tuple contains a state token belonging to a family in the store and that state's creation time.\n\t */\n\tpublic listResources(\n\t\tparam: ListResourcesParam = Auditor.DEFAULT_LIST_RESOURCES_PARAM,\n\t): (readonly [ReadableToken<unknown>, number])[] {\n\t\tif (this.disposed) {\n\t\t\tthrow new Error(`This Auditor has been disposed`)\n\t\t}\n\t\tconst atoms = getState(this.atomIndex)\n\t\tconst selectors = getState(this.selectorIndex)\n\t\tconst atomFamilyNodes = [...atoms.values()].filter(\n\t\t\t(node): node is FamilyNode<AtomToken<unknown>> => `familyMembers` in node,\n\t\t)\n\t\tconst selectorFamilyNodes = [...selectors.values()].filter(\n\t\t\t(node): node is FamilyNode<SelectorToken<unknown>> =>\n\t\t\t\t`familyMembers` in node,\n\t\t)\n\t\tconst currentTime = performance.now()\n\t\tconst resources: (readonly [ReadableToken<unknown>, number])[] = []\n\t\tif (param.atomFamilies) {\n\t\t\tfor (const familyNode of atomFamilyNodes) {\n\t\t\t\tconst tokens = familyNode.familyMembers.values()\n\t\t\t\tfor (const token of tokens) {\n\t\t\t\t\tconst storedTime = this.statesCreatedAt.get(token.key)\n\t\t\t\t\tconst creationTime = storedTime ?? this.auditorCreatedAt\n\t\t\t\t\tconst age = currentTime - creationTime\n\t\t\t\t\tresources.push([token, age])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (param.selectorFamilies) {\n\t\t\tfor (const familyNode of selectorFamilyNodes) {\n\t\t\t\tconst tokens = familyNode.familyMembers.values()\n\t\t\t\tfor (const token of tokens) {\n\t\t\t\t\tconst storedTime = this.statesCreatedAt.get(token.key)\n\t\t\t\t\tconst creationTime = storedTime ?? this.auditorCreatedAt\n\t\t\t\t\tconst age = currentTime - creationTime\n\t\t\t\t\tresources.push([token, age])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn resources\n\t}\n\n\tpublic [Symbol.dispose](): void {\n\t\tthis.unsubscribeFromAtomCreation()\n\t\tthis.unsubscribeFromAtomDisposal()\n\t\tthis.unsubscribeFromSelectorCreation()\n\t\tthis.unsubscribeFromSelectorDisposal()\n\t\tthis.disposed = true\n\t}\n}\n","import { isPlainObject } from \"./refinery\"\n\n// if you found what you were looking for, return true and break\nexport type InspectionResult = Partial<{\n\tpathComplete: true\n\tjobComplete: true\n}>\nexport type InspectNode = (\n\tpath: string[],\n\tnode: unknown,\n) => InspectionResult | void\n\nexport const sprawl = (\n\ttree: Array<unknown> | object,\n\tinspector: InspectNode,\n): void => {\n\tconst walk = (path: string[], node: unknown): InspectionResult => {\n\t\tconst inspect = (p: string[], n: unknown): InspectionResult | null => {\n\t\t\t// console.log(parent)\n\t\t\tconst result = inspector(p, n)\n\t\t\tif (result) return result\n\t\t\treturn null\n\t\t}\n\t\tconst result = inspect(path, node)\n\t\tif (result?.jobComplete ?? result?.pathComplete) {\n\t\t\treturn result\n\t\t}\n\t\tconst childEntries = Array.isArray(node)\n\t\t\t? node.map((v, i) => [i, v])\n\t\t\t: isPlainObject(node)\n\t\t\t\t? Object.entries(node)\n\t\t\t\t: []\n\t\tfor (const [k, v] of childEntries) {\n\t\t\tconst subResult = walk([...path, k], v)\n\t\t\tif (subResult?.jobComplete) {\n\t\t\t\treturn subResult\n\t\t\t}\n\t\t}\n\t\treturn {}\n\t}\n\twalk([], tree)\n}\n","import type { Json } from \"atom.io/json\"\n\nimport type { Refinery, Supported } from \"./refinery\"\nimport { discoverType, jsonTreeRefinery, primitiveRefinery } from \"./refinery\"\nimport { sprawl } from \"./sprawl\"\n\nexport function diffNumber(a: number, b: number): Delta {\n\tconst sign = a < b ? `+` : `-`\n\treturn {\n\t\tsummary: `${sign}${Math.abs(a - b)} (${a} → ${b})`,\n\t}\n}\n\nexport function diffString(a: string, b: string): Delta {\n\tconst sign = a.length < b.length ? `+` : `-`\n\treturn {\n\t\tsummary: `${sign}${Math.abs(a.length - b.length)} (\"${a}\" → \"${b}\")`,\n\t}\n}\n\nexport function diffBoolean(a: boolean, b: boolean): Delta {\n\treturn {\n\t\tsummary: `${a} → ${b}`,\n\t}\n}\n\nexport function diffObject(\n\ta: Json.Tree.Object,\n\tb: Json.Tree.Object,\n\trecurse: Diff<unknown>,\n): Delta {\n\tlet summary = ``\n\tconst added: Delta[`added`] = []\n\tconst removed: Delta[`removed`] = []\n\tconst changed: Delta[`changed`] = []\n\n\tsprawl(a, (path, nodeA) => {\n\t\tlet key: string\n\t\tfor (key of path) {\n\t\t\tconst nodeB = b[key]\n\t\t\tif (nodeB === undefined) {\n\t\t\t\tremoved.push([key, JSON.stringify(nodeA)])\n\t\t\t} else {\n\t\t\t\tconst delta = recurse(nodeA, nodeB)\n\t\t\t\tif (delta.summary !== `No Change`) {\n\t\t\t\t\tchanged.push([key, delta])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\n\tsprawl(b, (path, nodeB) => {\n\t\tlet key: string\n\t\tfor (key of path) {\n\t\t\tconst nodeA = a[key]\n\t\t\tif (nodeA === undefined) {\n\t\t\t\tadded.push([key, JSON.stringify(nodeB)])\n\t\t\t}\n\t\t}\n\t})\n\n\tsummary = `~${changed.length} +${added.length} -${removed.length}`\n\n\treturn {\n\t\tsummary,\n\t\tadded,\n\t\tremoved,\n\t\tchanged,\n\t}\n}\n\nexport function diffArray(\n\ta: Json.Tree.Array,\n\tb: Json.Tree.Array,\n\trecurse: Diff<unknown>,\n): Delta {\n\treturn diffObject(a as any, b as any, recurse)\n}\n\ntype Delta = {\n\tsummary: string\n\tadded?: [path: string, addedStringifiedValue: string][]\n\tremoved?: [path: string, removedStringifiedValue: string][]\n\tchanged?: [path: string, delta: Delta][]\n}\n\ntype Diff<T> = (a: T, b: T) => Delta\ntype DiffTree<T> = (a: T, b: T, recurse: Differ<any, any>[`diff`]) => Delta\n\nexport class Differ<\n\tLeaf extends Record<string, any>,\n\tTree extends Record<string, any>,\n> {\n\tpublic leafRefinery: Refinery<Leaf>\n\tpublic treeRefinery: Refinery<Tree>\n\tpublic leafDiffers: { [KL in keyof Leaf]: Diff<Supported<Leaf[KL]>> }\n\tpublic treeDiffers: { [KT in keyof Tree]: DiffTree<Supported<Tree[KT]>> }\n\n\tpublic constructor(\n\t\tleafRefinery: Refinery<Leaf>,\n\t\ttreeRefinery: Refinery<Tree>,\n\t\tdiffFunctions: {\n\t\t\t[KT in keyof Tree]: DiffTree<Supported<Tree[KT]>>\n\t\t} & { [KL in keyof Leaf]: Diff<Supported<Leaf[KL]>> },\n\t) {\n\t\tthis.leafRefinery = leafRefinery\n\t\tthis.treeRefinery = treeRefinery\n\t\tthis.leafDiffers = {} as any\n\t\tthis.treeDiffers = {} as any\n\t\tfor (const key of Object.keys(leafRefinery.supported)) {\n\t\t\tconst diffFunction = diffFunctions[key]\n\t\t\tthis.leafDiffers[key as keyof Leaf] = diffFunction\n\t\t}\n\t\tfor (const key of Object.keys(treeRefinery.supported)) {\n\t\t\tconst diffFunction = diffFunctions[key]\n\t\t\tthis.treeDiffers[key as keyof Tree] = diffFunction\n\t\t}\n\t}\n\n\tpublic diff(a: unknown, b: unknown): Delta {\n\t\tif (a === b) {\n\t\t\treturn { summary: `No Change` }\n\t\t}\n\n\t\tconst aRefined = this.leafRefinery.refine(a) ?? this.treeRefinery.refine(a)\n\t\tconst bRefined = this.leafRefinery.refine(b) ?? this.treeRefinery.refine(b)\n\n\t\tif (aRefined !== null && bRefined !== null) {\n\t\t\tif (aRefined.type === bRefined.type) {\n\t\t\t\tif (aRefined.type in this.leafDiffers) {\n\t\t\t\t\tconst delta = this.leafDiffers[aRefined.type](\n\t\t\t\t\t\taRefined.data,\n\t\t\t\t\t\tbRefined.data,\n\t\t\t\t\t)\n\t\t\t\t\treturn delta\n\t\t\t\t}\n\t\t\t\tif (aRefined.type in this.treeDiffers) {\n\t\t\t\t\tconst delta = this.treeDiffers[aRefined.type](\n\t\t\t\t\t\taRefined.data,\n\t\t\t\t\t\tbRefined.data,\n\t\t\t\t\t\t(x, y) => this.diff(x, y),\n\t\t\t\t\t)\n\t\t\t\t\treturn delta\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst typeA = discoverType(a)\n\t\tconst typeB = discoverType(b)\n\t\tif (typeA === typeB) {\n\t\t\treturn {\n\t\t\t\tsummary: `${typeA} → ${typeB}`,\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsummary: `Type change: ${typeA} → ${typeB}`,\n\t\t}\n\t}\n}\n\nexport const prettyJson: Differ<\n\t{\n\t\tnumber: (input: unknown) => input is number\n\t\tstring: (input: unknown) => input is string\n\t\tboolean: (input: unknown) => input is boolean\n\t\tnull: (input: unknown) => input is null\n\t},\n\t{\n\t\tobject: (input: unknown) => input is Json.Tree.Object\n\t\tarray: (input: unknown) => input is Json.Tree.Array\n\t}\n> = new Differ(primitiveRefinery, jsonTreeRefinery, {\n\tnumber: diffNumber,\n\tstring: diffString,\n\tboolean: diffBoolean,\n\tnull: () => ({ summary: `No Change` }),\n\tobject: diffObject,\n\tarray: diffArray,\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["store: Store","base: AtomTokenIndex","store: Store","base: SelectorTokenIndex","store: Store","store: Store","store: Store","store: Store","supported: SupportedTypes","input: T","primitiveRefinery: Refinery<{\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","input: unknown","jsonTreeRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n}>","jsonRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","store: Store","state: unknown","store: Store","store: Internal.Store","param: ListResourcesParam","resources: (readonly [ReadableToken<unknown>, number])[]","tree: Array<unknown> | object","inspector: InspectNode","path: string[]","node: unknown","p: string[]","n: unknown","result","a: number","b: number","a: string","b: string","a: boolean","b: boolean","a: Json.Tree.Object","b: Json.Tree.Object","recurse: Diff<unknown>","added: Delta[`added`]","removed: Delta[`removed`]","changed: Delta[`changed`]","key: string","a: Json.Tree.Array","b: Json.Tree.Array","leafRefinery: Refinery<Leaf>","treeRefinery: Refinery<Tree>","diffFunctions: {\n\t\t\t[KT in keyof Tree]: DiffTree<Supported<Tree[KT]>>\n\t\t} & { [KL in keyof Leaf]: Diff<Supported<Leaf[KL]>> }","a: unknown","b: unknown","prettyJson: Differ<\n\t{\n\t\tnumber: (input: unknown) => input is number\n\t\tstring: (input: unknown) => input is string\n\t\tboolean: (input: unknown) => input is boolean\n\t\tnull: (input: unknown) => input is null\n\t},\n\t{\n\t\tobject: (input: unknown) => input is Json.Tree.Object\n\t\tarray: (input: unknown) => input is Json.Tree.Array\n\t}\n>"],"sources":["../../src/introspection/attach-atom-index.ts","../../src/introspection/attach-selector-index.ts","../../src/introspection/attach-timeline-family.ts","../../src/introspection/attach-timeline-index.ts","../../src/introspection/attach-transaction-index.ts","../../src/introspection/attach-transaction-logs.ts","../../src/introspection/refinery.ts","../../src/introspection/attach-type-selectors.ts","../../src/introspection/attach-introspection-states.ts","../../src/introspection/auditor.ts","../../src/introspection/sprawl.ts","../../src/introspection/differ.ts"],"sourcesContent":["import type { AtomToken, ReadonlyPureSelectorToken } from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport {\n\tcreateRegularAtom,\n\tcreateStandaloneSelector,\n\tdeposit,\n\tisReservedIntrospectionKey,\n} from \"atom.io/internal\"\n\nimport type { WritableTokenIndex } from \".\"\n\nexport type AtomTokenIndex = WritableTokenIndex<AtomToken<unknown>>\n\nexport const attachAtomIndex = (\n\tstore: Store,\n): ReadonlyPureSelectorToken<AtomTokenIndex> => {\n\tconst atomTokenIndexState__INTERNAL = createRegularAtom<AtomTokenIndex>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Atom Token Index (Internal)`,\n\t\t\tdefault: () => {\n\t\t\t\tconst base: AtomTokenIndex = new Map()\n\t\t\t\tfor (const [key, val] of store.atoms) {\n\t\t\t\t\tif (isReservedIntrospectionKey(key)) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tconst token = deposit(val)\n\t\t\t\t\tif (val.family) {\n\t\t\t\t\t\tlet familyNode = base.get(val.family.key)\n\t\t\t\t\t\tif (!familyNode || !(`familyMembers` in familyNode)) {\n\t\t\t\t\t\t\tfamilyNode = {\n\t\t\t\t\t\t\t\tkey: val.family.key,\n\t\t\t\t\t\t\t\tfamilyMembers: new Map(),\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbase.set(val.family.key, familyNode)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfamilyNode.familyMembers.set(val.family.subKey, token)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbase.set(key, token)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn base\n\t\t\t},\n\t\t\teffects: [\n\t\t\t\t({ setSelf }) => {\n\t\t\t\t\tstore.on.atomCreation.subscribe(`introspection`, (atomToken) => {\n\t\t\t\t\t\tif (isReservedIntrospectionKey(atomToken.key)) {\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetSelf((self) => {\n\t\t\t\t\t\t\tif (atomToken.family) {\n\t\t\t\t\t\t\t\tconst { key: familyKey, subKey } = atomToken.family\n\t\t\t\t\t\t\t\tlet familyNode = self.get(familyKey)\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tfamilyNode === undefined ||\n\t\t\t\t\t\t\t\t\t!(`familyMembers` in familyNode)\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tfamilyNode = {\n\t\t\t\t\t\t\t\t\t\tkey: familyKey,\n\t\t\t\t\t\t\t\t\t\tfamilyMembers: new Map(),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tself.set(familyKey, familyNode)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfamilyNode.familyMembers.set(subKey, atomToken)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tself.set(atomToken.key, atomToken)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn self\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\tstore.on.atomDisposal.subscribe(`introspection`, (atomToken) => {\n\t\t\t\t\t\tsetSelf((self) => {\n\t\t\t\t\t\t\tif (atomToken.family) {\n\t\t\t\t\t\t\t\tconst { key: familyKey, subKey } = atomToken.family\n\t\t\t\t\t\t\t\tconst familyNode = self.get(familyKey)\n\t\t\t\t\t\t\t\tif (familyNode && `familyMembers` in familyNode) {\n\t\t\t\t\t\t\t\t\tfamilyNode.familyMembers.delete(subKey)\n\t\t\t\t\t\t\t\t\tif (familyNode.familyMembers.size === 0) {\n\t\t\t\t\t\t\t\t\t\tself.delete(familyKey)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tself.delete(atomToken.key)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn self\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tundefined,\n\t)\n\treturn createStandaloneSelector(store, {\n\t\tkey: `🔍 Atom Token Index`,\n\t\tget: ({ get }) => get(atomTokenIndexState__INTERNAL),\n\t})\n}\n","import type { ReadonlyPureSelectorToken, SelectorToken } from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport {\n\tcreateRegularAtom,\n\tcreateStandaloneSelector,\n\tdeposit,\n\tisReservedIntrospectionKey,\n} from \"atom.io/internal\"\n\nimport type { WritableTokenIndex } from \".\"\n\nexport type SelectorTokenIndex = WritableTokenIndex<SelectorToken<unknown>>\n\nexport const attachSelectorIndex = (\n\tstore: Store,\n): ReadonlyPureSelectorToken<SelectorTokenIndex> => {\n\tconst readonlySelectorTokenIndexState__INTERNAL =\n\t\tcreateRegularAtom<SelectorTokenIndex>(\n\t\t\tstore,\n\n\t\t\t{\n\t\t\t\tkey: `🔍 Selector Token Index (Internal)`,\n\t\t\t\tdefault: () => {\n\t\t\t\t\tconst base: SelectorTokenIndex = new Map()\n\t\t\t\t\tfor (const map of [store.readonlySelectors, store.writableSelectors]) {\n\t\t\t\t\t\tfor (const [key, val] of map) {\n\t\t\t\t\t\t\tif (isReservedIntrospectionKey(key)) {\n\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst token = deposit(val)\n\t\t\t\t\t\t\tif (val.family) {\n\t\t\t\t\t\t\t\tlet familyNode = base.get(val.family.key)\n\t\t\t\t\t\t\t\tif (!familyNode || !(`familyMembers` in familyNode)) {\n\t\t\t\t\t\t\t\t\tfamilyNode = {\n\t\t\t\t\t\t\t\t\t\tkey: val.family.key,\n\t\t\t\t\t\t\t\t\t\tfamilyMembers: new Map(),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbase.set(val.family.key, familyNode)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfamilyNode.familyMembers.set(val.family.subKey, token)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbase.set(key, token)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn base\n\t\t\t\t},\n\t\t\t\teffects: [\n\t\t\t\t\t({ setSelf }) => {\n\t\t\t\t\t\tstore.on.selectorCreation.subscribe(\n\t\t\t\t\t\t\t`introspection`,\n\t\t\t\t\t\t\t(selectorToken) => {\n\t\t\t\t\t\t\t\tif (isReservedIntrospectionKey(selectorToken.key)) {\n\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsetSelf((self) => {\n\t\t\t\t\t\t\t\t\tif (selectorToken.family) {\n\t\t\t\t\t\t\t\t\t\tconst { key: familyKey, subKey } = selectorToken.family\n\t\t\t\t\t\t\t\t\t\tlet familyNode = self.get(familyKey)\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tfamilyNode === undefined ||\n\t\t\t\t\t\t\t\t\t\t\t!(`familyMembers` in familyNode)\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tfamilyNode = {\n\t\t\t\t\t\t\t\t\t\t\t\tkey: familyKey,\n\t\t\t\t\t\t\t\t\t\t\t\tfamilyMembers: new Map(),\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tself.set(familyKey, familyNode)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tfamilyNode.familyMembers.set(subKey, selectorToken)\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tself.set(selectorToken.key, selectorToken)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn self\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tstore.on.selectorDisposal.subscribe(\n\t\t\t\t\t\t\t`introspection`,\n\t\t\t\t\t\t\t(selectorToken) => {\n\t\t\t\t\t\t\t\tsetSelf((self) => {\n\t\t\t\t\t\t\t\t\tif (selectorToken.family) {\n\t\t\t\t\t\t\t\t\t\tconst { key: familyKey, subKey } = selectorToken.family\n\t\t\t\t\t\t\t\t\t\tconst familyNode = self.get(familyKey)\n\t\t\t\t\t\t\t\t\t\tif (familyNode && `familyMembers` in familyNode) {\n\t\t\t\t\t\t\t\t\t\t\tfamilyNode.familyMembers.delete(subKey)\n\t\t\t\t\t\t\t\t\t\t\tif (familyNode.familyMembers.size === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tself.delete(familyKey)\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tself.delete(selectorToken.key)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn self\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\tundefined,\n\t\t)\n\treturn createStandaloneSelector(store, {\n\t\tkey: `🔍 Selector Token Index`,\n\t\tget: ({ get }) => get(readonlySelectorTokenIndexState__INTERNAL),\n\t})\n}\n","import type { ReadonlyPureSelectorFamilyToken } from \"atom.io\"\nimport type { Store, Timeline } from \"atom.io/internal\"\nimport {\n\tcreateRegularAtomFamily,\n\tcreateSelectorFamily,\n\tSubject,\n} from \"atom.io/internal\"\n\nexport const attachTimelineFamily = (\n\tstore: Store,\n): ReadonlyPureSelectorFamilyToken<Timeline<any>, string> => {\n\tconst findTimelineLogState__INTERNAL = createRegularAtomFamily<\n\t\tTimeline<any>,\n\t\tstring\n\t>(store, {\n\t\tkey: `🔍 Timeline Update Log (Internal)`,\n\t\tdefault: (key) =>\n\t\t\tstore.timelines.get(key) ?? {\n\t\t\t\ttype: `timeline`,\n\t\t\t\tkey: ``,\n\t\t\t\tat: 0,\n\t\t\t\ttimeTraveling: null,\n\t\t\t\thistory: [],\n\t\t\t\tselectorTime: null,\n\t\t\t\ttransactionKey: null,\n\t\t\t\tinstall: () => {},\n\t\t\t\tsubject: new Subject(),\n\t\t\t\tsubscriptions: new Map(),\n\t\t\t},\n\t\teffects: (key) => [\n\t\t\t({ setSelf }) => {\n\t\t\t\tconst tl = store.timelines.get(key)\n\t\t\t\ttl?.subject.subscribe(`introspection`, (_) => {\n\t\t\t\t\tsetSelf({ ...tl })\n\t\t\t\t})\n\t\t\t},\n\t\t],\n\t})\n\tconst findTimelineLogState = createSelectorFamily<Timeline<any>, string>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Timeline Update Log`,\n\t\t\tget:\n\t\t\t\t(key) =>\n\t\t\t\t({ get }) =>\n\t\t\t\t\tget(findTimelineLogState__INTERNAL, key),\n\t\t},\n\t)\n\treturn findTimelineLogState\n}\n","import type { ReadonlyPureSelectorToken, TimelineToken } from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { createRegularAtom, createStandaloneSelector } from \"atom.io/internal\"\n\nexport const attachTimelineIndex = (\n\tstore: Store,\n): ReadonlyPureSelectorToken<TimelineToken<any>[]> => {\n\tconst timelineTokenIndexState__INTERNAL = createRegularAtom<\n\t\tTimelineToken<any>[]\n\t>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Timeline Token Index (Internal)`,\n\t\t\tdefault: () =>\n\t\t\t\t[...store.timelines].map(([key]): TimelineToken<any> => {\n\t\t\t\t\treturn { key, type: `timeline` }\n\t\t\t\t}),\n\t\t\teffects: [\n\t\t\t\t({ setSelf }) => {\n\t\t\t\t\tstore.on.timelineCreation.subscribe(\n\t\t\t\t\t\t`introspection`,\n\t\t\t\t\t\t(timelineToken) => {\n\t\t\t\t\t\t\tsetSelf((state) => [...state, timelineToken])\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tundefined,\n\t)\n\tconst timelineTokenIndex = createStandaloneSelector(store, {\n\t\tkey: `🔍 Timeline Token Index`,\n\t\tget: ({ get }) => get(timelineTokenIndexState__INTERNAL),\n\t})\n\treturn timelineTokenIndex\n}\n","import type { ReadonlyPureSelectorToken, TransactionToken } from \"atom.io\"\nimport type { Func, Store } from \"atom.io/internal\"\nimport { createRegularAtom, createStandaloneSelector } from \"atom.io/internal\"\n\nexport const attachTransactionIndex = (\n\tstore: Store,\n): ReadonlyPureSelectorToken<TransactionToken<Func>[]> => {\n\tconst transactionTokenIndexState__INTERNAL = createRegularAtom<\n\t\tTransactionToken<Func>[]\n\t>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Transaction Token Index (Internal)`,\n\t\t\tdefault: () =>\n\t\t\t\t[...store.transactions].map(([key]): TransactionToken<Func> => {\n\t\t\t\t\treturn { key, type: `transaction` }\n\t\t\t\t}),\n\t\t\teffects: [\n\t\t\t\t({ setSelf }) => {\n\t\t\t\t\tstore.on.transactionCreation.subscribe(\n\t\t\t\t\t\t`introspection`,\n\t\t\t\t\t\t(transactionToken) => {\n\t\t\t\t\t\t\tsetSelf((state) => [...state, transactionToken])\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tundefined,\n\t)\n\tconst transactionTokenIndex = createStandaloneSelector(store, {\n\t\tkey: `🔍 Transaction Token Index`,\n\t\tget: ({ get }) => get(transactionTokenIndexState__INTERNAL),\n\t})\n\treturn transactionTokenIndex\n}\n","import type { ReadonlyPureSelectorFamilyToken, TransactionUpdate } from \"atom.io\"\nimport type { Func, Store } from \"atom.io/internal\"\nimport { createRegularAtomFamily, createSelectorFamily } from \"atom.io/internal\"\n\nexport const attachTransactionLogs = (\n\tstore: Store,\n): ReadonlyPureSelectorFamilyToken<TransactionUpdate<Func>[], string> => {\n\tconst transactionUpdateLogAtoms = createRegularAtomFamily<\n\t\tTransactionUpdate<Func>[],\n\t\tstring\n\t>(store, {\n\t\tkey: `🔍 Transaction Update Log (Internal)`,\n\t\tdefault: () => [],\n\t\teffects: (key) => [\n\t\t\t({ setSelf }) => {\n\t\t\t\tconst tx = store.transactions.get(key)\n\t\t\t\ttx?.subject.subscribe(`introspection`, (transactionUpdate) => {\n\t\t\t\t\tif (transactionUpdate.key === key) {\n\t\t\t\t\t\tsetSelf((state) => [...state, transactionUpdate])\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t],\n\t})\n\tconst findTransactionUpdateLogState = createSelectorFamily<\n\t\tTransactionUpdate<Func>[],\n\t\tstring\n\t>(store, {\n\t\tkey: `🔍 Transaction Update Log`,\n\t\tget:\n\t\t\t(key) =>\n\t\t\t({ get }) =>\n\t\t\t\tget(transactionUpdateLogAtoms, key),\n\t})\n\treturn findTransactionUpdateLogState\n}\n","import type { Flat, Refinement } from \"atom.io/internal\"\nimport type { Json } from \"atom.io/json\"\n\nexport type ClassSignature = abstract new (...args: any) => any\n\nexport type RefinementStrategy = ClassSignature | Refinement<unknown, any>\n\nexport type Supported<Refine extends RefinementStrategy> =\n\tRefine extends Refinement<unknown, infer T>\n\t\t? T\n\t\t: Refine extends ClassSignature\n\t\t\t? InstanceType<Refine>\n\t\t\t: never\n\nexport type RefinementSupport = Record<string, RefinementStrategy>\n\nexport class Refinery<SupportedTypes extends RefinementSupport> {\n\tpublic supported: SupportedTypes\n\n\tpublic constructor(supported: SupportedTypes) {\n\t\tthis.supported = supported\n\t}\n\n\tpublic refine<T>(input: T):\n\t\t| Flat<{\n\t\t\t\t[K in keyof SupportedTypes]: T extends Supported<SupportedTypes[K]>\n\t\t\t\t\t? {\n\t\t\t\t\t\t\ttype: K\n\t\t\t\t\t\t\tdata: Supported<SupportedTypes[K]>\n\t\t\t\t\t\t}\n\t\t\t\t\t: Supported<SupportedTypes[K]> extends T\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ttype: K\n\t\t\t\t\t\t\t\tdata: Supported<SupportedTypes[K]>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: never\n\t\t }>[keyof SupportedTypes]\n\t\t| (T extends Supported<SupportedTypes[keyof SupportedTypes]>\n\t\t\t\t? never\n\t\t\t\t: null) {\n\t\tfor (const [key, refiner] of Object.entries(this.supported)) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\t// @ts-expect-error that's the point\n\t\t\t\t\trefiner(input) === true &&\n\t\t\t\t\trefiner !== Boolean\n\t\t\t\t) {\n\t\t\t\t\treturn { type: key, data: input } as any\n\t\t\t\t}\n\t\t\t} catch (_) {\n\t\t\t\ttry {\n\t\t\t\t\tif (input instanceof refiner) {\n\t\t\t\t\t\treturn { type: key, data: input } as any\n\t\t\t\t\t}\n\t\t\t\t} catch (__) {}\n\t\t\t}\n\t\t}\n\t\treturn null as any\n\t}\n}\n\nexport const primitiveRefinery: Refinery<{\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}> = new Refinery({\n\tnumber: (input: unknown): input is number => typeof input === `number`,\n\tstring: (input: unknown): input is string => typeof input === `string`,\n\tboolean: (input: unknown): input is boolean => typeof input === `boolean`,\n\tnull: (input: unknown): input is null => input === null,\n})\n\nexport function isPlainObject(input: unknown): input is Json.Tree.Object {\n\tif (!input) {\n\t\treturn false\n\t}\n\tconst prototype = Object.getPrototypeOf(input)\n\treturn prototype === Object.prototype\n}\n\nexport const jsonTreeRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n}> = new Refinery({\n\tobject: isPlainObject,\n\tarray: (input: unknown): input is Json.Tree.Array => Array.isArray(input),\n})\n\nexport const jsonRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}> = new Refinery({\n\t...primitiveRefinery.supported,\n\t...jsonTreeRefinery.supported,\n})\n\nexport type JsonType = keyof typeof jsonRefinery.supported\n\nexport const discoverType = (\n\tinput: unknown,\n): JsonType | `Map` | `Set` | `undefined` | (string & {}) => {\n\tif (input === undefined) {\n\t\treturn `undefined`\n\t}\n\tconst refined = jsonRefinery.refine(input)\n\tif (refined) {\n\t\treturn refined.type\n\t}\n\treturn Object.getPrototypeOf(input).constructor.name\n}\n","import type { ReadonlyPureSelectorFamilyToken } from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { createReadonlyPureSelectorFamily } from \"atom.io/internal\"\n\nimport { discoverType } from \"./refinery\"\n\nexport const attachTypeSelectors = (\n\tstore: Store,\n): ReadonlyPureSelectorFamilyToken<string, string> => {\n\tconst typeSelectors = createReadonlyPureSelectorFamily<string, string>(store, {\n\t\tkey: `🔍 State Type`,\n\t\tget:\n\t\t\t(key) =>\n\t\t\t({ get }) => {\n\t\t\t\tlet state: unknown\n\t\t\t\ttry {\n\t\t\t\t\tconst token =\n\t\t\t\t\t\tstore.atoms.get(key) ??\n\t\t\t\t\t\tstore.writableSelectors.get(key) ??\n\t\t\t\t\t\tstore.readonlySelectors.get(key)\n\t\t\t\t\tif (token === undefined) {\n\t\t\t\t\t\tthrow new Error(`Could not find state with key \"${key}\"`)\n\t\t\t\t\t}\n\t\t\t\t\tstate = get(token)\n\t\t\t\t} catch (thrown) {\n\t\t\t\t\treturn `error`\n\t\t\t\t}\n\t\t\t\tconst typeOfState = discoverType(state)\n\t\t\t\treturn typeOfState\n\t\t\t},\n\t})\n\treturn typeSelectors\n}\n","import type {\n\tReadonlyPureSelectorFamilyToken,\n\tReadonlyPureSelectorToken,\n\tTimelineToken,\n\tTransactionToken,\n\tTransactionUpdate,\n} from \"atom.io\"\nimport type { Func, Store, Timeline } from \"atom.io/internal\"\n\nimport { type AtomTokenIndex, attachAtomIndex } from \"./attach-atom-index\"\nimport type { SelectorTokenIndex } from \"./attach-selector-index\"\nimport { attachSelectorIndex } from \"./attach-selector-index\"\nimport { attachTimelineFamily } from \"./attach-timeline-family\"\nimport { attachTimelineIndex } from \"./attach-timeline-index\"\nimport { attachTransactionIndex } from \"./attach-transaction-index\"\nimport { attachTransactionLogs } from \"./attach-transaction-logs\"\nimport { attachTypeSelectors } from \"./attach-type-selectors\"\n\nexport type IntrospectionStates = {\n\tatomIndex: ReadonlyPureSelectorToken<AtomTokenIndex>\n\tselectorIndex: ReadonlyPureSelectorToken<SelectorTokenIndex>\n\ttransactionIndex: ReadonlyPureSelectorToken<TransactionToken<Func>[]>\n\ttransactionLogSelectors: ReadonlyPureSelectorFamilyToken<\n\t\tTransactionUpdate<Func>[],\n\t\tstring\n\t>\n\ttimelineIndex: ReadonlyPureSelectorToken<TimelineToken<any>[]>\n\ttimelineSelectors: ReadonlyPureSelectorFamilyToken<Timeline<any>, string>\n\ttypeSelectors: ReadonlyPureSelectorFamilyToken<string, string>\n}\n\nexport const attachIntrospectionStates = (store: Store): IntrospectionStates => {\n\treturn {\n\t\tatomIndex: attachAtomIndex(store),\n\t\tselectorIndex: attachSelectorIndex(store),\n\t\ttransactionIndex: attachTransactionIndex(store),\n\t\ttransactionLogSelectors: attachTransactionLogs(store),\n\t\ttimelineIndex: attachTimelineIndex(store),\n\t\ttimelineSelectors: attachTimelineFamily(store),\n\t\ttypeSelectors: attachTypeSelectors(store),\n\t}\n}\n","import {\n\ttype AtomToken,\n\tgetState,\n\ttype ReadableToken,\n\ttype ReadonlyPureSelectorToken,\n\ttype SelectorToken,\n} from \"atom.io\"\nimport * as Internal from \"atom.io/internal\"\n\nimport type { FamilyNode } from \".\"\nimport type { AtomTokenIndex } from \"./attach-atom-index\"\nimport { attachAtomIndex } from \"./attach-atom-index\"\nimport type { SelectorTokenIndex } from \"./attach-selector-index\"\nimport { attachSelectorIndex } from \"./attach-selector-index\"\n\nexport type ListResourcesParam = {\n\tatomFamilies: boolean\n\tselectorFamilies: boolean\n}\n\n/**\n * Auditor is a tool for identifying lingering resources in your store that may result in memory leaks.\n * @experimental\n */\nexport class Auditor {\n\tpublic readonly store: Internal.Store\n\tpublic auditorCreatedAt: number = performance.now()\n\tpublic statesCreatedAt: Map<string, number> = new Map()\n\tpublic readonly atomIndex: ReadonlyPureSelectorToken<AtomTokenIndex>\n\tpublic readonly selectorIndex: ReadonlyPureSelectorToken<SelectorTokenIndex>\n\tpublic disposed = false\n\n\tprivate readonly unsubscribeFromAtomCreation: () => void\n\tprivate readonly unsubscribeFromAtomDisposal: () => void\n\tprivate readonly unsubscribeFromSelectorCreation: () => void\n\tprivate readonly unsubscribeFromSelectorDisposal: () => void\n\n\t/**\n\t * @param {Store} store - The store to audit.\n\t */\n\tpublic constructor(store: Internal.Store = Internal.IMPLICIT.STORE) {\n\t\tthis.store = store\n\t\tthis.atomIndex = attachAtomIndex(this.store)\n\t\tthis.selectorIndex = attachSelectorIndex(this.store)\n\t\tthis.unsubscribeFromAtomCreation = this.store.on.atomCreation.subscribe(\n\t\t\t`auditor-${this.auditorCreatedAt}`,\n\t\t\t({ key }) => {\n\t\t\t\tthis.statesCreatedAt.set(key, performance.now() - this.auditorCreatedAt)\n\t\t\t},\n\t\t)\n\t\tthis.unsubscribeFromAtomDisposal = this.store.on.atomDisposal.subscribe(\n\t\t\t`auditor-${this.auditorCreatedAt}`,\n\t\t\t({ key }) => {\n\t\t\t\tthis.statesCreatedAt.delete(key)\n\t\t\t},\n\t\t)\n\t\tthis.unsubscribeFromSelectorCreation =\n\t\t\tthis.store.on.selectorCreation.subscribe(\n\t\t\t\t`auditor-${this.auditorCreatedAt}`,\n\t\t\t\t({ key }) => {\n\t\t\t\t\tthis.statesCreatedAt.set(\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tperformance.now() - this.auditorCreatedAt,\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t)\n\t\tthis.unsubscribeFromSelectorDisposal =\n\t\t\tthis.store.on.selectorDisposal.subscribe(\n\t\t\t\t`auditor-${this.auditorCreatedAt}`,\n\t\t\t\t({ key }) => {\n\t\t\t\t\tthis.statesCreatedAt.delete(key)\n\t\t\t\t},\n\t\t\t)\n\t}\n\n\tpublic static readonly DEFAULT_LIST_RESOURCES_PARAM: ListResourcesParam = {\n\t\tatomFamilies: true,\n\t\tselectorFamilies: true,\n\t} satisfies ListResourcesParam\n\t/**\n\t * Lists all resources in the store, along with their creation time.\n\t *\n\t * @param {ListResourcesParam} [param] - Optional parameters for filtering the list of resources.\n\t * @returns {readonly [ReadableToken<unknown>, number]}[] - An array of tuples, where each tuple contains a state token belonging to a family in the store and that state's creation time.\n\t */\n\tpublic listResources(\n\t\tparam: ListResourcesParam = Auditor.DEFAULT_LIST_RESOURCES_PARAM,\n\t): (readonly [ReadableToken<unknown>, number])[] {\n\t\tif (this.disposed) {\n\t\t\tthrow new Error(`This Auditor has been disposed`)\n\t\t}\n\t\tconst atoms = getState(this.atomIndex)\n\t\tconst selectors = getState(this.selectorIndex)\n\t\tconst atomFamilyNodes = [...atoms.values()].filter(\n\t\t\t(node): node is FamilyNode<AtomToken<unknown>> => `familyMembers` in node,\n\t\t)\n\t\tconst selectorFamilyNodes = [...selectors.values()].filter(\n\t\t\t(node): node is FamilyNode<SelectorToken<unknown>> =>\n\t\t\t\t`familyMembers` in node,\n\t\t)\n\t\tconst currentTime = performance.now()\n\t\tconst resources: (readonly [ReadableToken<unknown>, number])[] = []\n\t\tif (param.atomFamilies) {\n\t\t\tfor (const familyNode of atomFamilyNodes) {\n\t\t\t\tconst tokens = familyNode.familyMembers.values()\n\t\t\t\tfor (const token of tokens) {\n\t\t\t\t\tconst storedTime = this.statesCreatedAt.get(token.key)\n\t\t\t\t\tconst creationTime = storedTime ?? this.auditorCreatedAt\n\t\t\t\t\tconst age = currentTime - creationTime\n\t\t\t\t\tresources.push([token, age])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (param.selectorFamilies) {\n\t\t\tfor (const familyNode of selectorFamilyNodes) {\n\t\t\t\tconst tokens = familyNode.familyMembers.values()\n\t\t\t\tfor (const token of tokens) {\n\t\t\t\t\tconst storedTime = this.statesCreatedAt.get(token.key)\n\t\t\t\t\tconst creationTime = storedTime ?? this.auditorCreatedAt\n\t\t\t\t\tconst age = currentTime - creationTime\n\t\t\t\t\tresources.push([token, age])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn resources\n\t}\n\n\tpublic [Symbol.dispose](): void {\n\t\tthis.unsubscribeFromAtomCreation()\n\t\tthis.unsubscribeFromAtomDisposal()\n\t\tthis.unsubscribeFromSelectorCreation()\n\t\tthis.unsubscribeFromSelectorDisposal()\n\t\tthis.disposed = true\n\t}\n}\n","import { isPlainObject } from \"./refinery\"\n\n// if you found what you were looking for, return true and break\nexport type InspectionResult = Partial<{\n\tpathComplete: true\n\tjobComplete: true\n}>\nexport type InspectNode = (\n\tpath: string[],\n\tnode: unknown,\n) => InspectionResult | void\n\nexport const sprawl = (\n\ttree: Array<unknown> | object,\n\tinspector: InspectNode,\n): void => {\n\tconst walk = (path: string[], node: unknown): InspectionResult => {\n\t\tconst inspect = (p: string[], n: unknown): InspectionResult | null => {\n\t\t\t// console.log(parent)\n\t\t\tconst result = inspector(p, n)\n\t\t\tif (result) return result\n\t\t\treturn null\n\t\t}\n\t\tconst result = inspect(path, node)\n\t\tif (result?.jobComplete ?? result?.pathComplete) {\n\t\t\treturn result\n\t\t}\n\t\tconst childEntries = Array.isArray(node)\n\t\t\t? node.map((v, i) => [i, v])\n\t\t\t: isPlainObject(node)\n\t\t\t\t? Object.entries(node)\n\t\t\t\t: []\n\t\tfor (const [k, v] of childEntries) {\n\t\t\tconst subResult = walk([...path, k], v)\n\t\t\tif (subResult?.jobComplete) {\n\t\t\t\treturn subResult\n\t\t\t}\n\t\t}\n\t\treturn {}\n\t}\n\twalk([], tree)\n}\n","import type { Json } from \"atom.io/json\"\n\nimport type { Refinery, Supported } from \"./refinery\"\nimport { discoverType, jsonTreeRefinery, primitiveRefinery } from \"./refinery\"\nimport { sprawl } from \"./sprawl\"\n\nexport function diffNumber(a: number, b: number): Delta {\n\tconst sign = a < b ? `+` : `-`\n\treturn {\n\t\tsummary: `${sign}${Math.abs(a - b)} (${a} → ${b})`,\n\t}\n}\n\nexport function diffString(a: string, b: string): Delta {\n\tconst sign = a.length < b.length ? `+` : `-`\n\treturn {\n\t\tsummary: `${sign}${Math.abs(a.length - b.length)} (\"${a}\" → \"${b}\")`,\n\t}\n}\n\nexport function diffBoolean(a: boolean, b: boolean): Delta {\n\treturn {\n\t\tsummary: `${a} → ${b}`,\n\t}\n}\n\nexport function diffObject(\n\ta: Json.Tree.Object,\n\tb: Json.Tree.Object,\n\trecurse: Diff<unknown>,\n): Delta {\n\tlet summary = ``\n\tconst added: Delta[`added`] = []\n\tconst removed: Delta[`removed`] = []\n\tconst changed: Delta[`changed`] = []\n\n\tsprawl(a, (path, nodeA) => {\n\t\tlet key: string\n\t\tfor (key of path) {\n\t\t\tconst nodeB = b[key]\n\t\t\tif (nodeB === undefined) {\n\t\t\t\tremoved.push([key, JSON.stringify(nodeA)])\n\t\t\t} else {\n\t\t\t\tconst delta = recurse(nodeA, nodeB)\n\t\t\t\tif (delta.summary !== `No Change`) {\n\t\t\t\t\tchanged.push([key, delta])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\n\tsprawl(b, (path, nodeB) => {\n\t\tlet key: string\n\t\tfor (key of path) {\n\t\t\tconst nodeA = a[key]\n\t\t\tif (nodeA === undefined) {\n\t\t\t\tadded.push([key, JSON.stringify(nodeB)])\n\t\t\t}\n\t\t}\n\t})\n\n\tsummary = `~${changed.length} +${added.length} -${removed.length}`\n\n\treturn {\n\t\tsummary,\n\t\tadded,\n\t\tremoved,\n\t\tchanged,\n\t}\n}\n\nexport function diffArray(\n\ta: Json.Tree.Array,\n\tb: Json.Tree.Array,\n\trecurse: Diff<unknown>,\n): Delta {\n\treturn diffObject(a as any, b as any, recurse)\n}\n\ntype Delta = {\n\tsummary: string\n\tadded?: [path: string, addedStringifiedValue: string][]\n\tremoved?: [path: string, removedStringifiedValue: string][]\n\tchanged?: [path: string, delta: Delta][]\n}\n\ntype Diff<T> = (a: T, b: T) => Delta\ntype DiffTree<T> = (a: T, b: T, recurse: Differ<any, any>[`diff`]) => Delta\n\nexport class Differ<\n\tLeaf extends Record<string, any>,\n\tTree extends Record<string, any>,\n> {\n\tpublic leafRefinery: Refinery<Leaf>\n\tpublic treeRefinery: Refinery<Tree>\n\tpublic leafDiffers: { [KL in keyof Leaf]: Diff<Supported<Leaf[KL]>> }\n\tpublic treeDiffers: { [KT in keyof Tree]: DiffTree<Supported<Tree[KT]>> }\n\n\tpublic constructor(\n\t\tleafRefinery: Refinery<Leaf>,\n\t\ttreeRefinery: Refinery<Tree>,\n\t\tdiffFunctions: {\n\t\t\t[KT in keyof Tree]: DiffTree<Supported<Tree[KT]>>\n\t\t} & { [KL in keyof Leaf]: Diff<Supported<Leaf[KL]>> },\n\t) {\n\t\tthis.leafRefinery = leafRefinery\n\t\tthis.treeRefinery = treeRefinery\n\t\tthis.leafDiffers = {} as any\n\t\tthis.treeDiffers = {} as any\n\t\tfor (const key of Object.keys(leafRefinery.supported)) {\n\t\t\tconst diffFunction = diffFunctions[key]\n\t\t\tthis.leafDiffers[key as keyof Leaf] = diffFunction\n\t\t}\n\t\tfor (const key of Object.keys(treeRefinery.supported)) {\n\t\t\tconst diffFunction = diffFunctions[key]\n\t\t\tthis.treeDiffers[key as keyof Tree] = diffFunction\n\t\t}\n\t}\n\n\tpublic diff(a: unknown, b: unknown): Delta {\n\t\tif (a === b) {\n\t\t\treturn { summary: `No Change` }\n\t\t}\n\n\t\tconst aRefined = this.leafRefinery.refine(a) ?? this.treeRefinery.refine(a)\n\t\tconst bRefined = this.leafRefinery.refine(b) ?? this.treeRefinery.refine(b)\n\n\t\tif (aRefined !== null && bRefined !== null) {\n\t\t\tif (aRefined.type === bRefined.type) {\n\t\t\t\tif (aRefined.type in this.leafDiffers) {\n\t\t\t\t\tconst delta = this.leafDiffers[aRefined.type](\n\t\t\t\t\t\taRefined.data,\n\t\t\t\t\t\tbRefined.data,\n\t\t\t\t\t)\n\t\t\t\t\treturn delta\n\t\t\t\t}\n\t\t\t\tif (aRefined.type in this.treeDiffers) {\n\t\t\t\t\tconst delta = this.treeDiffers[aRefined.type](\n\t\t\t\t\t\taRefined.data,\n\t\t\t\t\t\tbRefined.data,\n\t\t\t\t\t\t(x, y) => this.diff(x, y),\n\t\t\t\t\t)\n\t\t\t\t\treturn delta\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst typeA = discoverType(a)\n\t\tconst typeB = discoverType(b)\n\t\tif (typeA === typeB) {\n\t\t\treturn {\n\t\t\t\tsummary: `${typeA} → ${typeB}`,\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsummary: `Type change: ${typeA} → ${typeB}`,\n\t\t}\n\t}\n}\n\nexport const prettyJson: Differ<\n\t{\n\t\tnumber: (input: unknown) => input is number\n\t\tstring: (input: unknown) => input is string\n\t\tboolean: (input: unknown) => input is boolean\n\t\tnull: (input: unknown) => input is null\n\t},\n\t{\n\t\tobject: (input: unknown) => input is Json.Tree.Object\n\t\tarray: (input: unknown) => input is Json.Tree.Array\n\t}\n> = new Differ(primitiveRefinery, jsonTreeRefinery, {\n\tnumber: diffNumber,\n\tstring: diffString,\n\tboolean: diffBoolean,\n\tnull: () => ({ summary: `No Change` }),\n\tobject: diffObject,\n\tarray: diffArray,\n})\n"],"mappings":";;;;;AAaA,MAAa,kBAAkB,CAC9BA,UAC+C;CAC/C,MAAM,gCAAgC,kBACrC,OACA;EACC,MAAM;EACN,SAAS,MAAM;GACd,MAAMC,uBAAuB,IAAI;AACjC,QAAK,MAAM,CAAC,KAAK,IAAI,IAAI,MAAM,OAAO;AACrC,QAAI,2BAA2B,IAAI,CAClC;IAED,MAAM,QAAQ,QAAQ,IAAI;AAC1B,QAAI,IAAI,QAAQ;KACf,IAAI,aAAa,KAAK,IAAI,IAAI,OAAO,IAAI;AACzC,UAAK,iBAAiB,kBAAkB,aAAa;AACpD,mBAAa;OACZ,KAAK,IAAI,OAAO;OAChB,+BAAe,IAAI;MACnB;AACD,WAAK,IAAI,IAAI,OAAO,KAAK,WAAW;KACpC;AACD,gBAAW,cAAc,IAAI,IAAI,OAAO,QAAQ,MAAM;IACtD,MACA,MAAK,IAAI,KAAK,MAAM;GAErB;AACD,UAAO;EACP;EACD,SAAS,CACR,CAAC,EAAE,SAAS,KAAK;AAChB,SAAM,GAAG,aAAa,WAAW,gBAAgB,CAAC,cAAc;AAC/D,QAAI,2BAA2B,UAAU,IAAI,CAC5C;AAGD,YAAQ,CAAC,SAAS;AACjB,SAAI,UAAU,QAAQ;MACrB,MAAM,EAAE,KAAK,WAAW,QAAQ,GAAG,UAAU;MAC7C,IAAI,aAAa,KAAK,IAAI,UAAU;AACpC,UACC,4BACG,kBAAkB,aACpB;AACD,oBAAa;QACZ,KAAK;QACL,+BAAe,IAAI;OACnB;AACD,YAAK,IAAI,WAAW,WAAW;MAC/B;AACD,iBAAW,cAAc,IAAI,QAAQ,UAAU;KAC/C,MACA,MAAK,IAAI,UAAU,KAAK,UAAU;AAEnC,YAAO;IACP,EAAC;GACF,EAAC;AACF,SAAM,GAAG,aAAa,WAAW,gBAAgB,CAAC,cAAc;AAC/D,YAAQ,CAAC,SAAS;AACjB,SAAI,UAAU,QAAQ;MACrB,MAAM,EAAE,KAAK,WAAW,QAAQ,GAAG,UAAU;MAC7C,MAAM,aAAa,KAAK,IAAI,UAAU;AACtC,UAAI,eAAe,kBAAkB,YAAY;AAChD,kBAAW,cAAc,OAAO,OAAO;AACvC,WAAI,WAAW,cAAc,SAAS,EACrC,MAAK,OAAO,UAAU;MAEvB;KACD,MACA,MAAK,OAAO,UAAU,IAAI;AAE3B,YAAO;IACP,EAAC;GACF,EAAC;EACF,CACD;CACD,UAED;AACD,QAAO,yBAAyB,OAAO;EACtC,MAAM;EACN,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,8BAA8B;CACpD,EAAC;AACF;;;;ACpFD,MAAa,sBAAsB,CAClCC,UACmD;CACnD,MAAM,4CACL,kBACC,OAEA;EACC,MAAM;EACN,SAAS,MAAM;GACd,MAAMC,uBAA2B,IAAI;AACrC,QAAK,MAAM,OAAO,CAAC,MAAM,mBAAmB,MAAM,iBAAkB,EACnE,MAAK,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK;AAC7B,QAAI,2BAA2B,IAAI,CAClC;IAED,MAAM,QAAQ,QAAQ,IAAI;AAC1B,QAAI,IAAI,QAAQ;KACf,IAAI,aAAa,KAAK,IAAI,IAAI,OAAO,IAAI;AACzC,UAAK,iBAAiB,kBAAkB,aAAa;AACpD,mBAAa;OACZ,KAAK,IAAI,OAAO;OAChB,+BAAe,IAAI;MACnB;AACD,WAAK,IAAI,IAAI,OAAO,KAAK,WAAW;KACpC;AACD,gBAAW,cAAc,IAAI,IAAI,OAAO,QAAQ,MAAM;IACtD,MACA,MAAK,IAAI,KAAK,MAAM;GAErB;AAEF,UAAO;EACP;EACD,SAAS,CACR,CAAC,EAAE,SAAS,KAAK;AAChB,SAAM,GAAG,iBAAiB,WACxB,gBACD,CAAC,kBAAkB;AAClB,QAAI,2BAA2B,cAAc,IAAI,CAChD;AAGD,YAAQ,CAAC,SAAS;AACjB,SAAI,cAAc,QAAQ;MACzB,MAAM,EAAE,KAAK,WAAW,QAAQ,GAAG,cAAc;MACjD,IAAI,aAAa,KAAK,IAAI,UAAU;AACpC,UACC,4BACG,kBAAkB,aACpB;AACD,oBAAa;QACZ,KAAK;QACL,+BAAe,IAAI;OACnB;AACD,YAAK,IAAI,WAAW,WAAW;MAC/B;AACD,iBAAW,cAAc,IAAI,QAAQ,cAAc;KACnD,MACA,MAAK,IAAI,cAAc,KAAK,cAAc;AAE3C,YAAO;IACP,EAAC;GACF,EACD;AAED,SAAM,GAAG,iBAAiB,WACxB,gBACD,CAAC,kBAAkB;AAClB,YAAQ,CAAC,SAAS;AACjB,SAAI,cAAc,QAAQ;MACzB,MAAM,EAAE,KAAK,WAAW,QAAQ,GAAG,cAAc;MACjD,MAAM,aAAa,KAAK,IAAI,UAAU;AACtC,UAAI,eAAe,kBAAkB,YAAY;AAChD,kBAAW,cAAc,OAAO,OAAO;AACvC,WAAI,WAAW,cAAc,SAAS,EACrC,MAAK,OAAO,UAAU;MAEvB;KACD,MACA,MAAK,OAAO,cAAc,IAAI;AAE/B,YAAO;IACP,EAAC;GACF,EACD;EACD,CACD;CACD,UAED;AACF,QAAO,yBAAyB,OAAO;EACtC,MAAM;EACN,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,0CAA0C;CAChE,EAAC;AACF;;;;ACpGD,MAAa,uBAAuB,CACnCC,UAC4D;CAC5D,MAAM,iCAAiC,wBAGrC,OAAO;EACR,MAAM;EACN,SAAS,CAAC,QACT,MAAM,UAAU,IAAI,IAAI,IAAI;GAC3B,OAAO;GACP,MAAM;GACN,IAAI;GACJ,eAAe;GACf,SAAS,CAAE;GACX,cAAc;GACd,gBAAgB;GAChB,SAAS,MAAM,CAAE;GACjB,SAAS,IAAI;GACb,+BAAe,IAAI;EACnB;EACF,SAAS,CAAC,QAAQ,CACjB,CAAC,EAAE,SAAS,KAAK;GAChB,MAAM,KAAK,MAAM,UAAU,IAAI,IAAI;AACnC,OAAI,QAAQ,WAAW,gBAAgB,CAAC,MAAM;AAC7C,YAAQ,EAAE,GAAG,GAAI,EAAC;GAClB,EAAC;EACF,CACD;CACD,EAAC;CACF,MAAM,uBAAuB,qBAC5B,OACA;EACC,MAAM;EACN,KACC,CAAC,QACD,CAAC,EAAE,KAAK,KACP,IAAI,gCAAgC,IAAI;CAC1C,EACD;AACD,QAAO;AACP;;;;AC7CD,MAAa,sBAAsB,CAClCC,UACqD;CACrD,MAAM,oCAAoC,kBAGzC,OACA;EACC,MAAM;EACN,SAAS,MACR,CAAC,GAAG,MAAM,SAAU,EAAC,IAAI,CAAC,CAAC,IAAI,KAAyB;AACvD,UAAO;IAAE;IAAK,OAAO;GAAW;EAChC,EAAC;EACH,SAAS,CACR,CAAC,EAAE,SAAS,KAAK;AAChB,SAAM,GAAG,iBAAiB,WACxB,gBACD,CAAC,kBAAkB;AAClB,YAAQ,CAAC,UAAU,CAAC,GAAG,OAAO,aAAc,EAAC;GAC7C,EACD;EACD,CACD;CACD,UAED;CACD,MAAM,qBAAqB,yBAAyB,OAAO;EAC1D,MAAM;EACN,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,kCAAkC;CACxD,EAAC;AACF,QAAO;AACP;;;;AC/BD,MAAa,yBAAyB,CACrCC,UACyD;CACzD,MAAM,uCAAuC,kBAG5C,OACA;EACC,MAAM;EACN,SAAS,MACR,CAAC,GAAG,MAAM,YAAa,EAAC,IAAI,CAAC,CAAC,IAAI,KAA6B;AAC9D,UAAO;IAAE;IAAK,OAAO;GAAc;EACnC,EAAC;EACH,SAAS,CACR,CAAC,EAAE,SAAS,KAAK;AAChB,SAAM,GAAG,oBAAoB,WAC3B,gBACD,CAAC,qBAAqB;AACrB,YAAQ,CAAC,UAAU,CAAC,GAAG,OAAO,gBAAiB,EAAC;GAChD,EACD;EACD,CACD;CACD,UAED;CACD,MAAM,wBAAwB,yBAAyB,OAAO;EAC7D,MAAM;EACN,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,qCAAqC;CAC3D,EAAC;AACF,QAAO;AACP;;;;AC/BD,MAAa,wBAAwB,CACpCC,UACwE;CACxE,MAAM,4BAA4B,wBAGhC,OAAO;EACR,MAAM;EACN,SAAS,MAAM,CAAE;EACjB,SAAS,CAAC,QAAQ,CACjB,CAAC,EAAE,SAAS,KAAK;GAChB,MAAM,KAAK,MAAM,aAAa,IAAI,IAAI;AACtC,OAAI,QAAQ,WAAW,gBAAgB,CAAC,sBAAsB;AAC7D,QAAI,kBAAkB,QAAQ,IAC7B,SAAQ,CAAC,UAAU,CAAC,GAAG,OAAO,iBAAkB,EAAC;GAElD,EAAC;EACF,CACD;CACD,EAAC;CACF,MAAM,gCAAgC,qBAGpC,OAAO;EACR,MAAM;EACN,KACC,CAAC,QACD,CAAC,EAAE,KAAK,KACP,IAAI,2BAA2B,IAAI;CACrC,EAAC;AACF,QAAO;AACP;;;;ACnBD,IAAa,WAAb,MAAgE;CAC/D,AAAO;CAEP,AAAO,YAAYC,WAA2B;AAC7C,OAAK,YAAY;CACjB;CAED,AAAO,OAAUC,OAgBN;AACV,OAAK,MAAM,CAAC,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,CAC1D,KAAI;AACH,OAEC,QAAQ,MAAM,KAAK,QACnB,YAAY,QAEZ,QAAO;IAAE,MAAM;IAAK,MAAM;GAAO;EAElC,SAAQ,GAAG;AACX,OAAI;AACH,QAAI,iBAAiB,QACpB,QAAO;KAAE,MAAM;KAAK,MAAM;IAAO;GAElC,SAAQ,IAAI,CAAE;EACf;AAEF,SAAO;CACP;AACD;AAED,MAAaC,oBAKR,IAAI,SAAS;CACjB,QAAQ,CAACC,iBAA2C,WAAW;CAC/D,QAAQ,CAACA,iBAA2C,WAAW;CAC/D,SAAS,CAACA,iBAA4C,WAAW;CACjE,MAAM,CAACA,UAAkC,UAAU;AACnD;AAED,SAAgB,cAAcA,OAA2C;AACxE,MAAK,MACJ,QAAO;CAER,MAAM,YAAY,OAAO,eAAe,MAAM;AAC9C,QAAO,cAAc,OAAO;AAC5B;AAED,MAAaC,mBAGR,IAAI,SAAS;CACjB,QAAQ;CACR,OAAO,CAACD,UAA6C,MAAM,QAAQ,MAAM;AACzE;AAED,MAAaE,eAOR,IAAI,SAAS;CACjB,GAAG,kBAAkB;CACrB,GAAG,iBAAiB;AACpB;AAID,MAAa,eAAe,CAC3BF,UAC4D;AAC5D,KAAI,iBACH,SAAQ;CAET,MAAM,UAAU,aAAa,OAAO,MAAM;AAC1C,KAAI,QACH,QAAO,QAAQ;AAEhB,QAAO,OAAO,eAAe,MAAM,CAAC,YAAY;AAChD;;;;AC5GD,MAAa,sBAAsB,CAClCG,UACqD;CACrD,MAAM,gBAAgB,iCAAiD,OAAO;EAC7E,MAAM;EACN,KACC,CAAC,QACD,CAAC,EAAE,KAAK,KAAK;GACZ,IAAIC;AACJ,OAAI;IACH,MAAM,QACL,MAAM,MAAM,IAAI,IAAI,IACpB,MAAM,kBAAkB,IAAI,IAAI,IAChC,MAAM,kBAAkB,IAAI,IAAI;AACjC,QAAI,iBACH,OAAM,IAAI,OAAO,iCAAiC,IAAI;AAEvD,YAAQ,IAAI,MAAM;GAClB,SAAQ,QAAQ;AAChB,YAAQ;GACR;GACD,MAAM,cAAc,aAAa,MAAM;AACvC,UAAO;EACP;CACF,EAAC;AACF,QAAO;AACP;;;;ACDD,MAAa,4BAA4B,CAACC,UAAsC;AAC/E,QAAO;EACN,WAAW,gBAAgB,MAAM;EACjC,eAAe,oBAAoB,MAAM;EACzC,kBAAkB,uBAAuB,MAAM;EAC/C,yBAAyB,sBAAsB,MAAM;EACrD,eAAe,oBAAoB,MAAM;EACzC,mBAAmB,qBAAqB,MAAM;EAC9C,eAAe,oBAAoB,MAAM;CACzC;AACD;;;;;;;;ACjBD,IAAa,UAAb,MAAa,QAAQ;CACpB,AAAgB;CAChB,AAAO,mBAA2B,YAAY,KAAK;CACnD,AAAO,kCAAuC,IAAI;CAClD,AAAgB;CAChB,AAAgB;CAChB,AAAO,WAAW;CAElB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;;;;CAKjB,AAAO,YAAYC,QAAwB,SAAS,SAAS,OAAO;AACnE,OAAK,QAAQ;AACb,OAAK,YAAY,gBAAgB,KAAK,MAAM;AAC5C,OAAK,gBAAgB,oBAAoB,KAAK,MAAM;AACpD,OAAK,8BAA8B,KAAK,MAAM,GAAG,aAAa,WAC5D,UAAU,KAAK,iBAAiB,GACjC,CAAC,EAAE,KAAK,KAAK;AACZ,QAAK,gBAAgB,IAAI,KAAK,YAAY,KAAK,GAAG,KAAK,iBAAiB;EACxE,EACD;AACD,OAAK,8BAA8B,KAAK,MAAM,GAAG,aAAa,WAC5D,UAAU,KAAK,iBAAiB,GACjC,CAAC,EAAE,KAAK,KAAK;AACZ,QAAK,gBAAgB,OAAO,IAAI;EAChC,EACD;AACD,OAAK,kCACJ,KAAK,MAAM,GAAG,iBAAiB,WAC7B,UAAU,KAAK,iBAAiB,GACjC,CAAC,EAAE,KAAK,KAAK;AACZ,QAAK,gBAAgB,IACpB,KACA,YAAY,KAAK,GAAG,KAAK,iBACzB;EACD,EACD;AACF,OAAK,kCACJ,KAAK,MAAM,GAAG,iBAAiB,WAC7B,UAAU,KAAK,iBAAiB,GACjC,CAAC,EAAE,KAAK,KAAK;AACZ,QAAK,gBAAgB,OAAO,IAAI;EAChC,EACD;CACF;CAED,OAAuB,+BAAmD;EACzE,cAAc;EACd,kBAAkB;CAClB;;;;;;;CAOD,AAAO,cACNC,QAA4B,QAAQ,8BACY;AAChD,MAAI,KAAK,SACR,OAAM,IAAI,OAAO;EAElB,MAAM,QAAQ,SAAS,KAAK,UAAU;EACtC,MAAM,YAAY,SAAS,KAAK,cAAc;EAC9C,MAAM,kBAAkB,CAAC,GAAG,MAAM,QAAQ,AAAC,EAAC,OAC3C,CAAC,UAAkD,kBAAkB,KACrE;EACD,MAAM,sBAAsB,CAAC,GAAG,UAAU,QAAQ,AAAC,EAAC,OACnD,CAAC,UACC,kBAAkB,KACpB;EACD,MAAM,cAAc,YAAY,KAAK;EACrC,MAAMC,YAA2D,CAAE;AACnE,MAAI,MAAM,aACT,MAAK,MAAM,cAAc,iBAAiB;GACzC,MAAM,SAAS,WAAW,cAAc,QAAQ;AAChD,QAAK,MAAM,SAAS,QAAQ;IAC3B,MAAM,aAAa,KAAK,gBAAgB,IAAI,MAAM,IAAI;IACtD,MAAM,eAAe,cAAc,KAAK;IACxC,MAAM,MAAM,cAAc;AAC1B,cAAU,KAAK,CAAC,OAAO,GAAI,EAAC;GAC5B;EACD;AAEF,MAAI,MAAM,iBACT,MAAK,MAAM,cAAc,qBAAqB;GAC7C,MAAM,SAAS,WAAW,cAAc,QAAQ;AAChD,QAAK,MAAM,SAAS,QAAQ;IAC3B,MAAM,aAAa,KAAK,gBAAgB,IAAI,MAAM,IAAI;IACtD,MAAM,eAAe,cAAc,KAAK;IACxC,MAAM,MAAM,cAAc;AAC1B,cAAU,KAAK,CAAC,OAAO,GAAI,EAAC;GAC5B;EACD;AAEF,SAAO;CACP;CAED,CAAQ,OAAO,WAAiB;AAC/B,OAAK,6BAA6B;AAClC,OAAK,6BAA6B;AAClC,OAAK,iCAAiC;AACtC,OAAK,iCAAiC;AACtC,OAAK,WAAW;CAChB;AACD;;;;AC1HD,MAAa,SAAS,CACrBC,MACAC,cACU;CACV,MAAM,OAAO,CAACC,MAAgBC,SAAoC;EACjE,MAAM,UAAU,CAACC,GAAaC,MAAwC;GAErE,MAAMC,WAAS,UAAU,GAAG,EAAE;AAC9B,OAAIA,SAAQ,QAAOA;AACnB,UAAO;EACP;EACD,MAAM,SAAS,QAAQ,MAAM,KAAK;AAClC,MAAI,QAAQ,eAAe,QAAQ,aAClC,QAAO;EAER,MAAM,eAAe,MAAM,QAAQ,KAAK,GACrC,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAE,EAAC,GAC1B,cAAc,KAAK,GAClB,OAAO,QAAQ,KAAK,GACpB,CAAE;AACN,OAAK,MAAM,CAAC,GAAG,EAAE,IAAI,cAAc;GAClC,MAAM,YAAY,KAAK,CAAC,GAAG,MAAM,CAAE,GAAE,EAAE;AACvC,OAAI,WAAW,YACd,QAAO;EAER;AACD,SAAO,CAAE;CACT;AACD,MAAK,CAAE,GAAE,KAAK;AACd;;;;ACnCD,SAAgB,WAAWC,GAAWC,GAAkB;CACvD,MAAM,OAAO,IAAI,KAAK,MAAM;AAC5B,QAAO,EACN,UAAU,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,GAChD;AACD;AAED,SAAgB,WAAWC,GAAWC,GAAkB;CACvD,MAAM,OAAO,EAAE,SAAS,EAAE,UAAU,MAAM;AAC1C,QAAO,EACN,UAAU,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IACjE;AACD;AAED,SAAgB,YAAYC,GAAYC,GAAmB;AAC1D,QAAO,EACN,UAAU,EAAE,EAAE,KAAK,EAAE,EACrB;AACD;AAED,SAAgB,WACfC,GACAC,GACAC,SACQ;CACR,IAAI,WAAW;CACf,MAAMC,QAAwB,CAAE;CAChC,MAAMC,UAA4B,CAAE;CACpC,MAAMC,UAA4B,CAAE;AAEpC,QAAO,GAAG,CAAC,MAAM,UAAU;EAC1B,IAAIC;AACJ,OAAK,OAAO,MAAM;GACjB,MAAM,QAAQ,EAAE;AAChB,OAAI,iBACH,SAAQ,KAAK,CAAC,KAAK,KAAK,UAAU,MAAM,AAAC,EAAC;QACpC;IACN,MAAM,QAAQ,QAAQ,OAAO,MAAM;AACnC,QAAI,MAAM,aAAa,WACtB,SAAQ,KAAK,CAAC,KAAK,KAAM,EAAC;GAE3B;EACD;CACD,EAAC;AAEF,QAAO,GAAG,CAAC,MAAM,UAAU;EAC1B,IAAIA;AACJ,OAAK,OAAO,MAAM;GACjB,MAAM,QAAQ,EAAE;AAChB,OAAI,iBACH,OAAM,KAAK,CAAC,KAAK,KAAK,UAAU,MAAM,AAAC,EAAC;EAEzC;CACD,EAAC;AAEF,YAAW,GAAG,QAAQ,OAAO,IAAI,MAAM,OAAO,IAAI,QAAQ,OAAO;AAEjE,QAAO;EACN;EACA;EACA;EACA;CACA;AACD;AAED,SAAgB,UACfC,GACAC,GACAN,SACQ;AACR,QAAO,WAAW,GAAU,GAAU,QAAQ;AAC9C;AAYD,IAAa,SAAb,MAGE;CACD,AAAO;CACP,AAAO;CACP,AAAO;CACP,AAAO;CAEP,AAAO,YACNO,cACAC,cACAC,eAGC;AACD,OAAK,eAAe;AACpB,OAAK,eAAe;AACpB,OAAK,cAAc,CAAE;AACrB,OAAK,cAAc,CAAE;AACrB,OAAK,MAAM,OAAO,OAAO,KAAK,aAAa,UAAU,EAAE;GACtD,MAAM,eAAe,cAAc;AACnC,QAAK,YAAY,OAAqB;EACtC;AACD,OAAK,MAAM,OAAO,OAAO,KAAK,aAAa,UAAU,EAAE;GACtD,MAAM,eAAe,cAAc;AACnC,QAAK,YAAY,OAAqB;EACtC;CACD;CAED,AAAO,KAAKC,GAAYC,GAAmB;AAC1C,MAAI,MAAM,EACT,QAAO,EAAE,UAAU,WAAY;EAGhC,MAAM,WAAW,KAAK,aAAa,OAAO,EAAE,IAAI,KAAK,aAAa,OAAO,EAAE;EAC3E,MAAM,WAAW,KAAK,aAAa,OAAO,EAAE,IAAI,KAAK,aAAa,OAAO,EAAE;AAE3E,MAAI,aAAa,QAAQ,aAAa,MACrC;OAAI,SAAS,SAAS,SAAS,MAAM;AACpC,QAAI,SAAS,QAAQ,KAAK,aAAa;KACtC,MAAM,QAAQ,KAAK,YAAY,SAAS,MACvC,SAAS,MACT,SAAS,KACT;AACD,YAAO;IACP;AACD,QAAI,SAAS,QAAQ,KAAK,aAAa;KACtC,MAAM,QAAQ,KAAK,YAAY,SAAS,MACvC,SAAS,MACT,SAAS,MACT,CAAC,GAAG,MAAM,KAAK,KAAK,GAAG,EAAE,CACzB;AACD,YAAO;IACP;GACD;;EAEF,MAAM,QAAQ,aAAa,EAAE;EAC7B,MAAM,QAAQ,aAAa,EAAE;AAC7B,MAAI,UAAU,MACb,QAAO,EACN,UAAU,EAAE,MAAM,KAAK,MAAM,EAC7B;AAEF,SAAO,EACN,UAAU,eAAe,MAAM,KAAK,MAAM,EAC1C;CACD;AACD;AAED,MAAaC,aAWT,IAAI,OAAO,mBAAmB,kBAAkB;CACnD,QAAQ;CACR,QAAQ;CACR,SAAS;CACT,MAAM,OAAO,EAAE,UAAU,WAAY;CACrC,QAAQ;CACR,OAAO;AACP"}
@@ -9,16 +9,13 @@ type ValueOfEntry<E extends Entries, K extends KeyOfEntries<E>> = { [P in Count<
9
9
  type FromEntries<E extends Entries> = Flat<{ [K in KeyOfEntries<E>]: ValueOfEntry<E, K> }>;
10
10
  declare function fromEntries<E extends Entries>(entries: E): FromEntries<E>;
11
11
  declare function toEntries<T extends object>(obj: T): Entries<keyof T, T[keyof T]>;
12
-
13
12
  //#endregion
14
13
  //#region src/json/select-json.d.ts
15
14
  declare const selectJson: <T, J extends Json.Serializable>(atom: AtomIO$1.AtomToken<T>, transform: JsonInterface<T, J>, store?: Store) => AtomIO$1.WritablePureSelectorToken<J>;
16
-
17
15
  //#endregion
18
16
  //#region src/json/select-json-family.d.ts
19
17
  declare function selectJsonFamily<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(store: Store, atomFamilyToken: AtomIO.MutableAtomFamilyToken<T, J, K>, transform: JsonInterface<T, J>): AtomIO.WritablePureSelectorFamilyToken<J, K>;
20
18
  declare function selectJsonFamily<T, J extends Json.Serializable, K extends Canonical>(store: Store, atomFamilyToken: AtomIO.RegularAtomFamilyToken<T, K>, transform: JsonInterface<T, J>): AtomIO.WritablePureSelectorFamilyToken<J, K>;
21
-
22
19
  //#endregion
23
20
  //#region src/json/index.d.ts
24
21
  type primitive = boolean | number | string | null;
@@ -59,7 +56,6 @@ interface JsonTypes extends Record<JsonTypeName, Json.Serializable> {
59
56
  string: string;
60
57
  }
61
58
  declare const JSON_DEFAULTS: JsonTypes;
62
-
63
59
  //#endregion
64
60
  export { Canonical, Entries, FromEntries, JSON_DEFAULTS, JSON_TYPE_NAMES, Json, JsonIO, JsonInterface, JsonTypeName, JsonTypes, KeyOfEntries, ValueOfEntry, fromEntries, isJson, parseJson, primitive, selectJson, selectJsonFamily, stringified, stringifyJson, toEntries };
65
61
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["entries: E","obj: T","atom: AtomIO.AtomToken<T>","transform: JsonInterface<T, J>","store: Store","store: Store","atomFamilyToken: AtomIO.MutableAtomFamilyToken<T, J, K>","transform: JsonInterface<T, J>","atomFamilyToken: AtomIO.RegularAtomFamilyToken<T, K>","str: S | string","json: J","t: T","input: unknown","JSON_DEFAULTS: JsonTypes"],"sources":["../../src/json/entries.ts","../../src/json/select-json.ts","../../src/json/select-json-family.ts","../../src/json/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["entries: E","obj: T","atom: AtomIO.AtomToken<T>","transform: JsonInterface<T, J>","store: Store","store: Store","atomFamilyToken: AtomIO.MutableAtomFamilyToken<T, J, K>","transform: JsonInterface<T, J>","atomFamilyToken: AtomIO.RegularAtomFamilyToken<T, K>","str: S | string","json: J","t: T","input: unknown","JSON_DEFAULTS: JsonTypes"],"sources":["../../src/json/entries.ts","../../src/json/select-json.ts","../../src/json/select-json-family.ts","../../src/json/index.ts"],"sourcesContent":[],"mappings":"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"}
@@ -4,17 +4,7 @@ import { MutableAtomFamilyToken as MutableAtomFamilyToken$1, MutableAtomToken as
4
4
  import { SetRTX, SetRTXJson } from "atom.io/transceivers/set-rtx";
5
5
 
6
6
  //#region src/main/atom.d.ts
7
- /**
8
- * @public
9
- * Create a mutable atom, a global reactive variable in the implicit store
10
- *
11
- * The value of a mutable atom must be some kind of {@link Transceiver}.
12
- *
13
- * @param options - {@link MutableAtomOptions}.
14
- * @returns
15
- * A reference to the atom created: a {@link MutableAtomToken}
16
- * @overload Mutable
17
- */
7
+
18
8
  /**
19
9
  * @public
20
10
  * Create a mutable atom, a global reactive variable in the implicit store
@@ -66,6 +56,7 @@ type RegularAtomOptions<T> = {
66
56
  /** Hooks used to run side effects when the atom is set */
67
57
  effects?: AtomEffect<T>[];
68
58
  };
59
+ // biome-ignore format: complex intersection
69
60
  type MutableAtomOptions<T extends Transceiver<any>, J extends Json.Serializable> = JsonInterface<T, J> & Omit<RegularAtomOptions<T>, `default`> & {
70
61
  default: () => T;
71
62
  mutable: true;
@@ -85,6 +76,7 @@ type RegularAtomFamilyToken<T, K extends Canonical> = {
85
76
  __T?: T;
86
77
  __K?: K;
87
78
  };
79
+ // biome-ignore format: intersection
88
80
  type MutableAtomFamilyOptions<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical> = JsonInterface<T, J> & {
89
81
  key: string;
90
82
  default: (key: K) => T;
@@ -101,7 +93,6 @@ type MutableAtomFamilyToken<T extends Transceiver<any>, J extends Json.Serializa
101
93
  type AtomFamilyToken<T, K extends Canonical = Canonical> = MutableAtomFamilyToken<T extends Transceiver<any> ? T : never, any, K> | RegularAtomFamilyToken<T, K>;
102
94
  declare function atomFamily<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(options: MutableAtomFamilyOptions<T, J, K>): MutableAtomFamilyToken<T, J, K>;
103
95
  declare function atomFamily<T, K extends Canonical>(options: RegularAtomFamilyOptions<T, K>): RegularAtomFamilyToken<T, K>;
104
-
105
96
  //#endregion
106
97
  //#region src/main/transaction.d.ts
107
98
  type TransactionToken<F extends Func> = {
@@ -178,7 +169,6 @@ type TransactionOptions<F extends Func> = {
178
169
  type TransactionIO<Token extends TransactionToken<any>> = Token extends TransactionToken<infer F> ? F : never;
179
170
  declare function transaction<F extends Func>(options: TransactionOptions<F>): TransactionToken<F>;
180
171
  declare function runTransaction<F extends Func>(token: TransactionToken<F>, id?: string): (...parameters: Parameters<F>) => ReturnType<F>;
181
-
182
172
  //#endregion
183
173
  //#region src/main/selector.d.ts
184
174
  type WritablePureSelectorOptions<T> = {
@@ -324,7 +314,6 @@ declare function selectorFamily<T extends object, K extends Canonical>(options:
324
314
  declare function selectorFamily<T extends object, K extends Canonical>(options: ReadonlyHeldSelectorFamilyOptions<T, K>): ReadonlyHeldSelectorFamilyToken<T, K>;
325
315
  declare function selectorFamily<T, K extends Canonical>(options: WritablePureSelectorFamilyOptions<T, K>): WritablePureSelectorFamilyToken<T, K>;
326
316
  declare function selectorFamily<T, K extends Canonical>(options: ReadonlyPureSelectorFamilyOptions<T, K>): ReadonlyPureSelectorFamilyToken<T, K>;
327
-
328
317
  //#endregion
329
318
  //#region src/main/timeline.d.ts
330
319
  type TimelineManageable = AtomFamilyToken<any, any> | AtomToken<any>;
@@ -343,7 +332,6 @@ type TimelineUpdate<ManagedAtom extends TimelineManageable> = TimelineAtomUpdate
343
332
  declare const timeline: <ManagedAtom extends TimelineManageable>(options: TimelineOptions<ManagedAtom>) => TimelineToken<ManagedAtom>;
344
333
  declare const redo: (tl: TimelineToken<any>) => void;
345
334
  declare const undo: (tl: TimelineToken<any>) => void;
346
-
347
335
  //#endregion
348
336
  //#region src/main/dispose-state.d.ts
349
337
  /**
@@ -360,7 +348,6 @@ declare function disposeState(token: ReadableToken<any>): void;
360
348
  * @param key - The unique key of the state to dispose
361
349
  */
362
350
  declare function disposeState<K extends Canonical>(token: ReadableFamilyToken<any, K>, key: K): void;
363
-
364
351
  //#endregion
365
352
  //#region src/main/find-state.d.ts
366
353
  /**
@@ -424,7 +411,6 @@ declare function findState<T, K extends Canonical, Key extends K>(token: Writabl
424
411
  * @default
425
412
  */
426
413
  declare function findState<T, K extends Canonical, Key extends K>(token: ReadableFamilyToken$1<T, K>, key: Key): ReadableToken$1<T, K>;
427
-
428
414
  //#endregion
429
415
  //#region src/main/get-state.d.ts
430
416
  /**
@@ -445,7 +431,6 @@ declare function getState<T>(token: ReadableToken<T>): T;
445
431
  * @overload Streamlined
446
432
  */
447
433
  declare function getState<T, K extends Canonical, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key): T;
448
-
449
434
  //#endregion
450
435
  //#region src/main/join.d.ts
451
436
  interface JoinOptions<ASide extends string, AType extends string, BSide extends string, BType extends string, Cardinality extends `1:1` | `1:n` | `n:n`, Content extends Json.Object | null> extends JunctionSchemaBase<ASide, BSide>, Partial<JunctionEntriesBase<AType, BType, Content>> {
@@ -470,10 +455,9 @@ type JoinStates<ASide extends string, AType extends string, BSide extends string
470
455
  declare function findRelations<ASide extends string, AType extends string, BSide extends string, BType extends string, Cardinality extends `1:1` | `1:n` | `n:n`, Content extends Json.Object | null>(token: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>, key: AType | BType): JoinStates<ASide, AType, BSide, BType, Cardinality, Content>;
471
456
  declare function editRelations<ASide extends string, AType extends string, BSide extends string, BType extends string, Cardinality extends `1:1` | `1:n` | `n:n`, Content extends Json.Object | null>(token: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>, change: (relations: Junction<ASide, AType, BSide, BType, Content>) => void): void;
472
457
  declare function getInternalRelations<ASide extends string, AType extends string, BSide extends string, BType extends string, Cardinality extends `1:1` | `1:n` | `n:n`, Content extends Json.Object | null>(token: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>): MutableAtomFamilyToken$1<SetRTX<string>, SetRTXJson<string>, string>;
473
-
474
458
  //#endregion
475
459
  //#region src/main/logger.d.ts
476
- declare const LoggerIconDictionary: {
460
+ declare const LOGGER_ICON_DICTIONARY: {
477
461
  readonly "⌛": "Timeline event fully captured";
478
462
  readonly "⏩": "Timeline redo";
479
463
  readonly "⏪": "Timeline undo";
@@ -524,7 +508,7 @@ declare const LoggerIconDictionary: {
524
508
  readonly "🖌": "Redacting realtime update";
525
509
  readonly "👁": "Determining perspective";
526
510
  };
527
- type LoggerIcon = keyof typeof LoggerIconDictionary;
511
+ type LoggerIcon = keyof typeof LOGGER_ICON_DICTIONARY;
528
512
  type TokenDenomination = `atom_family` | `atom` | `continuity` | `molecule_family` | `molecule` | `mutable_atom_family` | `mutable_atom` | `readonly_held_selector_family` | `readonly_held_selector` | `readonly_pure_selector_family` | `readonly_pure_selector` | `state` | `timeline` | `transaction` | `unknown` | `writable_held_selector_family` | `writable_held_selector` | `writable_pure_selector_family` | `writable_pure_selector`;
529
513
  declare const LOG_LEVELS: readonly ["info", "warn", "error"];
530
514
  type LogLevel = (typeof LOG_LEVELS)[number];
@@ -542,7 +526,6 @@ declare class AtomIOLogger implements Logger {
542
526
  info: LogFn;
543
527
  warn: LogFn;
544
528
  }
545
-
546
529
  //#endregion
547
530
  //#region src/main/realm.d.ts
548
531
  declare const $claim: unique symbol;
@@ -593,7 +576,6 @@ type Below<TK extends TypedKey | TypedKey[], H extends Hierarchy> = { [K in keyo
593
576
  } ? TK extends V ? H[K] extends ExclusiveFealty ? H[K][`below`][number] : never : never : never }[keyof H];
594
577
  type Mutuals<TK extends TypedKey | TypedKey[], H extends Hierarchy> = { [K in keyof H]: H[K] extends MutualFealty ? TK extends H[K][`above`][number] ? [mutual: Exclude<H[K][`above`][number], TK>, below: H[K][`below`]] : never : never }[keyof H];
595
578
  type CompoundFrom<H extends Hierarchy> = { [K in keyof H]: H[K] extends MutualFealty ? H[K][`below`] : never }[keyof H];
596
-
597
579
  //#endregion
598
580
  //#region src/main/set-state.d.ts
599
581
  /**
@@ -622,7 +604,6 @@ declare function setState<T, New extends T>(token: WritableToken<T>, value: New
622
604
  * @overload Streamlined
623
605
  */
624
606
  declare function setState<T, K extends Canonical, New extends T, Key extends K>(token: WritableFamilyToken<T, K>, key: Key, value: New | Setter<T, New>): void;
625
-
626
607
  //#endregion
627
608
  //#region src/main/silo.d.ts
628
609
  declare class Silo {
@@ -644,7 +625,6 @@ declare class Silo {
644
625
  install: (tokens: AtomIOToken[], store?: Store) => void;
645
626
  constructor(config: Store[`config`], fromStore?: Store | null);
646
627
  }
647
-
648
628
  //#endregion
649
629
  //#region src/main/subscribe.d.ts
650
630
  type StateUpdate<T> = {
@@ -661,7 +641,6 @@ type TransactionUpdateHandler<F extends Func> = (data: TransactionUpdate<F>) =>
661
641
  declare function subscribe<T>(token: ReadableToken<T>, handleUpdate: UpdateHandler<T>, key?: string): () => void;
662
642
  declare function subscribe<F extends Func>(token: TransactionToken<F>, handleUpdate: TransactionUpdateHandler<F>, key?: string): () => void;
663
643
  declare function subscribe<M extends TimelineManageable>(token: TimelineToken<M>, handleUpdate: (update: TimelineUpdate<M> | `redo` | `undo`) => void, key?: string): () => void;
664
-
665
644
  //#endregion
666
645
  //#region src/main/validators.d.ts
667
646
  type TokenType<Comparison extends ReadableFamilyToken$1<any, any> | ReadableToken$1<any>> = Comparison extends ReadableToken$1<infer RepresentedValue> ? RepresentedValue : Comparison extends ReadableFamilyToken$1<infer RepresentedValue, any> ? RepresentedValue : never;
@@ -677,7 +656,6 @@ declare function belongsTo<Family extends WritablePureSelectorFamilyToken$1<any,
677
656
  declare function belongsTo<Family extends ReadonlyPureSelectorFamilyToken$1<any, any>>(family: Family, unknownToken: ReadableToken$1<any>): unknownToken is ReadonlyPureSelectorToken$1<TokenType<Family>>;
678
657
  declare function belongsTo<Family extends WritableFamilyToken$1<any, any>>(family: Family, unknownToken: ReadableToken$1<any>): unknownToken is WritableToken$1<TokenType<Family>>;
679
658
  declare function belongsTo<Family extends ReadableFamilyToken$1<any, any>>(family: Family, unknownToken: ReadableToken$1<any>): unknownToken is ReadableToken$1<TokenType<Family>>;
680
-
681
659
  //#endregion
682
660
  //#region src/main/index.d.ts
683
661
  /**
@@ -804,7 +782,6 @@ type FamilyMetadata<K extends Canonical = any> = {
804
782
  subKey: stringified<K>;
805
783
  };
806
784
  type Loadable<T> = Promise<T> | T;
807
-
808
785
  //#endregion
809
786
  export { $claim, Above, ActorToolkit, Anarchy, AtomDisposal, AtomEffect, AtomFamilyToken, AtomIOLogger, AtomIOToken, AtomOnly, AtomToken, Below, Claim, CompoundFrom, CompoundTypedKey, Effectors, FamilyMetadata, GetterToolkit, HeldSelectorFamilyToken, HeldSelectorToken, Hierarchy, JoinOptions, JoinStates, JoinToken, KeyedStateUpdate, LOG_LEVELS, Loadable, LogFilter, LogFn, LogLevel, Logger, LoggerIcon, MoleculeCreation, MoleculeDisposal, MoleculeTransfer, MutableAtomFamilyOptions, MutableAtomFamilyToken, MutableAtomOptions, MutableAtomToken, Mutuals, PureSelectorFamilyToken, PureSelectorToken, Read, ReadableFamilyToken, ReadableToken, ReadonlyHeldSelectorFamilyOptions, ReadonlyHeldSelectorFamilyToken, ReadonlyHeldSelectorOptions, ReadonlyHeldSelectorToken, ReadonlyPureSelectorFamilyOptions, ReadonlyPureSelectorFamilyToken, ReadonlyPureSelectorOptions, ReadonlyPureSelectorToken, ReadonlySelectorFamilyToken, ReadonlySelectorToken, Realm, RegularAtomFamilyOptions, RegularAtomFamilyToken, RegularAtomOptions, RegularAtomToken, SelectorDisposal, SelectorFamilyToken, SelectorToken, Setter, SetterToolkit, Silo, SingularTypedKey, StateCreation, StateDisposal, StateUpdate, T$, TimelineManageable, TimelineOptions, TimelineToken, TimelineUpdate, TokenDenomination, TokenType, Transact, TransactionIO, TransactionOptions, TransactionToken, TransactionUpdate, TransactionUpdateContent, TransactionUpdateHandler, TypeTag, TypedKey, UpdateHandler, Vassal, WritableFamilyToken, WritableHeldSelectorFamilyOptions, WritableHeldSelectorFamilyToken, WritableHeldSelectorOptions, WritableHeldSelectorToken, WritablePureSelectorFamilyOptions, WritablePureSelectorFamilyToken, WritablePureSelectorOptions, WritablePureSelectorToken, WritableSelectorFamilyToken, WritableSelectorToken, WritableToken, Write, atom, atomFamily, belongsTo, disposeState, editRelations, findRelations, findState, getInternalRelations, getState, isToken, join, redo, runTransaction, selector, selectorFamily, setState, simpleLog, simpleLogger, subscribe, timeline, transaction, undo };
810
787
  //# sourceMappingURL=index.d.ts.map