atom.io 0.27.4 → 0.28.0

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 (134) hide show
  1. package/data/dist/index.d.ts +31 -29
  2. package/data/dist/index.js +65 -81
  3. package/data/src/dict.ts +9 -12
  4. package/data/src/join.ts +30 -33
  5. package/data/src/struct-family.ts +17 -23
  6. package/data/src/struct.ts +9 -12
  7. package/dist/{chunk-JRENM6KL.js → chunk-BX3MTH2Z.js} +482 -385
  8. package/dist/chunk-D52JNVER.js +721 -0
  9. package/dist/chunk-EUVKUTW3.js +89 -0
  10. package/dist/index.d.ts +4 -3
  11. package/dist/index.js +35 -53
  12. package/ephemeral/dist/index.js +1 -1
  13. package/ephemeral/src/find-state.ts +1 -1
  14. package/immortal/dist/index.js +2 -2
  15. package/immortal/src/seek-state.ts +2 -2
  16. package/internal/dist/index.d.ts +141 -87
  17. package/internal/dist/index.js +1 -1
  18. package/internal/src/atom/create-regular-atom.ts +3 -3
  19. package/internal/src/atom/create-standalone-atom.ts +7 -5
  20. package/internal/src/atom/dispose-atom.ts +2 -9
  21. package/internal/src/families/create-atom-family.ts +5 -5
  22. package/internal/src/families/create-readonly-selector-family.ts +20 -9
  23. package/internal/src/families/create-regular-atom-family.ts +15 -6
  24. package/internal/src/families/create-selector-family.ts +5 -5
  25. package/internal/src/families/create-writable-selector-family.ts +20 -10
  26. package/internal/src/families/dispose-from-store.ts +43 -29
  27. package/internal/src/families/find-in-store.ts +28 -18
  28. package/internal/src/families/init-family-member.ts +9 -9
  29. package/internal/src/families/seek-in-store.ts +10 -10
  30. package/internal/src/get-state/get-from-store.ts +70 -47
  31. package/internal/src/ingest-updates/ingest-atom-update.ts +1 -1
  32. package/internal/src/ingest-updates/ingest-creation-disposal.ts +15 -6
  33. package/internal/src/molecule/create-molecule-family.ts +1 -1
  34. package/internal/src/molecule/dispose-molecule.ts +7 -18
  35. package/internal/src/molecule/grow-molecule-in-store.ts +1 -1
  36. package/internal/src/molecule/make-molecule-in-store.ts +5 -5
  37. package/internal/src/mutable/create-mutable-atom-family.ts +15 -6
  38. package/internal/src/mutable/create-mutable-atom.ts +3 -3
  39. package/internal/src/mutable/get-json-token.ts +2 -2
  40. package/internal/src/mutable/tracker-family.ts +3 -3
  41. package/internal/src/mutable/tracker.ts +14 -18
  42. package/internal/src/pretty-print.ts +1 -16
  43. package/internal/src/selector/create-readonly-selector.ts +2 -2
  44. package/internal/src/selector/create-standalone-selector.ts +5 -5
  45. package/internal/src/selector/create-writable-selector.ts +2 -2
  46. package/internal/src/selector/dispose-selector.ts +2 -9
  47. package/internal/src/selector/register-selector.ts +9 -9
  48. package/internal/src/set-state/set-into-store.ts +23 -33
  49. package/internal/src/store/circular-buffer.ts +34 -0
  50. package/internal/src/store/counterfeit.ts +109 -0
  51. package/internal/src/store/deposit.ts +67 -13
  52. package/internal/src/store/index.ts +1 -0
  53. package/internal/src/store/store.ts +4 -1
  54. package/internal/src/store/withdraw.ts +15 -10
  55. package/internal/src/subscribe/index.ts +2 -0
  56. package/internal/src/subscribe/subscribe-in-store.ts +62 -0
  57. package/internal/src/timeline/time-travel.ts +1 -1
  58. package/internal/src/transaction/build-transaction.ts +7 -6
  59. package/introspection/dist/index.d.ts +84 -4
  60. package/introspection/dist/index.js +1 -413
  61. package/introspection/src/attach-atom-index.ts +5 -8
  62. package/introspection/src/attach-introspection-states.ts +7 -4
  63. package/introspection/src/attach-selector-index.ts +6 -8
  64. package/introspection/src/attach-timeline-family.ts +25 -28
  65. package/introspection/src/attach-timeline-index.ts +5 -8
  66. package/introspection/src/attach-transaction-index.ts +5 -8
  67. package/introspection/src/attach-transaction-logs.ts +21 -27
  68. package/introspection/src/attach-type-selectors.ts +26 -0
  69. package/introspection/src/differ.ts +167 -0
  70. package/introspection/src/index.ts +2 -0
  71. package/introspection/src/refinery.ts +100 -0
  72. package/json/dist/index.d.ts +31 -30
  73. package/json/dist/index.js +2 -80
  74. package/json/src/entries.ts +6 -0
  75. package/json/src/index.ts +47 -6
  76. package/json/src/select-json-family.ts +4 -4
  77. package/json/src/select-json.ts +6 -9
  78. package/package.json +17 -8
  79. package/react/dist/index.js +7 -7
  80. package/react/src/parse-state-overloads.ts +2 -2
  81. package/react/src/use-i.ts +1 -1
  82. package/react/src/use-json.ts +2 -2
  83. package/react/src/use-o.ts +2 -2
  84. package/react-devtools/dist/index.d.ts +1 -91
  85. package/react-devtools/dist/index.js +285 -414
  86. package/react-devtools/src/AtomIODevtools.tsx +2 -2
  87. package/react-devtools/src/StateEditor.tsx +20 -12
  88. package/react-devtools/src/StateIndex.tsx +8 -26
  89. package/react-devtools/src/TimelineIndex.tsx +3 -3
  90. package/react-devtools/src/TransactionIndex.tsx +6 -6
  91. package/react-devtools/src/Updates.tsx +1 -4
  92. package/react-devtools/src/index.ts +0 -71
  93. package/react-devtools/src/store.ts +51 -0
  94. package/realtime/dist/index.d.ts +7 -7
  95. package/realtime/dist/index.js +18 -22
  96. package/realtime/src/realtime-continuity.ts +27 -35
  97. package/realtime-client/dist/index.js +59 -65
  98. package/realtime-client/src/pull-atom-family-member.ts +1 -1
  99. package/realtime-client/src/pull-atom.ts +1 -1
  100. package/realtime-client/src/pull-mutable-atom-family-member.ts +3 -3
  101. package/realtime-client/src/pull-mutable-atom.ts +3 -3
  102. package/realtime-client/src/realtime-client-stores/client-main-store.ts +6 -6
  103. package/realtime-client/src/sync-continuity.ts +55 -53
  104. package/realtime-react/dist/index.js +3 -3
  105. package/realtime-react/src/use-pull-atom-family-member.ts +1 -1
  106. package/realtime-react/src/use-pull-mutable-family-member.ts +1 -1
  107. package/realtime-react/src/use-pull-selector-family-member.ts +1 -1
  108. package/realtime-server/dist/index.js +72 -36
  109. package/realtime-server/src/realtime-continuity-synchronizer.ts +57 -93
  110. package/realtime-server/src/realtime-family-provider.ts +3 -3
  111. package/realtime-server/src/realtime-mutable-family-provider.ts +5 -5
  112. package/realtime-server/src/realtime-mutable-provider.ts +2 -2
  113. package/realtime-server/src/realtime-state-provider.ts +1 -1
  114. package/realtime-server/src/realtime-state-receiver.ts +1 -1
  115. package/realtime-testing/dist/index.d.ts +2 -0
  116. package/realtime-testing/dist/index.js +57 -15
  117. package/realtime-testing/src/setup-realtime-test.tsx +66 -16
  118. package/src/atom.ts +2 -2
  119. package/src/dispose-state.ts +2 -2
  120. package/src/get-state.ts +9 -13
  121. package/src/molecule.ts +1 -1
  122. package/src/selector.ts +2 -2
  123. package/src/set-state.ts +10 -7
  124. package/src/silo.ts +29 -55
  125. package/src/subscribe.ts +3 -23
  126. package/src/timeline.ts +2 -2
  127. package/web/dist/index.d.ts +9 -0
  128. package/{dist/chunk-H6EDLPKH.js → web/dist/index.js} +5 -4
  129. package/web/package.json +13 -0
  130. package/web/src/index.ts +1 -0
  131. package/web/src/persist-sync.ts +25 -0
  132. package/dist/chunk-AK23DRMD.js +0 -21
  133. package/dist/chunk-IW6WYRS7.js +0 -140
  134. package/internal/src/families/throw-in-case-of-conflicting-family.ts +0 -18
