atom.io 0.33.8 → 0.33.9
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/data/index.js.map +1 -1
- package/dist/eslint-plugin/index.d.ts.map +1 -1
- package/dist/eslint-plugin/index.js.map +1 -1
- package/dist/internal/index.d.ts +0 -7
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js.map +1 -1
- package/dist/introspection/index.d.ts +0 -1
- package/dist/introspection/index.d.ts.map +1 -1
- package/dist/introspection/index.js.map +1 -1
- package/dist/json/index.js.map +1 -1
- package/dist/main/index.d.ts +0 -2
- package/dist/main/index.d.ts.map +1 -1
- package/dist/main/index.js.map +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react-devtools/index.js.map +1 -1
- package/dist/realtime/index.d.ts +0 -1
- package/dist/realtime/index.d.ts.map +1 -1
- package/dist/realtime/index.js.map +1 -1
- package/dist/realtime-client/index.d.ts +0 -3
- package/dist/realtime-client/index.d.ts.map +1 -1
- package/dist/realtime-client/index.js.map +1 -1
- package/dist/realtime-react/index.js.map +1 -1
- package/dist/realtime-server/index.d.ts +0 -25
- package/dist/realtime-server/index.d.ts.map +1 -1
- package/dist/realtime-server/index.js.map +1 -1
- package/dist/realtime-testing/index.js.map +1 -1
- package/dist/transceivers/set-rtx/index.js.map +1 -1
- package/package.json +16 -30
package/dist/main/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["options: MutableAtomOptions<any, any> | RegularAtomOptions<any>","options:\n\t\t| MutableAtomFamilyOptions<any, any, any>\n\t\t| RegularAtomFamilyOptions<T, K>","token: ReadableFamilyToken<any, any>","key: Json.Serializable","options: JoinOptions<ASide, AType, BSide, BType, Cardinality, Content>","defaultContent: Content | undefined","store: Store","token: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>","key: AType | BType","change: (relations: Junction<ASide, AType, BSide, BType, Content>) => void","logLevel: keyof Logger","simpleLogger: Logger","logLevel: `error` | `info` | `warn` | null","filter?: LogFilter","logger: Logger","$claim: unique symbol","store: Store","provenance: A","key: V","attachmentStyle?: `all` | `any`","type: T","reagentA: SingularTypedKey<A>","reagentB: SingularTypedKey<B>","claim: Claim<V>","newProvenance: A","exclusive?: `exclusive`","provenance: Canonical","key: Canonical","newProvenance: Canonical","options:\n\t\t| ReadonlyHeldSelectorOptions<any>\n\t\t| ReadonlyPureSelectorOptions<any>\n\t\t| WritableHeldSelectorOptions<any>\n\t\t| WritablePureSelectorOptions<any>","options:\n\t\t| ReadonlyHeldSelectorFamilyOptions<any, any>\n\t\t| ReadonlyPureSelectorFamilyOptions<any, any>\n\t\t| WritableHeldSelectorFamilyOptions<any, any>\n\t\t| WritablePureSelectorFamilyOptions<any, any>","config: Store[`config`]","fromStore: Store | null","options: Parameters<typeof atom>[0]","options: Parameters<typeof atomFamily>[0]","options: Parameters<typeof selector>[0]","options: Parameters<typeof selectorFamily>[0]","token: ReadableToken<any> | TimelineToken<any> | TransactionToken<any>","handleUpdate: (update: any) => void","key: string","options: TimelineOptions<ManagedAtom>","tl: TimelineToken<any>","options: TransactionOptions<F>","token: TransactionToken<F>","id: string","knownToken: KnownToken","unknownToken: ReadableToken<any>","family: Family"],"sources":["../../src/main/atom.ts","../../src/main/dispose-state.ts","../../src/main/find-state.ts","../../src/main/get-state.ts","../../src/main/join.ts","../../src/main/logger.ts","../../src/main/realm.ts","../../src/main/selector.ts","../../src/main/set-state.ts","../../src/main/silo.ts","../../src/main/subscribe.ts","../../src/main/timeline.ts","../../src/main/transaction.ts","../../src/main/validators.ts"],"sourcesContent":["import type { Transceiver } from \"atom.io/internal\"\nimport {\n\tcreateAtomFamily,\n\tcreateStandaloneAtom,\n\tIMPLICIT,\n} from \"atom.io/internal\"\nimport type { Canonical, Json, JsonInterface } from \"atom.io/json\"\n\nimport type { AtomToken, MutableAtomToken, RegularAtomToken, Setter } from \".\"\n\n/**\n * @public\n * Create a mutable atom, a global reactive variable in the implicit store\n *\n * The value of a mutable atom must be some kind of {@link Transceiver}.\n *\n * @param options - {@link MutableAtomOptions}.\n * @returns\n * A reference to the atom created: a {@link MutableAtomToken}\n * @overload Mutable\n */\nexport function atom<T extends Transceiver<any>, J extends Json.Serializable>(\n\toptions: MutableAtomOptions<T, J>,\n): MutableAtomToken<T, J>\n\n/**\n * @public\n * Create a regular atom, a global reactive variable in the implicit store\n * @param options - {@link RegularAtomOptions}.\n * @returns\n * A reference to the atom created: a {@link RegularAtomToken}\n * @overload Regular\n */\nexport function atom<T>(options: RegularAtomOptions<T>): RegularAtomToken<T>\nexport function atom(\n\toptions: MutableAtomOptions<any, any> | RegularAtomOptions<any>,\n): AtomToken<any> {\n\treturn createStandaloneAtom(IMPLICIT.STORE, options)\n}\n\n/** @public */\nexport type Effectors<T> = {\n\t/**\n\t * Set the value of the atom\n\t * @param next - The new value of the atom, or a setter function\n\t */\n\tsetSelf: <New extends T>(next: New | Setter<T, New>) => void\n\t/** Subscribe to changes to the atom */\n\tonSet: (callback: (options: { newValue: T; oldValue: T }) => void) => void\n}\n\n/**\n * @public\n * A function that runs side effects when the atom is set\n * @param tools - {@link Effectors} that can be used to run side effects\n * @returns\n * Optionally, a cleanup function that will be called when the atom is disposed\n */\nexport type AtomEffect<T> = (tools: Effectors<T>) => (() => void) | void\n\n/** @public */\nexport type RegularAtomOptions<T> = {\n\t/** The unique identifier of the atom */\n\tkey: string\n\t/** The starting value of the atom */\n\tdefault: T | (() => T)\n\t/** Hooks used to run side effects when the atom is set */\n\teffects?: AtomEffect<T>[]\n}\n// biome-ignore format: complex intersection\nexport type MutableAtomOptions<T extends Transceiver<any>, J extends Json.Serializable> = \n\t& JsonInterface<T, J>\n\t& Omit<RegularAtomOptions<T>, `default`> \n\t& { \n\t\t\tdefault: ()\t=> T\n\t\t\tmutable: true\n\t\t}\n\n/** @public */\nexport type RegularAtomFamilyOptions<T, K extends Canonical> = {\n\t/** The unique identifier of the atom family */\n\tkey: string\n\t/** The starting value of the atom family */\n\tdefault: T | ((key: K) => T)\n\t/** Hooks used to run side effects when an atom in the family is set */\n\teffects?: (key: K) => AtomEffect<T>[]\n}\n\nexport type RegularAtomFamilyToken<T, K extends Canonical> = {\n\tkey: string\n\ttype: `atom_family`\n\t__T?: T\n\t__K?: K\n}\n\n// biome-ignore format: intersection\nexport type MutableAtomFamilyOptions<\n\tT extends Transceiver<any>,\n\tJ extends Json.Serializable,\n\tK extends Canonical,\n> = \n\t& JsonInterface<T, J>\n\t& { \n\t\tkey: string\n\t\tdefault: (key: K) => T\n\t\teffects?: (key: K) => AtomEffect<T>[]\n\t\tmutable: true,\n\t}\n\nexport type MutableAtomFamilyToken<\n\tT extends Transceiver<any>,\n\tJ extends Json.Serializable,\n\tK extends Canonical,\n> = {\n\tkey: string\n\ttype: `mutable_atom_family`\n\t__T?: T\n\t__J?: J\n\t__K?: K\n}\n\nexport type AtomFamilyToken<T, K extends Canonical = Canonical> =\n\t| MutableAtomFamilyToken<T extends Transceiver<any> ? T : never, any, K>\n\t| RegularAtomFamilyToken<T, K>\n\nexport function atomFamily<\n\tT extends Transceiver<any>,\n\tJ extends Json.Serializable,\n\tK extends Canonical,\n>(options: MutableAtomFamilyOptions<T, J, K>): MutableAtomFamilyToken<T, J, K>\nexport function atomFamily<T, K extends Canonical>(\n\toptions: RegularAtomFamilyOptions<T, K>,\n): RegularAtomFamilyToken<T, K>\nexport function atomFamily<T, K extends Canonical>(\n\toptions:\n\t\t| MutableAtomFamilyOptions<any, any, any>\n\t\t| RegularAtomFamilyOptions<T, K>,\n): MutableAtomFamilyToken<any, any, any> | RegularAtomFamilyToken<T, K> {\n\treturn createAtomFamily(IMPLICIT.STORE, options)\n}\n","import * as Internal from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\n\nimport type { ReadableFamilyToken, ReadableToken } from \".\"\n\n/**\n * @public\n * Disposes of a state in the implicit store\n * @param token - The token of the state to dispose\n * @overload Default\n */\nexport function disposeState(token: ReadableToken<any>): void\n/**\n * @public\n * Disposes of a state family in the implicit store\n * @param token - The token of the state family to dispose\n * @param key - The unique key of the state to dispose\n */\nexport function disposeState<K extends Canonical>(\n\ttoken: ReadableFamilyToken<any, K>,\n\tkey: K,\n): void\nexport function disposeState(\n\t...[token, key]:\n\t\t| [token: ReadableFamilyToken<any, any>, key: Canonical]\n\t\t| [token: ReadableToken<any>]\n): void {\n\tif (key) {\n\t\tInternal.disposeFromStore(Internal.IMPLICIT.STORE, token as any, key)\n\t} else {\n\t\tInternal.disposeFromStore(Internal.IMPLICIT.STORE, token as any)\n\t}\n}\n","import type {\n\tMutableAtomFamilyToken,\n\tMutableAtomToken,\n\tReadableFamilyToken,\n\tReadableToken,\n\tReadonlyPureSelectorFamilyToken,\n\tReadonlyPureSelectorToken,\n\tRegularAtomFamilyToken,\n\tRegularAtomToken,\n\tWritableFamilyToken,\n\tWritablePureSelectorFamilyToken,\n\tWritablePureSelectorToken,\n\tWritableToken,\n} from \"atom.io\"\nimport type { Transceiver } from \"atom.io/internal\"\nimport { findInStore, IMPLICIT } from \"atom.io/internal\"\nimport type { Canonical, Json } from \"atom.io/json\"\n\n/**\n * @public\n * Finds a {@link MutableAtomToken} in the store\n * @param token - A {@link MutableAtomFamilyToken}\n * @param key - The key of the state\n * @returns\n * The current value of the state\n * @overload Mutable Atom\n */\nexport function findState<\n\tT extends Transceiver<any>,\n\tJ extends Json.Serializable,\n\tK extends Canonical,\n\tKey extends K,\n>(token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J, K>\n/**\n * @public\n * Finds a state in the store\n * @param token - The token of the state family\n * @param key - The key of the state\n * @returns\n * The current value of the state\n * @overload Regular Atom\n */\nexport function findState<T, K extends Canonical, Key extends K>(\n\ttoken: RegularAtomFamilyToken<T, K>,\n\tkey: Key,\n): RegularAtomToken<T, K>\n/**\n * @public\n * Finds a state in the store\n * @param token - The token of the state family\n * @param key - The key of the state\n * @returns\n * The current value of the state\n * @overload Writable Selector\n */\nexport function findState<T, K extends Canonical, Key extends K>(\n\ttoken: WritablePureSelectorFamilyToken<T, K>,\n\tkey: Key,\n): WritablePureSelectorToken<T, K>\n/**\n * @public\n * Finds a state in the store\n * @param token - The token of the state family\n * @param key - The key of the state\n * @returns\n * The current value of the state\n * @overload Readonly Selector\n */\nexport function findState<T, K extends Canonical, Key extends K>(\n\ttoken: ReadonlyPureSelectorFamilyToken<T, K>,\n\tkey: Key,\n): ReadonlyPureSelectorToken<T, K>\n/**\n * @public\n * Finds a state in the store\n * @param token - The token of the state family\n * @param key - The key of the state\n * @returns\n * The current value of the state\n * @overload Writable State\n */\nexport function findState<T, K extends Canonical, Key extends K>(\n\ttoken: WritableFamilyToken<T, K>,\n\tkey: Key,\n): WritableToken<T, K>\n/**\n * @public\n * Finds a {@link ReadableToken} in the store\n * @param token - A {@link ReadableFamilyToken}\n * @param key - The key of the state\n * @returns\n * The current value of the state\n * @overload Unknown\n * @default\n */\nexport function findState<T, K extends Canonical, Key extends K>(\n\ttoken: ReadableFamilyToken<T, K>,\n\tkey: Key,\n): ReadableToken<T, K>\n\nexport function findState(\n\ttoken: ReadableFamilyToken<any, any>,\n\tkey: Json.Serializable,\n): ReadableToken<any> {\n\tconst state = findInStore(IMPLICIT.STORE, token, key)\n\treturn state\n}\n","import * as Internal from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\n\nimport type { ReadableFamilyToken, ReadableToken } from \".\"\n\n/**\n * @public\n * Get the current value of a state\n * @param token - The token of the state to get\n * @return The current value of the state\n * @overload Default\n * @default\n */\nexport function getState<T>(token: ReadableToken<T>): T\n\n/**\n * @public\n * Get the current value of a state family\n * @param token - The token of a state family\n * @param key - The unique key of the state to get\n * @return The current value of the state\n * @overload Streamlined\n */\nexport function getState<T, K extends Canonical, Key extends K>(\n\ttoken: ReadableFamilyToken<T, K>,\n\tkey: Key,\n): T\n\nexport function getState(\n\t...params:\n\t\t| [token: ReadableFamilyToken<any, any>, key: Canonical]\n\t\t| [token: ReadableToken<any>]\n): any {\n\tif (params.length === 2) {\n\t\treturn Internal.getFromStore(Internal.IMPLICIT.STORE, ...params)\n\t}\n\treturn Internal.getFromStore(Internal.IMPLICIT.STORE, ...params)\n}\n","import type { MutableAtomFamilyToken, ReadonlyPureSelectorToken } from \"atom.io\"\nimport type {\n\tJunction,\n\tJunctionEntriesBase,\n\tJunctionSchemaBase,\n\tRefinement,\n\tStore,\n} from \"atom.io/internal\"\nimport {\n\teditRelationsInStore,\n\tfindRelationsInStore,\n\tgetInternalRelationsFromStore,\n\tIMPLICIT,\n\tJoin,\n} from \"atom.io/internal\"\nimport type { Json } from \"atom.io/json\"\nimport type { SetRTX, SetRTXJson } from \"atom.io/transceivers/set-rtx\"\n\nexport interface JoinOptions<\n\tASide extends string,\n\tAType extends string,\n\tBSide extends string,\n\tBType extends string,\n\tCardinality extends `1:1` | `1:n` | `n:n`,\n\tContent extends Json.Object | null,\n> extends JunctionSchemaBase<ASide, BSide>,\n\t\tPartial<JunctionEntriesBase<AType, BType, Content>> {\n\treadonly key: string\n\treadonly cardinality: Cardinality\n\treadonly isAType: Refinement<string, AType>\n\treadonly isBType: Refinement<string, BType>\n}\n\nexport type JoinToken<\n\tASide extends string,\n\tAType extends string,\n\tBSide extends string,\n\tBType extends string,\n\tCardinality extends `1:1` | `1:n` | `n:n`,\n\tContent extends Json.Object | null = null,\n> = {\n\tkey: string\n\ttype: `join`\n\tcardinality: Cardinality\n\ta: ASide\n\tb: BSide\n\t__aType?: AType\n\t__bType?: BType\n\t__content?: Content\n}\n\nexport function join<\n\tconst ASide extends string,\n\tconst AType extends string,\n\tconst BSide extends string,\n\tconst BType extends string,\n\tconst Cardinality extends `1:1` | `1:n` | `n:n`,\n>(\n\toptions: JoinOptions<ASide, AType, BSide, BType, Cardinality, null>,\n\tdefaultContent?: undefined,\n\tstore?: Store,\n): JoinToken<ASide, AType, BSide, BType, Cardinality, null>\nexport function join<\n\tconst ASide extends string,\n\tconst AType extends string,\n\tconst BSide extends string,\n\tconst BType extends string,\n\tconst Cardinality extends `1:1` | `1:n` | `n:n`,\n\tconst Content extends Json.Object,\n>(\n\toptions: JoinOptions<ASide, AType, BSide, BType, Cardinality, Content>,\n\tdefaultContent: Content,\n\tstore?: Store,\n): JoinToken<ASide, AType, BSide, BType, Cardinality, Content>\nexport function join<\n\tASide extends string,\n\tAType extends string,\n\tBSide extends string,\n\tBType extends string,\n\tCardinality extends `1:1` | `1:n` | `n:n`,\n\tContent extends Json.Object,\n>(\n\toptions: JoinOptions<ASide, AType, BSide, BType, Cardinality, Content>,\n\tdefaultContent: Content | undefined,\n\tstore: Store = IMPLICIT.STORE,\n): JoinToken<ASide, AType, BSide, BType, Cardinality, Content> {\n\tstore.joins.set(options.key, new Join(options, defaultContent, store))\n\tconst token: JoinToken<ASide, AType, BSide, BType, Cardinality, Content> = {\n\t\tkey: options.key,\n\t\ttype: `join`,\n\t\ta: options.between[0],\n\t\tb: options.between[1],\n\t\tcardinality: options.cardinality,\n\t}\n\treturn token\n}\n\nexport type JoinStates<\n\tASide extends string,\n\tAType extends string,\n\tBSide extends string,\n\tBType extends string,\n\tCardinality extends `1:1` | `1:n` | `n:n`,\n\tContent extends Json.Object | null,\n> = Cardinality extends `1:1`\n\t? (Content extends Json.Object\n\t\t\t? {\n\t\t\t\t\treadonly [A in ASide as `${A}EntryOf${Capitalize<BSide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\t[AType, Content] | null,\n\t\t\t\t\t\tBType\n\t\t\t\t\t>\n\t\t\t\t} & {\n\t\t\t\t\treadonly [B in BSide as `${B}EntryOf${Capitalize<ASide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\t[BType, Content] | null,\n\t\t\t\t\t\tAType\n\t\t\t\t\t>\n\t\t\t\t}\n\t\t\t: {}) & {\n\t\t\treadonly [A in ASide as `${A}KeyOf${Capitalize<BSide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\tAType | null,\n\t\t\t\tBType\n\t\t\t>\n\t\t} & {\n\t\t\treadonly [B in BSide as `${B}KeyOf${Capitalize<ASide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\tBType | null,\n\t\t\t\tAType\n\t\t\t>\n\t\t}\n\t: Cardinality extends `1:n`\n\t\t? (Content extends Json.Object\n\t\t\t\t? {\n\t\t\t\t\t\treadonly [A in ASide as `${A}EntryOf${Capitalize<BSide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\t\t[AType, Content] | null,\n\t\t\t\t\t\t\tBType\n\t\t\t\t\t\t>\n\t\t\t\t\t} & {\n\t\t\t\t\t\treadonly [B in BSide as `${B}EntriesOf${Capitalize<ASide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\t\t[BType, Content][],\n\t\t\t\t\t\t\tAType\n\t\t\t\t\t\t>\n\t\t\t\t\t}\n\t\t\t\t: {}) & {\n\t\t\t\treadonly [A in ASide as `${A}KeyOf${Capitalize<BSide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\tAType | null,\n\t\t\t\t\tBType\n\t\t\t\t>\n\t\t\t} & {\n\t\t\t\treadonly [B in BSide as `${B}KeysOf${Capitalize<ASide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\tBType[],\n\t\t\t\t\tAType\n\t\t\t\t>\n\t\t\t}\n\t\t: Cardinality extends `n:n`\n\t\t\t? (Content extends Json.Object\n\t\t\t\t\t? {\n\t\t\t\t\t\t\treadonly [A in ASide as `${A}EntriesOf${Capitalize<BSide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\t\t\t[AType, Content][],\n\t\t\t\t\t\t\t\tBType\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t} & {\n\t\t\t\t\t\t\treadonly [B in BSide as `${B}EntriesOf${Capitalize<ASide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\t\t\t[BType, Content][],\n\t\t\t\t\t\t\t\tAType\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\treadonly [A in ASide as `${A}KeysOf${Capitalize<BSide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\tAType[],\n\t\t\t\t\t\tBType\n\t\t\t\t\t>\n\t\t\t\t} & {\n\t\t\t\t\treadonly [B in BSide as `${B}KeysOf${Capitalize<ASide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\tBType[],\n\t\t\t\t\t\tAType\n\t\t\t\t\t>\n\t\t\t\t}\n\t\t\t: never\n\nexport function findRelations<\n\tASide extends string,\n\tAType extends string,\n\tBSide extends string,\n\tBType extends string,\n\tCardinality extends `1:1` | `1:n` | `n:n`,\n\tContent extends Json.Object | null,\n>(\n\ttoken: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>,\n\tkey: AType | BType,\n): JoinStates<ASide, AType, BSide, BType, Cardinality, Content> {\n\treturn findRelationsInStore(token, key, IMPLICIT.STORE)\n}\n\nexport function editRelations<\n\tASide extends string,\n\tAType extends string,\n\tBSide extends string,\n\tBType extends string,\n\tCardinality extends `1:1` | `1:n` | `n:n`,\n\tContent extends Json.Object | null,\n>(\n\ttoken: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>,\n\tchange: (relations: Junction<ASide, AType, BSide, BType, Content>) => void,\n): void {\n\teditRelationsInStore(token, change, IMPLICIT.STORE)\n}\n\nexport function getInternalRelations<\n\tASide extends string,\n\tAType extends string,\n\tBSide extends string,\n\tBType extends string,\n\tCardinality extends `1:1` | `1:n` | `n:n`,\n\tContent extends Json.Object | null,\n>(\n\ttoken: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>,\n): MutableAtomFamilyToken<SetRTX<string>, SetRTXJson<string>, string> {\n\treturn getInternalRelationsFromStore(token, IMPLICIT.STORE)\n}\n","const LOGGER_ICON_DICTIONARY = {\n\t\"⌛\": `Timeline event fully captured`,\n\t\"⏩\": `Timeline redo`,\n\t\"⏪\": `Timeline undo`,\n\t\"⏭️\": `Transaction redo`,\n\t\"⏮️\": `Transaction undo`,\n\t\"⏳\": `Timeline event partially captured`,\n\t\"⏹️\": `Time-travel complete`,\n\t\"✅\": `Realtime transaction success`,\n\t\"✨\": `Computation complete`,\n\t\"❌\": `Conflict prevents attempted action`,\n\t\"⭕\": `Operation start`,\n\t\"🔴\": `Operation complete`,\n\t\"❗\": `Operation blocked`,\n\t\"🟢\": `Operation unblocked`,\n\t\"🐞\": `Possible bug in AtomIO`,\n\t\"👀\": `Subscription added`,\n\t\"👋\": `Greeting`,\n\t\"👍\": `Realtime acknowledgment`,\n\t\"👪\": `Family member added`,\n\t\"💁\": `Notice`,\n\t\"💥\": `Caught`,\n\t\"📁\": `Stow update`,\n\t\"📃\": `Copy mutable`,\n\t\"📖\": `Read state`,\n\t\"📝\": `Write state`,\n\t\"📢\": `Notify subscribers`,\n\t\"🔄\": `Realtime transaction synchronized`,\n\t\"🔌\": `Register dependency`,\n\t\"🔍\": `Discover root`,\n\t\"🔥\": `Delete state`,\n\t\"🔧\": `Create mutable atom`,\n\t\"🔨\": `Create immutable atom`,\n\n\t\"🗑\": `Evict cached value`,\n\t\"🙈\": `Subscription canceled`,\n\t\"🚀\": `Performance measure`,\n\t\"🛄\": `Apply transaction`,\n\t\"🛠️\": `Install atom into store`,\n\t\"🛫\": `Begin transaction`,\n\t\"🛬\": `Complete transaction`,\n\t\"🧮\": `Computing selector`,\n\t\"🧹\": `Prepare to evict`,\n\t\"🪂\": `Abort transaction`,\n\t\"🤞\": `Realtime optimistic update enqueued`,\n\t\"👈\": `Realtime confirmed update enqueued`,\n\t\"🧑⚖️\": `Realtime update beginning reconciliation`,\n\t\"🛎️\": `Realtime transaction received`,\n\t\"🔭\": `Determining realtime perspective`,\n\t\"🖌\": `Redacting realtime update`,\n\t\"👁\": `Determining perspective`,\n} as const\nexport type LoggerIcon = keyof typeof LOGGER_ICON_DICTIONARY\nexport type TokenDenomination =\n\t| `atom_family`\n\t| `atom`\n\t| `continuity`\n\t| `molecule_family`\n\t| `molecule`\n\t| `mutable_atom_family`\n\t| `mutable_atom`\n\t| `readonly_held_selector_family`\n\t| `readonly_held_selector`\n\t| `readonly_pure_selector_family`\n\t| `readonly_pure_selector`\n\t| `state`\n\t| `timeline`\n\t| `transaction`\n\t| `unknown`\n\t| `writable_held_selector_family`\n\t| `writable_held_selector`\n\t| `writable_pure_selector_family`\n\t| `writable_pure_selector`\n\nexport const LOG_LEVELS = [`info`, `warn`, `error`] as const\nexport type LogLevel = (typeof LOG_LEVELS)[number]\n\nexport type LogFn = (\n\ticon: LoggerIcon,\n\tdenomination: TokenDenomination,\n\ttokenKey: string,\n\tmessage: string,\n\t...rest: unknown[]\n) => void\nexport type LogFilter = (\n\t...params: Parameters<LogFn>\n) => Parameters<LogFn> | boolean\n\nexport type Logger = Record<LogLevel, LogFn>\n\nexport const simpleLog =\n\t(logLevel: keyof Logger): LogFn =>\n\t(icon, denomination, tokenKey, message, ...rest) => {\n\t\t/* eslint-disable-next-line no-console */\n\t\tconsole[logLevel](\n\t\t\t`${icon} ${denomination} \"${tokenKey}\" ${message}`,\n\t\t\t...rest,\n\t\t)\n\t}\nexport const simpleLogger: Logger = {\n\terror: simpleLog(`error`),\n\tinfo: simpleLog(`info`),\n\twarn: simpleLog(`warn`),\n}\n\nexport class AtomIOLogger implements Logger {\n\tpublic logLevel: `error` | `info` | `warn` | null\n\tprivate readonly filter: LogFilter | undefined\n\tprivate readonly logger: Logger\n\n\tpublic constructor(\n\t\tlogLevel: `error` | `info` | `warn` | null,\n\t\tfilter?: LogFilter,\n\t\tlogger: Logger = simpleLogger,\n\t) {\n\t\tthis.logLevel = logLevel\n\t\tthis.filter = filter\n\t\tthis.logger = logger\n\t}\n\n\tpublic error: LogFn = (...args) => {\n\t\tconst filterResult = this.filter?.(...args) ?? true\n\t\tif (this.logLevel !== null) {\n\t\t\tif (filterResult === true) {\n\t\t\t\tthis.logger.error(...args)\n\t\t\t} else if (filterResult !== false) {\n\t\t\t\tthis.logger.error(...filterResult)\n\t\t\t}\n\t\t}\n\t}\n\tpublic info: LogFn = (...args) => {\n\t\tconst filterResult = this.filter?.(...args) ?? true\n\t\tif (this.logLevel === `info`) {\n\t\t\tif (filterResult === true) {\n\t\t\t\tthis.logger.info(...args)\n\t\t\t} else if (filterResult !== false) {\n\t\t\t\tthis.logger.info(...filterResult)\n\t\t\t}\n\t\t}\n\t}\n\tpublic warn: LogFn = (...args) => {\n\t\tconst filterResult = this.filter?.(...args) ?? true\n\t\tif (this.logLevel !== `error` && this.logLevel !== null) {\n\t\t\tif (filterResult === true) {\n\t\t\t\tthis.logger.warn(...args)\n\t\t\t} else if (filterResult !== false) {\n\t\t\t\tthis.logger.warn(...filterResult)\n\t\t\t}\n\t\t}\n\t}\n}\n","import type { Each, Store } from \"atom.io/internal\"\nimport {\n\tallocateIntoStore,\n\tclaimWithinStore,\n\tdeallocateFromStore,\n\tfuseWithinStore,\n\tIMPLICIT,\n\tmakeRootMoleculeInStore,\n} from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\n\nexport const $claim: unique symbol = Symbol.for(`claim`)\nexport type Claim<K extends Canonical> = K & { [$claim]?: true }\n\nexport class Realm<H extends Hierarchy> {\n\tpublic store: Store\n\tpublic constructor(store: Store = IMPLICIT.STORE) {\n\t\tthis.store = store\n\t\tmakeRootMoleculeInStore(`root`, store)\n\t}\n\tpublic allocate<V extends Vassal<H>, A extends Above<V, H>>(\n\t\tprovenance: A,\n\t\tkey: V,\n\t\tattachmentStyle?: `all` | `any`,\n\t): Claim<V> {\n\t\treturn allocateIntoStore<H, V, A>(\n\t\t\tthis.store,\n\t\t\tprovenance,\n\t\t\tkey,\n\t\t\tattachmentStyle,\n\t\t)\n\t}\n\tpublic fuse<\n\t\tC extends CompoundFrom<H>,\n\t\tT extends C extends CompoundTypedKey<infer t, any, any> ? t : never,\n\t\tA extends C extends CompoundTypedKey<any, infer v, any> ? v : never,\n\t\tB extends C extends CompoundTypedKey<any, any, infer m> ? m : never,\n\t>(\n\t\ttype: T,\n\t\treagentA: SingularTypedKey<A>,\n\t\treagentB: SingularTypedKey<B>,\n\t): Claim<CompoundTypedKey<T, A, B>> {\n\t\treturn fuseWithinStore<H, C, T, A, B>(this.store, type, reagentA, reagentB)\n\t}\n\n\tpublic deallocate<V extends Vassal<H>>(claim: Claim<V>): void {\n\t\tdeallocateFromStore<H, V>(this.store, claim)\n\t}\n\tpublic claim<\n\t\tV extends Exclude<Vassal<H>, CompoundTypedKey>,\n\t\tA extends Above<V, H>,\n\t>(newProvenance: A, claim: Claim<V>, exclusive?: `exclusive`): Claim<V> {\n\t\treturn claimWithinStore<H, V, A>(this.store, newProvenance, claim, exclusive)\n\t}\n}\n\nexport class Anarchy {\n\tpublic store: Store\n\tpublic realm: Realm<any>\n\n\tpublic constructor(store: Store = IMPLICIT.STORE) {\n\t\tthis.store = store\n\t\tthis.realm = new Realm(store)\n\t}\n\n\tpublic allocate(\n\t\tprovenance: Canonical,\n\t\tkey: Canonical,\n\t\tattachmentStyle?: `all` | `any`,\n\t): void {\n\t\tallocateIntoStore<any, any, any>(\n\t\t\tthis.store,\n\t\t\tprovenance,\n\t\t\tkey,\n\t\t\tattachmentStyle,\n\t\t)\n\t}\n\n\tpublic deallocate(key: Canonical): void {\n\t\tdeallocateFromStore<any, any>(this.store, key)\n\t}\n\n\tpublic claim(\n\t\tnewProvenance: Canonical,\n\t\tkey: Canonical,\n\t\texclusive?: `exclusive`,\n\t): void {\n\t\tclaimWithinStore<any, any, any>(this.store, newProvenance, key, exclusive)\n\t}\n}\n\nexport const T$ = `T$`\nexport type T$ = typeof T$\nexport type TypeTag<T extends string> = `${T$}--${T}`\nexport type SingularTypedKey<T extends string = string> = `${T}::${string}`\nexport type CompoundTypedKey<\n\tA extends string = string,\n\tB extends string = string,\n\tC extends string = string,\n> = `${TypeTag<A>}==${SingularTypedKey<B>}++${SingularTypedKey<C>}`\nexport type TypedKey<\n\tA extends string = string,\n\tB extends string = string,\n\tC extends string = string,\n> = CompoundTypedKey<A, B, C> | SingularTypedKey<A>\ntype Scope = SingularTypedKey[]\ntype MutualFealty = {\n\tabove: Scope\n\tbelow: CompoundTypedKey\n}\ntype ExclusiveFealty = {\n\tabove: TypedKey | `root`\n\tbelow: Scope\n}\ntype Fealty = ExclusiveFealty | MutualFealty\n\nexport type Hierarchy<F extends Fealty[] = Fealty[]> = Each<F>\n\nexport type Vassal<H extends Hierarchy> = {\n\t[K in keyof H]: H[K] extends MutualFealty\n\t\t? H[K][`below`]\n\t\t: H[K] extends { below: Array<infer V> }\n\t\t\t? V extends TypedKey\n\t\t\t\t? V\n\t\t\t\t: never\n\t\t\t: never\n}[keyof H]\n\nexport type Above<TK extends TypedKey, H extends Hierarchy> = {\n\t[K in keyof H]: H[K] extends MutualFealty\n\t\t? TK extends H[K][`below`]\n\t\t\t? H[K][`above`]\n\t\t\t: never\n\t\t: H[K] extends { below: Array<infer V> }\n\t\t\t? TK extends V\n\t\t\t\t? H[K] extends ExclusiveFealty\n\t\t\t\t\t? H[K][`above`]\n\t\t\t\t\t: never\n\t\t\t\t: never\n\t\t\t: never\n}[keyof H]\n\nexport type Below<TK extends TypedKey | TypedKey[], H extends Hierarchy> = {\n\t[K in keyof H]: H[K] extends MutualFealty\n\t\t? TK extends H[K][`above`]\n\t\t\t? H[K][`below`]\n\t\t\t: TK extends H[K][`above`][number]\n\t\t\t\t? H[K][`below`]\n\t\t\t\t: never\n\t\t: H[K] extends { above: infer V }\n\t\t\t? TK extends V\n\t\t\t\t? H[K] extends ExclusiveFealty\n\t\t\t\t\t? H[K][`below`][number]\n\t\t\t\t\t: never\n\t\t\t\t: never\n\t\t\t: never\n}[keyof H]\n\nexport type Mutuals<TK extends TypedKey | TypedKey[], H extends Hierarchy> = {\n\t[K in keyof H]: H[K] extends MutualFealty\n\t\t? TK extends H[K][`above`][number]\n\t\t\t? [mutual: Exclude<H[K][`above`][number], TK>, below: H[K][`below`]]\n\t\t\t: never\n\t\t: never\n}[keyof H]\n\nexport type CompoundFrom<H extends Hierarchy> = {\n\t[K in keyof H]: H[K] extends MutualFealty ? H[K][`below`] : never\n}[keyof H]\n","import {\n\tcreateSelectorFamily,\n\tcreateStandaloneSelector,\n\tIMPLICIT,\n} from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\n\nimport type {\n\tReadonlyHeldSelectorToken,\n\tReadonlyPureSelectorToken,\n\tWritableHeldSelectorToken,\n\tWritablePureSelectorToken,\n} from \".\"\nimport type { Read, Write } from \"./transaction\"\n\nexport type WritablePureSelectorOptions<T> = {\n\tkey: string\n\tget: Read<() => T>\n\tset: Write<(newValue: T) => void>\n}\nexport type ReadonlyPureSelectorOptions<T> = {\n\tkey: string\n\tget: Read<() => T>\n}\nexport type ReadonlyHeldSelectorOptions<T extends object> = {\n\tkey: string\n\tconst: T\n\tget: Read<(permanent: T) => void>\n}\nexport type WritableHeldSelectorOptions<T extends object> = {\n\tkey: string\n\tconst: T\n\tget: Read<(permanent: T) => void>\n\tset: Write<(newValue: T) => void>\n}\n\n/**\n * @public\n * Declare a selector. The value of a selector should depend\n * on the value of atoms or other selectors in the store, and\n * should be recycled when a root atom of the selector is set.\n *\n * A held selector's value must be some object.\n * The reference to that object is permanent and will not be replaced.\n *\n * A writable selector can be \"set\" to a new value.\n * It is advised to set its dependencies to values\n * that would produce the new value of the selector.\n *\n * @param options - {@link WritableHeldSelectorOptions}.\n * @returns\n * The token for your selector.\n * @overload WritableHeld\n */\nexport function selector<T extends object>(\n\toptions: WritableHeldSelectorOptions<T>,\n): WritableHeldSelectorToken<T>\n\n/**\n * @public\n * Declare a selector. The value of a selector should depend\n * on the value of atoms or other selectors in the store,\n * and should be recycled when a root atom of the selector is set.\n *\n * A held selector's value must be some object.\n * The reference to that object is permanent and will not be replaced.\n *\n * A readonly selector can be \"gotten\" but not \"set\".\n *\n * @param options - {@link ReadonlyHeldSelectorOptions}.\n * @returns\n * The token for your selector.\n * @overload ReadonlyHeld\n */\nexport function selector<T extends object>(\n\toptions: ReadonlyHeldSelectorOptions<T>,\n): ReadonlyHeldSelectorToken<T>\n\n/**\n * @public\n * Declare a selector. The value of a selector should depend\n * on the value of atoms or other selectors in the store.\n *\n * A pure selector's current value is evicted from the store\n * in order to be garbage collected when a root atom of the selector is set.\n *\n * A writable selector can be \"set\" to a new value.\n * It is advised to set its dependencies to values\n * that would produce the new value of the selector.\n *\n * @param options - {@link TransientWritableSelectorOptions}.\n * @returns\n * The token for your selector.\n * @overload WritablePure\n */\nexport function selector<T>(\n\toptions: WritablePureSelectorOptions<T>,\n): WritablePureSelectorToken<T>\n\n/**\n * @public\n * Declare a selector. The value of a selector should depend\n * on the value of atoms or other selectors in the store.\n *\n * A pure selector's current value is evicted from the store\n * in order to be garbage collected when a root atom of the selector is set.\n *\n * A readonly selector can be \"gotten\" but not \"set\".\n *\n * @param options - {@link ReadonlyPureSelectorOptions}.\n * @returns\n * The token for your selector.\n * @overload ReadonlyPure\n */\nexport function selector<T>(\n\toptions: ReadonlyPureSelectorOptions<T>,\n): ReadonlyPureSelectorToken<T>\n\nexport function selector(\n\toptions:\n\t\t| ReadonlyHeldSelectorOptions<any>\n\t\t| ReadonlyPureSelectorOptions<any>\n\t\t| WritableHeldSelectorOptions<any>\n\t\t| WritablePureSelectorOptions<any>,\n):\n\t| ReadonlyHeldSelectorToken<any>\n\t| ReadonlyPureSelectorToken<any>\n\t| WritableHeldSelectorToken<any>\n\t| WritablePureSelectorToken<any> {\n\treturn createStandaloneSelector(IMPLICIT.STORE, options)\n}\n\nexport type WritablePureSelectorFamilyOptions<T, K extends Canonical> = {\n\tkey: string\n\tget: (key: K) => Read<() => T>\n\tset: (key: K) => Write<(newValue: T) => void>\n}\nexport type ReadonlyPureSelectorFamilyOptions<T, K extends Canonical> = {\n\tkey: string\n\tget: (key: K) => Read<() => T>\n}\nexport type WritableHeldSelectorFamilyOptions<\n\tT extends object,\n\tK extends Canonical,\n> = {\n\tkey: string\n\tconst: (key: K) => T\n\tget: (key: K) => Read<(permanent: T) => void>\n\tset: (key: K) => Write<(newValue: T) => void>\n}\nexport type ReadonlyHeldSelectorFamilyOptions<\n\tT extends object,\n\tK extends Canonical,\n> = {\n\tkey: string\n\tconst: (key: K) => T\n\tget: (key: K) => Read<(permanent: T) => void>\n}\n\nexport type WritablePureSelectorFamilyToken<T, K extends Canonical> = {\n\tkey: string\n\ttype: `writable_pure_selector_family`\n\t__T?: T\n\t__K?: K\n}\nexport type ReadonlyPureSelectorFamilyToken<T, K extends Canonical> = {\n\tkey: string\n\ttype: `readonly_pure_selector_family`\n\t__T?: T\n\t__K?: K\n}\nexport type WritableHeldSelectorFamilyToken<T, K extends Canonical> = {\n\tkey: string\n\ttype: `writable_held_selector_family`\n\t__T?: T\n\t__K?: K\n}\nexport type ReadonlyHeldSelectorFamilyToken<T, K extends Canonical> = {\n\tkey: string\n\ttype: `readonly_held_selector_family`\n\t__T?: T\n\t__K?: K\n}\n\nexport type PureSelectorFamilyToken<T, K extends Canonical> =\n\t| ReadonlyPureSelectorFamilyToken<T, K>\n\t| WritablePureSelectorFamilyToken<T, K>\nexport type HeldSelectorFamilyToken<T, K extends Canonical> =\n\t| ReadonlyHeldSelectorFamilyToken<T, K>\n\t| WritableHeldSelectorFamilyToken<T, K>\nexport type ReadonlySelectorFamilyToken<T, K extends Canonical> =\n\t| ReadonlyHeldSelectorFamilyToken<T, K>\n\t| ReadonlyPureSelectorFamilyToken<T, K>\n\nexport type WritableSelectorFamilyToken<T, K extends Canonical> =\n\t| WritableHeldSelectorFamilyToken<T, K>\n\t| WritablePureSelectorFamilyToken<T, K>\n\nexport type SelectorFamilyToken<T, K extends Canonical> =\n\t| HeldSelectorFamilyToken<T, K>\n\t| PureSelectorFamilyToken<T, K>\n\nexport function selectorFamily<T extends object, K extends Canonical>(\n\toptions: WritableHeldSelectorFamilyOptions<T, K>,\n): WritableHeldSelectorFamilyToken<T, K>\nexport function selectorFamily<T extends object, K extends Canonical>(\n\toptions: ReadonlyHeldSelectorFamilyOptions<T, K>,\n): ReadonlyHeldSelectorFamilyToken<T, K>\nexport function selectorFamily<T, K extends Canonical>(\n\toptions: WritablePureSelectorFamilyOptions<T, K>,\n): WritablePureSelectorFamilyToken<T, K>\nexport function selectorFamily<T, K extends Canonical>(\n\toptions: ReadonlyPureSelectorFamilyOptions<T, K>,\n): ReadonlyPureSelectorFamilyToken<T, K>\nexport function selectorFamily(\n\toptions:\n\t\t| ReadonlyHeldSelectorFamilyOptions<any, any>\n\t\t| ReadonlyPureSelectorFamilyOptions<any, any>\n\t\t| WritableHeldSelectorFamilyOptions<any, any>\n\t\t| WritablePureSelectorFamilyOptions<any, any>,\n):\n\t| ReadonlyHeldSelectorFamilyToken<any, any>\n\t| ReadonlyPureSelectorFamilyToken<any, any>\n\t| WritableHeldSelectorFamilyToken<any, any>\n\t| WritablePureSelectorFamilyToken<any, any> {\n\treturn createSelectorFamily(IMPLICIT.STORE, options)\n}\n","import * as Internal from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\n\nimport type { WritableFamilyToken, WritableToken } from \".\"\n\n/**\n * @public\n * A function that sets the value of a state.\n * @param oldValue - The current value of the state.\n * @returns\n * The new value of the state.\n */\nexport type Setter<T, New extends T> = (oldValue: T) => New\n\n/**\n * @public\n * Set the value of a state into the implicit store.\n * @param token - An atom or writable selector token.\n * @param value - The new value of the state.\n * @overload Default\n * @default\n */\nexport function setState<T, New extends T>(\n\ttoken: WritableToken<T>,\n\tvalue: New | Setter<T, New>,\n): void\n\n/**\n * @public\n * Set the value of a state into the implicit store.\n * @param token - An atom family or writable selector family token.\n * @param key - The unique key of the state to set.\n * @param value - The new value of the state.\n * @overload Streamlined\n */\nexport function setState<T, K extends Canonical, New extends T, Key extends K>(\n\ttoken: WritableFamilyToken<T, K>,\n\tkey: Key,\n\tvalue: New | Setter<T, New>,\n): void\nexport function setState<T, New extends T>(\n\t...params:\n\t\t| [\n\t\t\t\ttoken: WritableFamilyToken<T, Canonical>,\n\t\t\t\tkey: Canonical,\n\t\t\t\tvalue: New | Setter<T, New>,\n\t\t ]\n\t\t| [token: WritableToken<T>, value: New | Setter<T, New>]\n): void {\n\tif (params.length === 2) {\n\t\tInternal.setIntoStore(Internal.IMPLICIT.STORE, ...params)\n\t} else {\n\t\tInternal.setIntoStore(Internal.IMPLICIT.STORE, ...params)\n\t}\n}\n","import type { findState } from \"atom.io\"\nimport {\n\tactUponStore,\n\tarbitrary,\n\tcreateAtomFamily,\n\tcreateSelectorFamily,\n\tcreateStandaloneAtom,\n\tcreateStandaloneSelector,\n\tcreateTimeline,\n\tcreateTransaction,\n\tdisposeFromStore,\n\tfindInStore,\n\tgetFromStore,\n\tIMPLICIT,\n\tinstallIntoStore,\n\tsetIntoStore,\n\tStore,\n\tsubscribeInStore,\n\ttimeTravel,\n} from \"atom.io/internal\"\n\nimport type {\n\tAtomIOToken,\n\tdisposeState,\n\tgetState,\n\tredo,\n\tsetState,\n\tsubscribe,\n\ttimeline,\n\tundo,\n} from \".\"\nimport type { atom, atomFamily } from \"./atom\"\nimport type { selector, selectorFamily } from \"./selector\"\nimport type { runTransaction, transaction } from \"./transaction\"\n\nexport class Silo {\n\tpublic store: Store\n\tpublic atom: typeof atom\n\tpublic atomFamily: typeof atomFamily\n\tpublic selector: typeof selector\n\tpublic selectorFamily: typeof selectorFamily\n\tpublic transaction: typeof transaction\n\tpublic timeline: typeof timeline\n\tpublic findState: typeof findState\n\tpublic getState: typeof getState\n\tpublic setState: typeof setState\n\tpublic disposeState: typeof disposeState\n\tpublic subscribe: typeof subscribe\n\tpublic undo: typeof undo\n\tpublic redo: typeof redo\n\tpublic runTransaction: typeof runTransaction\n\tpublic install: (tokens: AtomIOToken[], store?: Store) => void\n\n\tpublic constructor(config: Store[`config`], fromStore: Store | null = null) {\n\t\tconst s = (this.store = new Store(config, fromStore))\n\t\tthis.atom = ((options: Parameters<typeof atom>[0]) =>\n\t\t\tcreateStandaloneAtom(s, options)) as typeof atom\n\t\tthis.atomFamily = ((options: Parameters<typeof atomFamily>[0]) =>\n\t\t\tcreateAtomFamily(s, options)) as typeof atomFamily\n\t\tthis.selector = ((options: Parameters<typeof selector>[0]) =>\n\t\t\tcreateStandaloneSelector(s, options)) as typeof selector\n\t\tthis.selectorFamily = ((options: Parameters<typeof selectorFamily>[0]) =>\n\t\t\tcreateSelectorFamily(s, options)) as typeof selectorFamily\n\t\tthis.transaction = (options) => createTransaction(s, options)\n\t\tthis.timeline = (options) => createTimeline(s, options)\n\t\tthis.findState = ((...params: Parameters<typeof findState>) =>\n\t\t\tfindInStore(s, ...params)) as typeof findState\n\t\tthis.getState = ((...params: Parameters<typeof getState>) =>\n\t\t\tgetFromStore(s, ...params)) as typeof getState\n\t\tthis.setState = ((...params: Parameters<typeof setState>) => {\n\t\t\tsetIntoStore(s, ...params)\n\t\t}) as typeof setState\n\t\tthis.disposeState = ((...params: Parameters<typeof disposeState>) => {\n\t\t\tdisposeFromStore(s, ...params)\n\t\t}) as typeof disposeState\n\t\tthis.subscribe = ((...params: Parameters<typeof subscribe>) =>\n\t\t\tsubscribeInStore(s, ...params)) as typeof subscribe\n\t\tthis.undo = (token) => {\n\t\t\ttimeTravel(s, `undo`, token)\n\t\t}\n\t\tthis.redo = (token) => {\n\t\t\ttimeTravel(s, `redo`, token)\n\t\t}\n\t\tthis.runTransaction = (token, id = arbitrary()) => actUponStore(s, token, id)\n\t\tthis.install = (tokens, source = IMPLICIT.STORE) => {\n\t\t\tinstallIntoStore(tokens, s, source)\n\t\t}\n\t}\n}\n","import type { Flat, Func } from \"atom.io/internal\"\nimport { arbitrary, IMPLICIT, subscribeInStore } from \"atom.io/internal\"\n\nimport type {\n\tFamilyMetadata,\n\tReadableToken,\n\tTimelineManageable,\n\tTimelineToken,\n\tTimelineUpdate,\n\tTransactionToken,\n\tTransactionUpdate,\n} from \".\"\n\nexport type StateUpdate<T> = { newValue: T; oldValue: T }\nexport type KeyedStateUpdate<T> = Flat<\n\tStateUpdate<T> & {\n\t\tkey: string\n\t\ttype: `atom_update` | `selector_update`\n\t\tfamily?: FamilyMetadata\n\t}\n>\nexport type UpdateHandler<T> = (update: StateUpdate<T>) => void\n\nexport type TransactionUpdateHandler<F extends Func> = (\n\tdata: TransactionUpdate<F>,\n) => void\n\nexport function subscribe<T>(\n\ttoken: ReadableToken<T>,\n\thandleUpdate: UpdateHandler<T>,\n\tkey?: string,\n): () => void\nexport function subscribe<F extends Func>(\n\ttoken: TransactionToken<F>,\n\thandleUpdate: TransactionUpdateHandler<F>,\n\tkey?: string,\n): () => void\nexport function subscribe<M extends TimelineManageable>(\n\ttoken: TimelineToken<M>,\n\thandleUpdate: (update: TimelineUpdate<M> | `redo` | `undo`) => void,\n\tkey?: string,\n): () => void\nexport function subscribe(\n\ttoken: ReadableToken<any> | TimelineToken<any> | TransactionToken<any>,\n\thandleUpdate: (update: any) => void,\n\tkey: string = arbitrary(),\n): () => void {\n\treturn subscribeInStore(IMPLICIT.STORE, token, handleUpdate, key)\n}\n","import type {\n\tTimeline,\n\tTimelineAtomUpdate,\n\tTimelineMoleculeCreation,\n\tTimelineMoleculeDisposal,\n\tTimelineSelectorUpdate,\n\tTimelineStateCreation,\n\tTimelineStateDisposal,\n\tTimelineTransactionUpdate,\n} from \"atom.io/internal\"\nimport { createTimeline, IMPLICIT, timeTravel } from \"atom.io/internal\"\n\nimport type { AtomFamilyToken, AtomToken } from \".\"\n\nexport type TimelineManageable = AtomFamilyToken<any, any> | AtomToken<any>\nexport type AtomOnly<M extends TimelineManageable> = M extends AtomFamilyToken<\n\tany,\n\tany\n>\n\t? AtomToken<any>\n\t: M extends AtomToken<any>\n\t\t? M\n\t\t: never\n\nexport type TimelineToken<M> = {\n\tkey: string\n\ttype: `timeline`\n\t__M?: M\n}\n\nexport type TimelineOptions<ManagedAtom extends TimelineManageable> = {\n\tkey: string\n\tscope: ManagedAtom[]\n\tshouldCapture?: (\n\t\tupdate: TimelineUpdate<ManagedAtom>,\n\t\ttimeline: Timeline<TimelineManageable>,\n\t) => boolean\n}\n\nexport type TimelineUpdate<ManagedAtom extends TimelineManageable> =\n\t| TimelineAtomUpdate<ManagedAtom>\n\t| TimelineMoleculeCreation\n\t| TimelineMoleculeDisposal\n\t| TimelineSelectorUpdate<ManagedAtom>\n\t| TimelineStateCreation<AtomOnly<ManagedAtom>>\n\t| TimelineStateDisposal<AtomOnly<ManagedAtom>>\n\t| TimelineTransactionUpdate\n\nexport const timeline = <ManagedAtom extends TimelineManageable>(\n\toptions: TimelineOptions<ManagedAtom>,\n): TimelineToken<ManagedAtom> => {\n\treturn createTimeline(IMPLICIT.STORE, options)\n}\n\nexport const redo = (tl: TimelineToken<any>): void => {\n\ttimeTravel(IMPLICIT.STORE, `redo`, tl)\n}\n\nexport const undo = (tl: TimelineToken<any>): void => {\n\ttimeTravel(IMPLICIT.STORE, `undo`, tl)\n}\n","import type { findState, getState, setState } from \"atom.io\"\nimport type { EnvironmentData, Func, Transceiver } from \"atom.io/internal\"\nimport {\n\tactUponStore,\n\tarbitrary,\n\tcreateTransaction,\n\tIMPLICIT,\n} from \"atom.io/internal\"\nimport type { Canonical, Json, stringified } from \"atom.io/json\"\n\nimport type {\n\tdisposeState,\n\tKeyedStateUpdate,\n\tMutableAtomToken,\n\tReadableToken,\n\tTokenType,\n\tWritablePureSelectorToken,\n} from \".\"\n\nexport type TransactionToken<F extends Func> = {\n\tkey: string\n\ttype: `transaction`\n\t__F?: F\n}\n\nexport type StateCreation<Token extends ReadableToken<any>> = {\n\ttype: `state_creation`\n\ttoken: Token\n}\nexport type AtomDisposal<Token extends ReadableToken<any>> = {\n\ttype: `state_disposal`\n\tsubType: `atom`\n\ttoken: Token\n\tvalue: TokenType<Token>\n}\nexport type SelectorDisposal<Token extends ReadableToken<any>> = {\n\ttype: `state_disposal`\n\tsubType: `selector`\n\ttoken: Token\n}\nexport type StateDisposal<Token extends ReadableToken<any>> =\n\t| AtomDisposal<Token>\n\t| SelectorDisposal<Token>\n\nexport type MoleculeCreation = {\n\ttype: `molecule_creation`\n\tkey: Canonical\n\tprovenance: Canonical\n}\n\nexport type MoleculeDisposal = {\n\ttype: `molecule_disposal`\n\tkey: Canonical\n\tprovenance: stringified<Canonical>[]\n\tvalues: [key: string, value: any][]\n}\n\nexport type MoleculeTransfer = {\n\ttype: `molecule_transfer`\n\tkey: Canonical\n\tfrom: Canonical[]\n\tto: Canonical[]\n}\n\nexport type TransactionUpdateContent =\n\t| KeyedStateUpdate<unknown>\n\t| MoleculeCreation\n\t| MoleculeDisposal\n\t| MoleculeTransfer\n\t| StateCreation<ReadableToken<unknown>>\n\t| StateDisposal<ReadableToken<unknown>>\n\t| TransactionUpdate<Func>\n\nexport type TransactionUpdate<F extends Func> = {\n\ttype: `transaction_update`\n\tkey: string\n\tid: string\n\tepoch: number\n\tupdates: TransactionUpdateContent[]\n\tparams: Parameters<F>\n\toutput: ReturnType<F>\n}\n\nexport type GetterToolkit = Pick<SetterToolkit, `find` | `get` | `json`>\nexport type SetterToolkit = Readonly<{\n\tget: typeof getState\n\tset: typeof setState\n\tfind: typeof findState\n\tjson: <T extends Transceiver<any>, J extends Json.Serializable>(\n\t\tstate: MutableAtomToken<T, J>,\n\t) => WritablePureSelectorToken<J>\n}>\nexport type ActorToolkit = Readonly<{\n\tget: typeof getState\n\tset: typeof setState\n\tfind: typeof findState\n\tjson: <T extends Transceiver<any>, J extends Json.Serializable>(\n\t\tstate: MutableAtomToken<T, J>,\n\t) => WritablePureSelectorToken<J>\n\tdispose: typeof disposeState\n\trun: typeof runTransaction\n\tenv: () => EnvironmentData\n}>\n\nexport type Read<F extends Func> = (\n\ttoolkit: GetterToolkit,\n\t...parameters: Parameters<F>\n) => ReturnType<F>\n\nexport type Write<F extends Func> = (\n\ttoolkit: SetterToolkit,\n\t...parameters: Parameters<F>\n) => ReturnType<F>\n\nexport type Transact<F extends Func> = (\n\ttoolkit: ActorToolkit,\n\t...parameters: Parameters<F>\n) => ReturnType<F>\n\nexport type TransactionOptions<F extends Func> = {\n\tkey: string\n\tdo: Transact<F>\n}\n\nexport type TransactionIO<Token extends TransactionToken<any>> =\n\tToken extends TransactionToken<infer F> ? F : never\n\nexport function transaction<F extends Func>(\n\toptions: TransactionOptions<F>,\n): TransactionToken<F> {\n\treturn createTransaction(IMPLICIT.STORE, options)\n}\n\nexport function runTransaction<F extends Func>(\n\ttoken: TransactionToken<F>,\n\tid: string = arbitrary(),\n): (...parameters: Parameters<F>) => ReturnType<F> {\n\treturn actUponStore(IMPLICIT.STORE, token, id)\n}\n","import type {\n\tMutableAtomFamilyToken,\n\tMutableAtomToken,\n\tReadableFamilyToken,\n\tReadableToken,\n\tReadonlyPureSelectorFamilyToken,\n\tReadonlyPureSelectorToken,\n\tRegularAtomFamilyToken,\n\tRegularAtomToken,\n\tWritableFamilyToken,\n\tWritablePureSelectorFamilyToken,\n\tWritablePureSelectorToken,\n\tWritableToken,\n} from \"atom.io\"\n\nexport type TokenType<\n\tComparison extends ReadableFamilyToken<any, any> | ReadableToken<any>,\n> = Comparison extends ReadableToken<infer RepresentedValue>\n\t? RepresentedValue\n\t: Comparison extends ReadableFamilyToken<infer RepresentedValue, any>\n\t\t? RepresentedValue\n\t\t: never\n\nexport function isToken<KnownToken extends RegularAtomToken<any>>(\n\tknownToken: KnownToken,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is RegularAtomToken<TokenType<KnownToken>>\nexport function isToken<KnownToken extends MutableAtomToken<any, any>>(\n\tknownToken: KnownToken,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is MutableAtomToken<TokenType<KnownToken>, any>\nexport function isToken<KnownToken extends WritablePureSelectorToken<any>>(\n\tknownToken: KnownToken,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is WritablePureSelectorToken<TokenType<KnownToken>>\nexport function isToken<KnownToken extends ReadonlyPureSelectorToken<any>>(\n\tknownToken: KnownToken,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is ReadonlyPureSelectorToken<TokenType<KnownToken>>\nexport function isToken<KnownToken extends WritableToken<any>>(\n\tknownToken: KnownToken,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is WritableToken<TokenType<KnownToken>>\nexport function isToken<KnownToken extends ReadableToken<any>>(\n\tknownToken: KnownToken,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is ReadableToken<TokenType<KnownToken>>\nexport function isToken<KnownToken extends ReadableToken<any>>(\n\tknownToken: KnownToken,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is ReadableToken<TokenType<KnownToken>> {\n\treturn knownToken.key === unknownToken.key\n}\n\nexport function belongsTo<Family extends RegularAtomFamilyToken<any, any>>(\n\tfamily: Family,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is RegularAtomToken<TokenType<Family>>\nexport function belongsTo<Family extends MutableAtomFamilyToken<any, any, any>>(\n\tfamily: Family,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is MutableAtomToken<TokenType<Family>, any>\nexport function belongsTo<\n\tFamily extends WritablePureSelectorFamilyToken<any, any>,\n>(\n\tfamily: Family,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is WritablePureSelectorToken<TokenType<Family>>\nexport function belongsTo<\n\tFamily extends ReadonlyPureSelectorFamilyToken<any, any>,\n>(\n\tfamily: Family,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is ReadonlyPureSelectorToken<TokenType<Family>>\nexport function belongsTo<Family extends WritableFamilyToken<any, any>>(\n\tfamily: Family,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is WritableToken<TokenType<Family>>\nexport function belongsTo<Family extends ReadableFamilyToken<any, any>>(\n\tfamily: Family,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is ReadableToken<TokenType<Family>>\nexport function belongsTo<Family extends ReadableFamilyToken<any, any>>(\n\tfamily: Family,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is ReadableToken<TokenType<Family>> {\n\treturn family.key === unknownToken.family?.key\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["options: MutableAtomOptions<any, any> | RegularAtomOptions<any>","options:\n\t\t| MutableAtomFamilyOptions<any, any, any>\n\t\t| RegularAtomFamilyOptions<T, K>","token: ReadableFamilyToken<any, any>","key: Json.Serializable","options: JoinOptions<ASide, AType, BSide, BType, Cardinality, Content>","defaultContent: Content | undefined","store: Store","token: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>","key: AType | BType","change: (relations: Junction<ASide, AType, BSide, BType, Content>) => void","logLevel: keyof Logger","simpleLogger: Logger","logLevel: `error` | `info` | `warn` | null","filter?: LogFilter","logger: Logger","$claim: unique symbol","store: Store","provenance: A","key: V","attachmentStyle?: `all` | `any`","type: T","reagentA: SingularTypedKey<A>","reagentB: SingularTypedKey<B>","claim: Claim<V>","newProvenance: A","exclusive?: `exclusive`","provenance: Canonical","key: Canonical","newProvenance: Canonical","options:\n\t\t| ReadonlyHeldSelectorOptions<any>\n\t\t| ReadonlyPureSelectorOptions<any>\n\t\t| WritableHeldSelectorOptions<any>\n\t\t| WritablePureSelectorOptions<any>","options:\n\t\t| ReadonlyHeldSelectorFamilyOptions<any, any>\n\t\t| ReadonlyPureSelectorFamilyOptions<any, any>\n\t\t| WritableHeldSelectorFamilyOptions<any, any>\n\t\t| WritablePureSelectorFamilyOptions<any, any>","config: Store[`config`]","fromStore: Store | null","options: Parameters<typeof atom>[0]","options: Parameters<typeof atomFamily>[0]","options: Parameters<typeof selector>[0]","options: Parameters<typeof selectorFamily>[0]","token: ReadableToken<any> | TimelineToken<any> | TransactionToken<any>","handleUpdate: (update: any) => void","key: string","options: TimelineOptions<ManagedAtom>","tl: TimelineToken<any>","options: TransactionOptions<F>","token: TransactionToken<F>","id: string","knownToken: KnownToken","unknownToken: ReadableToken<any>","family: Family"],"sources":["../../src/main/atom.ts","../../src/main/dispose-state.ts","../../src/main/find-state.ts","../../src/main/get-state.ts","../../src/main/join.ts","../../src/main/logger.ts","../../src/main/realm.ts","../../src/main/selector.ts","../../src/main/set-state.ts","../../src/main/silo.ts","../../src/main/subscribe.ts","../../src/main/timeline.ts","../../src/main/transaction.ts","../../src/main/validators.ts"],"sourcesContent":["import type { Transceiver } from \"atom.io/internal\"\nimport {\n\tcreateAtomFamily,\n\tcreateStandaloneAtom,\n\tIMPLICIT,\n} from \"atom.io/internal\"\nimport type { Canonical, Json, JsonInterface } from \"atom.io/json\"\n\nimport type { AtomToken, MutableAtomToken, RegularAtomToken, Setter } from \".\"\n\n/**\n * @public\n * Create a mutable atom, a global reactive variable in the implicit store\n *\n * The value of a mutable atom must be some kind of {@link Transceiver}.\n *\n * @param options - {@link MutableAtomOptions}.\n * @returns\n * A reference to the atom created: a {@link MutableAtomToken}\n * @overload Mutable\n */\nexport function atom<T extends Transceiver<any>, J extends Json.Serializable>(\n\toptions: MutableAtomOptions<T, J>,\n): MutableAtomToken<T, J>\n\n/**\n * @public\n * Create a regular atom, a global reactive variable in the implicit store\n * @param options - {@link RegularAtomOptions}.\n * @returns\n * A reference to the atom created: a {@link RegularAtomToken}\n * @overload Regular\n */\nexport function atom<T>(options: RegularAtomOptions<T>): RegularAtomToken<T>\nexport function atom(\n\toptions: MutableAtomOptions<any, any> | RegularAtomOptions<any>,\n): AtomToken<any> {\n\treturn createStandaloneAtom(IMPLICIT.STORE, options)\n}\n\n/** @public */\nexport type Effectors<T> = {\n\t/**\n\t * Set the value of the atom\n\t * @param next - The new value of the atom, or a setter function\n\t */\n\tsetSelf: <New extends T>(next: New | Setter<T, New>) => void\n\t/** Subscribe to changes to the atom */\n\tonSet: (callback: (options: { newValue: T; oldValue: T }) => void) => void\n}\n\n/**\n * @public\n * A function that runs side effects when the atom is set\n * @param tools - {@link Effectors} that can be used to run side effects\n * @returns\n * Optionally, a cleanup function that will be called when the atom is disposed\n */\nexport type AtomEffect<T> = (tools: Effectors<T>) => (() => void) | void\n\n/** @public */\nexport type RegularAtomOptions<T> = {\n\t/** The unique identifier of the atom */\n\tkey: string\n\t/** The starting value of the atom */\n\tdefault: T | (() => T)\n\t/** Hooks used to run side effects when the atom is set */\n\teffects?: AtomEffect<T>[]\n}\n// biome-ignore format: complex intersection\nexport type MutableAtomOptions<T extends Transceiver<any>, J extends Json.Serializable> = \n\t& JsonInterface<T, J>\n\t& Omit<RegularAtomOptions<T>, `default`> \n\t& { \n\t\t\tdefault: ()\t=> T\n\t\t\tmutable: true\n\t\t}\n\n/** @public */\nexport type RegularAtomFamilyOptions<T, K extends Canonical> = {\n\t/** The unique identifier of the atom family */\n\tkey: string\n\t/** The starting value of the atom family */\n\tdefault: T | ((key: K) => T)\n\t/** Hooks used to run side effects when an atom in the family is set */\n\teffects?: (key: K) => AtomEffect<T>[]\n}\n\nexport type RegularAtomFamilyToken<T, K extends Canonical> = {\n\tkey: string\n\ttype: `atom_family`\n\t__T?: T\n\t__K?: K\n}\n\n// biome-ignore format: intersection\nexport type MutableAtomFamilyOptions<\n\tT extends Transceiver<any>,\n\tJ extends Json.Serializable,\n\tK extends Canonical,\n> = \n\t& JsonInterface<T, J>\n\t& { \n\t\tkey: string\n\t\tdefault: (key: K) => T\n\t\teffects?: (key: K) => AtomEffect<T>[]\n\t\tmutable: true,\n\t}\n\nexport type MutableAtomFamilyToken<\n\tT extends Transceiver<any>,\n\tJ extends Json.Serializable,\n\tK extends Canonical,\n> = {\n\tkey: string\n\ttype: `mutable_atom_family`\n\t__T?: T\n\t__J?: J\n\t__K?: K\n}\n\nexport type AtomFamilyToken<T, K extends Canonical = Canonical> =\n\t| MutableAtomFamilyToken<T extends Transceiver<any> ? T : never, any, K>\n\t| RegularAtomFamilyToken<T, K>\n\nexport function atomFamily<\n\tT extends Transceiver<any>,\n\tJ extends Json.Serializable,\n\tK extends Canonical,\n>(options: MutableAtomFamilyOptions<T, J, K>): MutableAtomFamilyToken<T, J, K>\nexport function atomFamily<T, K extends Canonical>(\n\toptions: RegularAtomFamilyOptions<T, K>,\n): RegularAtomFamilyToken<T, K>\nexport function atomFamily<T, K extends Canonical>(\n\toptions:\n\t\t| MutableAtomFamilyOptions<any, any, any>\n\t\t| RegularAtomFamilyOptions<T, K>,\n): MutableAtomFamilyToken<any, any, any> | RegularAtomFamilyToken<T, K> {\n\treturn createAtomFamily(IMPLICIT.STORE, options)\n}\n","import * as Internal from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\n\nimport type { ReadableFamilyToken, ReadableToken } from \".\"\n\n/**\n * @public\n * Disposes of a state in the implicit store\n * @param token - The token of the state to dispose\n * @overload Default\n */\nexport function disposeState(token: ReadableToken<any>): void\n/**\n * @public\n * Disposes of a state family in the implicit store\n * @param token - The token of the state family to dispose\n * @param key - The unique key of the state to dispose\n */\nexport function disposeState<K extends Canonical>(\n\ttoken: ReadableFamilyToken<any, K>,\n\tkey: K,\n): void\nexport function disposeState(\n\t...[token, key]:\n\t\t| [token: ReadableFamilyToken<any, any>, key: Canonical]\n\t\t| [token: ReadableToken<any>]\n): void {\n\tif (key) {\n\t\tInternal.disposeFromStore(Internal.IMPLICIT.STORE, token as any, key)\n\t} else {\n\t\tInternal.disposeFromStore(Internal.IMPLICIT.STORE, token as any)\n\t}\n}\n","import type {\n\tMutableAtomFamilyToken,\n\tMutableAtomToken,\n\tReadableFamilyToken,\n\tReadableToken,\n\tReadonlyPureSelectorFamilyToken,\n\tReadonlyPureSelectorToken,\n\tRegularAtomFamilyToken,\n\tRegularAtomToken,\n\tWritableFamilyToken,\n\tWritablePureSelectorFamilyToken,\n\tWritablePureSelectorToken,\n\tWritableToken,\n} from \"atom.io\"\nimport type { Transceiver } from \"atom.io/internal\"\nimport { findInStore, IMPLICIT } from \"atom.io/internal\"\nimport type { Canonical, Json } from \"atom.io/json\"\n\n/**\n * @public\n * Finds a {@link MutableAtomToken} in the store\n * @param token - A {@link MutableAtomFamilyToken}\n * @param key - The key of the state\n * @returns\n * The current value of the state\n * @overload Mutable Atom\n */\nexport function findState<\n\tT extends Transceiver<any>,\n\tJ extends Json.Serializable,\n\tK extends Canonical,\n\tKey extends K,\n>(token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J, K>\n/**\n * @public\n * Finds a state in the store\n * @param token - The token of the state family\n * @param key - The key of the state\n * @returns\n * The current value of the state\n * @overload Regular Atom\n */\nexport function findState<T, K extends Canonical, Key extends K>(\n\ttoken: RegularAtomFamilyToken<T, K>,\n\tkey: Key,\n): RegularAtomToken<T, K>\n/**\n * @public\n * Finds a state in the store\n * @param token - The token of the state family\n * @param key - The key of the state\n * @returns\n * The current value of the state\n * @overload Writable Selector\n */\nexport function findState<T, K extends Canonical, Key extends K>(\n\ttoken: WritablePureSelectorFamilyToken<T, K>,\n\tkey: Key,\n): WritablePureSelectorToken<T, K>\n/**\n * @public\n * Finds a state in the store\n * @param token - The token of the state family\n * @param key - The key of the state\n * @returns\n * The current value of the state\n * @overload Readonly Selector\n */\nexport function findState<T, K extends Canonical, Key extends K>(\n\ttoken: ReadonlyPureSelectorFamilyToken<T, K>,\n\tkey: Key,\n): ReadonlyPureSelectorToken<T, K>\n/**\n * @public\n * Finds a state in the store\n * @param token - The token of the state family\n * @param key - The key of the state\n * @returns\n * The current value of the state\n * @overload Writable State\n */\nexport function findState<T, K extends Canonical, Key extends K>(\n\ttoken: WritableFamilyToken<T, K>,\n\tkey: Key,\n): WritableToken<T, K>\n/**\n * @public\n * Finds a {@link ReadableToken} in the store\n * @param token - A {@link ReadableFamilyToken}\n * @param key - The key of the state\n * @returns\n * The current value of the state\n * @overload Unknown\n * @default\n */\nexport function findState<T, K extends Canonical, Key extends K>(\n\ttoken: ReadableFamilyToken<T, K>,\n\tkey: Key,\n): ReadableToken<T, K>\n\nexport function findState(\n\ttoken: ReadableFamilyToken<any, any>,\n\tkey: Json.Serializable,\n): ReadableToken<any> {\n\tconst state = findInStore(IMPLICIT.STORE, token, key)\n\treturn state\n}\n","import * as Internal from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\n\nimport type { ReadableFamilyToken, ReadableToken } from \".\"\n\n/**\n * @public\n * Get the current value of a state\n * @param token - The token of the state to get\n * @return The current value of the state\n * @overload Default\n * @default\n */\nexport function getState<T>(token: ReadableToken<T>): T\n\n/**\n * @public\n * Get the current value of a state family\n * @param token - The token of a state family\n * @param key - The unique key of the state to get\n * @return The current value of the state\n * @overload Streamlined\n */\nexport function getState<T, K extends Canonical, Key extends K>(\n\ttoken: ReadableFamilyToken<T, K>,\n\tkey: Key,\n): T\n\nexport function getState(\n\t...params:\n\t\t| [token: ReadableFamilyToken<any, any>, key: Canonical]\n\t\t| [token: ReadableToken<any>]\n): any {\n\tif (params.length === 2) {\n\t\treturn Internal.getFromStore(Internal.IMPLICIT.STORE, ...params)\n\t}\n\treturn Internal.getFromStore(Internal.IMPLICIT.STORE, ...params)\n}\n","import type { MutableAtomFamilyToken, ReadonlyPureSelectorToken } from \"atom.io\"\nimport type {\n\tJunction,\n\tJunctionEntriesBase,\n\tJunctionSchemaBase,\n\tRefinement,\n\tStore,\n} from \"atom.io/internal\"\nimport {\n\teditRelationsInStore,\n\tfindRelationsInStore,\n\tgetInternalRelationsFromStore,\n\tIMPLICIT,\n\tJoin,\n} from \"atom.io/internal\"\nimport type { Json } from \"atom.io/json\"\nimport type { SetRTX, SetRTXJson } from \"atom.io/transceivers/set-rtx\"\n\nexport interface JoinOptions<\n\tASide extends string,\n\tAType extends string,\n\tBSide extends string,\n\tBType extends string,\n\tCardinality extends `1:1` | `1:n` | `n:n`,\n\tContent extends Json.Object | null,\n> extends JunctionSchemaBase<ASide, BSide>,\n\t\tPartial<JunctionEntriesBase<AType, BType, Content>> {\n\treadonly key: string\n\treadonly cardinality: Cardinality\n\treadonly isAType: Refinement<string, AType>\n\treadonly isBType: Refinement<string, BType>\n}\n\nexport type JoinToken<\n\tASide extends string,\n\tAType extends string,\n\tBSide extends string,\n\tBType extends string,\n\tCardinality extends `1:1` | `1:n` | `n:n`,\n\tContent extends Json.Object | null = null,\n> = {\n\tkey: string\n\ttype: `join`\n\tcardinality: Cardinality\n\ta: ASide\n\tb: BSide\n\t__aType?: AType\n\t__bType?: BType\n\t__content?: Content\n}\n\nexport function join<\n\tconst ASide extends string,\n\tconst AType extends string,\n\tconst BSide extends string,\n\tconst BType extends string,\n\tconst Cardinality extends `1:1` | `1:n` | `n:n`,\n>(\n\toptions: JoinOptions<ASide, AType, BSide, BType, Cardinality, null>,\n\tdefaultContent?: undefined,\n\tstore?: Store,\n): JoinToken<ASide, AType, BSide, BType, Cardinality, null>\nexport function join<\n\tconst ASide extends string,\n\tconst AType extends string,\n\tconst BSide extends string,\n\tconst BType extends string,\n\tconst Cardinality extends `1:1` | `1:n` | `n:n`,\n\tconst Content extends Json.Object,\n>(\n\toptions: JoinOptions<ASide, AType, BSide, BType, Cardinality, Content>,\n\tdefaultContent: Content,\n\tstore?: Store,\n): JoinToken<ASide, AType, BSide, BType, Cardinality, Content>\nexport function join<\n\tASide extends string,\n\tAType extends string,\n\tBSide extends string,\n\tBType extends string,\n\tCardinality extends `1:1` | `1:n` | `n:n`,\n\tContent extends Json.Object,\n>(\n\toptions: JoinOptions<ASide, AType, BSide, BType, Cardinality, Content>,\n\tdefaultContent: Content | undefined,\n\tstore: Store = IMPLICIT.STORE,\n): JoinToken<ASide, AType, BSide, BType, Cardinality, Content> {\n\tstore.joins.set(options.key, new Join(options, defaultContent, store))\n\tconst token: JoinToken<ASide, AType, BSide, BType, Cardinality, Content> = {\n\t\tkey: options.key,\n\t\ttype: `join`,\n\t\ta: options.between[0],\n\t\tb: options.between[1],\n\t\tcardinality: options.cardinality,\n\t}\n\treturn token\n}\n\nexport type JoinStates<\n\tASide extends string,\n\tAType extends string,\n\tBSide extends string,\n\tBType extends string,\n\tCardinality extends `1:1` | `1:n` | `n:n`,\n\tContent extends Json.Object | null,\n> = Cardinality extends `1:1`\n\t? (Content extends Json.Object\n\t\t\t? {\n\t\t\t\t\treadonly [A in ASide as `${A}EntryOf${Capitalize<BSide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\t[AType, Content] | null,\n\t\t\t\t\t\tBType\n\t\t\t\t\t>\n\t\t\t\t} & {\n\t\t\t\t\treadonly [B in BSide as `${B}EntryOf${Capitalize<ASide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\t[BType, Content] | null,\n\t\t\t\t\t\tAType\n\t\t\t\t\t>\n\t\t\t\t}\n\t\t\t: {}) & {\n\t\t\treadonly [A in ASide as `${A}KeyOf${Capitalize<BSide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\tAType | null,\n\t\t\t\tBType\n\t\t\t>\n\t\t} & {\n\t\t\treadonly [B in BSide as `${B}KeyOf${Capitalize<ASide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\tBType | null,\n\t\t\t\tAType\n\t\t\t>\n\t\t}\n\t: Cardinality extends `1:n`\n\t\t? (Content extends Json.Object\n\t\t\t\t? {\n\t\t\t\t\t\treadonly [A in ASide as `${A}EntryOf${Capitalize<BSide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\t\t[AType, Content] | null,\n\t\t\t\t\t\t\tBType\n\t\t\t\t\t\t>\n\t\t\t\t\t} & {\n\t\t\t\t\t\treadonly [B in BSide as `${B}EntriesOf${Capitalize<ASide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\t\t[BType, Content][],\n\t\t\t\t\t\t\tAType\n\t\t\t\t\t\t>\n\t\t\t\t\t}\n\t\t\t\t: {}) & {\n\t\t\t\treadonly [A in ASide as `${A}KeyOf${Capitalize<BSide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\tAType | null,\n\t\t\t\t\tBType\n\t\t\t\t>\n\t\t\t} & {\n\t\t\t\treadonly [B in BSide as `${B}KeysOf${Capitalize<ASide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\tBType[],\n\t\t\t\t\tAType\n\t\t\t\t>\n\t\t\t}\n\t\t: Cardinality extends `n:n`\n\t\t\t? (Content extends Json.Object\n\t\t\t\t\t? {\n\t\t\t\t\t\t\treadonly [A in ASide as `${A}EntriesOf${Capitalize<BSide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\t\t\t[AType, Content][],\n\t\t\t\t\t\t\t\tBType\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t} & {\n\t\t\t\t\t\t\treadonly [B in BSide as `${B}EntriesOf${Capitalize<ASide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\t\t\t[BType, Content][],\n\t\t\t\t\t\t\t\tAType\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\treadonly [A in ASide as `${A}KeysOf${Capitalize<BSide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\tAType[],\n\t\t\t\t\t\tBType\n\t\t\t\t\t>\n\t\t\t\t} & {\n\t\t\t\t\treadonly [B in BSide as `${B}KeysOf${Capitalize<ASide>}`]: ReadonlyPureSelectorToken<\n\t\t\t\t\t\tBType[],\n\t\t\t\t\t\tAType\n\t\t\t\t\t>\n\t\t\t\t}\n\t\t\t: never\n\nexport function findRelations<\n\tASide extends string,\n\tAType extends string,\n\tBSide extends string,\n\tBType extends string,\n\tCardinality extends `1:1` | `1:n` | `n:n`,\n\tContent extends Json.Object | null,\n>(\n\ttoken: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>,\n\tkey: AType | BType,\n): JoinStates<ASide, AType, BSide, BType, Cardinality, Content> {\n\treturn findRelationsInStore(token, key, IMPLICIT.STORE)\n}\n\nexport function editRelations<\n\tASide extends string,\n\tAType extends string,\n\tBSide extends string,\n\tBType extends string,\n\tCardinality extends `1:1` | `1:n` | `n:n`,\n\tContent extends Json.Object | null,\n>(\n\ttoken: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>,\n\tchange: (relations: Junction<ASide, AType, BSide, BType, Content>) => void,\n): void {\n\teditRelationsInStore(token, change, IMPLICIT.STORE)\n}\n\nexport function getInternalRelations<\n\tASide extends string,\n\tAType extends string,\n\tBSide extends string,\n\tBType extends string,\n\tCardinality extends `1:1` | `1:n` | `n:n`,\n\tContent extends Json.Object | null,\n>(\n\ttoken: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>,\n): MutableAtomFamilyToken<SetRTX<string>, SetRTXJson<string>, string> {\n\treturn getInternalRelationsFromStore(token, IMPLICIT.STORE)\n}\n","const LOGGER_ICON_DICTIONARY = {\n\t\"⌛\": `Timeline event fully captured`,\n\t\"⏩\": `Timeline redo`,\n\t\"⏪\": `Timeline undo`,\n\t\"⏭️\": `Transaction redo`,\n\t\"⏮️\": `Transaction undo`,\n\t\"⏳\": `Timeline event partially captured`,\n\t\"⏹️\": `Time-travel complete`,\n\t\"✅\": `Realtime transaction success`,\n\t\"✨\": `Computation complete`,\n\t\"❌\": `Conflict prevents attempted action`,\n\t\"⭕\": `Operation start`,\n\t\"🔴\": `Operation complete`,\n\t\"❗\": `Operation blocked`,\n\t\"🟢\": `Operation unblocked`,\n\t\"🐞\": `Possible bug in AtomIO`,\n\t\"👀\": `Subscription added`,\n\t\"👋\": `Greeting`,\n\t\"👍\": `Realtime acknowledgment`,\n\t\"👪\": `Family member added`,\n\t\"💁\": `Notice`,\n\t\"💥\": `Caught`,\n\t\"📁\": `Stow update`,\n\t\"📃\": `Copy mutable`,\n\t\"📖\": `Read state`,\n\t\"📝\": `Write state`,\n\t\"📢\": `Notify subscribers`,\n\t\"🔄\": `Realtime transaction synchronized`,\n\t\"🔌\": `Register dependency`,\n\t\"🔍\": `Discover root`,\n\t\"🔥\": `Delete state`,\n\t\"🔧\": `Create mutable atom`,\n\t\"🔨\": `Create immutable atom`,\n\n\t\"🗑\": `Evict cached value`,\n\t\"🙈\": `Subscription canceled`,\n\t\"🚀\": `Performance measure`,\n\t\"🛄\": `Apply transaction`,\n\t\"🛠️\": `Install atom into store`,\n\t\"🛫\": `Begin transaction`,\n\t\"🛬\": `Complete transaction`,\n\t\"🧮\": `Computing selector`,\n\t\"🧹\": `Prepare to evict`,\n\t\"🪂\": `Abort transaction`,\n\t\"🤞\": `Realtime optimistic update enqueued`,\n\t\"👈\": `Realtime confirmed update enqueued`,\n\t\"🧑⚖️\": `Realtime update beginning reconciliation`,\n\t\"🛎️\": `Realtime transaction received`,\n\t\"🔭\": `Determining realtime perspective`,\n\t\"🖌\": `Redacting realtime update`,\n\t\"👁\": `Determining perspective`,\n} as const\nexport type LoggerIcon = keyof typeof LOGGER_ICON_DICTIONARY\nexport type TokenDenomination =\n\t| `atom_family`\n\t| `atom`\n\t| `continuity`\n\t| `molecule_family`\n\t| `molecule`\n\t| `mutable_atom_family`\n\t| `mutable_atom`\n\t| `readonly_held_selector_family`\n\t| `readonly_held_selector`\n\t| `readonly_pure_selector_family`\n\t| `readonly_pure_selector`\n\t| `state`\n\t| `timeline`\n\t| `transaction`\n\t| `unknown`\n\t| `writable_held_selector_family`\n\t| `writable_held_selector`\n\t| `writable_pure_selector_family`\n\t| `writable_pure_selector`\n\nexport const LOG_LEVELS = [`info`, `warn`, `error`] as const\nexport type LogLevel = (typeof LOG_LEVELS)[number]\n\nexport type LogFn = (\n\ticon: LoggerIcon,\n\tdenomination: TokenDenomination,\n\ttokenKey: string,\n\tmessage: string,\n\t...rest: unknown[]\n) => void\nexport type LogFilter = (\n\t...params: Parameters<LogFn>\n) => Parameters<LogFn> | boolean\n\nexport type Logger = Record<LogLevel, LogFn>\n\nexport const simpleLog =\n\t(logLevel: keyof Logger): LogFn =>\n\t(icon, denomination, tokenKey, message, ...rest) => {\n\t\t/* eslint-disable-next-line no-console */\n\t\tconsole[logLevel](\n\t\t\t`${icon} ${denomination} \"${tokenKey}\" ${message}`,\n\t\t\t...rest,\n\t\t)\n\t}\nexport const simpleLogger: Logger = {\n\terror: simpleLog(`error`),\n\tinfo: simpleLog(`info`),\n\twarn: simpleLog(`warn`),\n}\n\nexport class AtomIOLogger implements Logger {\n\tpublic logLevel: `error` | `info` | `warn` | null\n\tprivate readonly filter: LogFilter | undefined\n\tprivate readonly logger: Logger\n\n\tpublic constructor(\n\t\tlogLevel: `error` | `info` | `warn` | null,\n\t\tfilter?: LogFilter,\n\t\tlogger: Logger = simpleLogger,\n\t) {\n\t\tthis.logLevel = logLevel\n\t\tthis.filter = filter\n\t\tthis.logger = logger\n\t}\n\n\tpublic error: LogFn = (...args) => {\n\t\tconst filterResult = this.filter?.(...args) ?? true\n\t\tif (this.logLevel !== null) {\n\t\t\tif (filterResult === true) {\n\t\t\t\tthis.logger.error(...args)\n\t\t\t} else if (filterResult !== false) {\n\t\t\t\tthis.logger.error(...filterResult)\n\t\t\t}\n\t\t}\n\t}\n\tpublic info: LogFn = (...args) => {\n\t\tconst filterResult = this.filter?.(...args) ?? true\n\t\tif (this.logLevel === `info`) {\n\t\t\tif (filterResult === true) {\n\t\t\t\tthis.logger.info(...args)\n\t\t\t} else if (filterResult !== false) {\n\t\t\t\tthis.logger.info(...filterResult)\n\t\t\t}\n\t\t}\n\t}\n\tpublic warn: LogFn = (...args) => {\n\t\tconst filterResult = this.filter?.(...args) ?? true\n\t\tif (this.logLevel !== `error` && this.logLevel !== null) {\n\t\t\tif (filterResult === true) {\n\t\t\t\tthis.logger.warn(...args)\n\t\t\t} else if (filterResult !== false) {\n\t\t\t\tthis.logger.warn(...filterResult)\n\t\t\t}\n\t\t}\n\t}\n}\n","import type { Each, Store } from \"atom.io/internal\"\nimport {\n\tallocateIntoStore,\n\tclaimWithinStore,\n\tdeallocateFromStore,\n\tfuseWithinStore,\n\tIMPLICIT,\n\tmakeRootMoleculeInStore,\n} from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\n\nexport const $claim: unique symbol = Symbol.for(`claim`)\nexport type Claim<K extends Canonical> = K & { [$claim]?: true }\n\nexport class Realm<H extends Hierarchy> {\n\tpublic store: Store\n\tpublic constructor(store: Store = IMPLICIT.STORE) {\n\t\tthis.store = store\n\t\tmakeRootMoleculeInStore(`root`, store)\n\t}\n\tpublic allocate<V extends Vassal<H>, A extends Above<V, H>>(\n\t\tprovenance: A,\n\t\tkey: V,\n\t\tattachmentStyle?: `all` | `any`,\n\t): Claim<V> {\n\t\treturn allocateIntoStore<H, V, A>(\n\t\t\tthis.store,\n\t\t\tprovenance,\n\t\t\tkey,\n\t\t\tattachmentStyle,\n\t\t)\n\t}\n\tpublic fuse<\n\t\tC extends CompoundFrom<H>,\n\t\tT extends C extends CompoundTypedKey<infer t, any, any> ? t : never,\n\t\tA extends C extends CompoundTypedKey<any, infer v, any> ? v : never,\n\t\tB extends C extends CompoundTypedKey<any, any, infer m> ? m : never,\n\t>(\n\t\ttype: T,\n\t\treagentA: SingularTypedKey<A>,\n\t\treagentB: SingularTypedKey<B>,\n\t): Claim<CompoundTypedKey<T, A, B>> {\n\t\treturn fuseWithinStore<H, C, T, A, B>(this.store, type, reagentA, reagentB)\n\t}\n\n\tpublic deallocate<V extends Vassal<H>>(claim: Claim<V>): void {\n\t\tdeallocateFromStore<H, V>(this.store, claim)\n\t}\n\tpublic claim<\n\t\tV extends Exclude<Vassal<H>, CompoundTypedKey>,\n\t\tA extends Above<V, H>,\n\t>(newProvenance: A, claim: Claim<V>, exclusive?: `exclusive`): Claim<V> {\n\t\treturn claimWithinStore<H, V, A>(this.store, newProvenance, claim, exclusive)\n\t}\n}\n\nexport class Anarchy {\n\tpublic store: Store\n\tpublic realm: Realm<any>\n\n\tpublic constructor(store: Store = IMPLICIT.STORE) {\n\t\tthis.store = store\n\t\tthis.realm = new Realm(store)\n\t}\n\n\tpublic allocate(\n\t\tprovenance: Canonical,\n\t\tkey: Canonical,\n\t\tattachmentStyle?: `all` | `any`,\n\t): void {\n\t\tallocateIntoStore<any, any, any>(\n\t\t\tthis.store,\n\t\t\tprovenance,\n\t\t\tkey,\n\t\t\tattachmentStyle,\n\t\t)\n\t}\n\n\tpublic deallocate(key: Canonical): void {\n\t\tdeallocateFromStore<any, any>(this.store, key)\n\t}\n\n\tpublic claim(\n\t\tnewProvenance: Canonical,\n\t\tkey: Canonical,\n\t\texclusive?: `exclusive`,\n\t): void {\n\t\tclaimWithinStore<any, any, any>(this.store, newProvenance, key, exclusive)\n\t}\n}\n\nexport const T$ = `T$`\nexport type T$ = typeof T$\nexport type TypeTag<T extends string> = `${T$}--${T}`\nexport type SingularTypedKey<T extends string = string> = `${T}::${string}`\nexport type CompoundTypedKey<\n\tA extends string = string,\n\tB extends string = string,\n\tC extends string = string,\n> = `${TypeTag<A>}==${SingularTypedKey<B>}++${SingularTypedKey<C>}`\nexport type TypedKey<\n\tA extends string = string,\n\tB extends string = string,\n\tC extends string = string,\n> = CompoundTypedKey<A, B, C> | SingularTypedKey<A>\ntype Scope = SingularTypedKey[]\ntype MutualFealty = {\n\tabove: Scope\n\tbelow: CompoundTypedKey\n}\ntype ExclusiveFealty = {\n\tabove: TypedKey | `root`\n\tbelow: Scope\n}\ntype Fealty = ExclusiveFealty | MutualFealty\n\nexport type Hierarchy<F extends Fealty[] = Fealty[]> = Each<F>\n\nexport type Vassal<H extends Hierarchy> = {\n\t[K in keyof H]: H[K] extends MutualFealty\n\t\t? H[K][`below`]\n\t\t: H[K] extends { below: Array<infer V> }\n\t\t\t? V extends TypedKey\n\t\t\t\t? V\n\t\t\t\t: never\n\t\t\t: never\n}[keyof H]\n\nexport type Above<TK extends TypedKey, H extends Hierarchy> = {\n\t[K in keyof H]: H[K] extends MutualFealty\n\t\t? TK extends H[K][`below`]\n\t\t\t? H[K][`above`]\n\t\t\t: never\n\t\t: H[K] extends { below: Array<infer V> }\n\t\t\t? TK extends V\n\t\t\t\t? H[K] extends ExclusiveFealty\n\t\t\t\t\t? H[K][`above`]\n\t\t\t\t\t: never\n\t\t\t\t: never\n\t\t\t: never\n}[keyof H]\n\nexport type Below<TK extends TypedKey | TypedKey[], H extends Hierarchy> = {\n\t[K in keyof H]: H[K] extends MutualFealty\n\t\t? TK extends H[K][`above`]\n\t\t\t? H[K][`below`]\n\t\t\t: TK extends H[K][`above`][number]\n\t\t\t\t? H[K][`below`]\n\t\t\t\t: never\n\t\t: H[K] extends { above: infer V }\n\t\t\t? TK extends V\n\t\t\t\t? H[K] extends ExclusiveFealty\n\t\t\t\t\t? H[K][`below`][number]\n\t\t\t\t\t: never\n\t\t\t\t: never\n\t\t\t: never\n}[keyof H]\n\nexport type Mutuals<TK extends TypedKey | TypedKey[], H extends Hierarchy> = {\n\t[K in keyof H]: H[K] extends MutualFealty\n\t\t? TK extends H[K][`above`][number]\n\t\t\t? [mutual: Exclude<H[K][`above`][number], TK>, below: H[K][`below`]]\n\t\t\t: never\n\t\t: never\n}[keyof H]\n\nexport type CompoundFrom<H extends Hierarchy> = {\n\t[K in keyof H]: H[K] extends MutualFealty ? H[K][`below`] : never\n}[keyof H]\n","import {\n\tcreateSelectorFamily,\n\tcreateStandaloneSelector,\n\tIMPLICIT,\n} from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\n\nimport type {\n\tReadonlyHeldSelectorToken,\n\tReadonlyPureSelectorToken,\n\tWritableHeldSelectorToken,\n\tWritablePureSelectorToken,\n} from \".\"\nimport type { Read, Write } from \"./transaction\"\n\nexport type WritablePureSelectorOptions<T> = {\n\tkey: string\n\tget: Read<() => T>\n\tset: Write<(newValue: T) => void>\n}\nexport type ReadonlyPureSelectorOptions<T> = {\n\tkey: string\n\tget: Read<() => T>\n}\nexport type ReadonlyHeldSelectorOptions<T extends object> = {\n\tkey: string\n\tconst: T\n\tget: Read<(permanent: T) => void>\n}\nexport type WritableHeldSelectorOptions<T extends object> = {\n\tkey: string\n\tconst: T\n\tget: Read<(permanent: T) => void>\n\tset: Write<(newValue: T) => void>\n}\n\n/**\n * @public\n * Declare a selector. The value of a selector should depend\n * on the value of atoms or other selectors in the store, and\n * should be recycled when a root atom of the selector is set.\n *\n * A held selector's value must be some object.\n * The reference to that object is permanent and will not be replaced.\n *\n * A writable selector can be \"set\" to a new value.\n * It is advised to set its dependencies to values\n * that would produce the new value of the selector.\n *\n * @param options - {@link WritableHeldSelectorOptions}.\n * @returns\n * The token for your selector.\n * @overload WritableHeld\n */\nexport function selector<T extends object>(\n\toptions: WritableHeldSelectorOptions<T>,\n): WritableHeldSelectorToken<T>\n\n/**\n * @public\n * Declare a selector. The value of a selector should depend\n * on the value of atoms or other selectors in the store,\n * and should be recycled when a root atom of the selector is set.\n *\n * A held selector's value must be some object.\n * The reference to that object is permanent and will not be replaced.\n *\n * A readonly selector can be \"gotten\" but not \"set\".\n *\n * @param options - {@link ReadonlyHeldSelectorOptions}.\n * @returns\n * The token for your selector.\n * @overload ReadonlyHeld\n */\nexport function selector<T extends object>(\n\toptions: ReadonlyHeldSelectorOptions<T>,\n): ReadonlyHeldSelectorToken<T>\n\n/**\n * @public\n * Declare a selector. The value of a selector should depend\n * on the value of atoms or other selectors in the store.\n *\n * A pure selector's current value is evicted from the store\n * in order to be garbage collected when a root atom of the selector is set.\n *\n * A writable selector can be \"set\" to a new value.\n * It is advised to set its dependencies to values\n * that would produce the new value of the selector.\n *\n * @param options - {@link TransientWritableSelectorOptions}.\n * @returns\n * The token for your selector.\n * @overload WritablePure\n */\nexport function selector<T>(\n\toptions: WritablePureSelectorOptions<T>,\n): WritablePureSelectorToken<T>\n\n/**\n * @public\n * Declare a selector. The value of a selector should depend\n * on the value of atoms or other selectors in the store.\n *\n * A pure selector's current value is evicted from the store\n * in order to be garbage collected when a root atom of the selector is set.\n *\n * A readonly selector can be \"gotten\" but not \"set\".\n *\n * @param options - {@link ReadonlyPureSelectorOptions}.\n * @returns\n * The token for your selector.\n * @overload ReadonlyPure\n */\nexport function selector<T>(\n\toptions: ReadonlyPureSelectorOptions<T>,\n): ReadonlyPureSelectorToken<T>\n\nexport function selector(\n\toptions:\n\t\t| ReadonlyHeldSelectorOptions<any>\n\t\t| ReadonlyPureSelectorOptions<any>\n\t\t| WritableHeldSelectorOptions<any>\n\t\t| WritablePureSelectorOptions<any>,\n):\n\t| ReadonlyHeldSelectorToken<any>\n\t| ReadonlyPureSelectorToken<any>\n\t| WritableHeldSelectorToken<any>\n\t| WritablePureSelectorToken<any> {\n\treturn createStandaloneSelector(IMPLICIT.STORE, options)\n}\n\nexport type WritablePureSelectorFamilyOptions<T, K extends Canonical> = {\n\tkey: string\n\tget: (key: K) => Read<() => T>\n\tset: (key: K) => Write<(newValue: T) => void>\n}\nexport type ReadonlyPureSelectorFamilyOptions<T, K extends Canonical> = {\n\tkey: string\n\tget: (key: K) => Read<() => T>\n}\nexport type WritableHeldSelectorFamilyOptions<\n\tT extends object,\n\tK extends Canonical,\n> = {\n\tkey: string\n\tconst: (key: K) => T\n\tget: (key: K) => Read<(permanent: T) => void>\n\tset: (key: K) => Write<(newValue: T) => void>\n}\nexport type ReadonlyHeldSelectorFamilyOptions<\n\tT extends object,\n\tK extends Canonical,\n> = {\n\tkey: string\n\tconst: (key: K) => T\n\tget: (key: K) => Read<(permanent: T) => void>\n}\n\nexport type WritablePureSelectorFamilyToken<T, K extends Canonical> = {\n\tkey: string\n\ttype: `writable_pure_selector_family`\n\t__T?: T\n\t__K?: K\n}\nexport type ReadonlyPureSelectorFamilyToken<T, K extends Canonical> = {\n\tkey: string\n\ttype: `readonly_pure_selector_family`\n\t__T?: T\n\t__K?: K\n}\nexport type WritableHeldSelectorFamilyToken<T, K extends Canonical> = {\n\tkey: string\n\ttype: `writable_held_selector_family`\n\t__T?: T\n\t__K?: K\n}\nexport type ReadonlyHeldSelectorFamilyToken<T, K extends Canonical> = {\n\tkey: string\n\ttype: `readonly_held_selector_family`\n\t__T?: T\n\t__K?: K\n}\n\nexport type PureSelectorFamilyToken<T, K extends Canonical> =\n\t| ReadonlyPureSelectorFamilyToken<T, K>\n\t| WritablePureSelectorFamilyToken<T, K>\nexport type HeldSelectorFamilyToken<T, K extends Canonical> =\n\t| ReadonlyHeldSelectorFamilyToken<T, K>\n\t| WritableHeldSelectorFamilyToken<T, K>\nexport type ReadonlySelectorFamilyToken<T, K extends Canonical> =\n\t| ReadonlyHeldSelectorFamilyToken<T, K>\n\t| ReadonlyPureSelectorFamilyToken<T, K>\n\nexport type WritableSelectorFamilyToken<T, K extends Canonical> =\n\t| WritableHeldSelectorFamilyToken<T, K>\n\t| WritablePureSelectorFamilyToken<T, K>\n\nexport type SelectorFamilyToken<T, K extends Canonical> =\n\t| HeldSelectorFamilyToken<T, K>\n\t| PureSelectorFamilyToken<T, K>\n\nexport function selectorFamily<T extends object, K extends Canonical>(\n\toptions: WritableHeldSelectorFamilyOptions<T, K>,\n): WritableHeldSelectorFamilyToken<T, K>\nexport function selectorFamily<T extends object, K extends Canonical>(\n\toptions: ReadonlyHeldSelectorFamilyOptions<T, K>,\n): ReadonlyHeldSelectorFamilyToken<T, K>\nexport function selectorFamily<T, K extends Canonical>(\n\toptions: WritablePureSelectorFamilyOptions<T, K>,\n): WritablePureSelectorFamilyToken<T, K>\nexport function selectorFamily<T, K extends Canonical>(\n\toptions: ReadonlyPureSelectorFamilyOptions<T, K>,\n): ReadonlyPureSelectorFamilyToken<T, K>\nexport function selectorFamily(\n\toptions:\n\t\t| ReadonlyHeldSelectorFamilyOptions<any, any>\n\t\t| ReadonlyPureSelectorFamilyOptions<any, any>\n\t\t| WritableHeldSelectorFamilyOptions<any, any>\n\t\t| WritablePureSelectorFamilyOptions<any, any>,\n):\n\t| ReadonlyHeldSelectorFamilyToken<any, any>\n\t| ReadonlyPureSelectorFamilyToken<any, any>\n\t| WritableHeldSelectorFamilyToken<any, any>\n\t| WritablePureSelectorFamilyToken<any, any> {\n\treturn createSelectorFamily(IMPLICIT.STORE, options)\n}\n","import * as Internal from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\n\nimport type { WritableFamilyToken, WritableToken } from \".\"\n\n/**\n * @public\n * A function that sets the value of a state.\n * @param oldValue - The current value of the state.\n * @returns\n * The new value of the state.\n */\nexport type Setter<T, New extends T> = (oldValue: T) => New\n\n/**\n * @public\n * Set the value of a state into the implicit store.\n * @param token - An atom or writable selector token.\n * @param value - The new value of the state.\n * @overload Default\n * @default\n */\nexport function setState<T, New extends T>(\n\ttoken: WritableToken<T>,\n\tvalue: New | Setter<T, New>,\n): void\n\n/**\n * @public\n * Set the value of a state into the implicit store.\n * @param token - An atom family or writable selector family token.\n * @param key - The unique key of the state to set.\n * @param value - The new value of the state.\n * @overload Streamlined\n */\nexport function setState<T, K extends Canonical, New extends T, Key extends K>(\n\ttoken: WritableFamilyToken<T, K>,\n\tkey: Key,\n\tvalue: New | Setter<T, New>,\n): void\nexport function setState<T, New extends T>(\n\t...params:\n\t\t| [\n\t\t\t\ttoken: WritableFamilyToken<T, Canonical>,\n\t\t\t\tkey: Canonical,\n\t\t\t\tvalue: New | Setter<T, New>,\n\t\t ]\n\t\t| [token: WritableToken<T>, value: New | Setter<T, New>]\n): void {\n\tif (params.length === 2) {\n\t\tInternal.setIntoStore(Internal.IMPLICIT.STORE, ...params)\n\t} else {\n\t\tInternal.setIntoStore(Internal.IMPLICIT.STORE, ...params)\n\t}\n}\n","import type { findState } from \"atom.io\"\nimport {\n\tactUponStore,\n\tarbitrary,\n\tcreateAtomFamily,\n\tcreateSelectorFamily,\n\tcreateStandaloneAtom,\n\tcreateStandaloneSelector,\n\tcreateTimeline,\n\tcreateTransaction,\n\tdisposeFromStore,\n\tfindInStore,\n\tgetFromStore,\n\tIMPLICIT,\n\tinstallIntoStore,\n\tsetIntoStore,\n\tStore,\n\tsubscribeInStore,\n\ttimeTravel,\n} from \"atom.io/internal\"\n\nimport type {\n\tAtomIOToken,\n\tdisposeState,\n\tgetState,\n\tredo,\n\tsetState,\n\tsubscribe,\n\ttimeline,\n\tundo,\n} from \".\"\nimport type { atom, atomFamily } from \"./atom\"\nimport type { selector, selectorFamily } from \"./selector\"\nimport type { runTransaction, transaction } from \"./transaction\"\n\nexport class Silo {\n\tpublic store: Store\n\tpublic atom: typeof atom\n\tpublic atomFamily: typeof atomFamily\n\tpublic selector: typeof selector\n\tpublic selectorFamily: typeof selectorFamily\n\tpublic transaction: typeof transaction\n\tpublic timeline: typeof timeline\n\tpublic findState: typeof findState\n\tpublic getState: typeof getState\n\tpublic setState: typeof setState\n\tpublic disposeState: typeof disposeState\n\tpublic subscribe: typeof subscribe\n\tpublic undo: typeof undo\n\tpublic redo: typeof redo\n\tpublic runTransaction: typeof runTransaction\n\tpublic install: (tokens: AtomIOToken[], store?: Store) => void\n\n\tpublic constructor(config: Store[`config`], fromStore: Store | null = null) {\n\t\tconst s = (this.store = new Store(config, fromStore))\n\t\tthis.atom = ((options: Parameters<typeof atom>[0]) =>\n\t\t\tcreateStandaloneAtom(s, options)) as typeof atom\n\t\tthis.atomFamily = ((options: Parameters<typeof atomFamily>[0]) =>\n\t\t\tcreateAtomFamily(s, options)) as typeof atomFamily\n\t\tthis.selector = ((options: Parameters<typeof selector>[0]) =>\n\t\t\tcreateStandaloneSelector(s, options)) as typeof selector\n\t\tthis.selectorFamily = ((options: Parameters<typeof selectorFamily>[0]) =>\n\t\t\tcreateSelectorFamily(s, options)) as typeof selectorFamily\n\t\tthis.transaction = (options) => createTransaction(s, options)\n\t\tthis.timeline = (options) => createTimeline(s, options)\n\t\tthis.findState = ((...params: Parameters<typeof findState>) =>\n\t\t\tfindInStore(s, ...params)) as typeof findState\n\t\tthis.getState = ((...params: Parameters<typeof getState>) =>\n\t\t\tgetFromStore(s, ...params)) as typeof getState\n\t\tthis.setState = ((...params: Parameters<typeof setState>) => {\n\t\t\tsetIntoStore(s, ...params)\n\t\t}) as typeof setState\n\t\tthis.disposeState = ((...params: Parameters<typeof disposeState>) => {\n\t\t\tdisposeFromStore(s, ...params)\n\t\t}) as typeof disposeState\n\t\tthis.subscribe = ((...params: Parameters<typeof subscribe>) =>\n\t\t\tsubscribeInStore(s, ...params)) as typeof subscribe\n\t\tthis.undo = (token) => {\n\t\t\ttimeTravel(s, `undo`, token)\n\t\t}\n\t\tthis.redo = (token) => {\n\t\t\ttimeTravel(s, `redo`, token)\n\t\t}\n\t\tthis.runTransaction = (token, id = arbitrary()) => actUponStore(s, token, id)\n\t\tthis.install = (tokens, source = IMPLICIT.STORE) => {\n\t\t\tinstallIntoStore(tokens, s, source)\n\t\t}\n\t}\n}\n","import type { Flat, Func } from \"atom.io/internal\"\nimport { arbitrary, IMPLICIT, subscribeInStore } from \"atom.io/internal\"\n\nimport type {\n\tFamilyMetadata,\n\tReadableToken,\n\tTimelineManageable,\n\tTimelineToken,\n\tTimelineUpdate,\n\tTransactionToken,\n\tTransactionUpdate,\n} from \".\"\n\nexport type StateUpdate<T> = { newValue: T; oldValue: T }\nexport type KeyedStateUpdate<T> = Flat<\n\tStateUpdate<T> & {\n\t\tkey: string\n\t\ttype: `atom_update` | `selector_update`\n\t\tfamily?: FamilyMetadata\n\t}\n>\nexport type UpdateHandler<T> = (update: StateUpdate<T>) => void\n\nexport type TransactionUpdateHandler<F extends Func> = (\n\tdata: TransactionUpdate<F>,\n) => void\n\nexport function subscribe<T>(\n\ttoken: ReadableToken<T>,\n\thandleUpdate: UpdateHandler<T>,\n\tkey?: string,\n): () => void\nexport function subscribe<F extends Func>(\n\ttoken: TransactionToken<F>,\n\thandleUpdate: TransactionUpdateHandler<F>,\n\tkey?: string,\n): () => void\nexport function subscribe<M extends TimelineManageable>(\n\ttoken: TimelineToken<M>,\n\thandleUpdate: (update: TimelineUpdate<M> | `redo` | `undo`) => void,\n\tkey?: string,\n): () => void\nexport function subscribe(\n\ttoken: ReadableToken<any> | TimelineToken<any> | TransactionToken<any>,\n\thandleUpdate: (update: any) => void,\n\tkey: string = arbitrary(),\n): () => void {\n\treturn subscribeInStore(IMPLICIT.STORE, token, handleUpdate, key)\n}\n","import type {\n\tTimeline,\n\tTimelineAtomUpdate,\n\tTimelineMoleculeCreation,\n\tTimelineMoleculeDisposal,\n\tTimelineSelectorUpdate,\n\tTimelineStateCreation,\n\tTimelineStateDisposal,\n\tTimelineTransactionUpdate,\n} from \"atom.io/internal\"\nimport { createTimeline, IMPLICIT, timeTravel } from \"atom.io/internal\"\n\nimport type { AtomFamilyToken, AtomToken } from \".\"\n\nexport type TimelineManageable = AtomFamilyToken<any, any> | AtomToken<any>\nexport type AtomOnly<M extends TimelineManageable> = M extends AtomFamilyToken<\n\tany,\n\tany\n>\n\t? AtomToken<any>\n\t: M extends AtomToken<any>\n\t\t? M\n\t\t: never\n\nexport type TimelineToken<M> = {\n\tkey: string\n\ttype: `timeline`\n\t__M?: M\n}\n\nexport type TimelineOptions<ManagedAtom extends TimelineManageable> = {\n\tkey: string\n\tscope: ManagedAtom[]\n\tshouldCapture?: (\n\t\tupdate: TimelineUpdate<ManagedAtom>,\n\t\ttimeline: Timeline<TimelineManageable>,\n\t) => boolean\n}\n\nexport type TimelineUpdate<ManagedAtom extends TimelineManageable> =\n\t| TimelineAtomUpdate<ManagedAtom>\n\t| TimelineMoleculeCreation\n\t| TimelineMoleculeDisposal\n\t| TimelineSelectorUpdate<ManagedAtom>\n\t| TimelineStateCreation<AtomOnly<ManagedAtom>>\n\t| TimelineStateDisposal<AtomOnly<ManagedAtom>>\n\t| TimelineTransactionUpdate\n\nexport const timeline = <ManagedAtom extends TimelineManageable>(\n\toptions: TimelineOptions<ManagedAtom>,\n): TimelineToken<ManagedAtom> => {\n\treturn createTimeline(IMPLICIT.STORE, options)\n}\n\nexport const redo = (tl: TimelineToken<any>): void => {\n\ttimeTravel(IMPLICIT.STORE, `redo`, tl)\n}\n\nexport const undo = (tl: TimelineToken<any>): void => {\n\ttimeTravel(IMPLICIT.STORE, `undo`, tl)\n}\n","import type { findState, getState, setState } from \"atom.io\"\nimport type { EnvironmentData, Func, Transceiver } from \"atom.io/internal\"\nimport {\n\tactUponStore,\n\tarbitrary,\n\tcreateTransaction,\n\tIMPLICIT,\n} from \"atom.io/internal\"\nimport type { Canonical, Json, stringified } from \"atom.io/json\"\n\nimport type {\n\tdisposeState,\n\tKeyedStateUpdate,\n\tMutableAtomToken,\n\tReadableToken,\n\tTokenType,\n\tWritablePureSelectorToken,\n} from \".\"\n\nexport type TransactionToken<F extends Func> = {\n\tkey: string\n\ttype: `transaction`\n\t__F?: F\n}\n\nexport type StateCreation<Token extends ReadableToken<any>> = {\n\ttype: `state_creation`\n\ttoken: Token\n}\nexport type AtomDisposal<Token extends ReadableToken<any>> = {\n\ttype: `state_disposal`\n\tsubType: `atom`\n\ttoken: Token\n\tvalue: TokenType<Token>\n}\nexport type SelectorDisposal<Token extends ReadableToken<any>> = {\n\ttype: `state_disposal`\n\tsubType: `selector`\n\ttoken: Token\n}\nexport type StateDisposal<Token extends ReadableToken<any>> =\n\t| AtomDisposal<Token>\n\t| SelectorDisposal<Token>\n\nexport type MoleculeCreation = {\n\ttype: `molecule_creation`\n\tkey: Canonical\n\tprovenance: Canonical\n}\n\nexport type MoleculeDisposal = {\n\ttype: `molecule_disposal`\n\tkey: Canonical\n\tprovenance: stringified<Canonical>[]\n\tvalues: [key: string, value: any][]\n}\n\nexport type MoleculeTransfer = {\n\ttype: `molecule_transfer`\n\tkey: Canonical\n\tfrom: Canonical[]\n\tto: Canonical[]\n}\n\nexport type TransactionUpdateContent =\n\t| KeyedStateUpdate<unknown>\n\t| MoleculeCreation\n\t| MoleculeDisposal\n\t| MoleculeTransfer\n\t| StateCreation<ReadableToken<unknown>>\n\t| StateDisposal<ReadableToken<unknown>>\n\t| TransactionUpdate<Func>\n\nexport type TransactionUpdate<F extends Func> = {\n\ttype: `transaction_update`\n\tkey: string\n\tid: string\n\tepoch: number\n\tupdates: TransactionUpdateContent[]\n\tparams: Parameters<F>\n\toutput: ReturnType<F>\n}\n\nexport type GetterToolkit = Pick<SetterToolkit, `find` | `get` | `json`>\nexport type SetterToolkit = Readonly<{\n\tget: typeof getState\n\tset: typeof setState\n\tfind: typeof findState\n\tjson: <T extends Transceiver<any>, J extends Json.Serializable>(\n\t\tstate: MutableAtomToken<T, J>,\n\t) => WritablePureSelectorToken<J>\n}>\nexport type ActorToolkit = Readonly<{\n\tget: typeof getState\n\tset: typeof setState\n\tfind: typeof findState\n\tjson: <T extends Transceiver<any>, J extends Json.Serializable>(\n\t\tstate: MutableAtomToken<T, J>,\n\t) => WritablePureSelectorToken<J>\n\tdispose: typeof disposeState\n\trun: typeof runTransaction\n\tenv: () => EnvironmentData\n}>\n\nexport type Read<F extends Func> = (\n\ttoolkit: GetterToolkit,\n\t...parameters: Parameters<F>\n) => ReturnType<F>\n\nexport type Write<F extends Func> = (\n\ttoolkit: SetterToolkit,\n\t...parameters: Parameters<F>\n) => ReturnType<F>\n\nexport type Transact<F extends Func> = (\n\ttoolkit: ActorToolkit,\n\t...parameters: Parameters<F>\n) => ReturnType<F>\n\nexport type TransactionOptions<F extends Func> = {\n\tkey: string\n\tdo: Transact<F>\n}\n\nexport type TransactionIO<Token extends TransactionToken<any>> =\n\tToken extends TransactionToken<infer F> ? F : never\n\nexport function transaction<F extends Func>(\n\toptions: TransactionOptions<F>,\n): TransactionToken<F> {\n\treturn createTransaction(IMPLICIT.STORE, options)\n}\n\nexport function runTransaction<F extends Func>(\n\ttoken: TransactionToken<F>,\n\tid: string = arbitrary(),\n): (...parameters: Parameters<F>) => ReturnType<F> {\n\treturn actUponStore(IMPLICIT.STORE, token, id)\n}\n","import type {\n\tMutableAtomFamilyToken,\n\tMutableAtomToken,\n\tReadableFamilyToken,\n\tReadableToken,\n\tReadonlyPureSelectorFamilyToken,\n\tReadonlyPureSelectorToken,\n\tRegularAtomFamilyToken,\n\tRegularAtomToken,\n\tWritableFamilyToken,\n\tWritablePureSelectorFamilyToken,\n\tWritablePureSelectorToken,\n\tWritableToken,\n} from \"atom.io\"\n\nexport type TokenType<\n\tComparison extends ReadableFamilyToken<any, any> | ReadableToken<any>,\n> = Comparison extends ReadableToken<infer RepresentedValue>\n\t? RepresentedValue\n\t: Comparison extends ReadableFamilyToken<infer RepresentedValue, any>\n\t\t? RepresentedValue\n\t\t: never\n\nexport function isToken<KnownToken extends RegularAtomToken<any>>(\n\tknownToken: KnownToken,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is RegularAtomToken<TokenType<KnownToken>>\nexport function isToken<KnownToken extends MutableAtomToken<any, any>>(\n\tknownToken: KnownToken,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is MutableAtomToken<TokenType<KnownToken>, any>\nexport function isToken<KnownToken extends WritablePureSelectorToken<any>>(\n\tknownToken: KnownToken,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is WritablePureSelectorToken<TokenType<KnownToken>>\nexport function isToken<KnownToken extends ReadonlyPureSelectorToken<any>>(\n\tknownToken: KnownToken,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is ReadonlyPureSelectorToken<TokenType<KnownToken>>\nexport function isToken<KnownToken extends WritableToken<any>>(\n\tknownToken: KnownToken,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is WritableToken<TokenType<KnownToken>>\nexport function isToken<KnownToken extends ReadableToken<any>>(\n\tknownToken: KnownToken,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is ReadableToken<TokenType<KnownToken>>\nexport function isToken<KnownToken extends ReadableToken<any>>(\n\tknownToken: KnownToken,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is ReadableToken<TokenType<KnownToken>> {\n\treturn knownToken.key === unknownToken.key\n}\n\nexport function belongsTo<Family extends RegularAtomFamilyToken<any, any>>(\n\tfamily: Family,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is RegularAtomToken<TokenType<Family>>\nexport function belongsTo<Family extends MutableAtomFamilyToken<any, any, any>>(\n\tfamily: Family,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is MutableAtomToken<TokenType<Family>, any>\nexport function belongsTo<\n\tFamily extends WritablePureSelectorFamilyToken<any, any>,\n>(\n\tfamily: Family,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is WritablePureSelectorToken<TokenType<Family>>\nexport function belongsTo<\n\tFamily extends ReadonlyPureSelectorFamilyToken<any, any>,\n>(\n\tfamily: Family,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is ReadonlyPureSelectorToken<TokenType<Family>>\nexport function belongsTo<Family extends WritableFamilyToken<any, any>>(\n\tfamily: Family,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is WritableToken<TokenType<Family>>\nexport function belongsTo<Family extends ReadableFamilyToken<any, any>>(\n\tfamily: Family,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is ReadableToken<TokenType<Family>>\nexport function belongsTo<Family extends ReadableFamilyToken<any, any>>(\n\tfamily: Family,\n\tunknownToken: ReadableToken<any>,\n): unknownToken is ReadableToken<TokenType<Family>> {\n\treturn family.key === unknownToken.family?.key\n}\n"],"mappings":";;;;AAkCA,SAAgB,KACfA,SACiB;AACjB,QAAO,qBAAqB,SAAS,OAAO,QAAQ;AACpD;AA+FD,SAAgB,WACfC,SAGuE;AACvE,QAAO,iBAAiB,SAAS,OAAO,QAAQ;AAChD;;;;ACrHD,SAAgB,aACf,GAAG,CAAC,OAAO,IAAI,EAGR;AACP,KAAI,IACH,UAAS,iBAAiB,SAAS,SAAS,OAAO,OAAc,IAAI;KAErE,UAAS,iBAAiB,SAAS,SAAS,OAAO,MAAa;AAEjE;;;;ACoED,SAAgB,UACfC,OACAC,KACqB;CACrB,MAAM,QAAQ,YAAY,SAAS,OAAO,OAAO,IAAI;AACrD,QAAO;AACP;;;;AC9ED,SAAgB,SACf,GAAG,QAGG;AACN,KAAI,OAAO,WAAW,EACrB,QAAO,SAAS,aAAa,SAAS,SAAS,OAAO,GAAG,OAAO;AAEjE,QAAO,SAAS,aAAa,SAAS,SAAS,OAAO,GAAG,OAAO;AAChE;;;;ACqCD,SAAgB,KAQfC,SACAC,gBACAC,QAAe,SAAS,OACsC;AAC9D,OAAM,MAAM,IAAI,QAAQ,KAAK,IAAI,KAAK,SAAS,gBAAgB,OAAO;CACtE,MAAMC,QAAqE;EAC1E,KAAK,QAAQ;EACb,MAAM,CAAC,IAAI,CAAC;EACZ,GAAG,QAAQ,QAAQ;EACnB,GAAG,QAAQ,QAAQ;EACnB,aAAa,QAAQ;CACrB;AACD,QAAO;AACP;AAmFD,SAAgB,cAQfA,OACAC,KAC+D;AAC/D,QAAO,qBAAqB,OAAO,KAAK,SAAS,MAAM;AACvD;AAED,SAAgB,cAQfD,OACAE,QACO;AACP,sBAAqB,OAAO,QAAQ,SAAS,MAAM;AACnD;AAED,SAAgB,qBAQfF,OACqE;AACrE,QAAO,8BAA8B,OAAO,SAAS,MAAM;AAC3D;;;;AC/ID,MAAa,aAAa;CAAC,CAAC,IAAI,CAAC;CAAE,CAAC,IAAI,CAAC;CAAE,CAAC,KAAK,CAAC;AAAC;AAgBnD,MAAa,YACZ,CAACG,aACD,CAAC,MAAM,cAAc,UAAU,SAAS,GAAG,SAAS;AAEnD,SAAQ,UACP,GAAG,KAAK,CAAC,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,EAClD,GAAG,KACH;AACD;AACF,MAAaC,eAAuB;CACnC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;CACzB,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;CACvB,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;AACvB;AAED,IAAa,eAAb,MAA4C;CAC3C,AAAO;CACP,AAAiB;CACjB,AAAiB;CAEjB,AAAO,YACNC,UACAC,QACAC,SAAiB,cAChB;AACD,OAAK,WAAW;AAChB,OAAK,SAAS;AACd,OAAK,SAAS;CACd;CAED,AAAO,QAAe,CAAC,GAAG,SAAS;EAClC,MAAM,eAAe,KAAK,SAAS,GAAG,KAAK,IAAI;AAC/C,MAAI,KAAK,aAAa,MACrB;OAAI,iBAAiB,KACpB,MAAK,OAAO,MAAM,GAAG,KAAK;YAChB,iBAAiB,MAC3B,MAAK,OAAO,MAAM,GAAG,aAAa;EAClC;CAEF;CACD,AAAO,OAAc,CAAC,GAAG,SAAS;EACjC,MAAM,eAAe,KAAK,SAAS,GAAG,KAAK,IAAI;AAC/C,MAAI,KAAK,aAAa,CAAC,IAAI,CAAC,EAC3B;OAAI,iBAAiB,KACpB,MAAK,OAAO,KAAK,GAAG,KAAK;YACf,iBAAiB,MAC3B,MAAK,OAAO,KAAK,GAAG,aAAa;EACjC;CAEF;CACD,AAAO,OAAc,CAAC,GAAG,SAAS;EACjC,MAAM,eAAe,KAAK,SAAS,GAAG,KAAK,IAAI;AAC/C,MAAI,KAAK,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,MAClD;OAAI,iBAAiB,KACpB,MAAK,OAAO,KAAK,GAAG,KAAK;YACf,iBAAiB,MAC3B,MAAK,OAAO,KAAK,GAAG,aAAa;EACjC;CAEF;AACD;;;;AC3ID,MAAaC,SAAwB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AAGxD,IAAa,QAAb,MAAwC;CACvC,AAAO;CACP,AAAO,YAAYC,QAAe,SAAS,OAAO;AACjD,OAAK,QAAQ;AACb,0BAAwB,CAAC,IAAI,CAAC,EAAE,MAAM;CACtC;CACD,AAAO,SACNC,YACAC,KACAC,iBACW;AACX,SAAO,kBACN,KAAK,OACL,YACA,KACA,gBACA;CACD;CACD,AAAO,KAMNC,MACAC,UACAC,UACmC;AACnC,SAAO,gBAA+B,KAAK,OAAO,MAAM,UAAU,SAAS;CAC3E;CAED,AAAO,WAAgCC,OAAuB;AAC7D,sBAA0B,KAAK,OAAO,MAAM;CAC5C;CACD,AAAO,MAGLC,eAAkBD,OAAiBE,WAAmC;AACvE,SAAO,iBAA0B,KAAK,OAAO,eAAe,OAAO,UAAU;CAC7E;AACD;AAED,IAAa,UAAb,MAAqB;CACpB,AAAO;CACP,AAAO;CAEP,AAAO,YAAYT,QAAe,SAAS,OAAO;AACjD,OAAK,QAAQ;AACb,OAAK,QAAQ,IAAI,MAAM;CACvB;CAED,AAAO,SACNU,YACAC,KACAR,iBACO;AACP,oBACC,KAAK,OACL,YACA,KACA,gBACA;CACD;CAED,AAAO,WAAWQ,KAAsB;AACvC,sBAA8B,KAAK,OAAO,IAAI;CAC9C;CAED,AAAO,MACNC,eACAD,KACAF,WACO;AACP,mBAAgC,KAAK,OAAO,eAAe,KAAK,UAAU;CAC1E;AACD;AAED,MAAa,KAAK,CAAC,EAAE,CAAC;;;;AC2BtB,SAAgB,SACfI,SASiC;AACjC,QAAO,yBAAyB,SAAS,OAAO,QAAQ;AACxD;AAoFD,SAAgB,eACfC,SAS4C;AAC5C,QAAO,qBAAqB,SAAS,OAAO,QAAQ;AACpD;;;;AC1LD,SAAgB,SACf,GAAG,QAOI;AACP,KAAI,OAAO,WAAW,EACrB,UAAS,aAAa,SAAS,SAAS,OAAO,GAAG,OAAO;KAEzD,UAAS,aAAa,SAAS,SAAS,OAAO,GAAG,OAAO;AAE1D;;;;ACnBD,IAAa,OAAb,MAAkB;CACjB,AAAO;CACP,AAAO;CACP,AAAO;CACP,AAAO;CACP,AAAO;CACP,AAAO;CACP,AAAO;CACP,AAAO;CACP,AAAO;CACP,AAAO;CACP,AAAO;CACP,AAAO;CACP,AAAO;CACP,AAAO;CACP,AAAO;CACP,AAAO;CAEP,AAAO,YAAYC,QAAyBC,YAA0B,MAAM;EAC3E,MAAM,IAAK,KAAK,QAAQ,IAAI,MAAM,QAAQ;AAC1C,OAAK,OAAQ,CAACC,YACb,qBAAqB,GAAG,QAAQ;AACjC,OAAK,aAAc,CAACC,YACnB,iBAAiB,GAAG,QAAQ;AAC7B,OAAK,WAAY,CAACC,YACjB,yBAAyB,GAAG,QAAQ;AACrC,OAAK,iBAAkB,CAACC,YACvB,qBAAqB,GAAG,QAAQ;AACjC,OAAK,cAAc,CAAC,YAAY,kBAAkB,GAAG,QAAQ;AAC7D,OAAK,WAAW,CAAC,YAAY,eAAe,GAAG,QAAQ;AACvD,OAAK,YAAa,CAAC,GAAG,WACrB,YAAY,GAAG,GAAG,OAAO;AAC1B,OAAK,WAAY,CAAC,GAAG,WACpB,aAAa,GAAG,GAAG,OAAO;AAC3B,OAAK,WAAY,CAAC,GAAG,WAAwC;AAC5D,gBAAa,GAAG,GAAG,OAAO;EAC1B;AACD,OAAK,eAAgB,CAAC,GAAG,WAA4C;AACpE,oBAAiB,GAAG,GAAG,OAAO;EAC9B;AACD,OAAK,YAAa,CAAC,GAAG,WACrB,iBAAiB,GAAG,GAAG,OAAO;AAC/B,OAAK,OAAO,CAAC,UAAU;AACtB,cAAW,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM;EAC5B;AACD,OAAK,OAAO,CAAC,UAAU;AACtB,cAAW,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM;EAC5B;AACD,OAAK,iBAAiB,CAAC,OAAO,KAAK,WAAW,KAAK,aAAa,GAAG,OAAO,GAAG;AAC7E,OAAK,UAAU,CAAC,QAAQ,SAAS,SAAS,UAAU;AACnD,oBAAiB,QAAQ,GAAG,OAAO;EACnC;CACD;AACD;;;;AC9CD,SAAgB,UACfC,OACAC,cACAC,MAAc,WAAW,EACZ;AACb,QAAO,iBAAiB,SAAS,OAAO,OAAO,cAAc,IAAI;AACjE;;;;ACAD,MAAa,WAAW,CACvBC,YACgC;AAChC,QAAO,eAAe,SAAS,OAAO,QAAQ;AAC9C;AAED,MAAa,OAAO,CAACC,OAAiC;AACrD,YAAW,SAAS,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG;AACtC;AAED,MAAa,OAAO,CAACA,OAAiC;AACrD,YAAW,SAAS,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG;AACtC;;;;ACmED,SAAgB,YACfC,SACsB;AACtB,QAAO,kBAAkB,SAAS,OAAO,QAAQ;AACjD;AAED,SAAgB,eACfC,OACAC,KAAa,WAAW,EAC0B;AAClD,QAAO,aAAa,SAAS,OAAO,OAAO,GAAG;AAC9C;;;;AC3FD,SAAgB,QACfC,YACAC,cACuD;AACvD,QAAO,WAAW,QAAQ,aAAa;AACvC;AA8BD,SAAgB,UACfC,QACAD,cACmD;AACnD,QAAO,OAAO,QAAQ,aAAa,QAAQ;AAC3C"}
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["StoreContext: React.Context<Store>","StoreProvider: React.FC<{\n\tchildren: React.ReactNode\n\tstore?: Store\n}>","store: Store","token: ReadableToken<any>","setter: React.RefObject<\n\t\t(<New extends T>(next: New | ((old: T) => New)) => void) | null\n\t>","token:\n\t\t| MutableAtomFamilyToken<any, Serializable, Key>\n\t\t| MutableAtomToken<any, Serializable>","key?: Key","stateToken: ReadableToken<any>","token: TimelineToken<any>"],"sources":["../../src/react/store-context.tsx","../../src/react/parse-state-overloads.ts","../../src/react/use-i.ts","../../src/react/use-o.ts","../../src/react/use-json.ts","../../src/react/use-tl.ts"],"sourcesContent":["import type { Store } from \"atom.io/internal\"\nimport { IMPLICIT } from \"atom.io/internal\"\nimport * as React from \"react\"\n\nexport const StoreContext: React.Context<Store> = React.createContext(\n\tIMPLICIT.STORE,\n)\n\nexport const StoreProvider: React.FC<{\n\tchildren: React.ReactNode\n\tstore?: Store\n}> = ({ children, store = IMPLICIT.STORE }) => (\n\t<StoreContext.Provider value={store}>{children}</StoreContext.Provider>\n)\n","import type {\n\tReadableFamilyToken,\n\tReadableToken,\n\tWritableFamilyToken,\n\tWritableToken,\n} from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { findInStore } from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\n\nexport function parseStateOverloads<T, K extends Canonical>(\n\tstore: Store,\n\t...rest: [WritableFamilyToken<T, K>, K] | [WritableToken<T>]\n): WritableToken<T>\n\nexport function parseStateOverloads<T, K extends Canonical>(\n\tstore: Store,\n\t...rest: [ReadableFamilyToken<T, K>, K] | [ReadableToken<T>]\n): ReadableToken<T>\n\nexport function parseStateOverloads<T, K extends Canonical>(\n\tstore: Store,\n\t...rest: [ReadableFamilyToken<T, K>, K] | [ReadableToken<T>]\n): ReadableToken<T> {\n\tlet token: ReadableToken<any>\n\tif (rest.length === 2) {\n\t\tconst family = rest[0]\n\t\tconst key = rest[1]\n\n\t\ttoken = findInStore(store, family, key)\n\t} else {\n\t\ttoken = rest[0]\n\t}\n\treturn token\n}\n","import type { WritableFamilyToken, WritableToken } from \"atom.io\"\nimport { setIntoStore } from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\nimport * as React from \"react\"\n\nimport { parseStateOverloads } from \"./parse-state-overloads\"\nimport { StoreContext } from \"./store-context\"\n\nexport function useI<T>(\n\ttoken: WritableToken<T>,\n): <New extends T>(next: New | ((old: T) => New)) => void\n\nexport function useI<T, K extends Canonical>(\n\ttoken: WritableFamilyToken<T, K>,\n\tkey: K,\n): <New extends T>(next: New | ((old: T) => New)) => void\n\nexport function useI<T, K extends Canonical>(\n\t...params: [WritableFamilyToken<T, K>, K] | [WritableToken<T>]\n): <New extends T>(next: New | ((old: T) => New)) => void {\n\tconst store = React.useContext(StoreContext)\n\tconst token = parseStateOverloads(store, ...params)\n\tconst setter: React.RefObject<\n\t\t(<New extends T>(next: New | ((old: T) => New)) => void) | null\n\t> = React.useRef(null)\n\tsetter.current ??= (next) => {\n\t\tsetIntoStore(store, token, next)\n\t}\n\treturn setter.current\n}\n","import type { ReadableFamilyToken, ReadableToken } from \"atom.io\"\nimport { getFromStore, subscribeToState } from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\nimport * as React from \"react\"\n\nimport { parseStateOverloads } from \"./parse-state-overloads\"\nimport { StoreContext } from \"./store-context\"\n\nexport function useO<T>(token: ReadableToken<T>): T\n\nexport function useO<T, K extends Canonical>(\n\ttoken: ReadableFamilyToken<T, K>,\n\tkey: K,\n): T\n\nexport function useO<T, K extends Canonical>(\n\t...params: [ReadableFamilyToken<T, K>, K] | [ReadableToken<T>]\n): T {\n\tconst store = React.useContext(StoreContext)\n\tconst token = parseStateOverloads(store, ...params)\n\tconst id = React.useId()\n\treturn React.useSyncExternalStore<T>(\n\t\t(dispatch) => subscribeToState(store, token, `use-o:${id}`, dispatch),\n\t\t() => getFromStore(store, token),\n\t\t() => getFromStore(store, token),\n\t)\n}\n","import type {\n\tMutableAtomFamilyToken,\n\tMutableAtomToken,\n\tReadableToken,\n} from \"atom.io\"\nimport { findInStore, getJsonToken } from \"atom.io/internal\"\nimport type { Canonical, Json } from \"atom.io/json\"\nimport * as React from \"react\"\n\nimport { StoreContext } from \"./store-context\"\nimport { useO } from \"./use-o\"\n\nexport function useJSON<Serializable extends Json.Serializable>(\n\ttoken: MutableAtomToken<any, Serializable>,\n): Serializable\n\nexport function useJSON<\n\tSerializable extends Json.Serializable,\n\tKey extends Canonical,\n>(token: MutableAtomFamilyToken<any, Serializable, Key>, key: Key): Serializable\n\nexport function useJSON<\n\tSerializable extends Json.Serializable,\n\tKey extends Canonical,\n>(\n\ttoken:\n\t\t| MutableAtomFamilyToken<any, Serializable, Key>\n\t\t| MutableAtomToken<any, Serializable>,\n\tkey?: Key,\n): Serializable {\n\tconst store = React.useContext(StoreContext)\n\tconst stateToken: ReadableToken<any> =\n\t\ttoken.type === `mutable_atom_family`\n\t\t\t? findInStore(store, token, key as Key)\n\t\t\t: token\n\tconst jsonToken = getJsonToken(store, stateToken)\n\treturn useO(jsonToken)\n}\n","import type { TimelineToken } from \"atom.io\"\nimport { redo, undo } from \"atom.io\"\nimport { subscribeToTimeline, withdraw } from \"atom.io/internal\"\nimport * as React from \"react\"\n\nimport { StoreContext } from \"./store-context\"\n\nexport type TimelineMeta = {\n\tat: number\n\tlength: number\n\tundo: () => void\n\tredo: () => void\n}\n\nexport function useTL(token: TimelineToken<any>): TimelineMeta {\n\tconst store = React.useContext(StoreContext)\n\tconst id = React.useId()\n\tconst timeline = withdraw(store, token)\n\tconst tokenRef = React.useRef(token)\n\tconst rebuildMeta = () => {\n\t\treturn {\n\t\t\tat: timeline.at,\n\t\t\tlength: timeline.history.length,\n\t\t\tundo: () => {\n\t\t\t\tundo(token)\n\t\t\t},\n\t\t\tredo: () => {\n\t\t\t\tredo(token)\n\t\t\t},\n\t\t}\n\t}\n\tconst meta = React.useRef<TimelineMeta>(rebuildMeta())\n\tconst retrieve = () => {\n\t\tif (\n\t\t\tmeta.current.at !== timeline?.at ||\n\t\t\tmeta.current.length !== timeline?.history.length ||\n\t\t\ttokenRef.current !== token\n\t\t) {\n\t\t\ttokenRef.current = token\n\t\t\tmeta.current = rebuildMeta()\n\t\t}\n\t\treturn meta.current\n\t}\n\treturn React.useSyncExternalStore<TimelineMeta>(\n\t\t(dispatch) => subscribeToTimeline(store, token, `use-tl:${id}`, dispatch),\n\t\tretrieve,\n\t\tretrieve,\n\t)\n}\n"],"mappings":";;;;;;AAIA,MAAaA,eAAqC,MAAM,cACvD,SAAS,MACT;AAED,MAAaC,gBAGR,CAAC,EAAE,UAAU,QAAQ,SAAS,OAAO,qBACzC,IAAC,aAAa;CAAS,OAAO;CAAQ;EAAiC;;;;ACQxE,SAAgB,oBACfC,OACA,GAAG,MACgB;CACnB,IAAIC;AACJ,KAAI,KAAK,WAAW,GAAG;EACtB,MAAM,SAAS,KAAK;EACpB,MAAM,MAAM,KAAK;AAEjB,UAAQ,YAAY,OAAO,QAAQ,IAAI;CACvC,MACA,SAAQ,KAAK;AAEd,QAAO;AACP;;;;ACjBD,SAAgB,KACf,GAAG,QACsD;CACzD,MAAM,QAAQ,MAAM,WAAW,aAAa;CAC5C,MAAM,QAAQ,oBAAoB,OAAO,GAAG,OAAO;CACnD,MAAMC,SAEF,MAAM,OAAO,KAAK;AACtB,QAAO,YAAY,CAAC,SAAS;AAC5B,eAAa,OAAO,OAAO,KAAK;CAChC;AACD,QAAO,OAAO;AACd;;;;ACdD,SAAgB,KACf,GAAG,QACC;CACJ,MAAM,QAAQ,MAAM,WAAW,aAAa;CAC5C,MAAM,QAAQ,oBAAoB,OAAO,GAAG,OAAO;CACnD,MAAM,KAAK,MAAM,OAAO;AACxB,QAAO,MAAM,qBACZ,CAAC,aAAa,iBAAiB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","names":["StoreContext: React.Context<Store>","StoreProvider: React.FC<{\n\tchildren: React.ReactNode\n\tstore?: Store\n}>","store: Store","token: ReadableToken<any>","setter: React.RefObject<\n\t\t(<New extends T>(next: New | ((old: T) => New)) => void) | null\n\t>","token:\n\t\t| MutableAtomFamilyToken<any, Serializable, Key>\n\t\t| MutableAtomToken<any, Serializable>","key?: Key","stateToken: ReadableToken<any>","token: TimelineToken<any>"],"sources":["../../src/react/store-context.tsx","../../src/react/parse-state-overloads.ts","../../src/react/use-i.ts","../../src/react/use-o.ts","../../src/react/use-json.ts","../../src/react/use-tl.ts"],"sourcesContent":["import type { Store } from \"atom.io/internal\"\nimport { IMPLICIT } from \"atom.io/internal\"\nimport * as React from \"react\"\n\nexport const StoreContext: React.Context<Store> = React.createContext(\n\tIMPLICIT.STORE,\n)\n\nexport const StoreProvider: React.FC<{\n\tchildren: React.ReactNode\n\tstore?: Store\n}> = ({ children, store = IMPLICIT.STORE }) => (\n\t<StoreContext.Provider value={store}>{children}</StoreContext.Provider>\n)\n","import type {\n\tReadableFamilyToken,\n\tReadableToken,\n\tWritableFamilyToken,\n\tWritableToken,\n} from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { findInStore } from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\n\nexport function parseStateOverloads<T, K extends Canonical>(\n\tstore: Store,\n\t...rest: [WritableFamilyToken<T, K>, K] | [WritableToken<T>]\n): WritableToken<T>\n\nexport function parseStateOverloads<T, K extends Canonical>(\n\tstore: Store,\n\t...rest: [ReadableFamilyToken<T, K>, K] | [ReadableToken<T>]\n): ReadableToken<T>\n\nexport function parseStateOverloads<T, K extends Canonical>(\n\tstore: Store,\n\t...rest: [ReadableFamilyToken<T, K>, K] | [ReadableToken<T>]\n): ReadableToken<T> {\n\tlet token: ReadableToken<any>\n\tif (rest.length === 2) {\n\t\tconst family = rest[0]\n\t\tconst key = rest[1]\n\n\t\ttoken = findInStore(store, family, key)\n\t} else {\n\t\ttoken = rest[0]\n\t}\n\treturn token\n}\n","import type { WritableFamilyToken, WritableToken } from \"atom.io\"\nimport { setIntoStore } from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\nimport * as React from \"react\"\n\nimport { parseStateOverloads } from \"./parse-state-overloads\"\nimport { StoreContext } from \"./store-context\"\n\nexport function useI<T>(\n\ttoken: WritableToken<T>,\n): <New extends T>(next: New | ((old: T) => New)) => void\n\nexport function useI<T, K extends Canonical>(\n\ttoken: WritableFamilyToken<T, K>,\n\tkey: K,\n): <New extends T>(next: New | ((old: T) => New)) => void\n\nexport function useI<T, K extends Canonical>(\n\t...params: [WritableFamilyToken<T, K>, K] | [WritableToken<T>]\n): <New extends T>(next: New | ((old: T) => New)) => void {\n\tconst store = React.useContext(StoreContext)\n\tconst token = parseStateOverloads(store, ...params)\n\tconst setter: React.RefObject<\n\t\t(<New extends T>(next: New | ((old: T) => New)) => void) | null\n\t> = React.useRef(null)\n\tsetter.current ??= (next) => {\n\t\tsetIntoStore(store, token, next)\n\t}\n\treturn setter.current\n}\n","import type { ReadableFamilyToken, ReadableToken } from \"atom.io\"\nimport { getFromStore, subscribeToState } from \"atom.io/internal\"\nimport type { Canonical } from \"atom.io/json\"\nimport * as React from \"react\"\n\nimport { parseStateOverloads } from \"./parse-state-overloads\"\nimport { StoreContext } from \"./store-context\"\n\nexport function useO<T>(token: ReadableToken<T>): T\n\nexport function useO<T, K extends Canonical>(\n\ttoken: ReadableFamilyToken<T, K>,\n\tkey: K,\n): T\n\nexport function useO<T, K extends Canonical>(\n\t...params: [ReadableFamilyToken<T, K>, K] | [ReadableToken<T>]\n): T {\n\tconst store = React.useContext(StoreContext)\n\tconst token = parseStateOverloads(store, ...params)\n\tconst id = React.useId()\n\treturn React.useSyncExternalStore<T>(\n\t\t(dispatch) => subscribeToState(store, token, `use-o:${id}`, dispatch),\n\t\t() => getFromStore(store, token),\n\t\t() => getFromStore(store, token),\n\t)\n}\n","import type {\n\tMutableAtomFamilyToken,\n\tMutableAtomToken,\n\tReadableToken,\n} from \"atom.io\"\nimport { findInStore, getJsonToken } from \"atom.io/internal\"\nimport type { Canonical, Json } from \"atom.io/json\"\nimport * as React from \"react\"\n\nimport { StoreContext } from \"./store-context\"\nimport { useO } from \"./use-o\"\n\nexport function useJSON<Serializable extends Json.Serializable>(\n\ttoken: MutableAtomToken<any, Serializable>,\n): Serializable\n\nexport function useJSON<\n\tSerializable extends Json.Serializable,\n\tKey extends Canonical,\n>(token: MutableAtomFamilyToken<any, Serializable, Key>, key: Key): Serializable\n\nexport function useJSON<\n\tSerializable extends Json.Serializable,\n\tKey extends Canonical,\n>(\n\ttoken:\n\t\t| MutableAtomFamilyToken<any, Serializable, Key>\n\t\t| MutableAtomToken<any, Serializable>,\n\tkey?: Key,\n): Serializable {\n\tconst store = React.useContext(StoreContext)\n\tconst stateToken: ReadableToken<any> =\n\t\ttoken.type === `mutable_atom_family`\n\t\t\t? findInStore(store, token, key as Key)\n\t\t\t: token\n\tconst jsonToken = getJsonToken(store, stateToken)\n\treturn useO(jsonToken)\n}\n","import type { TimelineToken } from \"atom.io\"\nimport { redo, undo } from \"atom.io\"\nimport { subscribeToTimeline, withdraw } from \"atom.io/internal\"\nimport * as React from \"react\"\n\nimport { StoreContext } from \"./store-context\"\n\nexport type TimelineMeta = {\n\tat: number\n\tlength: number\n\tundo: () => void\n\tredo: () => void\n}\n\nexport function useTL(token: TimelineToken<any>): TimelineMeta {\n\tconst store = React.useContext(StoreContext)\n\tconst id = React.useId()\n\tconst timeline = withdraw(store, token)\n\tconst tokenRef = React.useRef(token)\n\tconst rebuildMeta = () => {\n\t\treturn {\n\t\t\tat: timeline.at,\n\t\t\tlength: timeline.history.length,\n\t\t\tundo: () => {\n\t\t\t\tundo(token)\n\t\t\t},\n\t\t\tredo: () => {\n\t\t\t\tredo(token)\n\t\t\t},\n\t\t}\n\t}\n\tconst meta = React.useRef<TimelineMeta>(rebuildMeta())\n\tconst retrieve = () => {\n\t\tif (\n\t\t\tmeta.current.at !== timeline?.at ||\n\t\t\tmeta.current.length !== timeline?.history.length ||\n\t\t\ttokenRef.current !== token\n\t\t) {\n\t\t\ttokenRef.current = token\n\t\t\tmeta.current = rebuildMeta()\n\t\t}\n\t\treturn meta.current\n\t}\n\treturn React.useSyncExternalStore<TimelineMeta>(\n\t\t(dispatch) => subscribeToTimeline(store, token, `use-tl:${id}`, dispatch),\n\t\tretrieve,\n\t\tretrieve,\n\t)\n}\n"],"mappings":";;;;;;AAIA,MAAaA,eAAqC,MAAM,cACvD,SAAS,MACT;AAED,MAAaC,gBAGR,CAAC,EAAE,UAAU,QAAQ,SAAS,OAAO,qBACzC,IAAC,aAAa;CAAS,OAAO;CAAQ;EAAiC;;;;ACQxE,SAAgB,oBACfC,OACA,GAAG,MACgB;CACnB,IAAIC;AACJ,KAAI,KAAK,WAAW,GAAG;EACtB,MAAM,SAAS,KAAK;EACpB,MAAM,MAAM,KAAK;AAEjB,UAAQ,YAAY,OAAO,QAAQ,IAAI;CACvC,MACA,SAAQ,KAAK;AAEd,QAAO;AACP;;;;ACjBD,SAAgB,KACf,GAAG,QACsD;CACzD,MAAM,QAAQ,MAAM,WAAW,aAAa;CAC5C,MAAM,QAAQ,oBAAoB,OAAO,GAAG,OAAO;CACnD,MAAMC,SAEF,MAAM,OAAO,KAAK;AACtB,QAAO,YAAY,CAAC,SAAS;AAC5B,eAAa,OAAO,OAAO,KAAK;CAChC;AACD,QAAO,OAAO;AACd;;;;ACdD,SAAgB,KACf,GAAG,QACC;CACJ,MAAM,QAAQ,MAAM,WAAW,aAAa;CAC5C,MAAM,QAAQ,oBAAoB,OAAO,GAAG,OAAO;CACnD,MAAM,KAAK,MAAM,OAAO;AACxB,QAAO,MAAM,qBACZ,CAAC,aAAa,iBAAiB,OAAO,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EACrE,MAAM,aAAa,OAAO,MAAM,EAChC,MAAM,aAAa,OAAO,MAAM,CAChC;AACD;;;;ACLD,SAAgB,QAIfC,OAGAC,KACe;CACf,MAAM,QAAQ,MAAM,WAAW,aAAa;CAC5C,MAAMC,aACL,MAAM,SAAS,CAAC,mBAAmB,CAAC,GACjC,YAAY,OAAO,OAAO,IAAW,GACrC;CACJ,MAAM,YAAY,aAAa,OAAO,WAAW;AACjD,QAAO,KAAK,UAAU;AACtB;;;;ACvBD,SAAgB,MAAMC,OAAyC;CAC9D,MAAM,QAAQ,MAAM,WAAW,aAAa;CAC5C,MAAM,KAAK,MAAM,OAAO;CACxB,MAAM,WAAW,SAAS,OAAO,MAAM;CACvC,MAAM,WAAW,MAAM,OAAO,MAAM;CACpC,MAAM,cAAc,MAAM;AACzB,SAAO;GACN,IAAI,SAAS;GACb,QAAQ,SAAS,QAAQ;GACzB,MAAM,MAAM;AACX,SAAK,MAAM;GACX;GACD,MAAM,MAAM;AACX,SAAK,MAAM;GACX;EACD;CACD;CACD,MAAM,OAAO,MAAM,OAAqB,aAAa,CAAC;CACtD,MAAM,WAAW,MAAM;AACtB,MACC,KAAK,QAAQ,OAAO,UAAU,MAC9B,KAAK,QAAQ,WAAW,UAAU,QAAQ,UAC1C,SAAS,YAAY,OACpB;AACD,YAAS,UAAU;AACnB,QAAK,UAAU,aAAa;EAC5B;AACD,SAAO,KAAK;CACZ;AACD,QAAO,MAAM,qBACZ,CAAC,aAAa,oBAAoB,OAAO,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EACzE,UACA,SACA;AACD"}
|