atom.io 0.40.6 → 0.40.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/README.md +1 -1
  2. package/dist/data/index.d.ts +1 -1
  3. package/dist/employ-socket-D6wgByWh.js +12 -0
  4. package/dist/employ-socket-D6wgByWh.js.map +1 -0
  5. package/dist/has-role-hv4-hJMw.js +1149 -0
  6. package/dist/has-role-hv4-hJMw.js.map +1 -0
  7. package/dist/internal/index.d.ts +248 -248
  8. package/dist/internal/index.d.ts.map +1 -1
  9. package/dist/internal/index.js +570 -1712
  10. package/dist/internal/index.js.map +1 -1
  11. package/dist/introspection/index.d.ts +1 -1
  12. package/dist/is-fn-DY1wZ-md.js +10 -0
  13. package/dist/is-fn-DY1wZ-md.js.map +1 -0
  14. package/dist/main/index.d.ts +33 -33
  15. package/dist/main/index.d.ts.map +1 -1
  16. package/dist/main/index.js +2 -2
  17. package/dist/main/index.js.map +1 -1
  18. package/dist/mutex-store-CSvxY9i3.js +11 -0
  19. package/dist/mutex-store-CSvxY9i3.js.map +1 -0
  20. package/dist/react/index.d.ts +5 -5
  21. package/dist/react/index.d.ts.map +1 -1
  22. package/dist/react/index.js.map +1 -1
  23. package/dist/react-devtools/index.js +7 -7
  24. package/dist/react-devtools/index.js.map +1 -1
  25. package/dist/realtime/index.d.ts +7 -15
  26. package/dist/realtime/index.d.ts.map +1 -1
  27. package/dist/realtime/index.js +3 -33
  28. package/dist/realtime/index.js.map +1 -1
  29. package/dist/realtime-client/index.d.ts +5 -5
  30. package/dist/realtime-client/index.d.ts.map +1 -1
  31. package/dist/realtime-client/index.js +92 -69
  32. package/dist/realtime-client/index.js.map +1 -1
  33. package/dist/realtime-react/index.d.ts +17 -10
  34. package/dist/realtime-react/index.d.ts.map +1 -1
  35. package/dist/realtime-react/index.js +41 -41
  36. package/dist/realtime-react/index.js.map +1 -1
  37. package/dist/realtime-server/index.d.ts +60 -53
  38. package/dist/realtime-server/index.d.ts.map +1 -1
  39. package/dist/realtime-server/index.js +592 -485
  40. package/dist/realtime-server/index.js.map +1 -1
  41. package/dist/realtime-testing/index.d.ts +1 -2
  42. package/dist/realtime-testing/index.d.ts.map +1 -1
  43. package/dist/realtime-testing/index.js +25 -18
  44. package/dist/realtime-testing/index.js.map +1 -1
  45. package/dist/shared-room-store-COGGKqes.js +32 -0
  46. package/dist/shared-room-store-COGGKqes.js.map +1 -0
  47. package/dist/shared-room-store-D2o4ZLjC.d.ts +15 -0
  48. package/dist/shared-room-store-D2o4ZLjC.d.ts.map +1 -0
  49. package/dist/web/index.d.ts +3 -3
  50. package/dist/web/index.d.ts.map +1 -1
  51. package/dist/web/index.js +4 -3
  52. package/dist/web/index.js.map +1 -1
  53. package/package.json +12 -12
  54. package/src/internal/atom/create-regular-atom.ts +5 -4
  55. package/src/internal/atom/dispose-atom.ts +7 -2
  56. package/src/internal/atom/has-role.ts +3 -3
  57. package/src/internal/caching.ts +4 -2
  58. package/src/internal/families/create-readonly-held-selector-family.ts +2 -1
  59. package/src/internal/families/create-readonly-pure-selector-family.ts +5 -2
  60. package/src/internal/families/create-regular-atom-family.ts +2 -1
  61. package/src/internal/families/create-writable-held-selector-family.ts +2 -1
  62. package/src/internal/families/create-writable-pure-selector-family.ts +5 -2
  63. package/src/internal/families/dispose-from-store.ts +4 -4
  64. package/src/internal/families/find-in-store.ts +10 -10
  65. package/src/internal/families/get-family-of-token.ts +2 -2
  66. package/src/internal/families/index.ts +1 -0
  67. package/src/internal/families/mint-in-store.ts +54 -19
  68. package/src/internal/families/seek-in-store.ts +1 -1
  69. package/src/internal/get-state/get-fallback.ts +2 -2
  70. package/src/internal/get-state/get-from-store.ts +5 -5
  71. package/src/internal/get-state/read-or-compute-value.ts +1 -1
  72. package/src/internal/get-state/reduce-reference.ts +8 -6
  73. package/src/internal/index.ts +2 -220
  74. package/src/internal/molecule.ts +1 -2
  75. package/src/internal/mutable/create-mutable-atom-family.ts +3 -2
  76. package/src/internal/mutable/create-mutable-atom.ts +4 -2
  77. package/src/internal/mutable/get-json-family.ts +1 -1
  78. package/src/internal/mutable/get-update-family.ts +1 -1
  79. package/src/internal/mutable/tracker-family.ts +2 -1
  80. package/src/internal/mutable/tracker.ts +5 -8
  81. package/src/internal/safe-compute.ts +1 -1
  82. package/src/internal/selector/create-readonly-held-selector.ts +2 -1
  83. package/src/internal/selector/create-readonly-pure-selector.ts +2 -1
  84. package/src/internal/selector/create-writable-held-selector.ts +2 -1
  85. package/src/internal/selector/create-writable-pure-selector.ts +2 -1
  86. package/src/internal/selector/dispose-selector.ts +3 -2
  87. package/src/internal/selector/register-selector.ts +8 -5
  88. package/src/internal/selector/trace-selector-atoms.ts +2 -1
  89. package/src/internal/set-state/dispatch-state-update.ts +3 -2
  90. package/src/internal/set-state/evict-downstream.ts +1 -1
  91. package/src/internal/set-state/operate-on-store.ts +16 -22
  92. package/src/internal/set-state/reset-atom-or-selector.ts +5 -3
  93. package/src/internal/set-state/reset-in-store.ts +5 -5
  94. package/src/internal/set-state/set-atom-or-selector.ts +2 -2
  95. package/src/internal/set-state/set-atom.ts +4 -2
  96. package/src/internal/set-state/set-into-store.ts +21 -39
  97. package/src/internal/set-state/set-selector.ts +3 -2
  98. package/src/internal/state-types.ts +228 -0
  99. package/src/internal/store/deposit.ts +4 -4
  100. package/src/internal/store/index.ts +0 -1
  101. package/src/internal/store/store.ts +9 -9
  102. package/src/internal/store/withdraw.ts +4 -4
  103. package/src/internal/subscribe/recall-state.ts +1 -1
  104. package/src/internal/subscribe/subscribe-to-root-atoms.ts +1 -12
  105. package/src/internal/subscribe/subscribe-to-transaction.ts +3 -2
  106. package/src/internal/transaction/build-transaction.ts +3 -2
  107. package/src/internal/transaction/index.ts +1 -23
  108. package/src/internal/transaction/is-root-store.ts +4 -1
  109. package/src/internal/transaction/transaction-meta-progress.ts +22 -0
  110. package/src/main/atom.ts +1 -2
  111. package/src/main/find-state.ts +5 -5
  112. package/src/main/get-state.ts +4 -4
  113. package/src/main/realm.ts +2 -2
  114. package/src/main/set-state.ts +10 -10
  115. package/src/react/parse-state-overloads.ts +3 -3
  116. package/src/react/use-i.ts +6 -4
  117. package/src/react/use-loadable.ts +4 -10
  118. package/src/react/use-o.ts +6 -4
  119. package/src/react-devtools/store.ts +6 -6
  120. package/src/realtime/index.ts +1 -0
  121. package/src/realtime/mutex-store.ts +11 -0
  122. package/src/realtime/realtime-continuity.ts +1 -5
  123. package/src/realtime-client/pull-atom-family-member.ts +14 -17
  124. package/src/realtime-client/pull-atom.ts +1 -1
  125. package/src/realtime-client/pull-mutable-atom-family-member.ts +16 -12
  126. package/src/realtime-client/pull-selector-family-member.ts +8 -35
  127. package/src/realtime-client/pull-selector-roots.ts +90 -0
  128. package/src/realtime-client/pull-selector.ts +2 -27
  129. package/src/realtime-client/push-state.ts +33 -5
  130. package/src/realtime-client/realtime-client-stores/client-main-store.ts +2 -5
  131. package/src/realtime-react/index.ts +2 -1
  132. package/src/realtime-react/realtime-context.tsx +9 -5
  133. package/src/realtime-react/use-pull-atom-family-member.ts +2 -3
  134. package/src/realtime-react/use-pull-mutable-family-member.ts +2 -3
  135. package/src/realtime-react/use-pull-selector-family-member.ts +5 -6
  136. package/src/realtime-react/use-push.ts +7 -3
  137. package/src/realtime-react/use-realtime-service.ts +11 -11
  138. package/src/realtime-react/use-single-effect.ts +11 -14
  139. package/src/realtime-server/{realtime-server-stores/server-sync-store.ts → continuity/continuity-store.ts} +1 -1
  140. package/src/realtime-server/continuity/prepare-to-sync-realtime-continuity.ts +1 -1
  141. package/src/realtime-server/continuity/prepare-to-track-client-acknowledgement.ts +3 -5
  142. package/src/realtime-server/continuity/subscribe-to-continuity-actions.ts +1 -1
  143. package/src/realtime-server/employ-socket.ts +14 -0
  144. package/src/realtime-server/index.ts +2 -20
  145. package/src/realtime-server/ipc-sockets/child-socket.ts +125 -66
  146. package/src/realtime-server/ipc-sockets/custom-socket.ts +16 -14
  147. package/src/realtime-server/ipc-sockets/parent-socket.ts +81 -58
  148. package/src/realtime-server/realtime-family-provider.ts +78 -29
  149. package/src/realtime-server/realtime-mutable-family-provider.ts +80 -31
  150. package/src/realtime-server/realtime-mutable-provider.ts +30 -22
  151. package/src/realtime-server/realtime-server-stores/index.ts +0 -2
  152. package/src/realtime-server/realtime-server-stores/server-room-external-store.ts +77 -36
  153. package/src/realtime-server/realtime-server-stores/server-user-store.ts +12 -1
  154. package/src/realtime-server/realtime-state-provider.ts +30 -29
  155. package/src/realtime-server/realtime-state-receiver.ts +62 -16
  156. package/src/realtime-server/server-config.ts +9 -0
  157. package/src/realtime-server/socket-interface.ts +14 -0
  158. package/src/realtime-testing/setup-realtime-test.tsx +56 -23
  159. package/src/web/index.ts +1 -1
  160. package/src/web/{persist-sync.ts → storage-sync.ts} +5 -2
  161. package/src/internal/store/mint-or-counterfeit.ts +0 -108
  162. package/src/realtime-react/on-mount.ts +0 -5
  163. package/src/realtime-server/realtime-server-stores/server-room-external-actions.ts +0 -79