@@ -1,23 +1,43 @@
1
1
  import * as atom_io from 'atom.io';
2
- import { TransactionToken, TransactionUpdate, TransactionOptions, ActorToolkit, RegularAtomToken, MutableAtomToken, AtomToken, WritableSelectorToken, ReadonlySelectorToken, SelectorToken, WritableToken, MoleculeConstructor, MoleculeFamily, MoleculeFamilyToken, MoleculeToken, ReadableToken, TimelineManageable, StateUpdate, TokenType, FamilyMetadata, StateCreation, StateDisposal, MoleculeCreation, MoleculeDisposal, TimelineUpdate, TimelineOptions, TimelineToken, AtomIOLogger, Logger, RegularAtomFamilyToken, MutableAtomFamilyToken, AtomFamilyToken, ReadonlySelectorFamilyToken, WritableSelectorFamilyToken, SelectorFamilyToken, ReadableFamilyToken, WritableFamilyToken, MutableAtomOptions, MutableAtomFamilyOptions, RegularAtomOptions, RegularAtomFamilyOptions, ReadonlySelectorFamilyOptions, WritableSelectorFamilyOptions, MoleculeKey, KeyedStateUpdate, MoleculeFamilyOptions, MoleculeParams, ReadonlySelectorOptions, WritableSelectorOptions, SetterToolkit, UpdateHandler, TransactionUpdateHandler } from 'atom.io';
3
- import { Canonical, Json, JsonInterface } from 'atom.io/json';
2
+ import { MutableAtomFamilyToken, MutableAtomToken, RegularAtomFamilyToken, RegularAtomToken, AtomFamilyToken, AtomToken, WritableSelectorFamilyToken, WritableSelectorToken, ReadonlySelectorFamilyToken, ReadonlySelectorToken, SelectorFamilyToken, SelectorToken, WritableFamilyToken, WritableToken, ReadableFamilyToken, ReadableToken, MoleculeConstructor, MoleculeFamilyToken, MoleculeKey, TransactionToken, TransactionUpdate, TransactionOptions, ActorToolkit, MoleculeFamily, MoleculeToken, TimelineManageable, StateUpdate, TokenType, FamilyMetadata, StateCreation, StateDisposal, MoleculeCreation, MoleculeDisposal, TimelineUpdate, TimelineOptions, TimelineToken, AtomIOLogger, Logger, MutableAtomOptions, MutableAtomFamilyOptions, RegularAtomOptions, RegularAtomFamilyOptions, ReadonlySelectorFamilyOptions, WritableSelectorFamilyOptions, KeyedStateUpdate, MoleculeFamilyOptions, MoleculeParams, ReadonlySelectorOptions, WritableSelectorOptions, SetterToolkit, UpdateHandler, TransactionUpdateHandler } from 'atom.io';
3
+ import { Json as Json$1, Canonical, JsonInterface } from 'atom.io/json';
4
4
  import { Join } from 'atom.io/data';
