atom.io 0.36.0 → 0.36.2
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/internal/index.d.ts +93 -73
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +233 -248
- package/dist/internal/index.js.map +1 -1
- package/dist/introspection/index.d.ts +5 -6
- package/dist/introspection/index.d.ts.map +1 -1
- package/dist/introspection/index.js +2 -3
- package/dist/introspection/index.js.map +1 -1
- package/dist/main/index.d.ts +29 -37
- package/dist/main/index.d.ts.map +1 -1
- package/dist/main/index.js +8 -9
- package/dist/main/index.js.map +1 -1
- package/dist/react/index.d.ts +2 -2
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react-devtools/index.d.ts.map +1 -1
- package/dist/react-devtools/index.js.map +1 -1
- package/dist/realtime-client/index.d.ts +7 -8
- package/dist/realtime-client/index.d.ts.map +1 -1
- package/dist/realtime-client/index.js +3 -4
- package/dist/realtime-client/index.js.map +1 -1
- package/dist/realtime-react/index.d.ts +4 -4
- package/dist/realtime-react/index.d.ts.map +1 -1
- package/dist/realtime-react/index.js.map +1 -1
- package/dist/realtime-server/index.d.ts +2 -2
- package/dist/realtime-server/index.d.ts.map +1 -1
- package/dist/realtime-server/index.js.map +1 -1
- package/dist/transceivers/set-rtx/index.d.ts +9 -2
- package/dist/transceivers/set-rtx/index.d.ts.map +1 -1
- package/dist/transceivers/set-rtx/index.js +3 -0
- package/dist/transceivers/set-rtx/index.js.map +1 -1
- package/package.json +3 -3
- package/src/internal/atom/create-regular-atom.ts +5 -5
- package/src/internal/atom/has-role.ts +12 -0
- package/src/internal/atom/index.ts +1 -0
- package/src/internal/caching.ts +60 -41
- package/src/internal/families/find-in-store.ts +1 -1
- package/src/internal/families/get-family-of-token.ts +1 -1
- package/src/internal/families/init-family-member.ts +1 -1
- package/src/internal/families/seek-in-store.ts +1 -1
- package/src/internal/get-state/read-or-compute-value.ts +26 -21
- package/src/internal/index.ts +8 -8
- package/src/internal/join/create-join.ts +3 -2
- package/src/internal/join/join-internal.ts +7 -4
- package/src/internal/mutable/create-mutable-atom-family.ts +6 -5
- package/src/internal/mutable/create-mutable-atom.ts +1 -1
- package/src/internal/mutable/get-json-family.ts +1 -1
- package/src/internal/mutable/get-json-token.ts +1 -1
- package/src/internal/mutable/get-update-family.ts +1 -1
- package/src/internal/mutable/get-update-token.ts +1 -1
- package/src/internal/mutable/tracker-family.ts +27 -31
- package/src/internal/mutable/tracker.ts +29 -23
- package/src/internal/mutable/transceiver.ts +11 -10
- package/src/internal/selector/create-readonly-held-selector.ts +2 -2
- package/src/internal/selector/create-readonly-pure-selector.ts +2 -2
- package/src/internal/selector/create-writable-held-selector.ts +3 -4
- package/src/internal/selector/create-writable-pure-selector.ts +3 -3
- package/src/internal/set-state/evict-downstream.ts +17 -15
- package/src/internal/set-state/index.ts +1 -0
- package/src/internal/set-state/reset-in-store.ts +6 -50
- package/src/internal/set-state/set-atom.ts +17 -24
- package/src/internal/set-state/set-into-store.ts +29 -13
- package/src/internal/store/counterfeit.ts +1 -1
- package/src/internal/store/deposit.ts +7 -8
- package/src/internal/store/store.ts +6 -6
- package/src/internal/store/withdraw.ts +8 -8
- package/src/internal/subscribe/subscribe-in-store.ts +8 -8
- package/src/internal/subscribe/subscribe-to-timeline.ts +2 -2
- package/src/internal/subscribe/subscribe-to-transaction.ts +2 -2
- package/src/internal/timeline/create-timeline.ts +3 -3
- package/src/internal/transaction/act-upon-store.ts +2 -2
- package/src/internal/transaction/apply-transaction.ts +2 -2
- package/src/internal/transaction/build-transaction.ts +2 -2
- package/src/internal/transaction/create-transaction.ts +3 -3
- package/src/internal/transaction/index.ts +2 -2
- package/src/internal/transaction/is-root-store.ts +4 -2
- package/src/internal/utility-types.ts +1 -1
- package/src/introspection/attach-introspection-states.ts +3 -3
- package/src/introspection/attach-transaction-index.ts +4 -4
- package/src/introspection/attach-transaction-logs.ts +4 -4
- package/src/introspection/auditor.ts +3 -3
- package/src/main/atom.ts +4 -4
- package/src/main/dispose-state.ts +4 -3
- package/src/main/find-state.ts +1 -1
- package/src/main/get-state.ts +6 -5
- package/src/main/reset-state.ts +3 -3
- package/src/main/set-state.ts +3 -3
- package/src/main/subscribe.ts +3 -3
- package/src/main/tokens.ts +9 -18
- package/src/main/transaction.ts +13 -15
- package/src/react/use-json.ts +5 -5
- package/src/react-devtools/TransactionIndex.tsx +3 -3
- package/src/react-devtools/Updates.tsx +2 -2
- package/src/realtime-client/continuity/register-and-attempt-confirmed-update.ts +2 -2
- package/src/realtime-client/pull-mutable-atom-family-member.ts +8 -13
- package/src/realtime-client/pull-mutable-atom.ts +5 -8
- package/src/realtime-client/push-state.ts +6 -5
- package/src/realtime-client/server-action.ts +5 -4
- package/src/realtime-react/use-pull-mutable-atom.ts +1 -1
- package/src/realtime-react/use-pull-mutable-family-member.ts +1 -1
- package/src/realtime-react/use-server-action.ts +2 -2
- package/src/realtime-server/realtime-mutable-family-provider.ts +1 -1
- package/src/realtime-server/realtime-mutable-provider.ts +1 -1
- package/src/transceivers/set-rtx/set-rtx.ts +14 -1
- package/src/internal/set-state/copy-mutable-if-needed.ts +0 -29
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Flat, Func, Refinement, Store, Timeline } from "atom.io/internal";
|
|
1
|
+
import { Flat, Fn, Refinement, Store, Timeline } from "atom.io/internal";
|
|
3
2
|
import { Json } from "atom.io/json";
|
|
4
3
|
import { AtomToken, Loadable, ReadableToken, ReadonlyPureSelectorFamilyToken, SelectorToken, TimelineToken, TransactionToken, TransactionUpdate } from "atom.io";
|
|
5
4
|
|
|
@@ -13,8 +12,8 @@ type SelectorTokenIndex = WritableTokenIndex<SelectorToken<unknown>>;
|
|
|
13
12
|
type IntrospectionStates = {
|
|
14
13
|
atomIndex: AtomToken<AtomTokenIndex>;
|
|
15
14
|
selectorIndex: AtomToken<SelectorTokenIndex>;
|
|
16
|
-
transactionIndex: AtomToken<TransactionToken<
|
|
17
|
-
transactionLogSelectors: ReadonlyPureSelectorFamilyToken<TransactionUpdate<
|
|
15
|
+
transactionIndex: AtomToken<TransactionToken<Fn>[]>;
|
|
16
|
+
transactionLogSelectors: ReadonlyPureSelectorFamilyToken<TransactionUpdate<Fn>[], string>;
|
|
18
17
|
timelineIndex: AtomToken<TimelineToken<any>[]>;
|
|
19
18
|
timelineSelectors: ReadonlyPureSelectorFamilyToken<Timeline<any>, string>;
|
|
20
19
|
typeSelectors: ReadonlyPureSelectorFamilyToken<Loadable<string>, string>;
|
|
@@ -31,7 +30,7 @@ type ListResourcesParam = {
|
|
|
31
30
|
* @experimental
|
|
32
31
|
*/
|
|
33
32
|
declare class Auditor {
|
|
34
|
-
readonly store:
|
|
33
|
+
readonly store: Store;
|
|
35
34
|
auditorCreatedAt: number;
|
|
36
35
|
statesCreatedAt: Map<string, number>;
|
|
37
36
|
readonly atomIndex: AtomToken<AtomTokenIndex>;
|
|
@@ -44,7 +43,7 @@ declare class Auditor {
|
|
|
44
43
|
/**
|
|
45
44
|
* @param {Store} store - The store to audit.
|
|
46
45
|
*/
|
|
47
|
-
constructor(store?:
|
|
46
|
+
constructor(store?: Store);
|
|
48
47
|
static readonly DEFAULT_LIST_RESOURCES_PARAM: ListResourcesParam;
|
|
49
48
|
/**
|
|
50
49
|
* Lists all resources in the store, along with their creation time.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["store: Store","store: Store","store: Store","store:
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["store: Store","store: Store","store: Store","store: Store","param: ListResourcesParam","supported: SupportedTypes","input: T","primitiveRefinery: Refinery<{\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","input: unknown","jsonTreeRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n}>","jsonRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","a: number","b: number","a: string","b: string","a: boolean","b: boolean","a: Json.Tree.Object","b: Json.Tree.Object","recurse: Diff<unknown>","a: Json.Tree.Array","b: Json.Tree.Array","a: T","b: T","recurse: Differ<any, any>[`diff`]","leafRefinery: Refinery<Leaf>","treeRefinery: Refinery<Tree>","diffFunctions: {\n\t\t\t[KT in keyof Tree]: DiffTree<Supported<Tree[KT]>>\n\t\t} & { [KL in keyof Leaf]: Diff<Supported<Leaf[KL]>> }","a: unknown","b: unknown","prettyJson: Differ<\n\t{\n\t\tnumber: (input: unknown) => input is number\n\t\tstring: (input: unknown) => input is string\n\t\tboolean: (input: unknown) => input is boolean\n\t\tnull: (input: unknown) => input is null\n\t},\n\t{\n\t\tobject: (input: unknown) => input is Json.Tree.Object\n\t\tarray: (input: unknown) => input is Json.Tree.Array\n\t}\n>","input: unknown","path: string[]","node: unknown","tree: Array<unknown> | object","inspector: InspectNode"],"sources":["../../src/introspection/attach-atom-index.ts","../../src/introspection/attach-selector-index.ts","../../src/introspection/attach-introspection-states.ts","../../src/introspection/auditor.ts","../../src/introspection/refinery.ts","../../src/introspection/differ.ts","../../src/introspection/sprawl.ts","../../src/introspection/index.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Subject, createReadonlyPureSelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, deposit, isReservedIntrospectionKey } from "atom.io/internal";
|
|
1
|
+
import { IMPLICIT, Subject, createReadonlyPureSelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, deposit, isReservedIntrospectionKey } from "atom.io/internal";
|
|
3
2
|
import { getState } from "atom.io";
|
|
4
3
|
|
|
5
4
|
//#region src/introspection/attach-atom-index.ts
|
|
@@ -322,7 +321,7 @@ var Auditor = class Auditor {
|
|
|
322
321
|
/**
|
|
323
322
|
* @param {Store} store - The store to audit.
|
|
324
323
|
*/
|
|
325
|
-
constructor(store =
|
|
324
|
+
constructor(store = IMPLICIT.STORE) {
|
|
326
325
|
this.store = store;
|
|
327
326
|
this.atomIndex = attachAtomIndex(this.store);
|
|
328
327
|
this.selectorIndex = attachSelectorIndex(this.store);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["store: Store","base: AtomTokenIndex","store: Store","base: SelectorTokenIndex","store: Store","store: Store","store: Store","tokens: TransactionToken<Func>[]","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 } from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport {\n\tcreateRegularAtom,\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 = (store: Store): AtomToken<AtomTokenIndex> => {\n\treturn createRegularAtom<AtomTokenIndex>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Atom Token Index`,\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 new Map(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}\n\t\t\t\t\t\t\treturn new Map(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}\n","import type { AtomToken, SelectorToken } from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport {\n\tcreateRegularAtom,\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): AtomToken<SelectorTokenIndex> => {\n\treturn createRegularAtom<SelectorTokenIndex>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Selector Token Index`,\n\t\t\tdefault: () => {\n\t\t\t\tconst base: SelectorTokenIndex = new Map()\n\t\t\t\tfor (const map of [store.readonlySelectors, store.writableSelectors]) {\n\t\t\t\t\tfor (const [key, val] of map) {\n\t\t\t\t\t\tif (isReservedIntrospectionKey(key)) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst token = deposit(val)\n\t\t\t\t\t\tif (val.family) {\n\t\t\t\t\t\t\tlet familyNode = base.get(val.family.key)\n\t\t\t\t\t\t\tif (!familyNode || !(`familyMembers` in familyNode)) {\n\t\t\t\t\t\t\t\tfamilyNode = {\n\t\t\t\t\t\t\t\t\tkey: val.family.key,\n\t\t\t\t\t\t\t\t\tfamilyMembers: new Map(),\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbase.set(val.family.key, familyNode)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfamilyNode.familyMembers.set(val.family.subKey, token)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbase.set(key, token)\n\t\t\t\t\t\t}\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.selectorCreation.subscribe(\n\t\t\t\t\t\t`introspection`,\n\t\t\t\t\t\t(selectorToken) => {\n\t\t\t\t\t\t\tif (isReservedIntrospectionKey(selectorToken.key)) {\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsetSelf((self) => {\n\t\t\t\t\t\t\t\tif (selectorToken.family) {\n\t\t\t\t\t\t\t\t\tconst { key: familyKey, subKey } = selectorToken.family\n\t\t\t\t\t\t\t\t\tlet familyNode = self.get(familyKey)\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tfamilyNode === undefined ||\n\t\t\t\t\t\t\t\t\t\t!(`familyMembers` in familyNode)\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tfamilyNode = {\n\t\t\t\t\t\t\t\t\t\t\tkey: familyKey,\n\t\t\t\t\t\t\t\t\t\t\tfamilyMembers: new Map(),\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tself.set(familyKey, familyNode)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tfamilyNode.familyMembers.set(subKey, selectorToken)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tself.set(selectorToken.key, selectorToken)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn new Map(self)\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\tstore.on.selectorDisposal.subscribe(\n\t\t\t\t\t\t`introspection`,\n\t\t\t\t\t\t(selectorToken) => {\n\t\t\t\t\t\t\tsetSelf((self) => {\n\t\t\t\t\t\t\t\tif (selectorToken.family) {\n\t\t\t\t\t\t\t\t\tconst { key: familyKey, subKey } = selectorToken.family\n\t\t\t\t\t\t\t\t\tconst familyNode = self.get(familyKey)\n\t\t\t\t\t\t\t\t\tif (familyNode && `familyMembers` in familyNode) {\n\t\t\t\t\t\t\t\t\t\tfamilyNode.familyMembers.delete(subKey)\n\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\tself.delete(familyKey)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tself.delete(selectorToken.key)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn new Map(self)\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},\n\t\tundefined,\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 { AtomToken, TimelineToken } from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { createRegularAtom } from \"atom.io/internal\"\n\nexport const attachTimelineIndex = (\n\tstore: Store,\n): AtomToken<TimelineToken<any>[]> => {\n\treturn createRegularAtom<TimelineToken<any>[]>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Timeline Token Index`,\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}\n","import type { AtomToken, TransactionToken } from \"atom.io\"\nimport type { Func, Store } from \"atom.io/internal\"\nimport { createRegularAtom, isReservedIntrospectionKey } from \"atom.io/internal\"\n\nexport const attachTransactionIndex = (\n\tstore: Store,\n): AtomToken<TransactionToken<Func>[]> => {\n\treturn createRegularAtom<TransactionToken<Func>[]>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Transaction Token Index`,\n\t\t\tdefault: () => {\n\t\t\t\tconst tokens: TransactionToken<Func>[] = []\n\t\t\t\tfor (const [key] of store.transactions) {\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\ttokens.push({ key, type: `transaction` })\n\t\t\t\t}\n\t\t\t\treturn tokens\n\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\tif (isReservedIntrospectionKey(transactionToken.key)) {\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\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}\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\tAtomToken,\n\tLoadable,\n\tReadonlyPureSelectorFamilyToken,\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: AtomToken<AtomTokenIndex>\n\tselectorIndex: AtomToken<SelectorTokenIndex>\n\ttransactionIndex: AtomToken<TransactionToken<Func>[]>\n\ttransactionLogSelectors: ReadonlyPureSelectorFamilyToken<\n\t\tTransactionUpdate<Func>[],\n\t\tstring\n\t>\n\ttimelineIndex: AtomToken<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 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: AtomToken<AtomTokenIndex>\n\tpublic readonly selectorIndex: AtomToken<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","tokens: TransactionToken<Fn>[]","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: 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 } from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport {\n\tcreateRegularAtom,\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 = (store: Store): AtomToken<AtomTokenIndex> => {\n\treturn createRegularAtom<AtomTokenIndex>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Atom Token Index`,\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 new Map(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}\n\t\t\t\t\t\t\treturn new Map(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}\n","import type { AtomToken, SelectorToken } from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport {\n\tcreateRegularAtom,\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): AtomToken<SelectorTokenIndex> => {\n\treturn createRegularAtom<SelectorTokenIndex>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Selector Token Index`,\n\t\t\tdefault: () => {\n\t\t\t\tconst base: SelectorTokenIndex = new Map()\n\t\t\t\tfor (const map of [store.readonlySelectors, store.writableSelectors]) {\n\t\t\t\t\tfor (const [key, val] of map) {\n\t\t\t\t\t\tif (isReservedIntrospectionKey(key)) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst token = deposit(val)\n\t\t\t\t\t\tif (val.family) {\n\t\t\t\t\t\t\tlet familyNode = base.get(val.family.key)\n\t\t\t\t\t\t\tif (!familyNode || !(`familyMembers` in familyNode)) {\n\t\t\t\t\t\t\t\tfamilyNode = {\n\t\t\t\t\t\t\t\t\tkey: val.family.key,\n\t\t\t\t\t\t\t\t\tfamilyMembers: new Map(),\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbase.set(val.family.key, familyNode)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfamilyNode.familyMembers.set(val.family.subKey, token)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbase.set(key, token)\n\t\t\t\t\t\t}\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.selectorCreation.subscribe(\n\t\t\t\t\t\t`introspection`,\n\t\t\t\t\t\t(selectorToken) => {\n\t\t\t\t\t\t\tif (isReservedIntrospectionKey(selectorToken.key)) {\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsetSelf((self) => {\n\t\t\t\t\t\t\t\tif (selectorToken.family) {\n\t\t\t\t\t\t\t\t\tconst { key: familyKey, subKey } = selectorToken.family\n\t\t\t\t\t\t\t\t\tlet familyNode = self.get(familyKey)\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tfamilyNode === undefined ||\n\t\t\t\t\t\t\t\t\t\t!(`familyMembers` in familyNode)\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tfamilyNode = {\n\t\t\t\t\t\t\t\t\t\t\tkey: familyKey,\n\t\t\t\t\t\t\t\t\t\t\tfamilyMembers: new Map(),\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tself.set(familyKey, familyNode)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tfamilyNode.familyMembers.set(subKey, selectorToken)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tself.set(selectorToken.key, selectorToken)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn new Map(self)\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\tstore.on.selectorDisposal.subscribe(\n\t\t\t\t\t\t`introspection`,\n\t\t\t\t\t\t(selectorToken) => {\n\t\t\t\t\t\t\tsetSelf((self) => {\n\t\t\t\t\t\t\t\tif (selectorToken.family) {\n\t\t\t\t\t\t\t\t\tconst { key: familyKey, subKey } = selectorToken.family\n\t\t\t\t\t\t\t\t\tconst familyNode = self.get(familyKey)\n\t\t\t\t\t\t\t\t\tif (familyNode && `familyMembers` in familyNode) {\n\t\t\t\t\t\t\t\t\t\tfamilyNode.familyMembers.delete(subKey)\n\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\tself.delete(familyKey)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tself.delete(selectorToken.key)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn new Map(self)\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},\n\t\tundefined,\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 { AtomToken, TimelineToken } from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { createRegularAtom } from \"atom.io/internal\"\n\nexport const attachTimelineIndex = (\n\tstore: Store,\n): AtomToken<TimelineToken<any>[]> => {\n\treturn createRegularAtom<TimelineToken<any>[]>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Timeline Token Index`,\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}\n","import type { AtomToken, TransactionToken } from \"atom.io\"\nimport type { Fn, Store } from \"atom.io/internal\"\nimport { createRegularAtom, isReservedIntrospectionKey } from \"atom.io/internal\"\n\nexport const attachTransactionIndex = (\n\tstore: Store,\n): AtomToken<TransactionToken<Fn>[]> => {\n\treturn createRegularAtom<TransactionToken<Fn>[]>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `🔍 Transaction Token Index`,\n\t\t\tdefault: () => {\n\t\t\t\tconst tokens: TransactionToken<Fn>[] = []\n\t\t\t\tfor (const [key] of store.transactions) {\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\ttokens.push({ key, type: `transaction` })\n\t\t\t\t}\n\t\t\t\treturn tokens\n\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\tif (isReservedIntrospectionKey(transactionToken.key)) {\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\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}\n","import type { ReadonlyPureSelectorFamilyToken, TransactionUpdate } from \"atom.io\"\nimport type { Fn, Store } from \"atom.io/internal\"\nimport { createRegularAtomFamily, createSelectorFamily } from \"atom.io/internal\"\n\nexport const attachTransactionLogs = (\n\tstore: Store,\n): ReadonlyPureSelectorFamilyToken<TransactionUpdate<Fn>[], string> => {\n\tconst transactionUpdateLogAtoms = createRegularAtomFamily<\n\t\tTransactionUpdate<Fn>[],\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<Fn>[],\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\tAtomToken,\n\tLoadable,\n\tReadonlyPureSelectorFamilyToken,\n\tTimelineToken,\n\tTransactionToken,\n\tTransactionUpdate,\n} from \"atom.io\"\nimport type { Fn, 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: AtomToken<AtomTokenIndex>\n\tselectorIndex: AtomToken<SelectorTokenIndex>\n\ttransactionIndex: AtomToken<TransactionToken<Fn>[]>\n\ttransactionLogSelectors: ReadonlyPureSelectorFamilyToken<\n\t\tTransactionUpdate<Fn>[],\n\t\tstring\n\t>\n\ttimelineIndex: AtomToken<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 SelectorToken,\n} from \"atom.io\"\nimport { IMPLICIT, type Store } 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: Store\n\tpublic auditorCreatedAt: number = performance.now()\n\tpublic statesCreatedAt: Map<string, number> = new Map()\n\tpublic readonly atomIndex: AtomToken<AtomTokenIndex>\n\tpublic readonly selectorIndex: AtomToken<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: Store = 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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"}
|
package/dist/main/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AsJSON, ConstructorOf, Each, EnvironmentData, Flat,
|
|
1
|
+
import { AsJSON, ConstructorOf, Each, EnvironmentData, Flat, Fn, Junction, JunctionEntriesBase, JunctionSchemaBase, Refinement, Store, Timeline, TimelineAtomUpdate, TimelineMoleculeCreation, TimelineMoleculeDisposal, TimelineSelectorUpdate, TimelineStateCreation, TimelineStateDisposal, TimelineTransactionUpdate, Transceiver, ViewOf } from "atom.io/internal";
|
|
2
2
|
import { Canonical, Json, stringified } from "atom.io/json";
|
|
3
3
|
import { MutableAtomFamilyToken as MutableAtomFamilyToken$1, MutableAtomToken as MutableAtomToken$1, ReadableFamilyToken as ReadableFamilyToken$1, ReadableToken as ReadableToken$1, ReadonlyPureSelectorToken as ReadonlyPureSelectorToken$1, ReadonlySelectorFamilyToken as ReadonlySelectorFamilyToken$1, ReadonlySelectorToken as ReadonlySelectorToken$1, RegularAtomToken as RegularAtomToken$1, WritableFamilyToken as WritableFamilyToken$1, WritableSelectorFamilyToken as WritableSelectorFamilyToken$1, WritableSelectorToken as WritableSelectorToken$1, WritableToken as WritableToken$1, findState as findState$1 } from "atom.io";
|
|
4
4
|
import { SetRTX } from "atom.io/transceivers/set-rtx";
|
|
@@ -17,20 +17,14 @@ import { SetRTX } from "atom.io/transceivers/set-rtx";
|
|
|
17
17
|
* Tokens are fully serializable, so they can be passed between processes.
|
|
18
18
|
*/
|
|
19
19
|
type AtomIOToken = ReadableFamilyToken<any, any> | ReadableToken<any> | TimelineToken<any> | TransactionToken<any>;
|
|
20
|
-
/**
|
|
21
|
-
* These states cannot be set.
|
|
22
|
-
*/
|
|
23
20
|
type ReadableToken<T, K extends Canonical = any> = AtomToken<T, K> | SelectorToken<T, K>;
|
|
24
|
-
/**
|
|
25
|
-
* These states can be set.
|
|
26
|
-
*/
|
|
27
21
|
type WritableToken<T, K extends Canonical = any> = AtomToken<T, K> | WritableSelectorToken<T, K>;
|
|
28
22
|
/**
|
|
29
|
-
* States belonging to this family can be
|
|
23
|
+
* States belonging to this family can be read from the store.
|
|
30
24
|
*/
|
|
31
25
|
type ReadableFamilyToken<T, K extends Canonical> = AtomFamilyToken<T, K> | SelectorFamilyToken<T, K>;
|
|
32
26
|
/**
|
|
33
|
-
* States belonging to this family can be
|
|
27
|
+
* States belonging to this family can be written directly.
|
|
34
28
|
*/
|
|
35
29
|
type WritableFamilyToken<T, K extends Canonical> = AtomFamilyToken<T, K> | WritableSelectorFamilyToken<T, K>;
|
|
36
30
|
type TimelineToken<M> = {
|
|
@@ -41,7 +35,7 @@ type TimelineToken<M> = {
|
|
|
41
35
|
/** Never present. This is a marker that preserves the type of the managed atoms */
|
|
42
36
|
__M?: M;
|
|
43
37
|
};
|
|
44
|
-
type TransactionToken<F extends
|
|
38
|
+
type TransactionToken<F extends Fn> = {
|
|
45
39
|
/** The unique identifier of the transaction */
|
|
46
40
|
key: string;
|
|
47
41
|
/** Discriminator */
|
|
@@ -49,7 +43,7 @@ type TransactionToken<F extends Func> = {
|
|
|
49
43
|
/** Never present. This is a marker that preserves the type of the transaction function */
|
|
50
44
|
__F?: F;
|
|
51
45
|
};
|
|
52
|
-
type AtomToken<T, K extends Canonical = any> = MutableAtomToken<T extends Transceiver<any, any> ? T : never, K> | RegularAtomToken<T, K>;
|
|
46
|
+
type AtomToken<T, K extends Canonical = any> = MutableAtomToken<T extends Transceiver<any, any, any> ? T : never, K> | RegularAtomToken<T, K>;
|
|
53
47
|
type RegularAtomToken<T, K extends Canonical = any> = {
|
|
54
48
|
/** The unique identifier of the atom. */
|
|
55
49
|
key: string;
|
|
@@ -60,7 +54,7 @@ type RegularAtomToken<T, K extends Canonical = any> = {
|
|
|
60
54
|
/** Never present. This is a marker that preserves the type of the atom's value. */
|
|
61
55
|
__T?: T;
|
|
62
56
|
};
|
|
63
|
-
type MutableAtomToken<T extends Transceiver<any, any>, K extends Canonical = any> = {
|
|
57
|
+
type MutableAtomToken<T extends Transceiver<any, any, any>, K extends Canonical = any> = {
|
|
64
58
|
/** The unique identifier of the atom. */
|
|
65
59
|
key: string;
|
|
66
60
|
/** Discriminator. */
|
|
@@ -69,8 +63,6 @@ type MutableAtomToken<T extends Transceiver<any, any>, K extends Canonical = any
|
|
|
69
63
|
family?: FamilyMetadata<K>;
|
|
70
64
|
/** Never present. This is a marker that preserves the JSON form of the atom's transceiver value. */
|
|
71
65
|
__J?: AsJSON<T>;
|
|
72
|
-
/** Never present. This is a marker that preserves the type of the atom's transceiver value. */
|
|
73
|
-
__U?: T extends Transceiver<infer Update, any> ? Update : never;
|
|
74
66
|
};
|
|
75
67
|
type SelectorToken<T, K extends Canonical = any> = ReadonlySelectorToken<T, K> | WritableSelectorToken<T, K>;
|
|
76
68
|
type ReadonlySelectorToken<T, K extends Canonical = any> = ReadonlyHeldSelectorToken<T, K> | ReadonlyPureSelectorToken<T, K>;
|
|
@@ -126,7 +118,7 @@ type FamilyMetadata<K extends Canonical = any> = {
|
|
|
126
118
|
/** The family member's unique identifier, in the form of a string. */
|
|
127
119
|
subKey: stringified<K>;
|
|
128
120
|
};
|
|
129
|
-
type AtomFamilyToken<T, K extends Canonical = Canonical> = MutableAtomFamilyToken<T extends Transceiver<any, any> ? T : never, K> | RegularAtomFamilyToken<T, K>;
|
|
121
|
+
type AtomFamilyToken<T, K extends Canonical = Canonical> = MutableAtomFamilyToken<T extends Transceiver<any, any, any> ? T : never, K> | RegularAtomFamilyToken<T, K>;
|
|
130
122
|
type RegularAtomFamilyToken<T, K extends Canonical> = {
|
|
131
123
|
/** The unique identifier of the atom family */
|
|
132
124
|
key: string;
|
|
@@ -137,15 +129,13 @@ type RegularAtomFamilyToken<T, K extends Canonical> = {
|
|
|
137
129
|
/** Never present. This is a marker that preserves the type of keys used for atoms in this family */
|
|
138
130
|
__K?: K;
|
|
139
131
|
};
|
|
140
|
-
type MutableAtomFamilyToken<T extends Transceiver<any, any>, K extends Canonical> = {
|
|
132
|
+
type MutableAtomFamilyToken<T extends Transceiver<any, any, any>, K extends Canonical> = {
|
|
141
133
|
/** The unique identifier of the atom family */
|
|
142
134
|
key: string;
|
|
143
135
|
/** Discriminator */
|
|
144
136
|
type: `mutable_atom_family`;
|
|
145
137
|
/** Never present. This is a marker that preserves the type of atoms in this family */
|
|
146
138
|
__T?: T;
|
|
147
|
-
/** Never present. This is a marker that preserves the type of the JSON form of atoms in this family */
|
|
148
|
-
__J?: AsJSON<T>;
|
|
149
139
|
/** Never present. This is a marker that preserves the type of keys used for atoms in this family */
|
|
150
140
|
__K?: K;
|
|
151
141
|
};
|
|
@@ -236,7 +226,7 @@ type RegularAtomOptions<T> = {
|
|
|
236
226
|
* A reference to the atom created: a {@link RegularAtomToken}
|
|
237
227
|
*/
|
|
238
228
|
declare function atom<T>(options: RegularAtomOptions<T>): RegularAtomToken<T>;
|
|
239
|
-
type MutableAtomOptions<T extends Transceiver<any, any>> = {
|
|
229
|
+
type MutableAtomOptions<T extends Transceiver<any, any, any>> = {
|
|
240
230
|
/** The unique identifier of the atom */
|
|
241
231
|
key: string;
|
|
242
232
|
/** A constructor for the atom's value */
|
|
@@ -253,7 +243,7 @@ type MutableAtomOptions<T extends Transceiver<any, any>> = {
|
|
|
253
243
|
* @returns
|
|
254
244
|
* A reference to the atom created: a {@link MutableAtomToken}
|
|
255
245
|
*/
|
|
256
|
-
declare function mutableAtom<T extends Transceiver<any, any>>(options: MutableAtomOptions<T>): MutableAtomToken<T>;
|
|
246
|
+
declare function mutableAtom<T extends Transceiver<any, any, any>>(options: MutableAtomOptions<T>): MutableAtomToken<T>;
|
|
257
247
|
/**
|
|
258
248
|
* A function that runs side effects when the atom is set
|
|
259
249
|
* @param tools - {@link Effectors} that can be used to run side effects
|
|
@@ -292,7 +282,7 @@ type RegularAtomFamilyOptions<T, K extends Canonical> = {
|
|
|
292
282
|
* A reference to the atom family created: a {@link RegularAtomFamilyToken}
|
|
293
283
|
*/
|
|
294
284
|
declare function atomFamily<T, K extends Canonical>(options: RegularAtomFamilyOptions<T, K>): RegularAtomFamilyToken<T, K>;
|
|
295
|
-
type MutableAtomFamilyOptions<T extends Transceiver<any, any>, K extends Canonical> = {
|
|
285
|
+
type MutableAtomFamilyOptions<T extends Transceiver<any, any, any>, K extends Canonical> = {
|
|
296
286
|
/** The unique identifier of the atom family */
|
|
297
287
|
key: string;
|
|
298
288
|
/** The class of the transceiver to be created */
|
|
@@ -309,7 +299,7 @@ type MutableAtomFamilyOptions<T extends Transceiver<any, any>, K extends Canonic
|
|
|
309
299
|
* @returns
|
|
310
300
|
* A reference to the atom family created: a {@link MutableAtomFamilyToken}
|
|
311
301
|
*/
|
|
312
|
-
declare function mutableAtomFamily<T extends Transceiver<any, any>, K extends Canonical>(options: MutableAtomFamilyOptions<T, K>): MutableAtomFamilyToken<T, K>;
|
|
302
|
+
declare function mutableAtomFamily<T extends Transceiver<any, any, any>, K extends Canonical>(options: MutableAtomFamilyOptions<T, K>): MutableAtomFamilyToken<T, K>;
|
|
313
303
|
//#endregion
|
|
314
304
|
//#region src/main/dispose-state.d.ts
|
|
315
305
|
/**
|
|
@@ -328,6 +318,7 @@ declare function disposeState(token: ReadableToken<any>): void;
|
|
|
328
318
|
*
|
|
329
319
|
* @param token - The token of the state family to dispose
|
|
330
320
|
* @param key - The unique key of the state to dispose
|
|
321
|
+
* @overload Streamlined
|
|
331
322
|
*/
|
|
332
323
|
declare function disposeState<K extends Canonical>(token: ReadableFamilyToken<any, K>, key: K): void;
|
|
333
324
|
//#endregion
|
|
@@ -345,7 +336,7 @@ declare function disposeState<K extends Canonical>(token: ReadableFamilyToken<an
|
|
|
345
336
|
* The current value of the state
|
|
346
337
|
* @overload Mutable Atom
|
|
347
338
|
*/
|
|
348
|
-
declare function findState<T extends Transceiver<any, any>, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, K>, key: Key): MutableAtomToken$1<T, K>;
|
|
339
|
+
declare function findState<T extends Transceiver<any, any, any>, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, K>, key: Key): MutableAtomToken$1<T, K>;
|
|
349
340
|
/**
|
|
350
341
|
* Finds a {@link RegularAtomToken} in the store, without accessing its value.
|
|
351
342
|
*
|
|
@@ -426,7 +417,7 @@ declare function findState<T, K extends Canonical, Key extends K>(token: Readabl
|
|
|
426
417
|
* @overload Default
|
|
427
418
|
* @default
|
|
428
419
|
*/
|
|
429
|
-
declare function getState<T>(token: ReadableToken<T>): T
|
|
420
|
+
declare function getState<T>(token: ReadableToken<T>): ViewOf<T>;
|
|
430
421
|
/**
|
|
431
422
|
* Read or compute the current value of a state
|
|
432
423
|
* @param token - The token of a state family
|
|
@@ -434,7 +425,7 @@ declare function getState<T>(token: ReadableToken<T>): T;
|
|
|
434
425
|
* @return The current value of the state
|
|
435
426
|
* @overload Streamlined
|
|
436
427
|
*/
|
|
437
|
-
declare function getState<T, K extends Canonical, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key): T
|
|
428
|
+
declare function getState<T, K extends Canonical, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key): ViewOf<T>;
|
|
438
429
|
//#endregion
|
|
439
430
|
//#region src/main/join.d.ts
|
|
440
431
|
type JoinOptions<ASide extends string, AType extends string, BSide extends string, BType extends string, Cardinality extends `1:1` | `1:n` | `n:n`, Content extends Json.Object | null> = Flat<JunctionSchemaBase<ASide, BSide> & {
|
|
@@ -714,7 +705,7 @@ type KeyedStateUpdate<T> = Flat<StateUpdate<T> & {
|
|
|
714
705
|
family?: FamilyMetadata;
|
|
715
706
|
}>;
|
|
716
707
|
type UpdateHandler<T> = (update: StateUpdate<T>) => void;
|
|
717
|
-
type TransactionUpdateHandler<F extends
|
|
708
|
+
type TransactionUpdateHandler<F extends Fn> = (data: TransactionUpdate<F>) => void;
|
|
718
709
|
/**
|
|
719
710
|
* Subscribe to a state in the implicit store
|
|
720
711
|
* @param token - The token of the state to subscribe to
|
|
@@ -732,7 +723,7 @@ declare function subscribe<T>(token: ReadableToken<T>, handleUpdate: UpdateHandl
|
|
|
732
723
|
* @returns A function that can be called to unsubscribe from the transaction
|
|
733
724
|
* @overload Transaction
|
|
734
725
|
*/
|
|
735
|
-
declare function subscribe<F extends
|
|
726
|
+
declare function subscribe<F extends Fn>(token: TransactionToken<F>, handleUpdate: TransactionUpdateHandler<F>, key?: string): () => void;
|
|
736
727
|
/**
|
|
737
728
|
* Subscribe to a timeline in the implicit store
|
|
738
729
|
* @param token - The token of the timeline to subscribe to
|
|
@@ -764,6 +755,7 @@ type StateCreation<Token extends ReadableToken<any>> = {
|
|
|
764
755
|
token: Token;
|
|
765
756
|
};
|
|
766
757
|
type StateDisposal<Token extends ReadableToken<any>> = AtomDisposal<Token> | SelectorDisposal<Token>;
|
|
758
|
+
type StateLifecycleEvent<Token extends ReadableToken<any>> = StateCreation<Token> | StateDisposal<Token>;
|
|
767
759
|
type AtomDisposal<Token extends ReadableToken<any>> = {
|
|
768
760
|
type: `state_disposal`;
|
|
769
761
|
subType: `atom`;
|
|
@@ -793,8 +785,8 @@ type MoleculeTransfer = {
|
|
|
793
785
|
from: Canonical[];
|
|
794
786
|
to: Canonical[];
|
|
795
787
|
};
|
|
796
|
-
type TransactionUpdateContent = KeyedStateUpdate<unknown> | MoleculeCreation | MoleculeDisposal | MoleculeTransfer | StateCreation<ReadableToken<unknown>> | StateDisposal<ReadableToken<unknown>> | TransactionUpdate<
|
|
797
|
-
type TransactionUpdate<F extends
|
|
788
|
+
type TransactionUpdateContent = KeyedStateUpdate<unknown> | MoleculeCreation | MoleculeDisposal | MoleculeTransfer | StateCreation<ReadableToken<unknown>> | StateDisposal<ReadableToken<unknown>> | TransactionUpdate<Fn>;
|
|
789
|
+
type TransactionUpdate<F extends Fn> = {
|
|
798
790
|
type: `transaction_update`;
|
|
799
791
|
key: string;
|
|
800
792
|
id: string;
|
|
@@ -810,16 +802,16 @@ type ActorToolkit = Readonly<{
|
|
|
810
802
|
set: typeof setState;
|
|
811
803
|
reset: typeof resetState;
|
|
812
804
|
find: typeof findState;
|
|
813
|
-
json: <T extends Transceiver<any, any>>(state: MutableAtomToken<T>) => WritablePureSelectorToken<AsJSON<T>>;
|
|
805
|
+
json: <T extends Transceiver<any, any, any>>(state: MutableAtomToken<T>) => WritablePureSelectorToken<AsJSON<T>>;
|
|
814
806
|
dispose: typeof disposeState;
|
|
815
807
|
run: typeof runTransaction;
|
|
816
808
|
env: () => EnvironmentData;
|
|
817
809
|
}>;
|
|
818
|
-
type Read<F extends
|
|
819
|
-
type Write<F extends
|
|
820
|
-
type Transact<F extends
|
|
810
|
+
type Read<F extends Fn> = (toolkit: ReaderToolkit, ...parameters: Parameters<F>) => ReturnType<F>;
|
|
811
|
+
type Write<F extends Fn> = (toolkit: WriterToolkit, ...parameters: Parameters<F>) => ReturnType<F>;
|
|
812
|
+
type Transact<F extends Fn> = (toolkit: ActorToolkit, ...parameters: Parameters<F>) => ReturnType<F>;
|
|
821
813
|
type TransactionIO<Token extends TransactionToken<any>> = Token extends TransactionToken<infer F> ? F : never;
|
|
822
|
-
type TransactionOptions<F extends
|
|
814
|
+
type TransactionOptions<F extends Fn> = {
|
|
823
815
|
/** The unique identifier of the transaction */
|
|
824
816
|
key: string;
|
|
825
817
|
/** The operation to perform */
|
|
@@ -830,14 +822,14 @@ type TransactionOptions<F extends Func> = {
|
|
|
830
822
|
* @param options - {@link TransactionOptions}
|
|
831
823
|
* @returns A reference to the transaction created: a {@link TransactionToken}
|
|
832
824
|
*/
|
|
833
|
-
declare function transaction<F extends
|
|
825
|
+
declare function transaction<F extends Fn>(options: TransactionOptions<F>): TransactionToken<F>;
|
|
834
826
|
/**
|
|
835
827
|
* Execute a {@link transaction}
|
|
836
828
|
* @param token - A {@link TransactionToken}
|
|
837
829
|
* @param id - A unique identifier for the transaction. If not provided, a random identifier will be generated
|
|
838
830
|
* @returns A function that can be called to run the transaction with its {@link TransactionIO} parameters
|
|
839
831
|
*/
|
|
840
|
-
declare function runTransaction<F extends
|
|
832
|
+
declare function runTransaction<F extends Fn>(token: TransactionToken<F>, id?: string): (...parameters: Parameters<F>) => ReturnType<F>;
|
|
841
833
|
//#endregion
|
|
842
834
|
//#region src/main/selector.d.ts
|
|
843
835
|
type WritablePureSelectorOptions<T> = {
|
|
@@ -1104,5 +1096,5 @@ declare const timeline: <ManagedAtom extends TimelineManageable>(options: Timeli
|
|
|
1104
1096
|
*/
|
|
1105
1097
|
type Loadable<T> = Promise<T> | T;
|
|
1106
1098
|
//#endregion
|
|
1107
|
-
export { $claim, Above, ActorToolkit, Anarchy, AtomDisposal, AtomEffect, AtomFamilyToken, AtomIOLogger, AtomIOToken, AtomOnly, AtomToken, Below, Claim, CompoundFrom, CompoundTypedKey, Effectors, FamilyMetadata, HeldSelectorFamilyToken, HeldSelectorToken, Hierarchy, JoinOptions, JoinStates, JoinToken, KeyedStateUpdate, LOG_LEVELS, Loadable, LogFilter, LogFn, LogLevel, Logger, LoggerIcon, MoleculeCreation, MoleculeDisposal, MoleculeTransfer, MutableAtomFamilyOptions, MutableAtomFamilyToken, MutableAtomOptions, MutableAtomToken, Mutuals, PureSelectorFamilyToken, PureSelectorToken, Read, ReadableFamilyToken, ReadableToken, ReaderToolkit, ReadonlyHeldSelectorFamilyOptions, ReadonlyHeldSelectorFamilyToken, ReadonlyHeldSelectorOptions, ReadonlyHeldSelectorToken, ReadonlyPureSelectorFamilyOptions, ReadonlyPureSelectorFamilyToken, ReadonlyPureSelectorOptions, ReadonlyPureSelectorToken, ReadonlySelectorFamilyToken, ReadonlySelectorToken, Realm, RegularAtomFamilyOptions, RegularAtomFamilyToken, RegularAtomOptions, RegularAtomToken, SelectorDisposal, SelectorFamilyToken, SelectorToken, Setter, Silo, SingularTypedKey, StateCreation, StateDisposal, StateUpdate, T$, TimelineManageable, TimelineOptions, TimelineToken, TimelineUpdate, TokenDenomination, TokenType, Transact, TransactionIO, TransactionOptions, TransactionToken, TransactionUpdate, TransactionUpdateContent, TransactionUpdateHandler, TypeTag, TypedKey, UpdateHandler, Vassal, WritableFamilyToken, WritableHeldSelectorFamilyOptions, WritableHeldSelectorFamilyToken, WritableHeldSelectorOptions, WritableHeldSelectorToken, WritablePureSelectorFamilyOptions, WritablePureSelectorFamilyToken, WritablePureSelectorOptions, WritablePureSelectorToken, WritableSelectorFamilyToken, WritableSelectorToken, WritableToken, Write, WriterToolkit, atom, atomFamily, belongsTo, disposeState, editRelations, findRelations, findState, getInternalRelations, getState, isToken, join, mutableAtom, mutableAtomFamily, redo, resetState, runTransaction, selector, selectorFamily, setState, simpleLog, simpleLogger, subscribe, timeline, transaction, undo };
|
|
1099
|
+
export { $claim, Above, ActorToolkit, Anarchy, AtomDisposal, AtomEffect, AtomFamilyToken, AtomIOLogger, AtomIOToken, AtomOnly, AtomToken, Below, Claim, CompoundFrom, CompoundTypedKey, Effectors, FamilyMetadata, HeldSelectorFamilyToken, HeldSelectorToken, Hierarchy, JoinOptions, JoinStates, JoinToken, KeyedStateUpdate, LOG_LEVELS, Loadable, LogFilter, LogFn, LogLevel, Logger, LoggerIcon, MoleculeCreation, MoleculeDisposal, MoleculeTransfer, MutableAtomFamilyOptions, MutableAtomFamilyToken, MutableAtomOptions, MutableAtomToken, Mutuals, PureSelectorFamilyToken, PureSelectorToken, Read, ReadableFamilyToken, ReadableToken, ReaderToolkit, ReadonlyHeldSelectorFamilyOptions, ReadonlyHeldSelectorFamilyToken, ReadonlyHeldSelectorOptions, ReadonlyHeldSelectorToken, ReadonlyPureSelectorFamilyOptions, ReadonlyPureSelectorFamilyToken, ReadonlyPureSelectorOptions, ReadonlyPureSelectorToken, ReadonlySelectorFamilyToken, ReadonlySelectorToken, Realm, RegularAtomFamilyOptions, RegularAtomFamilyToken, RegularAtomOptions, RegularAtomToken, SelectorDisposal, SelectorFamilyToken, SelectorToken, Setter, Silo, SingularTypedKey, StateCreation, StateDisposal, StateLifecycleEvent, StateUpdate, T$, TimelineManageable, TimelineOptions, TimelineToken, TimelineUpdate, TokenDenomination, TokenType, Transact, TransactionIO, TransactionOptions, TransactionToken, TransactionUpdate, TransactionUpdateContent, TransactionUpdateHandler, TypeTag, TypedKey, UpdateHandler, Vassal, WritableFamilyToken, WritableHeldSelectorFamilyOptions, WritableHeldSelectorFamilyToken, WritableHeldSelectorOptions, WritableHeldSelectorToken, WritablePureSelectorFamilyOptions, WritablePureSelectorFamilyToken, WritablePureSelectorOptions, WritablePureSelectorToken, WritableSelectorFamilyToken, WritableSelectorToken, WritableToken, Write, WriterToolkit, atom, atomFamily, belongsTo, disposeState, editRelations, findRelations, findState, getInternalRelations, getState, isToken, join, mutableAtom, mutableAtomFamily, redo, resetState, runTransaction, selector, selectorFamily, setState, simpleLog, simpleLogger, subscribe, timeline, transaction, undo };
|
|
1108
1100
|
//# sourceMappingURL=index.d.ts.map
|