@@ -1,11 +1,9 @@
1
+ import { Above, ActorToolkit, Anarchy, AtomFamilyToken, AtomIOLogger, AtomIOToken, AtomToken, AtomUpdateEvent, Claim, CompoundFrom, CompoundTypedKey, FamilyMetadata, HeldSelectorFamilyToken, HeldSelectorToken, Hierarchy, JoinOptions, JoinStates, JoinToken, Logger, MoleculeCreationEvent, MoleculeDisposalEvent, MoleculeTransferEvent, MutableAtomFamilyOptions, MutableAtomFamilyToken, MutableAtomOptions, MutableAtomToken, PureSelectorFamilyToken, PureSelectorToken, ReadableFamilyToken, ReadableToken, ReadonlyHeldSelectorFamilyOptions, ReadonlyHeldSelectorFamilyToken, ReadonlyHeldSelectorOptions, ReadonlyHeldSelectorToken, ReadonlyPureSelectorFamilyOptions, ReadonlyPureSelectorFamilyToken, ReadonlyPureSelectorOptions, ReadonlyPureSelectorToken, ReadonlySelectorFamilyToken, ReadonlySelectorToken, RegularAtomFamilyOptions, RegularAtomFamilyToken, RegularAtomOptions, RegularAtomToken, SelectorFamilyToken, SelectorToken, Setter, SingularTypedKey, StateCreationEvent, StateDisposalEvent, StateLifecycleEvent, StateUpdate, TimelineEvent, TimelineManageable, TimelineOptions, TimelineSelectorUpdateEvent, TimelineToken, TransactionOptions, TransactionOutcomeEvent, TransactionToken, TransactionUpdateHandler, UpdateHandler, Vassal, ViewOf, WritableFamilyToken, WritableHeldSelectorFamilyOptions, WritableHeldSelectorFamilyToken, WritableHeldSelectorOptions, WritableHeldSelectorToken, WritablePureSelectorFamilyOptions, WritablePureSelectorFamilyToken, WritablePureSelectorOptions, WritablePureSelectorToken, WritableSelectorFamilyToken, WritableSelectorToken, WritableToken, WriterToolkit } from "atom.io";
1
2
  import { Canonical, Json, stringified } from "atom.io/json";
2
- import { Above, ActorToolkit, Anarchy, AtomFamilyToken, AtomIOLogger, AtomIOToken, AtomToken, AtomUpdateEvent, Claim, CompoundFrom, CompoundTypedKey, FamilyMetadata, HeldSelectorFamilyToken, HeldSelectorToken, Hierarchy, JoinOptions, JoinStates, JoinToken, Logger, MoleculeCreationEvent, MoleculeDisposalEvent, MoleculeTransferEvent, MutableAtomFamilyOptions, MutableAtomFamilyToken, MutableAtomOptions, MutableAtomToken, PureSelectorFamilyToken, PureSelectorToken, ReadableFamilyToken, ReadableToken, ReadonlyHeldSelectorFamilyOptions, ReadonlyHeldSelectorFamilyToken, ReadonlyHeldSelectorOptions, ReadonlyHeldSelectorToken, ReadonlyPureSelectorFamilyOptions, ReadonlyPureSelectorFamilyToken, ReadonlyPureSelectorOptions, ReadonlyPureSelectorToken, ReadonlySelectorFamilyToken, ReadonlySelectorToken, RegularAtomFamilyOptions, RegularAtomFamilyToken, RegularAtomOptions, RegularAtomToken, SelectorFamilyToken, SelectorToken, SingularTypedKey, StateCreationEvent, StateDisposalEvent, StateLifecycleEvent, StateUpdate, TimelineEvent, TimelineManageable, TimelineOptions, TimelineSelectorUpdateEvent, TimelineToken, TransactionOptions, TransactionOutcomeEvent, TransactionToken, TransactionUpdateHandler, UpdateHandler, Vassal, ViewOf, WritableFamilyToken, WritableHeldSelectorFamilyOptions, WritableHeldSelectorFamilyToken, WritableHeldSelectorOptions, WritableHeldSelectorToken, WritablePureSelectorFamilyOptions, WritablePureSelectorFamilyToken, WritablePureSelectorOptions, WritablePureSelectorToken, WritableSelectorFamilyToken, WritableSelectorToken, WritableToken, WriterToolkit } from "atom.io";
3
3
  import { SetRTX } from "atom.io/transceivers/set-rtx";
4
4
 
5
- //#region src/internal/atom/has-role.d.ts
6
- declare const INTERNAL_ROLES: readonly ["tracker:signal"];
7
- type internalRole = (typeof INTERNAL_ROLES)[number];
8
- declare function hasRole(atom: Atom<any, any>, role: internalRole): boolean;
5
+ //#region src/internal/arbitrary.d.ts
6
+ declare function arbitrary(random?: () => number): string;
9
7
  //#endregion
10
8
  //#region src/internal/store/circular-buffer.d.ts