5
+ import { Store as Store$1, Func as Func$1 } from 'atom.io/internal';
6
+
7
+ declare const FAMILY_MEMBER_TOKEN_TYPES: {
8
+ readonly atom_family: "atom";
9
+ readonly mutable_atom_family: "mutable_atom";
10
+ readonly selector_family: "selector";
11
+ readonly readonly_selector_family: "readonly_selector";
12
+ readonly molecule_family: "molecule";
13
+ };
14
+ declare function counterfeit<T extends Transceiver<any>, J extends Json$1.Serializable, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J>;
15
+ declare function counterfeit<T, K extends Canonical, Key extends K>(token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T>;
16
+ declare function counterfeit<T, K extends Canonical, Key extends K>(token: AtomFamilyToken<T, K>, key: Key): AtomToken<T>;
17
+ declare function counterfeit<T, K extends Canonical, Key extends K>(token: WritableSelectorFamilyToken<T, K>, key: Key): WritableSelectorToken<T>;
18
+ declare function counterfeit<T, K extends Canonical, Key extends K>(token: ReadonlySelectorFamilyToken<T, K>, key: Key): ReadonlySelectorToken<T>;
19
+ declare function counterfeit<T, K extends Canonical, Key extends K>(token: SelectorFamilyToken<T, K>, key: Key): SelectorToken<T>;
20
+ declare function counterfeit<T, K extends Canonical, Key extends K>(token: WritableFamilyToken<T, K>, key: Key): WritableToken<T>;
21
+ declare function counterfeit<T, K extends Canonical, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T>;
22
+ declare function counterfeit<M extends MoleculeConstructor>(token: MoleculeFamilyToken<M>, key: MoleculeKey<M>): MoleculeKey<M>;
5
23
 
6
24
  type primitive = boolean | number | string | null;
7
-
8
- type Serializable = primitive | Readonly<{
9
- [key: string]: Serializable;
10
- }> | ReadonlyArray<Serializable>;
11
- type Object$1<Key extends string = string, Value extends Serializable = Serializable> = Record<Key, Value>;
25
+ declare namespace Json {
26
+ type Serializable = primitive | Readonly<{
27
+ [key: string]: Serializable;
28
+ }> | ReadonlyArray<Serializable>;
29
+ type Object<Key extends string = string, Value extends Serializable = Serializable> = Record<Key, Value>;
30
+ type Array<Element extends Serializable = Serializable> = ReadonlyArray<Element>;
31
+ }
12
32
 
13
33
  type Refinement<Unrefined, Refined extends Unrefined> = (value: Unrefined) => value is Refined;
14
34
  type Cardinality = `1:1` | `1:n` | `n:n`;
15
35
 
16
- interface JunctionEntries<Content extends Object$1 | null> extends Object$1 {
36
+ interface JunctionEntries<Content extends Json.Object | null> extends Json.Object {
17
37
  readonly relations: [string, string[]][];
18
38
  readonly contents: [string, Content][];
19
39
  }
20
- interface JunctionSchema<ASide extends string, BSide extends string> extends Object$1 {
40
+ interface JunctionSchema<ASide extends string, BSide extends string> extends Json.Object {
21
41
  readonly between: [a: ASide, b: BSide];
22
42
  readonly cardinality: Cardinality;
23
43
  }
@@ -29,7 +49,7 @@ type BaseExternalStoreConfiguration = {
29
49
  getRelatedKeys: (key: string) => Set<string> | undefined;
30
50
  has: (a: string, b?: string) => boolean;
31
51
  };
32
- type ExternalStoreWithContentConfiguration<Content extends Object$1> = {
52
+ type ExternalStoreWithContentConfiguration<Content extends Json.Object> = {
33
53
  getContent: (contentKey: string) => Content | undefined;
34
54
  setContent: (contentKey: string, content: Content) => void;
35
55
  deleteContent: (contentKey: string) => void;
@@ -37,14 +57,14 @@ type ExternalStoreWithContentConfiguration<Content extends Object$1> = {
37
57
  type Empty<Obj extends object> = {
38
58
  [Key in keyof Obj]?: undefined;
39
59
  };
40
- type ExternalStoreConfiguration<Content extends Object$1 | null> = Content extends Object$1 ? BaseExternalStoreConfiguration & ExternalStoreWithContentConfiguration<Content> : BaseExternalStoreConfiguration & Empty<ExternalStoreWithContentConfiguration<Object$1>>;
41
- type JunctionAdvancedConfiguration<Content extends Object$1 | null> = {
60
+ type ExternalStoreConfiguration<Content extends Json.Object | null> = Content extends Json.Object ? BaseExternalStoreConfiguration & ExternalStoreWithContentConfiguration<Content> : BaseExternalStoreConfiguration & Empty<ExternalStoreWithContentConfiguration<Json.Object>>;
61
+ type JunctionAdvancedConfiguration<Content extends Json.Object | null> = {
42
62
  externalStore?: ExternalStoreConfiguration<Content>;
43
63
  isContent?: Refinement<unknown, Content>;
44
64
  makeContentKey?: (a: string, b: string) => string;
45
65
  };
46
- type JunctionJSON<ASide extends string, BSide extends string, Content extends Object$1 | null> = JunctionEntries<Content> & JunctionSchema<ASide, BSide>;
47
- declare class Junction<const ASide extends string, const BSide extends string, const Content extends Object$1 | null = null> {
66
+ type JunctionJSON<ASide extends string, BSide extends string, Content extends Json.Object | null> = JunctionEntries<Content> & JunctionSchema<ASide, BSide>;
67
+ declare class Junction<const ASide extends string, const BSide extends string, const Content extends Json.Object | null = null> {
48
68
  readonly a: ASide;
49
69
  readonly b: BSide;
50
70
  readonly cardinality: Cardinality;
@@ -156,11 +176,20 @@ declare function deposit<T>(state: WritableSelector<T>): WritableSelectorToken<T
156
176
  declare function deposit<T>(state: ReadonlySelector<T>): ReadonlySelectorToken<T>;
157
177
  declare function deposit<T>(state: Selector<T>): SelectorToken<T>;
158
178
  declare function deposit<T>(state: WritableState<T>): WritableToken<T>;
179
+ declare function deposit<T>(state: ReadableState<T>): ReadableToken<T>;
180
+ declare function deposit<T, K extends Canonical>(state: RegularAtomFamily<T, K>): RegularAtomFamilyToken<T, K>;
181
+ declare function deposit<T extends Transceiver<any>, J extends Json$1.Serializable, K extends Canonical>(state: MutableAtomFamily<T, J, K>): MutableAtomFamilyToken<T, J, K>;
182
+ declare function deposit<T>(state: AtomFamily<T, any>): AtomFamilyToken<T, any>;
183
+ declare function deposit<T>(state: WritableSelectorFamily<T, any>): WritableSelectorFamilyToken<T, any>;
184
+ declare function deposit<T>(state: ReadonlySelectorFamily<T, any>): ReadonlySelectorFamilyToken<T, any>;
185
+ declare function deposit<T>(state: SelectorFamily<T, any>): SelectorFamilyToken<T, any>;
186
+ declare function deposit<T>(state: WritableFamily<T, any>): WritableFamilyToken<T, any>;
187
+ declare function deposit<T>(state: ReadableFamily<T, any>): ReadableFamilyToken<T, any>;
159
188
  declare function deposit<M extends MoleculeConstructor>(state: MoleculeFamily<M>): MoleculeFamilyToken<M>;
160
189
  declare function deposit<M extends MoleculeConstructor>(state: Molecule<M>): MoleculeToken<M>;
161
190
  declare function deposit<T extends Func>(state: Transaction<T>): TransactionToken<T>;
162
- declare function deposit<T>(state: ReadableState<T>): ReadableToken<T>;
163
191
  declare function deposit(state: Molecule<any> | ReadableState<any>): MoleculeToken<any> | ReadableToken<any>;
192
+ declare function deposit(state: Molecule<any> | MoleculeFamily<any> | ReadableFamily<any, any> | ReadableState<any> | Transaction<Func>): MoleculeFamilyToken<any> | MoleculeToken<any> | ReadableFamilyToken<any, any> | ReadableToken<any> | TransactionToken<Func>;
164
193
 
165
194
  interface Lineage {
166
195
  parent: typeof this | null;
@@ -227,7 +256,18 @@ type Timeline<ManagedAtom extends TimelineManageable> = {
227
256
  };
228
257
  declare function createTimeline<ManagedAtom extends TimelineManageable>(options: TimelineOptions<ManagedAtom>, store: Store, data?: Timeline<ManagedAtom>): TimelineToken<ManagedAtom>;
229
258
 
230
- declare const timeTravel: (action: `redo` | `undo`, token: TimelineToken<any>, store: Store) => void;
259
+ declare const timeTravel: (store: Store, action: `redo` | `undo`, token: TimelineToken<any>) => void;
260
+
261
+ declare class CircularBuffer<T> {
262
+ protected _buffer: T[];
263
+ protected _index: number;
264
+ constructor(array: T[]);
265
+ constructor(length: number);
266
+ get buffer(): ReadonlyArray<T | undefined>;
267
+ get index(): number;
268
+ add(item: T): void;
269
+ copy(): CircularBuffer<T>;
270
+ }
231
271
 
232
272
  declare class Store implements Lineage {
233
273
  parent: Store | null;
@@ -250,6 +290,10 @@ declare class Store implements Lineage {
250
290
  timelineTopics: Junction<"timelineKey", "topicKey", {
251
291
  topicType: `atom_family` | `atom` | `molecule_family` | `molecule`;
252
292
  }>;
293
+ disposalTraces: CircularBuffer<{
294
+ key: string;
295
+ trace: string;
296
+ }>;
253
297
  molecules: Map<string, Molecule<any>>;
254
298
  moleculeFamilies: Map<string, Flat<atom_io.MoleculeFamilyToken<any> & {
255
299
  subject: Subject<atom_io.MoleculeCreation<any> | atom_io.MoleculeDisposal>;
@@ -295,7 +339,7 @@ declare function withdraw<T>(token: SelectorToken<T>, store: Store): Selector<T>
295
339
  declare function withdraw<T>(token: WritableToken<T>, store: Store): WritableState<T>;
296
340
  declare function withdraw<T>(token: ReadableToken<T>, store: Store): ReadableState<T>;
297
341
  declare function withdraw<T, K extends Canonical>(token: RegularAtomFamilyToken<T, K>, store: Store): RegularAtomFamily<T, K>;
298
- declare function withdraw<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(token: MutableAtomFamilyToken<T, J, K>, store: Store): MutableAtomFamily<T, J, K>;
342
+ declare function withdraw<T extends Transceiver<any>, J extends Json$1.Serializable, K extends Canonical>(token: MutableAtomFamilyToken<T, J, K>, store: Store): MutableAtomFamily<T, J, K>;
299
343
  declare function withdraw<T, K extends Canonical>(token: AtomFamilyToken<T>, store: Store): AtomFamily<T, any>;
300
344
  declare function withdraw<T, K extends Canonical>(token: ReadonlySelectorFamilyToken<T, K>, store: Store): ReadonlySelectorFamily<T, any>;
301
345
  declare function withdraw<T, K extends Canonical>(token: WritableSelectorFamilyToken<T, K>, store: Store): WritableSelectorFamily<T, any>;
@@ -306,29 +350,30 @@ declare function withdraw<M extends MoleculeConstructor>(token: MoleculeToken<M>
306
350
  declare function withdraw<M extends MoleculeConstructor>(token: MoleculeFamilyToken<M>, store: Store): MoleculeFamily<M>;
307
351
  declare function withdraw<T extends Func>(token: TransactionToken<T>, store: Store): Transaction<T extends Func ? T : never>;
308
352
  declare function withdraw<T>(token: TimelineToken<T>, store: Store): Timeline<T extends TimelineManageable ? T : never>;
353
+ declare function withdraw<T, M extends MoleculeConstructor>(token: MoleculeToken<M> | ReadableToken<T>, store: Store): Molecule<M> | ReadableState<T>;
309
354
 
310
- interface Transceiver<Signal extends Json.Serializable> {
355
+ interface Transceiver<Signal extends Json$1.Serializable> {
311
356
  do: (update: Signal) => number | `OUT_OF_RANGE` | null;
312
357
  undo: (update: Signal) => void;
313
358
  subscribe: (key: string, fn: (update: Signal) => void) => () => void;
314
359
  cacheUpdateNumber: number;
315
360
  getUpdateNumber: (update: Signal) => number;
316
361
  }
317
- declare function isTransceiver(value: unknown): value is Transceiver<Json.Serializable>;
362
+ declare function isTransceiver(value: unknown): value is Transceiver<Json$1.Serializable>;
318
363
  type TransceiverMode = `playback` | `record` | `transaction`;
319
364
  type Signal<TVR extends Transceiver<any>> = TVR extends Transceiver<infer S> ? S : never;
320
365
 
321
- declare function createMutableAtom<T extends Transceiver<any>, J extends Json.Serializable>(options: MutableAtomOptions<T, J>, family: FamilyMetadata | undefined, store: Store): MutableAtomToken<T, J>;
366
+ declare function createMutableAtom<T extends Transceiver<any>, J extends Json$1.Serializable>(store: Store, options: MutableAtomOptions<T, J>, family: FamilyMetadata | undefined): MutableAtomToken<T, J>;
322
367
 
323
- declare function createMutableAtomFamily<T extends Transceiver<any>, J extends Json.Serializable, K extends string>(options: MutableAtomFamilyOptions<T, J, K>, store: Store, internalRoles?: string[]): MutableAtomFamilyToken<T, J, K>;
368
+ declare function createMutableAtomFamily<T extends Transceiver<any>, J extends Json$1.Serializable, K extends string>(store: Store, options: MutableAtomFamilyOptions<T, J, K>, internalRoles?: string[]): MutableAtomFamilyToken<T, J, K>;
324
369
 
325
- declare const getJsonFamily: <Core extends Transceiver<Json.Serializable>, SerializableCore extends Json.Serializable, Key extends string>(mutableAtomFamily: MutableAtomFamilyToken<Core, SerializableCore, Key>, store: Store) => WritableSelectorFamily<SerializableCore, Key>;
370
+ declare const getJsonFamily: <Core extends Transceiver<Json$1.Serializable>, SerializableCore extends Json$1.Serializable, Key extends string>(mutableAtomFamily: MutableAtomFamilyToken<Core, SerializableCore, Key>, store: Store) => WritableSelectorFamily<SerializableCore, Key>;
326
371
 
327
- declare const getJsonToken: <Core extends Transceiver<any>, SerializableCore extends Json.Serializable>(mutableAtomToken: MutableAtomToken<Core, SerializableCore>, store: Store) => WritableSelectorToken<SerializableCore>;
372
+ declare const getJsonToken: <Core extends Transceiver<any>, SerializableCore extends Json$1.Serializable>(store: Store, mutableAtomToken: MutableAtomToken<Core, SerializableCore>) => WritableSelectorToken<SerializableCore>;
328
373
 
329
- declare const getUpdateFamily: <Core extends Transceiver<Json.Serializable>, SerializableCore extends Json.Serializable, Key extends string>(mutableAtomFamily: MutableAtomFamilyToken<Core, SerializableCore, Key>, store: Store) => AtomFamily<Signal<Core>, Key>;
374
+ declare const getUpdateFamily: <Core extends Transceiver<Json$1.Serializable>, SerializableCore extends Json$1.Serializable, Key extends string>(mutableAtomFamily: MutableAtomFamilyToken<Core, SerializableCore, Key>, store: Store) => AtomFamily<Signal<Core>, Key>;
330
375
 
331
- declare const getUpdateToken: <Core extends Transceiver<any>, SerializableCore extends Json.Serializable>(mutableAtomToken: MutableAtomToken<Core, SerializableCore>) => RegularAtomToken<Signal<Core>>;
376
+ declare const getUpdateToken: <Core extends Transceiver<any>, SerializableCore extends Json$1.Serializable>(mutableAtomToken: MutableAtomToken<Core, SerializableCore>) => RegularAtomToken<Signal<Core>>;
332
377
 
333
378
  /**
334
379
  * @internal Give the tracker a transceiver state and a store, and it will
@@ -342,10 +387,10 @@ declare class Tracker<Mutable extends Transceiver<any>> {
342
387
  private unsubscribeFromState;
343
388
  private observeCore;
344
389
  private updateCore;
345
- mutableState: MutableAtomToken<Mutable, Json.Serializable>;
390
+ mutableState: MutableAtomToken<Mutable, Json$1.Serializable>;
346
391
  latestUpdateState: RegularAtomToken<typeof this.Update | null>;
347
392
  dispose: () => void;
348
- constructor(mutableState: MutableAtomToken<Mutable, Json.Serializable>, store: Store);
393
+ constructor(mutableState: MutableAtomToken<Mutable, Json$1.Serializable>, store: Store);
349
394
  }
350
395
 
351
396
  declare class FamilyTracker<Core extends Transceiver<any>, FamilyMemberKey extends Canonical> {
@@ -357,10 +402,10 @@ declare class FamilyTracker<Core extends Transceiver<any>, FamilyMemberKey exten
357
402
 
358
403
  declare function arbitrary(random?: () => number): string;
359
404
 
360
- declare function createRegularAtom<T>(options: RegularAtomOptions<T>, family: FamilyMetadata | undefined, store: Store): RegularAtomToken<T>;
405
+ declare function createRegularAtom<T>(store: Store, options: RegularAtomOptions<T>, family: FamilyMetadata | undefined): RegularAtomToken<T>;
361
406
 
362
- declare function createStandaloneAtom<T>(options: RegularAtomOptions<T>, store: Store): RegularAtomToken<T>;
363
- declare function createStandaloneAtom<T extends Transceiver<any>, J extends Json.Serializable>(options: MutableAtomOptions<T, J>, store: Store): MutableAtomToken<T, J>;
407
+ declare function createStandaloneAtom<T>(store: Store, options: RegularAtomOptions<T>): RegularAtomToken<T>;
408
+ declare function createStandaloneAtom<T extends Transceiver<any>, J extends Json$1.Serializable>(store: Store, options: MutableAtomOptions<T, J>): MutableAtomToken<T, J>;
364
409
 
365
410
  declare function disposeAtom(atomToken: AtomToken<unknown>, store: Store): void;
366
411
 
@@ -392,57 +437,59 @@ declare function cacheValue<T extends Promise<any>>(key: string, value: T, subje
392
437
  declare const readCachedValue: <T>(token: ReadableState<any>, target: Store) => T;
393
438
  declare const evictCachedValue: (key: string, target: Store) => void;
394
439
 
395
- declare function createAtomFamily<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(options: MutableAtomFamilyOptions<T, J, K>, store: Store): MutableAtomFamilyToken<T, J, K>;
396
- declare function createAtomFamily<T, K extends Canonical>(options: RegularAtomFamilyOptions<T, K>, store: Store): RegularAtomFamilyToken<T, K>;
397
-
398
- declare function createReadonlySelectorFamily<T, K extends Canonical>(options: ReadonlySelectorFamilyOptions<T, K>, store: Store, internalRoles?: string[]): ReadonlySelectorFamilyToken<T, K>;
399
-
400
- declare function createRegularAtomFamily<T, K extends Canonical>(options: RegularAtomFamilyOptions<T, K>, store: Store, internalRoles?: string[]): RegularAtomFamilyToken<T, K>;
401
-
402
- declare function createSelectorFamily<T, K extends Canonical>(options: WritableSelectorFamilyOptions<T, K>, store: Store): WritableSelectorFamilyToken<T, K>;
403
- declare function createSelectorFamily<T, K extends Canonical>(options: ReadonlySelectorFamilyOptions<T, K>, store: Store): ReadonlySelectorFamilyToken<T, K>;
404
-
405
- declare function disposeFromStore(token: MoleculeToken<any> | ReadableToken<any>, store: Store): void;
406
- declare function disposeFromStore<K extends Canonical>(token: ReadableFamilyToken<any, K>, key: K, store: Store): void;
407
- declare function disposeFromStore<M extends MoleculeConstructor>(token: MoleculeFamilyToken<M>, key: MoleculeKey<M>, store: Store): void;
408
-
409
- declare function findInStore<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, J, K>, key: Key, store: Store): MutableAtomToken<T, J>;
410
- declare function findInStore<T, K extends Canonical, Key extends K>(token: RegularAtomFamilyToken<T, K>, key: Key, store: Store): RegularAtomToken<T>;
411
- declare function findInStore<T, K extends Canonical, Key extends K>(token: AtomFamilyToken<T, K>, key: Key, store: Store): AtomToken<T>;
412
- declare function findInStore<T, K extends Canonical, Key extends K>(token: WritableSelectorFamilyToken<T, K>, key: Key, store: Store): WritableSelectorToken<T>;
413
- declare function findInStore<T, K extends Canonical, Key extends K>(token: ReadonlySelectorFamilyToken<T, K>, key: Key, store: Store): ReadonlySelectorToken<T>;
414
- declare function findInStore<T, K extends Canonical, Key extends K>(token: SelectorFamilyToken<T, K>, key: Key, store: Store): SelectorToken<T>;
415
- declare function findInStore<T, K extends Canonical, Key extends K>(token: WritableFamilyToken<T, K>, key: Key, store: Store): WritableToken<T>;
416
- declare function findInStore<T, K extends Canonical, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key, store: Store): ReadableToken<T>;
417
-
418
- declare function initFamilyMemberInStore<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, J, K>, key: Key, store: Store): MutableAtomToken<T, J>;
419
- declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(token: RegularAtomFamilyToken<T, K>, key: Key, store: Store): RegularAtomToken<T>;
420
- declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(token: AtomFamilyToken<T, K>, key: Key, store: Store): AtomToken<T>;
421
- declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(token: WritableSelectorFamilyToken<T, K>, key: Key, store: Store): WritableSelectorToken<T>;
422
- declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(token: ReadonlySelectorFamilyToken<T, K>, key: Key, store: Store): ReadonlySelectorToken<T>;
423
- declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(token: SelectorFamilyToken<T, K>, key: Key, store: Store): SelectorToken<T>;
424
- declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(token: WritableFamilyToken<T, K>, key: Key, store: Store): WritableToken<T>;
425
- declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key, store: Store): ReadableToken<T>;
426
-
427
- declare function seekInStore<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, J, K>, key: Key, store: Store): MutableAtomToken<T, J> | undefined;
428
- declare function seekInStore<T, K extends Canonical, Key extends K>(token: RegularAtomFamilyToken<T, K>, key: Key, store: Store): RegularAtomToken<T> | undefined;
429
- declare function seekInStore<T, K extends Canonical, Key extends K>(token: AtomFamilyToken<T, K>, key: Key, store: Store): AtomToken<T> | undefined;
430
- declare function seekInStore<T, K extends Canonical, Key extends K>(token: WritableSelectorFamilyToken<T, K>, key: Key, store: Store): WritableSelectorToken<T> | undefined;
431
- declare function seekInStore<T, K extends Canonical, Key extends K>(token: ReadonlySelectorFamilyToken<T, K>, key: Key, store: Store): ReadonlySelectorToken<T> | undefined;
432
- declare function seekInStore<T, K extends Canonical, Key extends K>(token: SelectorFamilyToken<T, K>, key: Key, store: Store): SelectorToken<T> | undefined;
433
- declare function seekInStore<T, K extends Canonical, Key extends K>(token: WritableFamilyToken<T, K>, key: Key, store: Store): WritableToken<T> | undefined;
434
- declare function seekInStore<T, K extends Canonical, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key, store: Store): ReadableToken<T> | undefined;
435
- declare function seekInStore<M extends MoleculeConstructor>(token: MoleculeFamilyToken<M>, key: MoleculeKey<M>, store: Store): MoleculeKey<M> | undefined;
440
+ declare function createAtomFamily<T extends Transceiver<any>, J extends Json$1.Serializable, K extends Canonical>(store: Store, options: MutableAtomFamilyOptions<T, J, K>): MutableAtomFamilyToken<T, J, K>;
441
+ declare function createAtomFamily<T, K extends Canonical>(store: Store, options: RegularAtomFamilyOptions<T, K>): RegularAtomFamilyToken<T, K>;
442
+
443
+ declare function createReadonlySelectorFamily<T, K extends Canonical>(store: Store, options: ReadonlySelectorFamilyOptions<T, K>, internalRoles?: string[]): ReadonlySelectorFamilyToken<T, K>;
444
+
445
+ declare function createRegularAtomFamily<T, K extends Canonical>(store: Store, options: RegularAtomFamilyOptions<T, K>, internalRoles?: string[]): RegularAtomFamilyToken<T, K>;
446
+
447
+ declare function createSelectorFamily<T, K extends Canonical>(store: Store, options: WritableSelectorFamilyOptions<T, K>): WritableSelectorFamilyToken<T, K>;
448
+ declare function createSelectorFamily<T, K extends Canonical>(store: Store, options: ReadonlySelectorFamilyOptions<T, K>): ReadonlySelectorFamilyToken<T, K>;
449
+
450
+ declare function disposeFromStore(store: Store, token: MoleculeToken<any> | ReadableToken<any>): void;
451
+ declare function disposeFromStore<K extends Canonical>(store: Store, token: ReadableFamilyToken<any, K>, key: K): void;
452
+ declare function disposeFromStore<M extends MoleculeConstructor>(store: Store, token: MoleculeFamilyToken<M>, key: MoleculeKey<M>): void;
453
+
454
+ declare function findInStore<T extends Transceiver<any>, J extends Json$1.Serializable, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J>;
455
+ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T>;
456
+ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: AtomFamilyToken<T, K>, key: Key): AtomToken<T>;
457
+ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritableSelectorFamilyToken<T, K>, key: Key): WritableSelectorToken<T>;
458
+ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadonlySelectorFamilyToken<T, K>, key: Key): ReadonlySelectorToken<T>;
459
+ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: SelectorFamilyToken<T, K>, key: Key): SelectorToken<T>;
460
+ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritableFamilyToken<T, K>, key: Key): WritableToken<T>;
461
+ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T>;
462
+
463
+ declare function initFamilyMemberInStore<T extends Transceiver<any>, J extends Json$1.Serializable, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J>;
464
+ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T>;
465
+ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: AtomFamilyToken<T, K>, key: Key): AtomToken<T>;
466
+ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritableSelectorFamilyToken<T, K>, key: Key): WritableSelectorToken<T>;
467
+ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadonlySelectorFamilyToken<T, K>, key: Key): ReadonlySelectorToken<T>;
468
+ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: SelectorFamilyToken<T, K>, key: Key): SelectorToken<T>;
469
+ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritableFamilyToken<T, K>, key: Key): WritableToken<T>;
470
+ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T>;
471
+
472
+ declare function seekInStore<T extends Transceiver<any>, J extends Json$1.Serializable, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J> | undefined;
473
+ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T> | undefined;
474
+ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: AtomFamilyToken<T, K>, key: Key): AtomToken<T> | undefined;
475
+ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritableSelectorFamilyToken<T, K>, key: Key): WritableSelectorToken<T> | undefined;
476
+ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadonlySelectorFamilyToken<T, K>, key: Key): ReadonlySelectorToken<T> | undefined;
477
+ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: SelectorFamilyToken<T, K>, key: Key): SelectorToken<T> | undefined;
478
+ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritableFamilyToken<T, K>, key: Key): WritableToken<T> | undefined;
479
+ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T> | undefined;
480
+ declare function seekInStore<M extends MoleculeConstructor>(store: Store, token: MoleculeFamilyToken<M>, key: MoleculeKey<M>): MoleculeKey<M> | undefined;
436
481
 
437
482
  type EnvironmentData = {
438
483
  store: Store;
439
484
  };
440
485
  declare function getEnvironmentData(store: Store): EnvironmentData;
441
486
 
442
- declare function getFromStore<T>(token: ReadableToken<T>, store: Store): T;
443
- declare function getFromStore<M extends MoleculeConstructor>(token: MoleculeToken<M>, store: Store): InstanceType<M> | undefined;
444
- declare function getFromStore<T, K extends Canonical>(token: ReadableFamilyToken<T, K>, key: K, store: Store): T;
445
- declare function getFromStore<M extends MoleculeConstructor>(token: MoleculeFamilyToken<M>, key: MoleculeKey<M>, store: Store): InstanceType<M>;
487
+ declare function getFromStore<T>(store: Store, token: ReadableToken<T>): T;
488
+ declare function getFromStore<M extends MoleculeConstructor>(store: Store, token: MoleculeToken<M>): InstanceType<M>;
489
+ declare function getFromStore<T, K extends Canonical>(store: Store, token: ReadableFamilyToken<T, K>, key: K): T;
490
+ declare function getFromStore<M extends MoleculeConstructor>(store: Store, token: MoleculeFamilyToken<M>, key: MoleculeKey<M>): InstanceType<M>;
491
+ declare function getFromStore(store: Store, token: MoleculeToken<any> | ReadableToken<any>): any;
492
+ declare function getFromStore(store: Store, token: MoleculeFamilyToken<any> | ReadableFamilyToken<any, any>, key: Canonical): any;
446
493
 
447
494
  declare const readOrComputeValue: <T>(state: ReadableState<T>, target: Store) => T;
448
495
 
@@ -486,7 +533,7 @@ declare class LazyMap<K, V> extends Map<K, V> {
486
533
  delete(key: K): boolean;
487
534
  }
488
535
 
489
- declare function createMoleculeFamily<M extends MoleculeConstructor>(options: MoleculeFamilyOptions<M>, store: Store): MoleculeFamilyToken<M>;
536
+ declare function createMoleculeFamily<M extends MoleculeConstructor>(store: Store, options: MoleculeFamilyOptions<M>): MoleculeFamilyToken<M>;
490
537
 
491
538
  declare function disposeMolecule<M extends MoleculeConstructor>(token: MoleculeToken<M>, store: Store): void;
492
539
 
@@ -504,7 +551,7 @@ declare class Molecule<M extends MoleculeConstructor> implements MoleculeToken<M
504
551
  constructor(ctx: Molecule<any> | Molecule<any>[] | undefined, key: MoleculeKey<M>, family?: MoleculeFamilyToken<M>);
505
552
  }
506
553
 
507
- declare function growMoleculeInStore<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(molecule: Molecule<any>, family: MutableAtomFamilyToken<T, J, K>, store: Store): MutableAtomToken<T, J>;
554
+ declare function growMoleculeInStore<T extends Transceiver<any>, J extends Json$1.Serializable, K extends Canonical>(molecule: Molecule<any>, family: MutableAtomFamilyToken<T, J, K>, store: Store): MutableAtomToken<T, J>;
508
555
  declare function growMoleculeInStore<T, K extends Canonical>(molecule: Molecule<any>, family: RegularAtomFamilyToken<T, K>, store: Store): RegularAtomToken<T>;
509
556
  declare function growMoleculeInStore<T, K extends Canonical>(molecule: Molecule<any>, family: AtomFamilyToken<T, K>, store: Store): AtomToken<T>;
510
557
  declare function growMoleculeInStore<T, K extends Canonical>(molecule: Molecule<any>, family: WritableSelectorFamilyToken<T, K>, store: Store): WritableSelectorToken<T>;
@@ -520,15 +567,15 @@ declare function prettyPrintTokenType(token: AtomIOToken): string;
520
567
 
521
568
  declare class NotFoundError extends Error {
522
569
  constructor(token: AtomIOToken, store: Store);
523
- constructor(familyToken: AtomIOToken, key: Json.Serializable, store: Store);
570
+ constructor(familyToken: AtomIOToken, key: Json$1.Serializable, store: Store);
524
571
  }
525
572
 
526
- declare const createReadonlySelector: <T>(options: ReadonlySelectorOptions<T>, family: FamilyMetadata | undefined, store: Store) => ReadonlySelectorToken<T>;
573
+ declare const createReadonlySelector: <T>(store: Store, options: ReadonlySelectorOptions<T>, family: FamilyMetadata | undefined) => ReadonlySelectorToken<T>;
527
574
 
528
- declare function createStandaloneSelector<T>(options: WritableSelectorOptions<T>, store: Store): WritableSelectorToken<T>;
529
- declare function createStandaloneSelector<T>(options: ReadonlySelectorOptions<T>, store: Store): ReadonlySelectorToken<T>;
575
+ declare function createStandaloneSelector<T>(store: Store, options: WritableSelectorOptions<T>): WritableSelectorToken<T>;
576
+ declare function createStandaloneSelector<T>(store: Store, options: ReadonlySelectorOptions<T>): ReadonlySelectorToken<T>;
530
577
 
531
- declare const createWritableSelector: <T>(options: WritableSelectorOptions<T>, family: FamilyMetadata | undefined, store: Store) => WritableSelectorToken<T>;
578
+ declare const createWritableSelector: <T>(store: Store, options: WritableSelectorOptions<T>, family: FamilyMetadata | undefined) => WritableSelectorToken<T>;
532
579
 
533
580
  declare function disposeSelector(selectorToken: ReadonlySelectorToken<unknown> | WritableSelectorToken<unknown>, store: Store): void;
534
581
 
@@ -546,8 +593,15 @@ declare const become: <T>(nextVersionOfThing: Modify<T> | T) => (originalThing:
546
593
 
547
594
  declare const setAtomOrSelector: <T>(state: WritableState<T>, value: T | ((oldValue: T) => T), store: Store) => void;
548
595
 
549
- declare function setIntoStore<T, New extends T>(token: WritableToken<T>, value: New | ((oldValue: T) => New), store: Store): void;
550
- declare function setIntoStore<T, K extends Canonical, New extends T>(token: WritableFamilyToken<T, K>, key: K, value: New | ((oldValue: T) => New), store: Store): void;
596
+ declare function setIntoStore<T, New extends T>(store: Store, token: WritableToken<T>, value: New | ((oldValue: T) => New)): void;
597
+ declare function setIntoStore<T, K extends Canonical, New extends T>(store: Store, token: WritableFamilyToken<T, K>, key: K, value: New | ((oldValue: T) => New)): void;
598
+
599
+ declare const recallState: <T>(state: ReadableState<T>, store: Store) => T;
600
+
601
+ declare function subscribeInStore<T>(store: Store$1, token: ReadableToken<T>, handleUpdate: UpdateHandler<T>, key?: string): () => void;
602
+ declare function subscribeInStore<F extends Func$1>(store: Store$1, token: TransactionToken<F>, handleUpdate: TransactionUpdateHandler<F>, key?: string): () => void;
603
+ declare function subscribeInStore<M extends TimelineManageable>(store: Store$1, token: TimelineToken<M>, handleUpdate: (update: TimelineUpdate<M> | `redo` | `undo`) => void, key?: string): () => void;
604
+ declare function subscribeInStore<M extends TimelineManageable>(store: Store$1, token: ReadableToken<any> | TimelineToken<M> | TransactionToken<any>, handleUpdate: TransactionUpdateHandler<any> | UpdateHandler<any> | ((update: TimelineUpdate<M> | `redo` | `undo`) => void), key?: string): () => void;
551
605
 
552
606
  declare const subscribeToRootAtoms: <T>(selector: Selector<T>, store: Store) => (() => void)[];
553
607
 
@@ -571,7 +625,7 @@ type RegularAtom<T> = AtomIOState & {
571
625
  default: T | (() => T);
572
626
  cleanup?: () => void;
573
627
  };
574
- type MutableAtom<T extends Transceiver<any>, J extends Json.Serializable> = AtomIOState & JsonInterface<T, J> & {
628
+ type MutableAtom<T extends Transceiver<any>, J extends Json$1.Serializable> = AtomIOState & JsonInterface<T, J> & {
575
629
  type: `mutable_atom`;
576
630
  default: T | (() => T);
577
631
  cleanup?: () => void;
@@ -595,7 +649,7 @@ type RegularAtomFamily<T, K extends Canonical> = RegularAtomFamilyToken<T, K> &
595
649
  install: (store: Store) => void;
596
650
  internalRoles: string[] | undefined;
597
651
  };
598
- type MutableAtomFamily<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical> = JsonInterface<T, J> & MutableAtomFamilyToken<T, J, K> & {
652
+ type MutableAtomFamily<T extends Transceiver<any>, J extends Json$1.Serializable, K extends Canonical> = JsonInterface<T, J> & MutableAtomFamilyToken<T, J, K> & {
599
653
  (key: K): MutableAtomToken<T, J>;
600
654
  subject: Subject<StateCreation<MutableAtomToken<T, J>> | StateDisposal<MutableAtomToken<T, J>>>;
601
655
  install: (store: Store) => void;
@@ -618,4 +672,4 @@ type SelectorFamily<T, K extends Canonical> = ReadonlySelectorFamily<T, K> | Wri
618
672
  type WritableFamily<T, K extends Canonical> = AtomFamily<T, K> | WritableSelectorFamily<T, K>;
619
673
  type ReadableFamily<T, K extends Canonical> = AtomFamily<T, K> | SelectorFamily<T, K>;
620
674
 
621
- export { type Atom, type AtomFamily, type AtomIOState, type AtomIOToken, type AtomKey, type ChildStore, type EnvironmentData, FamilyTracker, type Flat, type Func, Future, IMPLICIT, LazyMap, type Lineage, type Modify, Molecule, type MutableAtom, type MutableAtomFamily, NotFoundError, type OperationProgress, type Range, type ReadableFamily, type ReadableState, type ReadonlySelector, type ReadonlySelectorFamily, type ReadonlySelectorKey, type RegularAtom, type RegularAtomFamily, type RootStore, type Selector, type SelectorFamily, type SelectorKey, type Signal, type StateKey, StatefulSubject, Store, Subject, TRANSACTION_PHASES, type Timeline, type TimelineAtomUpdate, type TimelineMoleculeCreation, type TimelineMoleculeDisposal, type TimelineSelectorUpdate, type TimelineStateCreation, type TimelineStateDisposal, type TimelineTransactionUpdate, Tracker, type Transaction, type TransactionEpoch, type TransactionPhase, type TransactionProgress, type Transceiver, type TransceiverMode, type Withdrawable, type WritableFamily, type WritableSelector, type WritableSelectorFamily, type WritableState, abortTransaction, actUponStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtomFamily, createMoleculeFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deposit, disposeAtom, disposeFromStore, disposeMolecule, disposeSelector, eldest, evictCachedValue, findInStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateFamily, getUpdateToken, growMoleculeInStore, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, isAtomDefault, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeMoleculeInStore, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, prettyPrintTokenType, readCachedValue, readOrComputeValue, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw };
675
+ export { type Atom, type AtomFamily, type AtomIOState, type AtomIOToken, type AtomKey, type ChildStore, type EnvironmentData, FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, type Flat, type Func, Future, IMPLICIT, LazyMap, type Lineage, type Modify, Molecule, type MutableAtom, type MutableAtomFamily, NotFoundError, type OperationProgress, type Range, type ReadableFamily, type ReadableState, type ReadonlySelector, type ReadonlySelectorFamily, type ReadonlySelectorKey, type RegularAtom, type RegularAtomFamily, type RootStore, type Selector, type SelectorFamily, type SelectorKey, type Signal, type StateKey, StatefulSubject, Store, Subject, TRANSACTION_PHASES, type Timeline, type TimelineAtomUpdate, type TimelineMoleculeCreation, type TimelineMoleculeDisposal, type TimelineSelectorUpdate, type TimelineStateCreation, type TimelineStateDisposal, type TimelineTransactionUpdate, Tracker, type Transaction, type TransactionEpoch, type TransactionPhase, type TransactionProgress, type Transceiver, type TransceiverMode, type Withdrawable, type WritableFamily, type WritableSelector, type WritableSelectorFamily, type WritableState, abortTransaction, actUponStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, clearStore, closeOperation, counterfeit, createAtomFamily, createMoleculeFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deposit, disposeAtom, disposeFromStore, disposeMolecule, disposeSelector, eldest, evictCachedValue, findInStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateFamily, getUpdateToken, growMoleculeInStore, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, isAtomDefault, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeMoleculeInStore, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, prettyPrintTokenType, readCachedValue, readOrComputeValue, recallState, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw };
@@ -1,3 +1,3 @@
1
- export { FamilyTracker, Future, IMPLICIT, LazyMap, Molecule, NotFoundError, StatefulSubject, Store, Subject, TRANSACTION_PHASES, Tracker, abortTransaction, actUponStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtomFamily, createMoleculeFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deposit, disposeAtom, disposeFromStore, disposeMolecule, disposeSelector, eldest, evictCachedValue, findInStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateFamily, getUpdateToken, growMoleculeInStore, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, isAtomDefault, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeMoleculeInStore, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, prettyPrintTokenType, readCachedValue, readOrComputeValue, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw } from '../../dist/chunk-JRENM6KL.js';
1
+ export { FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, Future, IMPLICIT, LazyMap, Molecule, NotFoundError, StatefulSubject, Store, Subject, TRANSACTION_PHASES, Tracker, abortTransaction, actUponStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, clearStore, closeOperation, counterfeit, createAtomFamily, createMoleculeFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deposit, disposeAtom, disposeFromStore, disposeMolecule, disposeSelector, eldest, evictCachedValue, findInStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateFamily, getUpdateToken, growMoleculeInStore, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, isAtomDefault, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeMoleculeInStore, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, prettyPrintTokenType, readCachedValue, readOrComputeValue, recallState, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw } from '../../dist/chunk-BX3MTH2Z.js';
2
2
  import '../../dist/chunk-IBTHB2PI.js';
3
3
  import '../../dist/chunk-XWL6SNVU.js';
@@ -15,9 +15,9 @@ import { subscribeToState } from "../subscribe"
15
15
  import { markAtomAsDefault } from "./is-default"
16
16
 
17
17
  export function createRegularAtom<T>(
18
+ store: Store,
18
19
  options: RegularAtomOptions<T>,
19
20
  family: FamilyMetadata | undefined,
20
- store: Store,
21
21
  ): RegularAtomToken<T> {
22
22
  store.logger.info(
23
23
  `🔨`,
@@ -47,7 +47,7 @@ export function createRegularAtom<T>(
47
47
  options.key,
48
48
  `installing in store "${s.config.name}"`,
49
49
  )
50
- return createRegularAtom(options, family, s)
50
+ return createRegularAtom(s, options, family)
51
51
  },
52
52
  subject,
53
53
  } as const
@@ -68,7 +68,7 @@ export function createRegularAtom<T>(
68
68
  for (const effect of options.effects) {
69
69
  const cleanup = effect({
70
70
  setSelf: (next) => {
71
- setIntoStore(token, next, store)
71
+ setIntoStore(store, token, next)
72
72
  },
73
73
  onSet: (handle: UpdateHandler<T>) =>
74
74
  subscribeToState(token, handle, `effect[${effectIndex}]`, store),
@@ -13,25 +13,27 @@ import type { Store } from "../store"
13
13
  import { createRegularAtom } from "./create-regular-atom"
14
14
 
15
15
  export function createStandaloneAtom<T>(
16
- options: RegularAtomOptions<T>,
17
16
  store: Store,
17
+ options: RegularAtomOptions<T>,
18
18
  ): RegularAtomToken<T>
19
+
19
20
  export function createStandaloneAtom<
20
21
  T extends Transceiver<any>,
21
22
  J extends Json.Serializable,
22
- >(options: MutableAtomOptions<T, J>, store: Store): MutableAtomToken<T, J>
23
+ >(store: Store, options: MutableAtomOptions<T, J>): MutableAtomToken<T, J>
24
+
23
25
  export function createStandaloneAtom<T>(
24
- options: MutableAtomOptions<any, any> | RegularAtomOptions<T>,
25
26
  store: Store,
27
+ options: MutableAtomOptions<any, any> | RegularAtomOptions<T>,
26
28
  ): AtomToken<T> {
27
29
  const isMutable = `mutable` in options
28
30
 
29
31
  if (isMutable) {
30
- const state = createMutableAtom(options, undefined, store)
32
+ const state = createMutableAtom(store, options, undefined)
31
33
  store.on.atomCreation.next(state)
32
34
  return state
33
35
  }
34
- const state = createRegularAtom(options, undefined, store)
36
+ const state = createRegularAtom(store, options, undefined)
35
37
  store.on.atomCreation.next(state)
36
38
  return state
37
39
  }
@@ -12,15 +12,8 @@ import {
12
12
  export function disposeAtom(atomToken: AtomToken<unknown>, store: Store): void {
13
13
  const target = newest(store)
14
14
  const { key } = atomToken
15
- const atom = target.atoms.get(key)
16
- if (!atom) {
17
- store.logger.error(
18
- `❌`,
19
- `atom`,
20
- key,
21
- `Tried to dispose atom, but it does not exist in the store.`,
22
- )
23
- } else if (!atom.family) {
15
+ const atom = withdraw(atomToken, target)
16
+ if (!atom.family) {
24
17
  store.logger.error(`❌`, `atom`, key, `Standalone atoms cannot be disposed.`)
25
18
  } else {
26
19
  atom.cleanup?.()
@@ -16,23 +16,23 @@ export function createAtomFamily<
16
16
  J extends Json.Serializable,
17
17
  K extends Canonical,
18
18
  >(
19
- options: MutableAtomFamilyOptions<T, J, K>,
20
19
  store: Store,
20
+ options: MutableAtomFamilyOptions<T, J, K>,
21
21
  ): MutableAtomFamilyToken<T, J, K>
22
22
  export function createAtomFamily<T, K extends Canonical>(
23
- options: RegularAtomFamilyOptions<T, K>,
24
23
  store: Store,
24
+ options: RegularAtomFamilyOptions<T, K>,
25
25
  ): RegularAtomFamilyToken<T, K>
26
26
  export function createAtomFamily<T, K extends Canonical>(
27
+ store: Store,
27
28
  options:
28
29
  | MutableAtomFamilyOptions<any, any, any>
29
30
  | RegularAtomFamilyOptions<T, K>,
30
- store: Store,
31
31
  ): AtomFamilyToken<any, any> {
32
32
  const isMutable = `mutable` in options
33
33
 
34
34
  if (isMutable) {
35
- return createMutableAtomFamily(options, store)
35
+ return createMutableAtomFamily(store, options)
36
36
  }
37
- return createRegularAtomFamily<T, K>(options, store)
37
+ return createRegularAtomFamily<T, K>(store, options)
38
38
  }
@@ -1,5 +1,6 @@
1
1
  import type {
2
2
  FamilyMetadata,
3
+ getState,
3
4
  ReadonlySelectorFamilyOptions,
4
5
  ReadonlySelectorFamilyToken,
5
6
  ReadonlySelectorToken,
@@ -15,6 +16,7 @@ import {
15
16
  findInStore,
16
17
  getFromStore,
17
18
  getJsonToken,
19
+ prettyPrintTokenType,
18
20
  type ReadonlySelectorFamily,
19
21
  seekInStore,
20
22
  } from ".."
@@ -22,11 +24,10 @@ import { newest } from "../lineage"
22
24
  import { createReadonlySelector } from "../selector"
23
25
  import type { Store } from "../store"
24
26
  import { Subject } from "../subject"
25
- import { throwInCaseOfConflictingFamily } from "./throw-in-case-of-conflicting-family"
26
27
 
27
28
  export function createReadonlySelectorFamily<T, K extends Canonical>(
28
- options: ReadonlySelectorFamilyOptions<T, K>,
29
29
  store: Store,
30
+ options: ReadonlySelectorFamilyOptions<T, K>,
30
31
  internalRoles?: string[],
31
32
  ): ReadonlySelectorFamilyToken<T, K> {
32
33
  const familyToken = {
@@ -34,7 +35,17 @@ export function createReadonlySelectorFamily<T, K extends Canonical>(
34
35
  type: `readonly_selector_family`,
35
36
  } as const satisfies ReadonlySelectorFamilyToken<T, K>
36
37
 
37
- throwInCaseOfConflictingFamily(familyToken, store)
38
+ const existing = store.families.get(options.key)
39
+ if (existing) {
40
+ store.logger.error(
41
+ `❗`,
42
+ `readonly_selector_family`,
43
+ options.key,
44
+ `Overwriting an existing ${prettyPrintTokenType(
45
+ existing,
46
+ )} "${existing.key}" in store "${store.config.name}". You can safely ignore this warning if it is due to hot module replacement.`,
47
+ )
48
+ }
38
49
 
39
50
  const subject = new Subject<
40
51
  | StateCreation<ReadonlySelectorToken<T>>
@@ -48,12 +59,12 @@ export function createReadonlySelectorFamily<T, K extends Canonical>(
48
59
  const target = newest(store)
49
60
 
50
61
  const token = createReadonlySelector(
62
+ target,
51
63
  {
52
64
  key: fullKey,
53
65
  get: options.get(key),
54
66
  },
55
67
  family,
56
- target,
57
68
  )
58
69
 
59
70
  subject.next({ type: `state_creation`, token })
@@ -63,14 +74,14 @@ export function createReadonlySelectorFamily<T, K extends Canonical>(
63
74
  const readonlySelectorFamily = Object.assign(familyFunction, familyToken, {
64
75
  internalRoles,
65
76
  subject,
66
- install: (s: Store) => createReadonlySelectorFamily(options, s),
77
+ install: (s: Store) => createReadonlySelectorFamily(s, options),
67
78
  default: (key: K) => {
68
79
  const getFn = options.get(key)
69
80
  return getFn({
70
- get: (token) => getFromStore(token, store),
71
- find: ((token, k) => findInStore(token, k, store)) as typeof findState,
72
- seek: ((token, k) => seekInStore(token, k, store)) as typeof seekState,
73
- json: (token) => getJsonToken(token, store),
81
+ get: ((...ps: [any]) => getFromStore(store, ...ps)) as typeof getState,
82
+ find: ((token, k) => findInStore(store, token, k)) as typeof findState,
83
+ seek: ((token, k) => seekInStore(store, token, k)) as typeof seekState,
84
+ json: (token) => getJsonToken(store, token),
74
85
  })
75
86
  },
76
87
  }) satisfies ReadonlySelectorFamily<T, K>