atom.io 0.33.6 → 0.33.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/introspection/index.d.ts +2 -2
- package/dist/introspection/index.d.ts.map +1 -1
- package/dist/introspection/index.js +2 -1
- package/dist/introspection/index.js.map +1 -1
- package/dist/react-devtools/index.css +58 -20
- package/dist/react-devtools/index.css.map +1 -1
- package/dist/react-devtools/index.js +10 -4
- package/dist/react-devtools/index.js.map +1 -1
- package/package.json +5 -5
- package/src/introspection/attach-introspection-states.ts +2 -1
- package/src/introspection/attach-type-selectors.ts +10 -4
- package/src/react-devtools/AtomIODevtools.tsx +1 -0
- package/src/react-devtools/StateIndex.tsx +22 -17
- package/src/react-devtools/devtools.css +58 -20
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Internal from "atom.io/internal";
|
|
2
2
|
import { Flat, Func, Refinement, Store, Timeline } from "atom.io/internal";
|
|
3
3
|
import { Json } from "atom.io/json";
|
|
4
|
-
import { AtomToken, ReadableToken, ReadonlyPureSelectorFamilyToken, ReadonlyPureSelectorToken, SelectorToken, TimelineToken, TransactionToken, TransactionUpdate } from "atom.io";
|
|
4
|
+
import { AtomToken, Loadable, ReadableToken, ReadonlyPureSelectorFamilyToken, ReadonlyPureSelectorToken, SelectorToken, TimelineToken, TransactionToken, TransactionUpdate } from "atom.io";
|
|
5
5
|
|
|
6
6
|
//#region src/introspection/attach-atom-index.d.ts
|
|
7
7
|
type AtomTokenIndex = WritableTokenIndex<AtomToken<unknown>>;
|
|
@@ -17,7 +17,7 @@ type IntrospectionStates = {
|
|
|
17
17
|
transactionLogSelectors: ReadonlyPureSelectorFamilyToken<TransactionUpdate<Func>[], string>;
|
|
18
18
|
timelineIndex: ReadonlyPureSelectorToken<TimelineToken<any>[]>;
|
|
19
19
|
timelineSelectors: ReadonlyPureSelectorFamilyToken<Timeline<any>, string>;
|
|
20
|
-
typeSelectors: ReadonlyPureSelectorFamilyToken<string
|
|
20
|
+
typeSelectors: ReadonlyPureSelectorFamilyToken<Loadable<string>, string>;
|
|
21
21
|
};
|
|
22
22
|
declare const attachIntrospectionStates: (store: Store) => IntrospectionStates;
|
|
23
23
|
//#endregion
|
|
@@ -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":";;;;;;KAWY,cAAA,GAAiB,mBAAmB;;;KCApC,kBAAA,GAAqB,mBAAmB;;;
|
|
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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"}
|
|
@@ -283,7 +283,7 @@ const discoverType = (input) => {
|
|
|
283
283
|
const attachTypeSelectors = (store) => {
|
|
284
284
|
const typeSelectors = createReadonlyPureSelectorFamily(store, {
|
|
285
285
|
key: `🔍 State Type`,
|
|
286
|
-
get: (key) => ({ get }) => {
|
|
286
|
+
get: (key) => async ({ get }) => {
|
|
287
287
|
let state;
|
|
288
288
|
try {
|
|
289
289
|
const token = store.atoms.get(key) ?? store.writableSelectors.get(key) ?? store.readonlySelectors.get(key);
|
|
@@ -292,6 +292,7 @@ const attachTypeSelectors = (store) => {
|
|
|
292
292
|
} catch (_) {
|
|
293
293
|
return `error`;
|
|
294
294
|
}
|
|
295
|
+
if (state instanceof Promise) state = await state;
|
|
295
296
|
const typeOfState = discoverType(state);
|
|
296
297
|
return typeOfState;
|
|
297
298
|
}
|
|
@@ -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 (_) {\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 { Loadable, 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<Loadable<string>, string> => {\n\tconst typeSelectors = createReadonlyPureSelectorFamily<\n\t\tLoadable<string>,\n\t\tstring\n\t>(store, {\n\t\tkey: `🔍 State Type`,\n\t\tget:\n\t\t\t(key) =>\n\t\t\tasync ({ 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 (_) {\n\t\t\t\t\treturn `error`\n\t\t\t\t}\n\t\t\t\tif (state instanceof Promise) {\n\t\t\t\t\tstate = await state\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\tLoadable,\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<Loadable<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,14 +1,21 @@
|
|
|
1
1
|
main[data-css="atom_io_devtools"] {
|
|
2
|
-
--fg-color: #
|
|
2
|
+
--fg-color: #ccc;
|
|
3
|
+
--fg-light: #aaa;
|
|
4
|
+
--fg-faint: #555;
|
|
3
5
|
--bg-color: #111;
|
|
6
|
+
--bg-accent: #00f;
|
|
4
7
|
--bg-tint1: #222;
|
|
5
8
|
--fg-border: 1px solid var(--fg-color);
|
|
6
9
|
@media (prefers-color-scheme: light) {
|
|
7
10
|
--fg-color: #444;
|
|
11
|
+
--fg-light: #777;
|
|
12
|
+
--fg-faint: #999;
|
|
8
13
|
--bg-color: #ddd;
|
|
14
|
+
--bg-accent: #0ff;
|
|
9
15
|
--bg-tint1: #e3e3e3;
|
|
10
16
|
}
|
|
11
17
|
& {
|
|
18
|
+
pointer-events: all;
|
|
12
19
|
box-sizing: border-box;
|
|
13
20
|
color: var(--fg-color);
|
|
14
21
|
background-color: var(--bg-color);
|
|
@@ -28,10 +35,9 @@ main[data-css="atom_io_devtools"] {
|
|
|
28
35
|
font-size: 16px;
|
|
29
36
|
font-family: theia, monospace;
|
|
30
37
|
line-height: 1em;
|
|
38
|
+
color: var(--fg-color);
|
|
31
39
|
}
|
|
32
40
|
> header {
|
|
33
|
-
padding: 5px;
|
|
34
|
-
padding-left: 10px;
|
|
35
41
|
padding-bottom: 0;
|
|
36
42
|
display: flex;
|
|
37
43
|
justify-content: space-between;
|
|
@@ -73,17 +79,21 @@ main[data-css="atom_io_devtools"] {
|
|
|
73
79
|
.node .node {
|
|
74
80
|
border-right: var(--fg-border);
|
|
75
81
|
padding-right: 0;
|
|
76
|
-
background: #
|
|
82
|
+
background: #ffffff08;
|
|
83
|
+
@media (prefers-color-scheme: light) {
|
|
84
|
+
background: #00000004;
|
|
85
|
+
}
|
|
77
86
|
}
|
|
78
87
|
.node > .node {
|
|
79
|
-
margin:
|
|
80
|
-
margin-left: 12px;
|
|
88
|
+
margin: 0px 2px 2px 18px;
|
|
81
89
|
border-left: var(--fg-border);
|
|
90
|
+
&:last-of-type {
|
|
91
|
+
margin-bottom: 6px;
|
|
92
|
+
}
|
|
82
93
|
}
|
|
83
94
|
.node {
|
|
84
95
|
border-top: var(--fg-border);
|
|
85
|
-
overflow
|
|
86
|
-
padding: 5px;
|
|
96
|
+
overflow: visible;
|
|
87
97
|
&:last-of-type {
|
|
88
98
|
border-bottom: var(--fg-border);
|
|
89
99
|
}
|
|
@@ -93,44 +103,74 @@ main[data-css="atom_io_devtools"] {
|
|
|
93
103
|
header {
|
|
94
104
|
display: flex;
|
|
95
105
|
flex-flow: row;
|
|
96
|
-
gap: 5px;
|
|
97
106
|
position: sticky;
|
|
98
107
|
z-index: 999;
|
|
99
108
|
top: 0;
|
|
109
|
+
height: 22px;
|
|
100
110
|
button.carat {
|
|
101
111
|
cursor: pointer;
|
|
102
112
|
background: none;
|
|
103
113
|
border: none;
|
|
104
114
|
width: 20px;
|
|
115
|
+
color: var(--fg-light);
|
|
105
116
|
&.open {
|
|
106
117
|
transform: rotate(90deg);
|
|
107
118
|
}
|
|
108
119
|
&:disabled {
|
|
109
120
|
cursor: default;
|
|
121
|
+
color: var(--fg-faint);
|
|
110
122
|
}
|
|
111
123
|
}
|
|
112
124
|
> main {
|
|
113
125
|
display: flex;
|
|
114
126
|
flex-flow: row;
|
|
115
|
-
gap: 5px;
|
|
116
127
|
cursor: help;
|
|
117
|
-
align-items:
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
display:
|
|
128
|
+
align-items: center;
|
|
129
|
+
* {
|
|
130
|
+
height: 100%;
|
|
131
|
+
display: flex;
|
|
132
|
+
align-items: center;
|
|
133
|
+
align-content: center;
|
|
134
|
+
justify-content: center;
|
|
135
|
+
}
|
|
136
|
+
h2 {
|
|
121
137
|
margin: 0;
|
|
122
|
-
}
|
|
138
|
+
}
|
|
123
139
|
.detail {
|
|
140
|
+
margin-left: 5px;
|
|
124
141
|
color: #777;
|
|
125
142
|
@media (prefers-color-scheme: light) {
|
|
126
143
|
color: #999;
|
|
127
144
|
}
|
|
128
145
|
}
|
|
129
146
|
}
|
|
147
|
+
> .json_viewer {
|
|
148
|
+
color: var(--fg-light);
|
|
149
|
+
}
|
|
150
|
+
> .json_editor,
|
|
151
|
+
> .json_viewer {
|
|
152
|
+
display: flex;
|
|
153
|
+
align-items: center;
|
|
154
|
+
border-left: 1px solid var(--fg-light);
|
|
155
|
+
background-color: var(--bg-tint1);
|
|
156
|
+
* {
|
|
157
|
+
display: flex;
|
|
158
|
+
height: 100%;
|
|
159
|
+
}
|
|
160
|
+
> span {
|
|
161
|
+
padding: 0px 5px;
|
|
162
|
+
border-left: var(--fg-color);
|
|
163
|
+
z-index: 0;
|
|
164
|
+
&:focus-within {
|
|
165
|
+
outline: 4px solid var(--fg-color);
|
|
166
|
+
background: var(--bg-accent);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
input {
|
|
170
|
+
outline: none;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
130
173
|
}
|
|
131
|
-
/* main {
|
|
132
|
-
margin-left: 15px;
|
|
133
|
-
} */
|
|
134
174
|
}
|
|
135
175
|
section.transaction_log {
|
|
136
176
|
margin-top: 0;
|
|
@@ -243,8 +283,6 @@ main[data-css="atom_io_devtools"] {
|
|
|
243
283
|
.json_editor {
|
|
244
284
|
input {
|
|
245
285
|
font-family: theia, monospace;
|
|
246
|
-
border: none;
|
|
247
|
-
border-bottom: 1px solid;
|
|
248
286
|
background: none;
|
|
249
287
|
&:disabled {
|
|
250
288
|
border: none;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.css","names":[],"sources":["../../src/react-devtools/devtools.css"],"sourcesContent":["main[data-css=\"atom_io_devtools\"] {\n\t--fg-color: #eee;\n\t--bg-color: #111;\n\t--bg-tint1: #222;\n\t--fg-border: 1px solid var(--fg-color);\n\t@media (prefers-color-scheme: light) {\n\t\t--fg-color: #444;\n\t\t--bg-color: #ddd;\n\t\t--bg-tint1: #e3e3e3;\n\t}\n\t& {\n\t\tbox-sizing: border-box;\n\t\tcolor: var(--fg-color);\n\t\tbackground-color: var(--bg-color);\n\t\tborder: 2px solid var(--fg-color);\n\t\tposition: fixed;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tflex-flow: column;\n\t\tmax-height: 800px;\n\t\twidth: 100%;\n\t\tmax-width: 500px;\n\t\toverflow-y: scroll;\n\t}\n\t* {\n\t\tfont-size: 16px;\n\t\tfont-family: theia, monospace;\n\t\tline-height: 1em;\n\t}\n\t> header {\n\t\tpadding: 5px;\n\t\tpadding-left: 10px;\n\t\tpadding-bottom: 0;\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\th1 {\n\t\t\tmargin: 0;\n\t\t\tfont-size: 24px;\n\t\t\tfont-family: charter, serif;\n\t\t}\n\t\tnav {\n\t\t\tdisplay: flex;\n\t\t\tflex-flow: row nowrap;\n\t\t\tbutton {\n\t\t\t\tcursor: pointer;\n\t\t\t\tbackground: none;\n\t\t\t\tborder: none;\n\t\t\t\tpadding: 0px 5px;\n\t\t\t\tmargin-bottom: -2px;\n\t\t\t\tz-index: 1000;\n\t\t\t\t&:disabled {\n\t\t\t\t\tcursor: default;\n\t\t\t\t\tbackground-color: var(--bg-tint1);\n\t\t\t\t\tcolor: var(--fg-color);\n\t\t\t\t\tborder: var(--fg-border);\n\t\t\t\t\tborder-bottom: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t> main {\n\t\tbackground: var(--bg-tint1);\n\t}\n\tmain {\n\t\toverflow-y: scroll;\n\t\tflex-grow: 1;\n\t\tdisplay: flex;\n\t\tflex-flow: column;\n\t\tgap: 0;\n\t\tarticle.index {\n\t\t\t.node .node {\n\t\t\t\tborder-right: var(--fg-border);\n\t\t\t\tpadding-right: 0;\n\t\t\t\tbackground: #fff3;\n\t\t\t}\n\t\t\t.node > .node {\n\t\t\t\tmargin: 5px 0;\n\t\t\t\tmargin-left: 12px;\n\t\t\t\tborder-left: var(--fg-border);\n\t\t\t}\n\t\t\t.node {\n\t\t\t\tborder-top: var(--fg-border);\n\t\t\t\toverflow-x: scroll;\n\t\t\t\tpadding: 5px;\n\t\t\t\t&:last-of-type {\n\t\t\t\t\tborder-bottom: var(--fg-border);\n\t\t\t\t}\n\t\t\t\t&.transaction_update {\n\t\t\t\t\tpadding: 0;\n\t\t\t\t}\n\t\t\t\theader {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-flow: row;\n\t\t\t\t\tgap: 5px;\n\t\t\t\t\tposition: sticky;\n\t\t\t\t\tz-index: 999;\n\t\t\t\t\ttop: 0;\n\t\t\t\t\tbutton.carat {\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\twidth: 20px;\n\t\t\t\t\t\t&.open {\n\t\t\t\t\t\t\ttransform: rotate(90deg);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&:disabled {\n\t\t\t\t\t\t\tcursor: default;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t> main {\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\tflex-flow: row;\n\t\t\t\t\t\tgap: 5px;\n\t\t\t\t\t\tcursor: help;\n\t\t\t\t\t\talign-items: baseline;\n\t\t\t\t\t\t/* h2,\n\t\t\t\t\t\tspan.type {\n\t\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t} */\n\t\t\t\t\t\t.detail {\n\t\t\t\t\t\t\tcolor: #777;\n\t\t\t\t\t\t\t@media (prefers-color-scheme: light) {\n\t\t\t\t\t\t\t\tcolor: #999;\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\t/* main {\n margin-left: 15px;\n } */\n\t\t\t}\n\t\t\tsection.transaction_log {\n\t\t\t\tmargin-top: 0;\n\t\t\t\tmain {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-flow: row wrap;\n\t\t\t\t\tgap: 5px;\n\t\t\t\t\t.transaction_update {\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\tflex-flow: row;\n\t\t\t\t\t\talign-items: flex-start;\n\t\t\t\t\t\tjustify-content: flex-start;\n\t\t\t\t\t\tjustify-items: flex-start;\n\t\t\t\t\t\talign-content: flex-start;\n\t\t\t\t\t\tborder-left: var(--fg-border);\n\t\t\t\t\t\tborder-top: var(--fg-border);\n\t\t\t\t\t\theader {\n\t\t\t\t\t\t\tpadding: 5px;\n\t\t\t\t\t\t\th4 {\n\t\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\t\t\tfont-size: inherit;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmain {\n\t\t\t\t\t\t\tmargin-left: 0;\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\tflex-flow: column;\n\t\t\t\t\t\t\tgap: 0px;\n\t\t\t\t\t\t\tborder-left: 1px solid #333;\n\t\t\t\t\t\t\tsection ~ section {\n\t\t\t\t\t\t\t\tborder-top: 1px solid #333;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsection {\n\t\t\t\t\t\t\t\tpadding: 5px;\n\t\t\t\t\t\t\t\t&.transaction_output {\n\t\t\t\t\t\t\t\t\tborder-right: none;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t&.transaction_impact {\n\t\t\t\t\t\t\t\t\tpadding: 5px;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t\t\tarticle {\n\t\t\t\t\t\t\t\t\tborder-left: var(--fg-border);\n\t\t\t\t\t\t\t\t\tborder-right: var(--fg-border);\n\t\t\t\t\t\t\t\t\t.summary {\n\t\t\t\t\t\t\t\t\t\twhite-space: nowrap;\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}\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\tsection.timeline_log {\n\t\t\t\theader {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t> main {\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\t\t.gap {\n\t\t\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnav {\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\tflex-flow: row nowrap;\n\t\t\t\t\t\t\tgap: 5px;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t.timeline_update {\n\t\t\t\t\tpadding: 5px;\n\t\t\t\t\tborder-left: var(--fg-border);\n\t\t\t\t\th4 {\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\tfont-size: inherit;\n\t\t\t\t\t}\n\t\t\t\t\tmain {\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t.node.atom_update {\n\t\t\t\t\t\t\tborder-left: var(--fg-border);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t.you_are_here {\n\t\t\t\t\tbackground: var(--fg-color);\n\t\t\t\t\tcolor: var(--bg-color);\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfooter {\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t\tbutton {\n\t\t\tcursor: pointer;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tpadding: none;\n\t\t\tposition: absolute;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t}\n\t}\n\n\t.json_editor {\n\t\tinput {\n\t\t\tfont-family: theia, monospace;\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid;\n\t\t\tbackground: none;\n\t\t\t&:disabled {\n\t\t\t\tborder: none;\n\t\t\t}\n\t\t}\n\t\tbutton {\n\t\t\tbackground: none;\n\t\t\tcolor: #777;\n\t\t\tborder: none;\n\t\t\tfont-family: theia, monospace;\n\t\t\tfont-size: 14px;\n\t\t\tmargin: none;\n\t\t\tpadding: 4px;\n\t\t\tpadding-bottom: 6px;\n\t\t\tcursor: pointer;\n\t\t\t&:hover {\n\t\t\t\tcolor: #333;\n\t\t\t\tbackground-color: #aaa;\n\t\t\t}\n\t\t}\n\t\tselect {\n\t\t\tfont-family: theia, monospace;\n\t\t\tfont-size: 14px;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tcolor: #777;\n\t\t\t@media (prefers-color-scheme: light) {\n\t\t\t\tcolor: #999;\n\t\t\t}\n\t\t}\n\t\t.json_editor_unofficial {\n\t\t\tbackground-color: #777;\n\t\t\tbutton {\n\t\t\t\tcolor: #333;\n\t\t\t}\n\t\t}\n\t\t.json_editor_missing {\n\t\t\tbackground-color: #f055;\n\t\t}\n\t\t.json_editor_key {\n\t\t\tpadding-right: 10px;\n\t\t\tinput {\n\t\t\t\tcolor: #999;\n\t\t\t\t@media (prefers-color-scheme: light) {\n\t\t\t\t\tcolor: #777;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.json_editor_object {\n\t\t\tborder-left: 2px solid #333;\n\t\t\tpadding-left: 20px;\n\t\t\t@media (prefers-color-scheme: light) {\n\t\t\t\tborder-color: #ccc;\n\t\t\t}\n\t\t\t.json_editor_properties {\n\t\t\t\t> * {\n\t\t\t\t\tborder-bottom: var(--fg-border);\n\t\t\t\t\tmargin-bottom: 2px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
|
|
1
|
+
{"version":3,"file":"index.css","names":[],"sources":["../../src/react-devtools/devtools.css"],"sourcesContent":["main[data-css=\"atom_io_devtools\"] {\n\t--fg-color: #ccc;\n\t--fg-light: #aaa;\n\t--fg-faint: #555;\n\t--bg-color: #111;\n\t--bg-accent: #00f;\n\t--bg-tint1: #222;\n\t--fg-border: 1px solid var(--fg-color);\n\t@media (prefers-color-scheme: light) {\n\t\t--fg-color: #444;\n\t\t--fg-light: #777;\n\t\t--fg-faint: #999;\n\t\t--bg-color: #ddd;\n\t\t--bg-accent: #0ff;\n\t\t--bg-tint1: #e3e3e3;\n\t}\n\t& {\n\t\tpointer-events: all;\n\t\tbox-sizing: border-box;\n\t\tcolor: var(--fg-color);\n\t\tbackground-color: var(--bg-color);\n\t\tborder: 2px solid var(--fg-color);\n\t\tposition: fixed;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tflex-flow: column;\n\t\tmax-height: 800px;\n\t\twidth: 100%;\n\t\tmax-width: 500px;\n\t\toverflow-y: scroll;\n\t}\n\t* {\n\t\tfont-size: 16px;\n\t\tfont-family: theia, monospace;\n\t\tline-height: 1em;\n\t\tcolor: var(--fg-color);\n\t}\n\t> header {\n\t\tpadding-bottom: 0;\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\th1 {\n\t\t\tmargin: 0;\n\t\t\tfont-size: 24px;\n\t\t\tfont-family: charter, serif;\n\t\t}\n\t\tnav {\n\t\t\tdisplay: flex;\n\t\t\tflex-flow: row nowrap;\n\t\t\tbutton {\n\t\t\t\tcursor: pointer;\n\t\t\t\tbackground: none;\n\t\t\t\tborder: none;\n\t\t\t\tpadding: 0px 5px;\n\t\t\t\tmargin-bottom: -2px;\n\t\t\t\tz-index: 1000;\n\t\t\t\t&:disabled {\n\t\t\t\t\tcursor: default;\n\t\t\t\t\tbackground-color: var(--bg-tint1);\n\t\t\t\t\tcolor: var(--fg-color);\n\t\t\t\t\tborder: var(--fg-border);\n\t\t\t\t\tborder-bottom: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t> main {\n\t\tbackground: var(--bg-tint1);\n\t}\n\tmain {\n\t\toverflow-y: scroll;\n\t\tflex-grow: 1;\n\t\tdisplay: flex;\n\t\tflex-flow: column;\n\t\tgap: 0;\n\t\tarticle.index {\n\t\t\t.node .node {\n\t\t\t\tborder-right: var(--fg-border);\n\t\t\t\tpadding-right: 0;\n\t\t\t\tbackground: #ffffff08;\n\t\t\t\t@media (prefers-color-scheme: light) {\n\t\t\t\t\tbackground: #00000004;\n\t\t\t\t}\n\t\t\t}\n\t\t\t.node > .node {\n\t\t\t\tmargin: 0px 2px 2px 18px;\n\t\t\t\tborder-left: var(--fg-border);\n\t\t\t\t&:last-of-type {\n\t\t\t\t\tmargin-bottom: 6px;\n\t\t\t\t}\n\t\t\t}\n\t\t\t.node {\n\t\t\t\tborder-top: var(--fg-border);\n\t\t\t\toverflow: visible;\n\t\t\t\t&:last-of-type {\n\t\t\t\t\tborder-bottom: var(--fg-border);\n\t\t\t\t}\n\t\t\t\t&.transaction_update {\n\t\t\t\t\tpadding: 0;\n\t\t\t\t}\n\t\t\t\theader {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-flow: row;\n\t\t\t\t\tposition: sticky;\n\t\t\t\t\tz-index: 999;\n\t\t\t\t\ttop: 0;\n\t\t\t\t\theight: 22px;\n\t\t\t\t\tbutton.carat {\n\t\t\t\t\t\tcursor: pointer;\n\t\t\t\t\t\tbackground: none;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\twidth: 20px;\n\t\t\t\t\t\tcolor: var(--fg-light);\n\t\t\t\t\t\t&.open {\n\t\t\t\t\t\t\ttransform: rotate(90deg);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t&:disabled {\n\t\t\t\t\t\t\tcursor: default;\n\t\t\t\t\t\t\tcolor: var(--fg-faint);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t> main {\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\tflex-flow: row;\n\t\t\t\t\t\tcursor: help;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\t* {\n\t\t\t\t\t\t\theight: 100%;\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\t\talign-content: center;\n\t\t\t\t\t\t\tjustify-content: center;\n\t\t\t\t\t\t}\n\t\t\t\t\t\th2 {\n\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t.detail {\n\t\t\t\t\t\t\tmargin-left: 5px;\n\t\t\t\t\t\t\tcolor: #777;\n\t\t\t\t\t\t\t@media (prefers-color-scheme: light) {\n\t\t\t\t\t\t\t\tcolor: #999;\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\t> .json_viewer {\n\t\t\t\t\t\tcolor: var(--fg-light);\n\t\t\t\t\t}\n\t\t\t\t\t> .json_editor,\n\t\t\t\t\t> .json_viewer {\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\tborder-left: 1px solid var(--fg-light);\n\t\t\t\t\t\tbackground-color: var(--bg-tint1);\n\t\t\t\t\t\t* {\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\theight: 100%;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t> span {\n\t\t\t\t\t\t\tpadding: 0px 5px;\n\t\t\t\t\t\t\tborder-left: var(--fg-color);\n\t\t\t\t\t\t\tz-index: 0;\n\t\t\t\t\t\t\t&:focus-within {\n\t\t\t\t\t\t\t\toutline: 4px solid var(--fg-color);\n\t\t\t\t\t\t\t\tbackground: var(--bg-accent);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinput {\n\t\t\t\t\t\t\toutline: none;\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\tsection.transaction_log {\n\t\t\t\tmargin-top: 0;\n\t\t\t\tmain {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tflex-flow: row wrap;\n\t\t\t\t\tgap: 5px;\n\t\t\t\t\t.transaction_update {\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\tflex-flow: row;\n\t\t\t\t\t\talign-items: flex-start;\n\t\t\t\t\t\tjustify-content: flex-start;\n\t\t\t\t\t\tjustify-items: flex-start;\n\t\t\t\t\t\talign-content: flex-start;\n\t\t\t\t\t\tborder-left: var(--fg-border);\n\t\t\t\t\t\tborder-top: var(--fg-border);\n\t\t\t\t\t\theader {\n\t\t\t\t\t\t\tpadding: 5px;\n\t\t\t\t\t\t\th4 {\n\t\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\t\t\tfont-size: inherit;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmain {\n\t\t\t\t\t\t\tmargin-left: 0;\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\tflex-flow: column;\n\t\t\t\t\t\t\tgap: 0px;\n\t\t\t\t\t\t\tborder-left: 1px solid #333;\n\t\t\t\t\t\t\tsection ~ section {\n\t\t\t\t\t\t\t\tborder-top: 1px solid #333;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsection {\n\t\t\t\t\t\t\t\tpadding: 5px;\n\t\t\t\t\t\t\t\t&.transaction_output {\n\t\t\t\t\t\t\t\t\tborder-right: none;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t&.transaction_impact {\n\t\t\t\t\t\t\t\t\tpadding: 5px;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t\t\tarticle {\n\t\t\t\t\t\t\t\t\tborder-left: var(--fg-border);\n\t\t\t\t\t\t\t\t\tborder-right: var(--fg-border);\n\t\t\t\t\t\t\t\t\t.summary {\n\t\t\t\t\t\t\t\t\t\twhite-space: nowrap;\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}\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\tsection.timeline_log {\n\t\t\t\theader {\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t> main {\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\t\t.gap {\n\t\t\t\t\t\t\tflex-grow: 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnav {\n\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\tflex-flow: row nowrap;\n\t\t\t\t\t\t\tgap: 5px;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t.timeline_update {\n\t\t\t\t\tpadding: 5px;\n\t\t\t\t\tborder-left: var(--fg-border);\n\t\t\t\t\th4 {\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\tpadding: 0;\n\t\t\t\t\t\tfont-size: inherit;\n\t\t\t\t\t}\n\t\t\t\t\tmain {\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t\t.node.atom_update {\n\t\t\t\t\t\t\tborder-left: var(--fg-border);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t.you_are_here {\n\t\t\t\t\tbackground: var(--fg-color);\n\t\t\t\t\tcolor: var(--bg-color);\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfooter {\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t\tbutton {\n\t\t\tcursor: pointer;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tpadding: none;\n\t\t\tposition: absolute;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t}\n\t}\n\n\t.json_editor {\n\t\tinput {\n\t\t\tfont-family: theia, monospace;\n\t\t\tbackground: none;\n\t\t\t&:disabled {\n\t\t\t\tborder: none;\n\t\t\t}\n\t\t}\n\t\tbutton {\n\t\t\tbackground: none;\n\t\t\tcolor: #777;\n\t\t\tborder: none;\n\t\t\tfont-family: theia, monospace;\n\t\t\tfont-size: 14px;\n\t\t\tmargin: none;\n\t\t\tpadding: 4px;\n\t\t\tpadding-bottom: 6px;\n\t\t\tcursor: pointer;\n\t\t\t&:hover {\n\t\t\t\tcolor: #333;\n\t\t\t\tbackground-color: #aaa;\n\t\t\t}\n\t\t}\n\t\tselect {\n\t\t\tfont-family: theia, monospace;\n\t\t\tfont-size: 14px;\n\t\t\tbackground: none;\n\t\t\tborder: none;\n\t\t\tcolor: #777;\n\t\t\t@media (prefers-color-scheme: light) {\n\t\t\t\tcolor: #999;\n\t\t\t}\n\t\t}\n\t\t.json_editor_unofficial {\n\t\t\tbackground-color: #777;\n\t\t\tbutton {\n\t\t\t\tcolor: #333;\n\t\t\t}\n\t\t}\n\t\t.json_editor_missing {\n\t\t\tbackground-color: #f055;\n\t\t}\n\t\t.json_editor_key {\n\t\t\tpadding-right: 10px;\n\t\t\tinput {\n\t\t\t\tcolor: #999;\n\t\t\t\t@media (prefers-color-scheme: light) {\n\t\t\t\t\tcolor: #777;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t.json_editor_object {\n\t\t\tborder-left: 2px solid #333;\n\t\t\tpadding-left: 20px;\n\t\t\t@media (prefers-color-scheme: light) {\n\t\t\t\tborder-color: #ccc;\n\t\t\t}\n\t\t\t.json_editor_properties {\n\t\t\t\t> * {\n\t\t\t\t\tborder-bottom: var(--fg-border);\n\t\t\t\t\tmargin-bottom: 2px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
|
|
@@ -872,7 +872,8 @@ const StateIndexLeafNode = ({ node, isOpenState, typeState }) => {
|
|
|
872
872
|
const setIsOpen = useI(isOpenState);
|
|
873
873
|
const isOpen = useO(isOpenState);
|
|
874
874
|
const state = useO(node);
|
|
875
|
-
const
|
|
875
|
+
const stateTypeLoadable = useO(typeState);
|
|
876
|
+
const stateType = stateTypeLoadable instanceof Promise ? `Promise` : stateTypeLoadable;
|
|
876
877
|
const isPrimitive = Boolean(primitiveRefinery.refine(state));
|
|
877
878
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs("header", { children: [
|
|
878
879
|
/* @__PURE__ */ jsx(button.OpenClose, {
|
|
@@ -897,7 +898,10 @@ const StateIndexLeafNode = ({ node, isOpenState, typeState }) => {
|
|
|
897
898
|
]
|
|
898
899
|
})]
|
|
899
900
|
}),
|
|
900
|
-
/* @__PURE__ */ jsx(StoreEditor, { token: node })
|
|
901
|
+
isPrimitive ? /* @__PURE__ */ jsx(StoreEditor, { token: node }) : /* @__PURE__ */ jsx("div", {
|
|
902
|
+
className: "json_viewer",
|
|
903
|
+
children: JSON.stringify(state)
|
|
904
|
+
})
|
|
901
905
|
] }), isOpen && !isPrimitive ? /* @__PURE__ */ jsx("main", { children: /* @__PURE__ */ jsx(StoreEditor, { token: node }) }) : null] });
|
|
902
906
|
};
|
|
903
907
|
const StateIndexTreeNode = ({ node, isOpenState }) => {
|
|
@@ -938,10 +942,11 @@ const StateIndexNode = ({ node, isOpenState, typeState }) => {
|
|
|
938
942
|
const StateIndex = ({ tokenIndex }) => {
|
|
939
943
|
const tokenIds = useO(tokenIndex);
|
|
940
944
|
const { typeSelectors, viewIsOpenAtoms, store } = useContext(DevtoolsContext);
|
|
945
|
+
console.log(tokenIds);
|
|
941
946
|
return /* @__PURE__ */ jsx("article", {
|
|
942
947
|
className: "index state_index",
|
|
943
948
|
"data-testid": "state-index",
|
|
944
|
-
children: [...tokenIds.entries()].
|
|
949
|
+
children: [...tokenIds.entries()].map(([key, node]) => {
|
|
945
950
|
return /* @__PURE__ */ jsx(StateIndexNode, {
|
|
946
951
|
node,
|
|
947
952
|
isOpenState: findInStore(store, viewIsOpenAtoms, node.key),
|
|
@@ -1228,7 +1233,8 @@ const AtomIODevtoolsInternal = () => {
|
|
|
1228
1233
|
top: 0,
|
|
1229
1234
|
left: 0,
|
|
1230
1235
|
right: 0,
|
|
1231
|
-
bottom: 0
|
|
1236
|
+
bottom: 0,
|
|
1237
|
+
pointerEvents: `none`
|
|
1232
1238
|
},
|
|
1233
1239
|
children: [/* @__PURE__ */ jsx(motion.span, {
|
|
1234
1240
|
ref: constraintsRef,
|