11
9
  declare class CircularBuffer<T> {
@@ -19,6 +17,28 @@ declare class CircularBuffer<T> {
19
17
  copy(): CircularBuffer<T>;
20
18
  }
21
19
  //#endregion
20
+ //#region src/internal/mutable/transceiver.d.ts
21
+ interface Transceiver<V, S extends Json.Serializable, J extends Json.Serializable> {
22
+ READONLY_VIEW: V;
23
+ do: (update: S) => number | `OUT_OF_RANGE` | null;
24
+ undo: (update: S) => void;
25
+ subscribe: (key: string, fn: (update: S) => void) => () => void;
26
+ cacheUpdateNumber: number;
27
+ getUpdateNumber: (update: S) => number;
28
+ toJSON: () => J;
29
+ }
30
+ type TransceiverConstructor<J extends Json.Serializable, T extends Transceiver<any, any, J>> = (new () => T) & {
31
+ fromJSON: (json: J) => T;
32
+ };
33
+ declare function isTransceiver(value: unknown): value is Transceiver<any, Json.Serializable, Json.Serializable>;
34
+ type TransceiverMode = `playback` | `record` | `transaction`;
35
+ type SignalFrom<T extends Transceiver<any, any, any>> = T extends Transceiver<any, infer S, any> ? S : never;
36
+ type AsJSON<T extends Transceiver<any, any, any>> = T extends Transceiver<any, any, infer J> ? J : never;
37
+ type ConstructorOf<T extends Transceiver<any, any, any>> = TransceiverConstructor<AsJSON<T>, T>;
38
+ //#endregion
39
+ //#region src/internal/mutable/create-mutable-atom.d.ts
40
+ declare function createMutableAtom<T extends Transceiver<any, any, any>>(store: Store, options: MutableAtomOptions<T>, family: FamilyMetadata | undefined): MutableAtomToken<T>;
41
+ //#endregion
22
42
  //#region src/internal/overlays/map-overlay.d.ts
23
43
  declare class MapOverlay<K, V> extends Map<K, V> {
24
44
  deleted: Set<K>;
@@ -39,6 +59,14 @@ declare class MapOverlay<K, V> extends Map<K, V> {
39
59
  get size(): number;
40
60
  }
41
61
  //#endregion
62
+ //#region src/internal/utility-types.d.ts
63
+ type Fn = (...parameters: any[]) => any;
64
+ type Ctor<T> = new (...args: any[]) => T;
65
+ type Flat<R extends { [K in PropertyKey]: any }> = { [K in keyof R]: R[K] };
66
+ type Count<N extends number, A extends any[] = []> = [...A, any][`length`] extends N ? A[`length`] : A[`length`] | Count<N, [...A, any]>;
67
+ type Each<E extends any[]> = { [P in Count<E[`length`]>]: E[P] };
68
+ type Refinement<A, B extends A> = (a: A) => a is B;
69
+ //#endregion
42
70
  //#region src/internal/overlays/relations-overlay.d.ts
43
71
  declare class RelationsOverlay<K, V extends Set<any>> extends Map<K, V> {
44
72
  deleted: Set<K>;
@@ -65,14 +93,6 @@ declare class SetOverlay<T> extends Set<T> {
65
93
  get size(): number;
66
94
  }
67
95
  //#endregion
68
- //#region src/internal/utility-types.d.ts
69
- type Fn = (...parameters: any[]) => any;
70
- type Ctor<T> = new (...args: any[]) => T;
71
- type Flat<R extends { [K in PropertyKey]: any }> = { [K in keyof R]: R[K] };
72
- type Count<N extends number, A extends any[] = []> = [...A, any][`length`] extends N ? A[`length`] : A[`length`] | Count<N, [...A, any]>;
73
- type Each<E extends any[]> = { [P in Count<E[`length`]>]: E[P] };
74
- type Refinement<A, B extends A> = (a: A) => a is B;
75
- //#endregion
76
96
  //#region src/internal/junction.d.ts
77
97
  type JunctionEntriesBase<A extends string, B extends string, Content extends Json.Object | null> = {
78
98
  readonly relations: ([A, B[]] | [B, A[]])[];
@@ -162,6 +182,19 @@ type JunctionOverlay<AName extends string, A extends string, BName extends strin
162
182
  contents: MapOverlay<string, Content>;
163
183
  };
164
184
  //#endregion
185
+ //#region src/internal/transaction/transaction-meta-progress.d.ts
186
+ declare const TRANSACTION_PHASES: readonly ["idle", "building", "applying"];
187
+ type TransactionPhase = (typeof TRANSACTION_PHASES)[number];
188
+ type TransactionProgress<F extends Fn> = {
189
+ phase: `applying` | `building`;
190
+ update: TransactionOutcomeEvent<TransactionToken<F>>;
191
+ toolkit: ActorToolkit;
192
+ };
193
+ type TransactionEpoch = {
194
+ epoch: Map<string, number>;
195
+ actionContinuities: Junction<`continuity`, string, `action`, string>;
196
+ };
197
+ //#endregion
165
198
  //#region src/internal/transaction/is-root-store.d.ts
166
199
  interface RootStore extends Store {
167
200
  transactionMeta: TransactionEpoch;
@@ -225,18 +258,174 @@ declare function getEpochNumberOfAction(store: RootStore, transactionKey: string
225
258
  declare function setEpochNumberOfContinuity(store: RootStore, continuityKey: string, newEpoch: number): void;
226
259
  declare function setEpochNumberOfAction(store: RootStore, transactionKey: string, newEpoch: number): void;
227
260
  //#endregion
228
- //#region src/internal/transaction/index.d.ts
229
- declare const TRANSACTION_PHASES: readonly ["idle", "building", "applying"];
230
- type TransactionPhase = (typeof TRANSACTION_PHASES)[number];
231
- type TransactionProgress<F extends Fn> = {
232
- phase: `applying` | `building`;
233
- update: TransactionOutcomeEvent<TransactionToken<F>>;
234
- toolkit: ActorToolkit;
261
+ //#region src/internal/mutable/create-mutable-atom-family.d.ts
262
+ declare function createMutableAtomFamily<T extends Transceiver<any, any, any>, K extends Canonical>(store: RootStore, options: MutableAtomFamilyOptions<T, K>, internalRoles?: string[]): MutableAtomFamilyToken<T, K>;
263
+ //#endregion
264
+ //#region src/internal/timeline/create-timeline.d.ts
265
+ type Timeline<ManagedAtom extends TimelineManageable> = {
266
+ type: `timeline`;
267
+ key: string;
268
+ at: number;
269
+ timeTraveling: `into_future` | `into_past` | null;
270
+ history: TimelineEvent<ManagedAtom>[];
271
+ selectorTime: number | null;
272
+ transactionKey: string | null;
273
+ install: (store: RootStore) => void;
274
+ subject: Subject<TimelineEvent<ManagedAtom> | `redo` | `undo`>;
275
+ subscriptions: Map<string, () => void>;
235
276
  };
236
- type TransactionEpoch = {
237
- epoch: Map<string, number>;
238
- actionContinuities: Junction<`continuity`, string, `action`, string>;
277
+ declare function createTimeline<ManagedAtom extends TimelineManageable>(store: RootStore, options: TimelineOptions<ManagedAtom>, data?: Timeline<ManagedAtom>): TimelineToken<ManagedAtom>;
278
+ //#endregion
279
+ //#region src/internal/timeline/time-travel.d.ts
280
+ declare const timeTravel: (store: Store, action: `redo` | `undo`, token: TimelineToken<any>) => void;
281
+ //#endregion
282
+ //#region src/internal/state-types.d.ts
283
+ type AtomIOState = {
284
+ key: string;
285
+ family?: FamilyMetadata;
286
+ install: (store: RootStore) => void;
287
+ subject: Subject<StateUpdate<any>>;
239
288
  };
289
+ type RegularAtom<T, E> = Flat<AtomIOState & {
290
+ type: `atom`;
291
+ default: T | (() => T);
292
+ cleanup?: () => void;
293
+ internalRoles?: InternalRole[];
294
+ catch?: readonly Ctor<E>[];
295
+ __T?: T;
296
+ __E?: E;
297
+ }>;
298
+ type MutableAtom<T extends Transceiver<any, any, any>> = Flat<AtomIOState & {
299
+ type: `mutable_atom`;
300
+ class: ConstructorOf<T>;
301
+ cleanup?: () => void;
302
+ __T?: T;
303
+ }>;
304
+ type Atom<T, E> = RegularAtom<T, E> | (T extends Transceiver<any, any, any> ? MutableAtom<T> : never);
305
+ type WritableHeldSelector<T> = Flat<AtomIOState & {
306
+ type: `writable_held_selector`;
307
+ const: T;
308
+ getFrom: (target: Store) => T;
309
+ setSelf: (newValue: T) => void;
310
+ __T?: T;
311
+ }>;
312
+ type ReadonlyHeldSelector<T> = Flat<AtomIOState & {
313
+ type: `readonly_held_selector`;
314
+ const: T;
315
+ getFrom: (target: Store) => T;
316
+ __T?: T;
317
+ }>;
318
+ type WritablePureSelector<T, E> = Flat<AtomIOState & {
319
+ type: `writable_pure_selector`;
320
+ getFrom: (target: Store) => E | T;
321
+ setSelf: (newValue: T) => void;
322
+ catch?: readonly Ctor<E>[];
323
+ __T?: T;
324
+ __E?: E;
325
+ }>;
326
+ type ReadonlyPureSelector<T, E> = Flat<AtomIOState & {
327
+ type: `readonly_pure_selector`;
328
+ getFrom: (target: Store) => E | T;
329
+ catch?: readonly Ctor<E>[];
330
+ __T?: T;
331
+ __E?: E;
332
+ }>;
333
+ type ReadonlySelector<T, E> = ReadonlyHeldSelector<T> | ReadonlyPureSelector<T, E>;
334
+ type WritableSelector<T, E> = WritableHeldSelector<T> | WritablePureSelector<T, E>;
335
+ type HeldSelector<T> = ReadonlyHeldSelector<T> | WritableHeldSelector<T>;
336
+ type PureSelector<T, E> = ReadonlyPureSelector<T, E> | WritablePureSelector<T, E>;
337
+ type Selector<T, E> = ReadonlyHeldSelector<T> | ReadonlyPureSelector<T, E> | WritableHeldSelector<T> | WritablePureSelector<T, E>;
338
+ type WritableState<T, E> = Atom<T, E> | WritableSelector<T, E>;
339
+ type ReadableState<T, E> = Atom<T, E> | Selector<T, E>;
340
+ type RegularAtomFamily<T, K extends Canonical, E = never> = Flat<RegularAtomFamilyToken<T, K, E> & {
341
+ create: <Key extends K>(key: Key) => RegularAtomToken<T, Key, E>;
342
+ default: T | ((key: K) => T);
343
+ install: (store: RootStore) => void;
344
+ internalRoles: string[] | undefined;
345
+ subject: Subject<StateLifecycleEvent<RegularAtomToken<T, K, E>>>;
346
+ }>;
347
+ type MutableAtomFamily<T extends Transceiver<any, any, any>, K extends Canonical> = Flat<MutableAtomFamilyToken<T, K> & {
348
+ create: <Key extends K>(key: Key) => MutableAtomToken<T, Key>;
349
+ class: ConstructorOf<T>;
350
+ install: (store: RootStore) => void;
351
+ internalRoles: string[] | undefined;
352
+ subject: Subject<StateLifecycleEvent<MutableAtomToken<T>>>;
353
+ }>;
354
+ type AtomFamily<T, K extends Canonical, E> = MutableAtomFamily<T extends Transceiver<any, any, any> ? T : never, K> | RegularAtomFamily<T, K, E>;
355
+ type WritablePureSelectorFamily<T, K extends Canonical, E> = Flat<WritablePureSelectorFamilyToken<T, K, E> & {
356
+ create: <Key extends K>(key: Key) => WritablePureSelectorToken<T, Key, E>;
357
+ default: (key: K) => T;
358
+ install: (store: RootStore) => void;
359
+ internalRoles: string[] | undefined;
360
+ subject: Subject<StateLifecycleEvent<WritablePureSelectorToken<T, K, E>>>;
361
+ }>;
362
+ type WritableHeldSelectorFamily<T, K extends Canonical> = Flat<WritableHeldSelectorFamilyToken<T, K> & {
363
+ create: <Key extends K>(key: Key) => WritableHeldSelectorToken<T, Key>;
364
+ default: (key: K) => T;
365
+ install: (store: RootStore) => void;
366
+ internalRoles: string[] | undefined;
367
+ subject: Subject<StateLifecycleEvent<WritableHeldSelectorToken<T, K>>>;
368
+ }>;
369
+ type ReadonlyPureSelectorFamily<T, K extends Canonical, E> = Flat<ReadonlyPureSelectorFamilyToken<T, K, E> & {
370
+ create: <Key extends K>(key: Key) => ReadonlyPureSelectorToken<T, Key, E>;
371
+ default: (key: K) => T;
372
+ install: (store: RootStore) => void;
373
+ internalRoles: string[] | undefined;
374
+ subject: Subject<StateLifecycleEvent<ReadonlyPureSelectorToken<T, K, E>>>;
375
+ }>;
376
+ type ReadonlyHeldSelectorFamily<T, K extends Canonical> = Flat<ReadonlyHeldSelectorFamilyToken<T, K> & {
377
+ create: <Key extends K>(key: Key) => ReadonlyHeldSelectorToken<T, Key>;
378
+ default: (key: K) => T;
379
+ install: (store: RootStore) => void;
380
+ internalRoles: string[] | undefined;
381
+ subject: Subject<StateLifecycleEvent<ReadonlyHeldSelectorToken<T>>>;
382
+ }>;
383
+ type PureSelectorFamily<T, K extends Canonical, E> = ReadonlyPureSelectorFamily<T, K, E> | WritablePureSelectorFamily<T, K, E>;
384
+ type HeldSelectorFamily<T, K extends Canonical> = ReadonlyHeldSelectorFamily<T, K> | WritableHeldSelectorFamily<T, K>;
385
+ type ReadonlySelectorFamily<T, K extends Canonical, E> = ReadonlyHeldSelectorFamily<T, K> | ReadonlyPureSelectorFamily<T, K, E>;
386
+ type WritableSelectorFamily<T, K extends Canonical, E> = WritableHeldSelectorFamily<T, K> | WritablePureSelectorFamily<T, K, E>;
387
+ type SelectorFamily<T, K extends Canonical, E> = HeldSelectorFamily<T, K> | PureSelectorFamily<T, K, E>;
388
+ type WritableFamily<T, K extends Canonical, E> = AtomFamily<T, K, E> | WritableSelectorFamily<T, K, E>;
389
+ type ReadableFamily<T, K extends Canonical, E> = AtomFamily<T, K, E> | SelectorFamily<T, K, E>;
390
+ type AtomIOInternalResource = ReadableFamily<any, any, any> | ReadableState<any, any> | Timeline<any> | Transaction<any>;
391
+ //#endregion
392
+ //#region src/internal/mutable/get-json-family.d.ts
393
+ declare const getJsonFamily: <Core extends Transceiver<any, Json.Serializable, Json.Serializable>, Key extends Canonical>(mutableAtomFamily: MutableAtomFamilyToken<Core, Key>, store: Store) => WritablePureSelectorFamily<ReturnType<Core[`toJSON`]>, Key, never>;
394
+ //#endregion
395
+ //#region src/internal/mutable/get-json-token.d.ts
396
+ declare const getJsonToken: <T extends Transceiver<any, any, any>>(store: Store, mutableAtomToken: MutableAtomToken<T>) => WritablePureSelectorToken<AsJSON<T>>;
397
+ //#endregion
398
+ //#region src/internal/mutable/get-update-family.d.ts
399
+ declare const getUpdateFamily: <T extends Transceiver<any, Json.Serializable, Json.Serializable>, K extends string>(mutableAtomFamily: MutableAtomFamilyToken<T, K>, store: Store) => RegularAtomFamily<SignalFrom<T>, K, never>;
400
+ //#endregion
401
+ //#region src/internal/mutable/get-update-token.d.ts
402
+ declare const getUpdateToken: <T extends Transceiver<any, any, any>>(mutableAtomToken: MutableAtomToken<T>) => RegularAtomToken<SignalFrom<T>>;
403
+ //#endregion
404
+ //#region src/internal/mutable/tracker.d.ts
405
+ /**
406
+ * @internal Give the tracker a transceiver state and a store, and it will
407
+ * subscribe to the transceiver's inner value. When the inner value changes,
408
+ * the tracker will update its own state to reflect the change.
409
+ */
410
+ declare class Tracker<T extends Transceiver<any, any, any>> {
411
+ private initializeSignalAtom;
412
+ private unsubscribeFromInnerValue;
413
+ private unsubscribeFromState;
414
+ private captureSignalsFromCore;
415
+ private supplySignalsToCore;
416
+ mutableAtomToken: MutableAtomToken<T>;
417
+ latestSignalToken: RegularAtomToken<SignalFrom<T> | null>;
418
+ [Symbol.dispose]: () => void;
419
+ constructor(mutableAtomToken: MutableAtomToken<T>, store: Store);
420
+ }
421
+ //#endregion
422
+ //#region src/internal/mutable/tracker-family.d.ts
423
+ declare class FamilyTracker<T extends Transceiver<any, any, any>, K extends Canonical> {
424
+ private trackers;
425
+ readonly latestSignalAtoms: RegularAtomFamily<SignalFrom<T> | null, K>;
426
+ readonly mutableAtoms: MutableAtomFamily<T, K>;
427
+ constructor(mutableAtoms: MutableAtomFamily<T, K>, store: RootStore);
428
+ }
240
429
  //#endregion
241
430
  //#region src/internal/store/deposit.d.ts
242
431
  declare function deposit<T, E>(state: RegularAtom<T, E>): RegularAtomToken<T, Canonical, E>;
@@ -259,26 +448,6 @@ declare function deposit<T extends Fn>(state: Transaction<T>): TransactionToken<
259
448
  declare function deposit<M extends TimelineManageable>(state: Timeline<M>): TimelineToken<M>;
260
449
  declare function deposit(resource: AtomIOInternalResource): AtomIOToken;
261
450
  //#endregion
262
- //#region src/internal/store/mint-or-counterfeit.d.ts
263
- declare const COUNTERFEIT: unique symbol;
264
- declare const FAMILY_MEMBER_TOKEN_TYPES: {
265
- readonly atom_family: "atom";
266
- readonly molecule_family: "molecule";
267
- readonly mutable_atom_family: "mutable_atom";
268
- readonly readonly_held_selector_family: "readonly_held_selector";
269
- readonly readonly_pure_selector_family: "readonly_pure_selector";
270
- readonly writable_held_selector_family: "writable_held_selector";
271
- readonly writable_pure_selector_family: "writable_pure_selector";
272
- };
273
- declare function mint<T extends Transceiver<any, any, any>, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, K>, key: Key): MutableAtomToken<T>;
274
- declare function mint<T, K extends Canonical, Key extends K, E>(token: RegularAtomFamilyToken<T, K, E>, key: Key, counterfeit?: typeof COUNTERFEIT): RegularAtomToken<T, Key, E>;
275
- declare function mint<T, K extends Canonical, Key extends K, E>(token: AtomFamilyToken<T, K, E>, key: Key, counterfeit?: typeof COUNTERFEIT): AtomToken<T, Key, E>;
276
- declare function mint<T, K extends Canonical, Key extends K, E>(token: WritablePureSelectorFamilyToken<T, K, E>, key: Key, counterfeit?: typeof COUNTERFEIT): WritablePureSelectorToken<T, Key, E>;
277
- declare function mint<T, K extends Canonical, Key extends K, E>(token: ReadonlyPureSelectorFamilyToken<T, K, E>, key: Key, counterfeit?: typeof COUNTERFEIT): ReadonlyPureSelectorToken<T, Key, E>;
278
- declare function mint<T, K extends Canonical, Key extends K, E>(token: SelectorFamilyToken<T, K, E>, key: Key, counterfeit?: typeof COUNTERFEIT): SelectorToken<T, Key, E>;
279
- declare function mint<T, K extends Canonical, Key extends K, E>(token: WritableFamilyToken<T, K, E>, key: Key, counterfeit?: typeof COUNTERFEIT): WritableToken<T, Key, E>;
280
- declare function mint<T, K extends Canonical, Key extends K, E>(token: ReadableFamilyToken<T, K, E>, key: Key, counterfeit?: typeof COUNTERFEIT): ReadableToken<T, Key, E>;
281
- //#endregion
282
451
  //#region src/internal/join/create-join.d.ts
283
452
  declare function createJoin<ASide extends string, AType extends string, BSide extends string, BType extends string, Cardinality extends `1:1` | `1:n` | `n:n`, Content extends Json.Object>(store: RootStore, options: JoinOptions<ASide, AType, BSide, BType, Cardinality, Content>, defaultContent: Content | undefined): JoinToken<ASide, AType, BSide, BType, Cardinality, Content>;
284
453
  //#endregion
@@ -326,7 +495,7 @@ type Molecule<K extends Canonical> = {
326
495
  readonly stringKey: stringified<K>;
327
496
  readonly dependsOn: `all` | `any`;
328
497
  };
329
- declare function makeRootMoleculeInStore<S extends string>(key: S, store?: Store): S;
498
+ declare function makeRootMoleculeInStore<S extends string>(store: Store, key: S): S;
330
499
  declare function allocateIntoStore<H extends Hierarchy, V extends Vassal<H>, A extends Above<V, H>>(store: Store, provenance: A, key: V, dependsOn?: `all` | `any`): Claim<V>;
331
500
  declare function fuseWithinStore<H extends Hierarchy, C extends CompoundFrom<H>, T extends (C extends CompoundTypedKey<infer t, any, any> ? t : never), A extends (C extends CompoundTypedKey<any, infer a, any> ? a : never), B extends (C extends CompoundTypedKey<any, any, infer b> ? b : never)>(store: Store, type: T, sideA: SingularTypedKey<A>, sideB: SingularTypedKey<B>): Claim<CompoundTypedKey<T, A, B>>;
332
501
  declare function createDeallocateTX<H extends Hierarchy, V extends Exclude<Vassal<H>, CompoundTypedKey>>(store: RootStore): TransactionToken<(claim: Claim<V>) => void>;
@@ -353,24 +522,6 @@ declare function closeOperation(store: Store): void;
353
522
  declare const isDone: (store: Store, key: string) => boolean;
354
523
  declare const markDone: (store: Store, key: string) => void;
355
524
  //#endregion
356
- //#region src/internal/timeline/create-timeline.d.ts
357
- type Timeline<ManagedAtom extends TimelineManageable> = {
358
- type: `timeline`;
359
- key: string;
360
- at: number;
361
- timeTraveling: `into_future` | `into_past` | null;
362
- history: TimelineEvent<ManagedAtom>[];
363
- selectorTime: number | null;
364
- transactionKey: string | null;
365
- install: (store: RootStore) => void;
366
- subject: Subject<TimelineEvent<ManagedAtom> | `redo` | `undo`>;
367
- subscriptions: Map<string, () => void>;
368
- };
369
- declare function createTimeline<ManagedAtom extends TimelineManageable>(store: RootStore, options: TimelineOptions<ManagedAtom>, data?: Timeline<ManagedAtom>): TimelineToken<ManagedAtom>;
370
- //#endregion
371
- //#region src/internal/timeline/time-travel.d.ts
372
- declare const timeTravel: (store: Store, action: `redo` | `undo`, token: TimelineToken<any>) => void;
373
- //#endregion
374
525
  //#region src/internal/store/store.d.ts
375
526
  declare class Store implements Lineage {
376
527
  parent: ChildStore | RootStore | null;
@@ -470,74 +621,13 @@ declare function withdraw<T, E>(store: Store, token: WritableToken<T, any, E>):
470
621
  declare function withdraw<T, E>(store: Store, token: ReadableToken<T, any, E>): ReadableState<T, E>;
471
622
  declare function withdraw(store: Store, token: AtomIOToken): AtomIOInternalResource;
472
623
  //#endregion
473
- //#region src/internal/mutable/transceiver.d.ts
474
- interface Transceiver<V, S extends Json.Serializable, J extends Json.Serializable> {
475
- READONLY_VIEW: V;
476
- do: (update: S) => number | `OUT_OF_RANGE` | null;
477
- undo: (update: S) => void;
478
- subscribe: (key: string, fn: (update: S) => void) => () => void;
479
- cacheUpdateNumber: number;
480
- getUpdateNumber: (update: S) => number;
481
- toJSON: () => J;
482
- }
483
- type TransceiverConstructor<J extends Json.Serializable, T extends Transceiver<any, any, J>> = (new () => T) & {
484
- fromJSON: (json: J) => T;
485
- };
486
- declare function isTransceiver(value: unknown): value is Transceiver<any, Json.Serializable, Json.Serializable>;
487
- type TransceiverMode = `playback` | `record` | `transaction`;
488
- type SignalFrom<T extends Transceiver<any, any, any>> = T extends Transceiver<any, infer S, any> ? S : never;
489
- type AsJSON<T extends Transceiver<any, any, any>> = T extends Transceiver<any, any, infer J> ? J : never;
490
- type ConstructorOf<T extends Transceiver<any, any, any>> = TransceiverConstructor<AsJSON<T>, T>;
491
- //#endregion
492
- //#region src/internal/mutable/create-mutable-atom.d.ts
493
- declare function createMutableAtom<T extends Transceiver<any, any, any>>(store: Store, options: MutableAtomOptions<T>, family: FamilyMetadata | undefined): MutableAtomToken<T>;
494
- //#endregion
495
- //#region src/internal/mutable/create-mutable-atom-family.d.ts
496
- declare function createMutableAtomFamily<T extends Transceiver<any, any, any>, K extends Canonical>(store: RootStore, options: MutableAtomFamilyOptions<T, K>, internalRoles?: string[]): MutableAtomFamilyToken<T, K>;
497
- //#endregion
498
- //#region src/internal/mutable/get-json-family.d.ts
499
- declare const getJsonFamily: <Core extends Transceiver<any, Json.Serializable, Json.Serializable>, Key extends Canonical>(mutableAtomFamily: MutableAtomFamilyToken<Core, Key>, store: Store) => WritablePureSelectorFamily<ReturnType<Core[`toJSON`]>, Key, never>;
500
- //#endregion
501
- //#region src/internal/mutable/get-json-token.d.ts
502
- declare const getJsonToken: <T extends Transceiver<any, any, any>>(store: Store, mutableAtomToken: MutableAtomToken<T>) => WritablePureSelectorToken<AsJSON<T>>;
503
- //#endregion
504
- //#region src/internal/mutable/get-update-family.d.ts
505
- declare const getUpdateFamily: <T extends Transceiver<any, Json.Serializable, Json.Serializable>, K extends string>(mutableAtomFamily: MutableAtomFamilyToken<T, K>, store: Store) => RegularAtomFamily<SignalFrom<T>, K, never>;
506
- //#endregion
507
- //#region src/internal/mutable/get-update-token.d.ts
508
- declare const getUpdateToken: <T extends Transceiver<any, any, any>>(mutableAtomToken: MutableAtomToken<T>) => RegularAtomToken<SignalFrom<T>>;
509
- //#endregion
510
- //#region src/internal/mutable/tracker.d.ts
511
- /**
512
- * @internal Give the tracker a transceiver state and a store, and it will
513
- * subscribe to the transceiver's inner value. When the inner value changes,
514
- * the tracker will update its own state to reflect the change.
515
- */
516
- declare class Tracker<T extends Transceiver<any, any, any>> {
517
- private initializeSignalAtom;
518
- private unsubscribeFromInnerValue;
519
- private unsubscribeFromState;
520
- private captureSignalsFromCore;
521
- private supplySignalsToCore;
522
- mutableAtomToken: MutableAtomToken<T>;
523
- latestSignalToken: RegularAtomToken<SignalFrom<T> | null>;
524
- [Symbol.dispose]: () => void;
525
- constructor(mutableAtomToken: MutableAtomToken<T>, store: Store);
526
- }
527
- //#endregion
528
- //#region src/internal/mutable/tracker-family.d.ts
529
- declare class FamilyTracker<T extends Transceiver<any, any, any>, K extends Canonical> {
530
- private trackers;
531
- readonly latestSignalAtoms: RegularAtomFamily<SignalFrom<T> | null, K>;
532
- readonly mutableAtoms: MutableAtomFamily<T, K>;
533
- constructor(mutableAtoms: MutableAtomFamily<T, K>, store: RootStore);
534
- }
535
- //#endregion
536
- //#region src/internal/arbitrary.d.ts
537
- declare function arbitrary(random?: () => number): string;
624
+ //#region src/internal/atom/has-role.d.ts
625
+ declare const INTERNAL_ROLES: readonly ["tracker:signal"];
626
+ type InternalRole = (typeof INTERNAL_ROLES)[number];
627
+ declare function hasRole(atom: Atom<any, any>, role: InternalRole): boolean;
538
628
  //#endregion
539
629
  //#region src/internal/atom/create-regular-atom.d.ts
540
- declare function createRegularAtom<T, K extends Canonical, E>(store: Store, options: RegularAtomOptions<T, E>, family: FamilyMetadata<K> | undefined, internalRoles?: internalRole[]): RegularAtomToken<T, K, E>;
630
+ declare function createRegularAtom<T, K extends Canonical, E>(store: Store, options: RegularAtomOptions<T, E>, family: FamilyMetadata<K> | undefined, internalRoles?: InternalRole[]): RegularAtomToken<T, K, E>;
541
631
  //#endregion
542
632
  //#region src/internal/atom/dispose-atom.d.ts
543
633
  declare function disposeAtom(store: Store, atomToken: AtomToken<any, any, any>): void;
@@ -611,18 +701,26 @@ declare function createWritablePureSelectorFamily<T, K extends Canonical, E>(sto
611
701
  //#endregion
612
702
  //#region src/internal/families/dispose-from-store.d.ts
613
703
  declare function disposeFromStore(store: Store, token: ReadableToken<any, any, any>): void;
614
- declare function disposeFromStore<K extends Canonical, Key extends K>(store: Store, token: ReadableFamilyToken<any, K, any>, key: Key): void;
615
- declare function disposeFromStore<K extends Canonical, Key extends K>(store: Store, ...params: [token: ReadableFamilyToken<any, K, any>, key: Key] | [token: ReadableToken<any, any, any>]): void;
704
+ declare function disposeFromStore<K extends Canonical>(store: Store, token: ReadableFamilyToken<any, K, any>, key: NoInfer<K>): void;
705
+ declare function disposeFromStore<K extends Canonical>(store: Store, ...params: [token: ReadableFamilyToken<any, K, any>, key: NoInfer<K>] | [token: ReadableToken<any, any, any>]): void;
616
706
  //#endregion
617
707
  //#region src/internal/families/find-in-store.d.ts
618
- declare function findInStore<T extends Transceiver<any, any, any>, K extends Canonical, Key extends K>(store: Store, familyToken: MutableAtomFamilyToken<T, K>, key: Key): MutableAtomToken<T, K>;
619
- declare function findInStore<T, K extends Canonical, Key extends K, E>(store: Store, familyToken: RegularAtomFamilyToken<T, K, E>, key: Key): RegularAtomToken<T, K, E>;
620
- declare function findInStore<T, K extends Canonical, Key extends K, E>(store: Store, familyToken: AtomFamilyToken<T, K, E>, key: Key): AtomToken<T, K, E>;
621
- declare function findInStore<T, K extends Canonical, Key extends K, E>(store: Store, familyToken: WritablePureSelectorFamilyToken<T, K, E>, key: Key): WritablePureSelectorToken<T, K, E>;
622
- declare function findInStore<T, K extends Canonical, Key extends K, E>(store: Store, familyToken: ReadonlyPureSelectorFamilyToken<T, K, E>, key: Key): ReadonlyPureSelectorToken<T, K, E>;
623
- declare function findInStore<T, K extends Canonical, Key extends K, E>(store: Store, familyToken: SelectorFamilyToken<T, K, E>, key: Key): SelectorToken<T, K, E>;
624
- declare function findInStore<T, K extends Canonical, Key extends K, E>(store: Store, familyToken: WritableFamilyToken<T, K, E>, key: Key): WritableToken<T, K, E>;
625
- declare function findInStore<T, K extends Canonical, Key extends K, E>(store: Store, familyToken: ReadableFamilyToken<T, K, E>, key: Key): ReadableToken<T, K, E>;
708
+ declare function findInStore<T extends Transceiver<any, any, any>, K extends Canonical, Key extends K>(store: Store, familyToken: MutableAtomFamilyToken<T, K>, key: Key): MutableAtomToken<T, Key>;
709
+ declare function findInStore<T, K extends Canonical, Key extends K, E>(store: Store, familyToken: RegularAtomFamilyToken<T, K, E>, key: Key): RegularAtomToken<T, Key, E>;
710
+ declare function findInStore<T, K extends Canonical, Key extends K, E>(store: Store, familyToken: AtomFamilyToken<T, K, E>, key: Key): AtomToken<T, Key, E>;
711
+ declare function findInStore<T, K extends Canonical, Key extends K, E>(store: Store, familyToken: WritablePureSelectorFamilyToken<T, K, E>, key: Key): WritablePureSelectorToken<T, Key, E>;
712
+ declare function findInStore<T, K extends Canonical, Key extends K, E>(store: Store, familyToken: ReadonlyPureSelectorFamilyToken<T, K, E>, key: Key): ReadonlyPureSelectorToken<T, Key, E>;
713
+ declare function findInStore<T, K extends Canonical, Key extends K, E>(store: Store, familyToken: SelectorFamilyToken<T, K, E>, key: Key): SelectorToken<T, Key, E>;
714
+ declare function findInStore<T, K extends Canonical, Key extends K, E>(store: Store, familyToken: WritableFamilyToken<T, K, E>, key: Key): WritableToken<T, Key, E>;
715
+ declare function findInStore<T, K extends Canonical, Key extends K, E>(store: Store, familyToken: ReadableFamilyToken<T, K, E>, key: Key): ReadableToken<T, Key, E>;
716
+ //#endregion
717
+ //#region src/internal/families/get-family-of-token.d.ts
718
+ declare function getFamilyOfToken<T extends Transceiver<any, any, any>, K extends Canonical>(store: Store, token: MutableAtomToken<T, K>): MutableAtomFamily<T, K>;
719
+ declare function getFamilyOfToken<T, K extends Canonical, E>(store: Store, token: RegularAtomToken<T, K, E>): RegularAtomFamily<T, K, E>;
720
+ declare function getFamilyOfToken<T, K extends Canonical, E>(store: Store, token: WritablePureSelectorToken<T, K, E>): WritablePureSelectorFamily<T, K, E>;
721
+ declare function getFamilyOfToken<T, K extends Canonical, E>(store: Store, token: ReadonlyPureSelectorToken<T, K, E>): ReadonlyPureSelectorFamily<T, K, E>;
722
+ declare function getFamilyOfToken<T, K extends Canonical, E>(store: Store, token: WritableToken<T, K, E>): WritableFamily<T, K, E>;
723
+ declare function getFamilyOfToken<T, K extends Canonical, E>(store: Store, token: ReadableToken<T, K, E>): ReadableFamily<T, K, E>;
626
724
  //#endregion
627
725
  //#region src/internal/families/seek-in-store.d.ts
628
726
  declare function seekInStore<T extends Transceiver<any, any, any>, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, K>, key: Key): MutableAtomToken<T, Key> | undefined;
@@ -643,8 +741,8 @@ declare function getEnvironmentData(store: Store): EnvironmentData;
643
741
  //#region src/internal/get-state/get-from-store.d.ts
644
742
  declare function getFromStore<T>(store: Store, token: ReadableToken<T>): T;
645
743
  declare function getFromStore<T, E>(store: Store, token: ReadableToken<T, any, E>): E | T;
646
- declare function getFromStore<T, K extends Canonical, E>(store: Store, token: ReadableFamilyToken<T, K, E>, key: K): ViewOf<E | T>;
647
- declare function getFromStore<T, K extends Canonical, Key extends K, E>(store: Store, ...params: [token: ReadableFamilyToken<T, K, E>, key: Key] | [token: ReadableToken<T, any, E>]): ViewOf<E | T>;
744
+ declare function getFromStore<T, K extends Canonical, E>(store: Store, token: ReadableFamilyToken<T, K, E>, key: NoInfer<K>): ViewOf<E | T>;
745
+ declare function getFromStore<T, K extends Canonical, E>(store: Store, ...params: [token: ReadableFamilyToken<T, K, E>, key: NoInfer<K>] | [token: ReadableToken<T, any, E>]): ViewOf<E | T>;
648
746
  //#endregion
649
747
  //#region src/internal/get-state/read-or-compute-value.d.ts
650
748
  declare function readOrComputeValue<T, E>(target: Store, state: ReadableState<T, E>, mut?: undefined): ViewOf<E | T>;
@@ -664,6 +762,9 @@ declare function getTrace(error: Error): string;
664
762
  */
665
763
  declare function installIntoStore(tokens: AtomIOToken[], target: RootStore, source: Store): void;
666
764
  //#endregion
765
+ //#region src/internal/is-fn.d.ts
766
+ declare function isFn(input: unknown): input is Fn;
767
+ //#endregion
667
768
  //#region src/internal/keys.d.ts
668
769
  type AtomKey<T> = string & {
669
770
  __atomKey?: never;
@@ -735,8 +836,8 @@ declare function evictDownstreamFromSelector(store: Store, selectorKey: string):
735
836
  //#region src/internal/set-state/reset-in-store.d.ts
736
837
  declare const RESET_STATE: unique symbol;
737
838
  declare function resetInStore(store: Store, token: WritableToken<any, any, any>): void;
738
- declare function resetInStore<K extends Canonical>(store: Store, token: WritableFamilyToken<any, K, any>, key: K): void;
739
- declare function resetInStore<T, K extends Canonical, Key extends K>(store: Store, ...params: [token: WritableFamilyToken<T, K, any>, key: Key] | [token: WritableToken<T, any, any>]): void;
839
+ declare function resetInStore<K extends Canonical>(store: Store, token: WritableFamilyToken<any, K, any>, key: NoInfer<K>): void;
840
+ declare function resetInStore<T, K extends Canonical>(store: Store, ...params: [token: WritableFamilyToken<T, K, any>, key: NoInfer<K>] | [token: WritableToken<T, any, any>]): void;
740
841
  //#endregion
741
842
  //#region src/internal/set-state/operate-on-store.d.ts
742
843
  type ProtoUpdate<T> = {
@@ -752,12 +853,12 @@ declare function resetAtomOrSelector<T, E>(target: Store & {
752
853
  //#region src/internal/set-state/set-atom-or-selector.d.ts
753
854
  declare const setAtomOrSelector: <T>(target: Store & {
754
855
  operation: OpenOperation;
755
- }, state: WritableState<T, any>, value: T | ((oldValue: T) => T)) => ProtoUpdate<T>;
856
+ }, state: WritableState<T, any>, value: NoInfer<T> | ((oldValue: T) => NoInfer<T>)) => ProtoUpdate<T>;
756
857
  //#endregion
757
858
  //#region src/internal/set-state/set-into-store.d.ts
758
- declare function setIntoStore<T, New extends T, E>(store: Store, token: WritableToken<T, any, E>, value: New | typeof RESET_STATE | ((oldValue: T) => New)): void;
759
- declare function setIntoStore<T, K extends Canonical, New extends T, Key extends K, E>(store: Store, token: WritableFamilyToken<T, K, E>, key: Key, value: New | typeof RESET_STATE | ((oldValue: T) => New)): void;
760
- declare function setIntoStore<T, K extends Canonical, New extends T, Key extends K, E>(store: Store, ...params: [token: WritableFamilyToken<T, K, E>, key: Key, value: New | typeof RESET_STATE | ((oldValue: T) => New)] | [token: WritableToken<T, any, E>, value: New | typeof RESET_STATE | ((oldValue: T) => New)]): void;
859
+ declare function setIntoStore<T, TT extends T>(store: Store, token: WritableToken<T, any, any>, value: Setter<TT> | TT | typeof RESET_STATE): void;
860
+ declare function setIntoStore<T, TT extends T, K extends Canonical>(store: Store, token: WritableFamilyToken<T, K, any>, key: NoInfer<K>, value: Setter<TT> | TT | typeof RESET_STATE): void;
861
+ declare function setIntoStore<T, TT extends T, K extends Canonical>(store: Store, ...params: [token: WritableFamilyToken<T, K, any>, key: NoInfer<K>, value: Setter<TT> | TT | typeof RESET_STATE] | [token: WritableToken<T, any, any>, value: Setter<TT> | TT | typeof RESET_STATE]): void;
761
862
  //#endregion
762
863
  //#region src/internal/subscribe/recall-state.d.ts
763
864
  declare const recallState: <T, E>(store: Store, state: ReadableState<T, E>) => T;
@@ -780,106 +881,5 @@ declare const subscribeToTimeline: <ManagedAtom extends TimelineManageable>(stor
780
881
  //#region src/internal/subscribe/subscribe-to-transaction.d.ts
781
882
  declare const subscribeToTransaction: <F extends Fn>(store: Store, token: TransactionToken<F>, key: string, handleUpdate: TransactionUpdateHandler<F>) => (() => void);
782
883
  //#endregion
783
- //#region src/internal/index.d.ts
784
- type AtomIOState = {
785
- key: string;
786
- family?: FamilyMetadata;
787
- install: (store: RootStore) => void;
788
- subject: Subject<StateUpdate<any>>;
789
- };
790
- type RegularAtom<T, E> = Flat<AtomIOState & {
791
- type: `atom`;
792
- default: T | (() => T);
793
- cleanup?: () => void;
794
- internalRoles?: internalRole[];
795
- catch?: readonly Ctor<E>[];
796
- }>;
797
- type MutableAtom<T extends Transceiver<any, any, any>> = Flat<AtomIOState & {
798
- type: `mutable_atom`;
799
- class: ConstructorOf<T>;
800
- cleanup?: () => void;
801
- }>;
802
- type Atom<T, E> = RegularAtom<T, E> | (T extends Transceiver<any, any, any> ? MutableAtom<T> : never);
803
- type WritableHeldSelector<T> = Flat<AtomIOState & {
804
- type: `writable_held_selector`;
805
- const: T;
806
- getFrom: (target: Store) => T;
807
- setSelf: (newValue: T) => void;
808
- }>;
809
- type ReadonlyHeldSelector<T> = Flat<AtomIOState & {
810
- type: `readonly_held_selector`;
811
- const: T;
812
- getFrom: (target: Store) => T;
813
- }>;
814
- type WritablePureSelector<T, E> = Flat<AtomIOState & {
815
- type: `writable_pure_selector`;
816
- getFrom: (target: Store) => E | T;
817
- setSelf: (newValue: T) => void;
818
- catch?: readonly Ctor<E>[];
819
- }>;
820
- type ReadonlyPureSelector<T, E> = Flat<AtomIOState & {
821
- type: `readonly_pure_selector`;
822
- getFrom: (target: Store) => E | T;
823
- catch?: readonly Ctor<E>[];
824
- }>;
825
- type ReadonlySelector<T, E> = ReadonlyHeldSelector<T> | ReadonlyPureSelector<T, E>;
826
- type WritableSelector<T, E> = WritableHeldSelector<T> | WritablePureSelector<T, E>;
827
- type HeldSelector<T> = ReadonlyHeldSelector<T> | WritableHeldSelector<T>;
828
- type PureSelector<T, E> = ReadonlyPureSelector<T, E> | WritablePureSelector<T, E>;
829
- type Selector<T, E> = ReadonlyHeldSelector<T> | ReadonlyPureSelector<T, E> | WritableHeldSelector<T> | WritablePureSelector<T, E>;
830
- type WritableState<T, E> = Atom<T, E> | WritableSelector<T, E>;
831
- type ReadableState<T, E> = Atom<T, E> | Selector<T, E>;
832
- type RegularAtomFamily<T, K extends Canonical, E = never> = Flat<RegularAtomFamilyToken<T, K, E> & {
833
- create: <Key extends K>(key: Key) => RegularAtomToken<T, Key, E>;
834
- default: T | ((key: K) => T);
835
- install: (store: RootStore) => void;
836
- internalRoles: string[] | undefined;
837
- subject: Subject<StateLifecycleEvent<RegularAtomToken<T, K, E>>>;
838
- }>;
839
- type MutableAtomFamily<T extends Transceiver<any, any, any>, K extends Canonical> = Flat<MutableAtomFamilyToken<T, K> & {
840
- create: <Key extends K>(key: Key) => MutableAtomToken<T, Key>;
841
- class: ConstructorOf<T>;
842
- install: (store: RootStore) => void;
843
- internalRoles: string[] | undefined;
844
- subject: Subject<StateLifecycleEvent<MutableAtomToken<T>>>;
845
- }>;
846
- type AtomFamily<T, K extends Canonical, E> = MutableAtomFamily<T extends Transceiver<any, any, any> ? T : never, K> | RegularAtomFamily<T, K, E>;
847
- type WritablePureSelectorFamily<T, K extends Canonical, E> = Flat<WritablePureSelectorFamilyToken<T, K, E> & {
848
- create: <Key extends K>(key: Key) => WritablePureSelectorToken<T, Key, E>;
849
- default: (key: K) => T;
850
- install: (store: RootStore) => void;
851
- internalRoles: string[] | undefined;
852
- subject: Subject<StateLifecycleEvent<WritablePureSelectorToken<T, K, E>>>;
853
- }>;
854
- type WritableHeldSelectorFamily<T, K extends Canonical> = Flat<WritableHeldSelectorFamilyToken<T, K> & {
855
- create: <Key extends K>(key: Key) => WritableHeldSelectorToken<T, Key>;
856
- default: (key: K) => T;
857
- install: (store: RootStore) => void;
858
- internalRoles: string[] | undefined;
859
- subject: Subject<StateLifecycleEvent<WritableHeldSelectorToken<T, K>>>;
860
- }>;
861
- type ReadonlyPureSelectorFamily<T, K extends Canonical, E> = Flat<ReadonlyPureSelectorFamilyToken<T, K, E> & {
862
- create: <Key extends K>(key: Key) => ReadonlyPureSelectorToken<T, Key, E>;
863
- default: (key: K) => T;
864
- install: (store: RootStore) => void;
865
- internalRoles: string[] | undefined;
866
- subject: Subject<StateLifecycleEvent<ReadonlyPureSelectorToken<T, K, E>>>;
867
- }>;
868
- type ReadonlyHeldSelectorFamily<T, K extends Canonical> = Flat<ReadonlyHeldSelectorFamilyToken<T, K> & {
869
- create: <Key extends K>(key: Key) => ReadonlyHeldSelectorToken<T, Key>;
870
- default: (key: K) => T;
871
- install: (store: RootStore) => void;
872
- internalRoles: string[] | undefined;
873
- subject: Subject<StateLifecycleEvent<ReadonlyHeldSelectorToken<T>>>;
874
- }>;
875
- type PureSelectorFamily<T, K extends Canonical, E> = ReadonlyPureSelectorFamily<T, K, E> | WritablePureSelectorFamily<T, K, E>;
876
- type HeldSelectorFamily<T, K extends Canonical> = ReadonlyHeldSelectorFamily<T, K> | WritableHeldSelectorFamily<T, K>;
877
- type ReadonlySelectorFamily<T, K extends Canonical, E> = ReadonlyHeldSelectorFamily<T, K> | ReadonlyPureSelectorFamily<T, K, E>;
878
- type WritableSelectorFamily<T, K extends Canonical, E> = WritableHeldSelectorFamily<T, K> | WritablePureSelectorFamily<T, K, E>;
879
- type SelectorFamily<T, K extends Canonical, E> = HeldSelectorFamily<T, K> | PureSelectorFamily<T, K, E>;
880
- type WritableFamily<T, K extends Canonical, E> = AtomFamily<T, K, E> | WritableSelectorFamily<T, K, E>;
881
- type ReadableFamily<T, K extends Canonical, E> = AtomFamily<T, K, E> | SelectorFamily<T, K, E>;
882
- type AtomIOInternalResource = ReadableFamily<any, any, any> | ReadableState<any, any> | Timeline<any> | Transaction<any>;
883
- //#endregion
884
- export { AsJSON, Atom, AtomFamily, AtomIOInternalResource, AtomIOState, AtomKey, BaseExternalStoreConfiguration, COUNTERFEIT, ChildStore, CircularBuffer, ConstructorOf, Count, Ctor, Each, Empty, EnvironmentData, ExternalStoreConfiguration, ExternalStoreWithContentConfiguration, FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, Flat, Fn, Future, HeldSelector, HeldSelectorFamily, IMPLICIT, INTERNAL_ROLES, Join, JoinStateFamilies, Junction, JunctionAdvancedConfiguration, JunctionEntries, JunctionEntriesBase, JunctionJSON, JunctionOverlay, JunctionSchema, JunctionSchemaBase, Lineage, MapOverlay, Molecule, MutableAtom, MutableAtomFamily, NotFoundError, OpenOperation, OperationProgress, PureSelector, PureSelectorFamily, RESET_STATE, ReadableFamily, ReadableState, ReadonlyHeldSelector, ReadonlyHeldSelectorFamily, ReadonlyPureSelector, ReadonlyPureSelectorFamily, ReadonlySelector, ReadonlySelectorFamily, ReadonlySelectorKey, Refinement, RegularAtom, RegularAtomFamily, RelationsOverlay, ReservedIntrospectionKey, RootStore, Selector, SelectorFamily, SelectorKey, SetOverlay, SignalFrom, StateKey, StatefulSubject, Store, StoreEventCarrier, Subject, TRANSACTION_PHASES, Timeline, Tracker, Transaction, TransactionEpoch, TransactionPhase, TransactionProgress, Transceiver, TransceiverConstructor, TransceiverMode, WritableFamily, WritableHeldSelector, WritableHeldSelectorFamily, WritablePureSelector, WritablePureSelectorFamily, WritableSelector, WritableSelectorFamily, WritableState, abortTransaction, actUponStore, allocateIntoStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, capitalize, claimWithinStore, clearStore, closeOperation, createClaimTX, createDeallocateTX, createJoin, createMutableAtom, createMutableAtomFamily, createReadonlyHeldSelector, createReadonlyPureSelector, createReadonlyPureSelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneSelector, createTimeline, createTransaction, createWritableHeldSelector, createWritablePureSelector, createWritablePureSelectorFamily, deallocateFromStore, deposit, disposeAtom, disposeFromStore, disposeSelector, editRelationsInStore, eldest, evictCachedValue, evictDownstreamFromAtom, evictDownstreamFromSelector, findInStore, findRelationsInStore, fuseWithinStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getInternalRelationsFromStore, getJoin, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getTrace, getUpdateFamily, getUpdateToken, hasRole, ingestAtomUpdateEvent, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestMoleculeTransferEvent, ingestSelectorUpdateEvent, ingestTransactionOutcomeEvent, installIntoStore, internalRole, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isReservedIntrospectionKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeRootMoleculeInStore, markDone, mint, newest, openOperation, readFromCache, readOrComputeValue, recallState, registerSelector, resetAtomOrSelector, resetInStore, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootDependency, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceRootSelectorAtoms, updateSelectorAtoms, withdraw, writeToCache };
884
+ export { AsJSON, Atom, AtomFamily, AtomIOInternalResource, AtomIOState, AtomKey, BaseExternalStoreConfiguration, ChildStore, CircularBuffer, ConstructorOf, Count, Ctor, Each, Empty, EnvironmentData, ExternalStoreConfiguration, ExternalStoreWithContentConfiguration, FamilyTracker, Flat, Fn, Future, HeldSelector, HeldSelectorFamily, IMPLICIT, INTERNAL_ROLES, InternalRole, Join, JoinStateFamilies, Junction, JunctionAdvancedConfiguration, JunctionEntries, JunctionEntriesBase, JunctionJSON, JunctionOverlay, JunctionSchema, JunctionSchemaBase, Lineage, MapOverlay, Molecule, MutableAtom, MutableAtomFamily, NotFoundError, OpenOperation, OperationProgress, PureSelector, PureSelectorFamily, RESET_STATE, ReadableFamily, ReadableState, ReadonlyHeldSelector, ReadonlyHeldSelectorFamily, ReadonlyPureSelector, ReadonlyPureSelectorFamily, ReadonlySelector, ReadonlySelectorFamily, ReadonlySelectorKey, Refinement, RegularAtom, RegularAtomFamily, RelationsOverlay, ReservedIntrospectionKey, RootStore, Selector, SelectorFamily, SelectorKey, SetOverlay, SignalFrom, StateKey, StatefulSubject, Store, StoreEventCarrier, Subject, TRANSACTION_PHASES, Timeline, Tracker, Transaction, TransactionEpoch, TransactionPhase, TransactionProgress, Transceiver, TransceiverConstructor, TransceiverMode, WritableFamily, WritableHeldSelector, WritableHeldSelectorFamily, WritablePureSelector, WritablePureSelectorFamily, WritableSelector, WritableSelectorFamily, WritableState, abortTransaction, actUponStore, allocateIntoStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, capitalize, claimWithinStore, clearStore, closeOperation, createClaimTX, createDeallocateTX, createJoin, createMutableAtom, createMutableAtomFamily, createReadonlyHeldSelector, createReadonlyPureSelector, createReadonlyPureSelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneSelector, createTimeline, createTransaction, createWritableHeldSelector, createWritablePureSelector, createWritablePureSelectorFamily, deallocateFromStore, deposit, disposeAtom, disposeFromStore, disposeSelector, editRelationsInStore, eldest, evictCachedValue, evictDownstreamFromAtom, evictDownstreamFromSelector, findInStore, findRelationsInStore, fuseWithinStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFamilyOfToken, getFromStore, getInternalRelationsFromStore, getJoin, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getTrace, getUpdateFamily, getUpdateToken, hasRole, ingestAtomUpdateEvent, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestMoleculeTransferEvent, ingestSelectorUpdateEvent, ingestTransactionOutcomeEvent, installIntoStore, isAtomKey, isChildStore, isDone, isFn, isReadonlySelectorKey, isReservedIntrospectionKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeRootMoleculeInStore, markDone, newest, openOperation, readFromCache, readOrComputeValue, recallState, registerSelector, resetAtomOrSelector, resetInStore, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootDependency, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceRootSelectorAtoms, updateSelectorAtoms, withdraw, writeToCache };
885
885
  //# sourceMappingURL=index.d.ts.map