atom.io 0.35.0 → 0.36.1

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 (133) hide show
  1. package/dist/eslint-plugin/index.d.ts +2 -18
  2. package/dist/eslint-plugin/index.d.ts.map +1 -1
  3. package/dist/eslint-plugin/index.js +4 -141
  4. package/dist/eslint-plugin/index.js.map +1 -1
  5. package/dist/internal/index.d.ts +100 -78
  6. package/dist/internal/index.d.ts.map +1 -1
  7. package/dist/internal/index.js +180 -163
  8. package/dist/internal/index.js.map +1 -1
  9. package/dist/introspection/index.d.ts +5 -6
  10. package/dist/introspection/index.d.ts.map +1 -1
  11. package/dist/introspection/index.js +2 -3
  12. package/dist/introspection/index.js.map +1 -1
  13. package/dist/json/index.d.ts +2 -10
  14. package/dist/json/index.d.ts.map +1 -1
  15. package/dist/json/index.js +1 -31
  16. package/dist/json/index.js.map +1 -1
  17. package/dist/main/index.d.ts +38 -39
  18. package/dist/main/index.d.ts.map +1 -1
  19. package/dist/main/index.js +15 -16
  20. package/dist/main/index.js.map +1 -1
  21. package/dist/react/index.d.ts +4 -4
  22. package/dist/react/index.d.ts.map +1 -1
  23. package/dist/react/index.js.map +1 -1
  24. package/dist/react-devtools/index.js.map +1 -1
  25. package/dist/realtime/index.d.ts +4 -4
  26. package/dist/realtime/index.d.ts.map +1 -1
  27. package/dist/realtime/index.js +2 -6
  28. package/dist/realtime/index.js.map +1 -1
  29. package/dist/realtime-client/index.d.ts +7 -8
  30. package/dist/realtime-client/index.d.ts.map +1 -1
  31. package/dist/realtime-client/index.js +3 -4
  32. package/dist/realtime-client/index.js.map +1 -1
  33. package/dist/realtime-react/index.d.ts +4 -4
  34. package/dist/realtime-react/index.d.ts.map +1 -1
  35. package/dist/realtime-react/index.js.map +1 -1
  36. package/dist/realtime-server/index.d.ts +18 -18
  37. package/dist/realtime-server/index.d.ts.map +1 -1
  38. package/dist/realtime-server/index.js +5 -9
  39. package/dist/realtime-server/index.js.map +1 -1
  40. package/dist/transceivers/set-rtx/index.d.ts +9 -2
  41. package/dist/transceivers/set-rtx/index.d.ts.map +1 -1
  42. package/dist/transceivers/set-rtx/index.js +3 -0
  43. package/dist/transceivers/set-rtx/index.js.map +1 -1
  44. package/package.json +6 -6
  45. package/src/eslint-plugin/index.ts +0 -1
  46. package/src/eslint-plugin/rules/explicit-state-types.ts +8 -1
  47. package/src/eslint-plugin/rules/index.ts +0 -1
  48. package/src/internal/atom/create-regular-atom.ts +5 -5
  49. package/src/internal/atom/dispose-atom.ts +1 -0
  50. package/src/internal/atom/has-role.ts +12 -0
  51. package/src/internal/atom/index.ts +1 -0
  52. package/src/internal/caching.ts +38 -16
  53. package/src/internal/families/find-in-store.ts +4 -5
  54. package/src/internal/families/get-family-of-token.ts +4 -5
  55. package/src/internal/families/init-family-member.ts +3 -4
  56. package/src/internal/families/seek-in-store.ts +4 -5
  57. package/src/internal/get-state/read-or-compute-value.ts +37 -16
  58. package/src/internal/index.ts +19 -21
  59. package/src/internal/ingest-updates/ingest-creation-disposal.ts +18 -15
  60. package/src/internal/ingest-updates/ingest-selector-update.ts +9 -5
  61. package/src/internal/join/get-internal-relations-from-store.ts +2 -2
  62. package/src/internal/join/join-internal.ts +10 -18
  63. package/src/internal/molecule.ts +1 -0
  64. package/src/internal/mutable/create-mutable-atom-family.ts +40 -22
  65. package/src/internal/mutable/create-mutable-atom.ts +16 -12
  66. package/src/internal/mutable/get-json-family.ts +7 -6
  67. package/src/internal/mutable/get-json-token.ts +6 -13
  68. package/src/internal/mutable/get-update-family.ts +7 -8
  69. package/src/internal/mutable/get-update-token.ts +5 -9
  70. package/src/internal/mutable/tracker-family.ts +31 -38
  71. package/src/internal/mutable/tracker.ts +86 -104
  72. package/src/internal/mutable/transceiver.ts +37 -9
  73. package/src/internal/selector/create-readonly-held-selector.ts +2 -2
  74. package/src/internal/selector/create-readonly-pure-selector.ts +2 -2
  75. package/src/internal/selector/create-writable-held-selector.ts +3 -3
  76. package/src/internal/selector/create-writable-pure-selector.ts +3 -3
  77. package/src/internal/selector/dispose-selector.ts +9 -9
  78. package/src/internal/set-state/reset-atom-or-selector.ts +11 -4
  79. package/src/internal/set-state/set-atom.ts +15 -22
  80. package/src/internal/set-state/set-into-store.ts +5 -4
  81. package/src/internal/store/counterfeit.ts +3 -4
  82. package/src/internal/store/deposit.ts +8 -11
  83. package/src/internal/store/store.ts +7 -7
  84. package/src/internal/store/withdraw.ts +8 -12
  85. package/src/internal/subscribe/subscribe-in-store.ts +2 -2
  86. package/src/internal/subscribe/subscribe-to-transaction.ts +2 -2
  87. package/src/internal/timeline/create-timeline.ts +3 -3
  88. package/src/internal/transaction/act-upon-store.ts +2 -2
  89. package/src/internal/transaction/apply-transaction.ts +2 -2
  90. package/src/internal/transaction/build-transaction.ts +2 -2
  91. package/src/internal/transaction/create-transaction.ts +3 -3
  92. package/src/internal/transaction/index.ts +2 -2
  93. package/src/internal/transaction/is-root-store.ts +4 -2
  94. package/src/internal/utility-types.ts +1 -1
  95. package/src/introspection/attach-introspection-states.ts +3 -3
  96. package/src/introspection/attach-transaction-index.ts +4 -4
  97. package/src/introspection/attach-transaction-logs.ts +4 -4
  98. package/src/introspection/auditor.ts +3 -3
  99. package/src/json/index.ts +0 -2
  100. package/src/main/atom.ts +24 -36
  101. package/src/main/dispose-state.ts +6 -5
  102. package/src/main/find-state.ts +3 -4
  103. package/src/main/get-state.ts +6 -5
  104. package/src/main/join.ts +2 -2
  105. package/src/main/logger.ts +7 -7
  106. package/src/main/reset-state.ts +3 -3
  107. package/src/main/set-state.ts +3 -3
  108. package/src/main/subscribe.ts +3 -3
  109. package/src/main/tokens.ts +8 -14
  110. package/src/main/transaction.ts +17 -13
  111. package/src/main/validators.ts +1 -1
  112. package/src/react/use-json.ts +14 -24
  113. package/src/react-devtools/TransactionIndex.tsx +3 -3
  114. package/src/react-devtools/Updates.tsx +2 -2
  115. package/src/realtime/shared-room-store.ts +11 -22
  116. package/src/realtime-client/continuity/register-and-attempt-confirmed-update.ts +2 -2
  117. package/src/realtime-client/pull-mutable-atom-family-member.ts +8 -17
  118. package/src/realtime-client/pull-mutable-atom.ts +7 -14
  119. package/src/realtime-client/push-state.ts +6 -5
  120. package/src/realtime-client/server-action.ts +5 -4
  121. package/src/realtime-react/use-pull-mutable-atom.ts +3 -5
  122. package/src/realtime-react/use-pull-mutable-family-member.ts +3 -4
  123. package/src/realtime-react/use-server-action.ts +2 -2
  124. package/src/realtime-server/realtime-mutable-family-provider.ts +3 -4
  125. package/src/realtime-server/realtime-mutable-provider.ts +2 -3
  126. package/src/realtime-server/realtime-server-stores/server-room-external-actions.ts +6 -5
  127. package/src/realtime-server/realtime-server-stores/server-user-store.ts +8 -15
  128. package/src/transceivers/set-rtx/set-rtx.ts +14 -1
  129. package/src/eslint-plugin/rules/synchronous-selector-dependencies.ts +0 -140
  130. package/src/eslint-plugin/walk.ts +0 -81
  131. package/src/internal/set-state/copy-mutable-if-needed.ts +0 -27
  132. package/src/json/select-json-family.ts +0 -55
  133. package/src/json/select-json.ts +0 -19
@@ -1,8 +1,13 @@
1
- import { Func as Func$1, Store as Store$1 } from "atom.io/internal";
2
- import { Canonical, Json, JsonInterface, stringified } from "atom.io/json";
3
- import { Above, ActorToolkit, Anarchy, AtomFamilyToken, AtomIOLogger, AtomIOToken, AtomToken, Claim, CompoundFrom, CompoundTypedKey, FamilyMetadata, HeldSelectorFamilyToken, HeldSelectorToken, Hierarchy, JoinOptions, JoinStates, JoinToken, KeyedStateUpdate, Logger, MoleculeCreation, MoleculeDisposal, MoleculeTransfer, 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, StateCreation, StateDisposal, StateUpdate, TimelineManageable, TimelineOptions, TimelineToken, TimelineUpdate, TokenType, TransactionOptions, TransactionToken, TransactionUpdate, TransactionUpdateHandler, UpdateHandler, Vassal, WritableFamilyToken, WritableHeldSelectorFamilyOptions, WritableHeldSelectorFamilyToken, WritableHeldSelectorOptions, WritableHeldSelectorToken, WritablePureSelectorFamilyOptions, WritablePureSelectorFamilyToken, WritablePureSelectorOptions, WritablePureSelectorToken, WritableSelectorFamilyToken, WritableSelectorToken, WritableToken, WriterToolkit } from "atom.io";
4
- import { SetRTX, SetRTXJson } from "atom.io/transceivers/set-rtx";
1
+ import { Fn as Fn$1, Store as Store$1 } from "atom.io/internal";
2
+ import { Canonical, Json, stringified } from "atom.io/json";
3
+ import { Above, ActorToolkit, Anarchy, AtomFamilyToken, AtomIOLogger, AtomIOToken, AtomToken, Claim, CompoundFrom, CompoundTypedKey, FamilyMetadata, HeldSelectorFamilyToken, HeldSelectorToken, Hierarchy, JoinOptions, JoinStates, JoinToken, KeyedStateUpdate, Logger, MoleculeCreation, MoleculeDisposal, MoleculeTransfer, 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, StateCreation, StateDisposal, StateLifecycleEvent, StateUpdate, TimelineManageable, TimelineOptions, TimelineToken, TimelineUpdate, TokenType, TransactionOptions, TransactionToken, TransactionUpdate, TransactionUpdateHandler, UpdateHandler, Vassal, WritableFamilyToken, WritableHeldSelectorFamilyOptions, WritableHeldSelectorFamilyToken, WritableHeldSelectorOptions, WritableHeldSelectorToken, WritablePureSelectorFamilyOptions, WritablePureSelectorFamilyToken, WritablePureSelectorOptions, WritablePureSelectorToken, WritableSelectorFamilyToken, WritableSelectorToken, WritableToken, WriterToolkit } from "atom.io";
4
+ import { SetRTX } from "atom.io/transceivers/set-rtx";
5
5
 
6
+ //#region src/internal/atom/has-role.d.ts
7
+ declare const INTERNAL_ROLES: readonly ["tracker:signal"];
8
+ type internalRole = (typeof INTERNAL_ROLES)[number];
9
+ declare function hasRole(atom: Atom<any>, role: internalRole): boolean;
10
+ //#endregion
6
11
  //#region src/internal/store/circular-buffer.d.ts
7
12
  declare class CircularBuffer<T> {
8
13
  protected _buffer: T[];
@@ -25,7 +30,7 @@ declare const FAMILY_MEMBER_TOKEN_TYPES: {
25
30
  readonly writable_held_selector_family: "writable_held_selector";
26
31
  readonly writable_pure_selector_family: "writable_pure_selector";
27
32
  };
28
- declare function counterfeit<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J>;
33
+ declare function counterfeit<T extends Transceiver<any, any, any>, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, K>, key: Key): MutableAtomToken<T>;
29
34
  declare function counterfeit<T, K extends Canonical, Key extends K>(token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T>;
30
35
  declare function counterfeit<T, K extends Canonical, Key extends K>(token: AtomFamilyToken<T, K>, key: Key): AtomToken<T>;
31
36
  declare function counterfeit<T, K extends Canonical, Key extends K>(token: WritablePureSelectorFamilyToken<T, K>, key: Key): WritablePureSelectorToken<T>;
@@ -35,7 +40,7 @@ declare function counterfeit<T, K extends Canonical, Key extends K>(token: Writa
35
40
  declare function counterfeit<T, K extends Canonical, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T>;
36
41
  //#endregion
37
42
  //#region src/internal/utility-types.d.ts
38
- type Func = (...parameters: any[]) => any;
43
+ type Fn = (...parameters: any[]) => any;
39
44
  type Flat<R extends { [K in PropertyKey]: any }> = { [K in keyof R]: R[K] };
40
45
  type Count<N extends number, A extends any[] = []> = [...A, any][`length`] extends N ? A[`length`] : A[`length`] | Count<N, [...A, any]>;
41
46
  type Each<E extends any[]> = { [P in Count<E[`length`]>]: E[P] };
@@ -127,14 +132,26 @@ declare class Junction<const ASide extends string, const AType extends string, c
127
132
  declare const abortTransaction: (store: Store) => void;
128
133
  //#endregion
129
134
  //#region src/internal/transaction/act-upon-store.d.ts
130
- declare function actUponStore<F extends Func>(store: Store, token: TransactionToken<F>, id: string): (...parameters: Parameters<F>) => ReturnType<F>;
135
+ declare function actUponStore<F extends Fn>(store: Store, token: TransactionToken<F>, id: string): (...parameters: Parameters<F>) => ReturnType<F>;
131
136
  //#endregion
132
137
  //#region src/internal/transaction/apply-transaction.d.ts
133
- declare const applyTransaction: <F extends Func>(output: ReturnType<F>, store: Store) => void;
138
+ declare const applyTransaction: <F extends Fn>(output: ReturnType<F>, store: Store) => void;
134
139
  //#endregion
135
140
  //#region src/internal/transaction/assign-transaction-to-continuity.d.ts
136
141
  declare function assignTransactionToContinuity(store: Store, continuityKey: string, transactionKey: string): void;
137
142
  //#endregion
143
+ //#region src/internal/lazy-map.d.ts
144
+ declare class LazyMap<K, V> extends Map<K, V> {
145
+ deleted: Set<K>;
146
+ protected readonly source: Map<K, V>;
147
+ constructor(source: Map<K, V>);
148
+ get(key: K): V | undefined;
149
+ set(key: K, value: V): this;
150
+ hasOwn(key: K): boolean;
151
+ has(key: K): boolean;
152
+ delete(key: K): boolean;
153
+ }
154
+ //#endregion
138
155
  //#region src/internal/transaction/is-root-store.d.ts
139
156
  interface RootStore extends Store {
140
157
  transactionMeta: TransactionEpoch;
@@ -142,9 +159,10 @@ interface RootStore extends Store {
142
159
  child: ChildStore | null;
143
160
  }
144
161
  interface ChildStore extends Store {
145
- transactionMeta: TransactionProgress<Func>;
162
+ transactionMeta: TransactionProgress<Fn>;
146
163
  parent: ChildStore | RootStore;
147
164
  child: ChildStore | null;
165
+ valueMap: LazyMap<string, any>;
148
166
  }
149
167
  declare function isRootStore(store: Store): store is RootStore;
150
168
  declare function isChildStore(store: Store): store is ChildStore;
@@ -167,14 +185,14 @@ declare class StatefulSubject<T> extends Subject<T> {
167
185
  }
168
186
  //#endregion
169
187
  //#region src/internal/transaction/create-transaction.d.ts
170
- type Transaction<F extends Func> = {
188
+ type Transaction<F extends Fn> = {
171
189
  key: string;
172
190
  type: `transaction`;
173
191
  install: (store: Store) => void;
174
192
  subject: Subject<TransactionUpdate<F>>;
175
193
  run: (parameters: Parameters<F>, id?: string) => ReturnType<F>;
176
194
  };
177
- declare function createTransaction<F extends Func>(store: Store, options: TransactionOptions<F>): TransactionToken<F>;
195
+ declare function createTransaction<F extends Fn>(store: Store, options: TransactionOptions<F>): TransactionToken<F>;
178
196
  //#endregion
179
197
  //#region src/internal/transaction/get-epoch-number.d.ts
180
198
  declare function getContinuityKey(store: RootStore, transactionKey: string): string | undefined;
@@ -188,7 +206,7 @@ declare function setEpochNumberOfAction(store: Store, transactionKey: string, ne
188
206
  //#region src/internal/transaction/index.d.ts
189
207
  declare const TRANSACTION_PHASES: readonly ["idle", "building", "applying"];
190
208
  type TransactionPhase = (typeof TRANSACTION_PHASES)[number];
191
- type TransactionProgress<F extends Func> = {
209
+ type TransactionProgress<F extends Fn> = {
192
210
  phase: `applying` | `building`;
193
211
  update: TransactionUpdate<F>;
194
212
  toolkit: ActorToolkit;
@@ -200,7 +218,7 @@ type TransactionEpoch = {
200
218
  //#endregion
201
219
  //#region src/internal/store/deposit.d.ts
202
220
  declare function deposit<T>(state: RegularAtom<T>): RegularAtomToken<T>;
203
- declare function deposit<T extends Transceiver<any>>(state: MutableAtom<T, any>): MutableAtomToken<T, any>;
221
+ declare function deposit<T extends Transceiver<any, any, any>>(state: MutableAtom<T>): MutableAtomToken<T>;
204
222
  declare function deposit<T>(state: Atom<T>): AtomToken<T>;
205
223
  declare function deposit<T>(state: WritablePureSelector<T>): WritablePureSelectorToken<T>;
206
224
  declare function deposit<T>(state: ReadonlyPureSelector<T>): ReadonlyPureSelectorToken<T>;
@@ -208,14 +226,14 @@ declare function deposit<T>(state: Selector<T>): SelectorToken<T>;
208
226
  declare function deposit<T>(state: WritableState<T>): WritableToken<T>;
209
227
  declare function deposit<T>(state: ReadableState<T>): ReadableToken<T>;
210
228
  declare function deposit<T, K extends Canonical>(state: RegularAtomFamily<T, K>): RegularAtomFamilyToken<T, K>;
211
- declare function deposit<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(state: MutableAtomFamily<T, J, K>): MutableAtomFamilyToken<T, J, K>;
229
+ declare function deposit<T extends Transceiver<any, any, any>, K extends Canonical>(state: MutableAtomFamily<T, K>): MutableAtomFamilyToken<T, K>;
212
230
  declare function deposit<T>(state: AtomFamily<T, any>): AtomFamilyToken<T, any>;
213
231
  declare function deposit<T>(state: WritablePureSelectorFamily<T, any>): WritablePureSelectorFamilyToken<T, any>;
214
232
  declare function deposit<T>(state: ReadonlyPureSelectorFamily<T, any>): ReadonlyPureSelectorFamilyToken<T, any>;
215
233
  declare function deposit<T>(state: SelectorFamily<T, any>): SelectorFamilyToken<T, any>;
216
234
  declare function deposit<T>(state: WritableFamily<T, any>): WritableFamilyToken<T, any>;
217
235
  declare function deposit<T>(state: ReadableFamily<T, any>): ReadableFamilyToken<T, any>;
218
- declare function deposit<T extends Func>(state: Transaction<T>): TransactionToken<T>;
236
+ declare function deposit<T extends Fn>(state: Transaction<T>): TransactionToken<T>;
219
237
  declare function deposit<M extends TimelineManageable>(state: Timeline<M>): TimelineToken<M>;
220
238
  declare function deposit(resource: AtomIOInternalResource): AtomIOToken;
221
239
  //#endregion
@@ -229,7 +247,7 @@ declare function editRelationsInStore<ASide extends string, AType extends string
229
247
  declare function findRelationsInStore<ASide extends string, AType extends string, BSide extends string, BType extends string, Cardinality extends `1:1` | `1:n` | `n:n`, Content extends Json.Object | null>(token: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>, key: AType | BType, store: Store): JoinStates<ASide, AType, BSide, BType, Cardinality, Content>;
230
248
  //#endregion
231
249
  //#region src/internal/join/get-internal-relations-from-store.d.ts
232
- declare function getInternalRelationsFromStore(token: JoinToken<any, any, any, any, any, any>, store: Store): MutableAtomFamilyToken<SetRTX<string>, SetRTXJson<string>, string>;
250
+ declare function getInternalRelationsFromStore(token: JoinToken<any, any, any, any, any, any>, store: Store): MutableAtomFamilyToken<SetRTX<string>, string>;
233
251
  //#endregion
234
252
  //#region src/internal/molecule.d.ts
235
253
  type Molecule<K extends Canonical> = {
@@ -253,7 +271,7 @@ declare class Join<const ASide extends string, const AType extends string, const
253
271
  relations: Junction<ASide, AType, BSide, BType, Content>;
254
272
  states: JoinStateFamilies<ASide, AType, BSide, BType, Cardinality, Content>;
255
273
  core: {
256
- relatedKeysAtoms: MutableAtomFamilyToken<SetRTX<string>, SetRTXJson<string>, string>;
274
+ relatedKeysAtoms: MutableAtomFamilyToken<SetRTX<string>, string>;
257
275
  };
258
276
  transact(toolkit: WriterToolkit, run: (join: Join<ASide, AType, BSide, BType, Cardinality, Content>) => void): void;
259
277
  store: Store;
@@ -300,7 +318,7 @@ type TimelineSelectorUpdate<ManagedAtom extends TimelineManageable> = {
300
318
  timestamp: number;
301
319
  atomUpdates: Omit<TimelineAtomUpdate<ManagedAtom>, `timestamp`>[];
302
320
  };
303
- type TimelineTransactionUpdate = Flat<TransactionUpdate<Func> & {
321
+ type TimelineTransactionUpdate = Flat<TransactionUpdate<Fn> & {
304
322
  key: string;
305
323
  type: `transaction_update`;
306
324
  timestamp: number;
@@ -349,11 +367,11 @@ declare class Store implements Lineage {
349
367
  selectorGraph: Junction<`upstreamSelectorKey`, string, `downstreamSelectorKey`, string, {
350
368
  source: string;
351
369
  }>;
352
- trackers: Map<string, Tracker<Transceiver<any>>>;
353
- families: Map<string, HeldSelectorFamily<any, any> | MutableAtomFamily<any, any, any> | PureSelectorFamily<any, any> | RegularAtomFamily<any, any>>;
370
+ trackers: Map<string, Tracker<Transceiver<any, any, any>>>;
371
+ families: Map<string, HeldSelectorFamily<any, any> | MutableAtomFamily<any, any> | PureSelectorFamily<any, any> | RegularAtomFamily<any, any>>;
354
372
  joins: Map<string, Join<any, any, any, any, any, any>>;
355
- transactions: Map<string, Transaction<Func>>;
356
- transactionMeta: TransactionEpoch | TransactionProgress<Func>;
373
+ transactions: Map<string, Transaction<Fn>>;
374
+ transactionMeta: TransactionEpoch | TransactionProgress<Fn>;
357
375
  timelines: Map<string, Timeline<any>>;
358
376
  timelineTopics: Junction<`timelineKey`, string, `topicKey`, string, {
359
377
  topicType: `atom_family` | `atom` | `molecule_family` | `molecule`;
@@ -385,8 +403,8 @@ type StoreEventCarrier = {
385
403
  selectorCreation: Subject<SelectorToken<unknown>>;
386
404
  selectorDisposal: Subject<SelectorToken<unknown>>;
387
405
  timelineCreation: Subject<TimelineToken<unknown>>;
388
- transactionCreation: Subject<TransactionToken<Func>>;
389
- transactionApplying: StatefulSubject<TransactionProgress<Func> | null>;
406
+ transactionCreation: Subject<TransactionToken<Fn>>;
407
+ transactionApplying: StatefulSubject<TransactionProgress<Fn> | null>;
390
408
  operationClose: Subject<OperationProgress>;
391
409
  moleculeCreation: Subject<MoleculeCreation>;
392
410
  moleculeDisposal: Subject<MoleculeDisposal>;
@@ -401,7 +419,7 @@ declare const clearStore: (store: Store) => void;
401
419
  //#endregion
402
420
  //#region src/internal/store/withdraw.d.ts
403
421
  declare function withdraw<T>(store: Store, token: RegularAtomToken<T>): RegularAtom<T>;
404
- declare function withdraw<T extends Transceiver<any>>(store: Store, token: MutableAtomToken<T, any>): MutableAtom<T, any>;
422
+ declare function withdraw<T extends Transceiver<any, any, any>>(store: Store, token: MutableAtomToken<T, any>): MutableAtom<T>;
405
423
  declare function withdraw<T>(store: Store, token: AtomToken<T>): Atom<T>;
406
424
  declare function withdraw<T>(store: Store, token: WritableHeldSelectorToken<T>): WritableHeldSelector<T>;
407
425
  declare function withdraw<T>(store: Store, token: ReadonlyHeldSelectorToken<T>): ReadonlyHeldSelector<T>;
@@ -415,7 +433,7 @@ declare function withdraw<T>(store: Store, token: SelectorToken<T>): Selector<T>
415
433
  declare function withdraw<T>(store: Store, token: WritableToken<T>): WritableState<T>;
416
434
  declare function withdraw<T>(store: Store, token: ReadableToken<T>): ReadableState<T>;
417
435
  declare function withdraw<T, K extends Canonical>(store: Store, token: RegularAtomFamilyToken<T, K>): RegularAtomFamily<T, K>;
418
- declare function withdraw<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(store: Store, token: MutableAtomFamilyToken<T, J, K>): MutableAtomFamily<T, J, K>;
436
+ declare function withdraw<T extends Transceiver<any, any, any>, K extends Canonical>(store: Store, token: MutableAtomFamilyToken<T, K>): MutableAtomFamily<T, K>;
419
437
  declare function withdraw<T, K extends Canonical>(store: Store, token: AtomFamilyToken<T, K>): AtomFamily<T, K>;
420
438
  declare function withdraw<T, K extends Canonical>(store: Store, token: ReadonlyHeldSelectorFamilyToken<T, K>): ReadonlyHeldSelectorFamily<T, K>;
421
439
  declare function withdraw<T, K extends Canonical>(store: Store, token: WritableHeldSelectorFamilyToken<T, K>): WritableHeldSelectorFamily<T, K>;
@@ -428,41 +446,49 @@ declare function withdraw<T, K extends Canonical>(store: Store, token: PureSelec
428
446
  declare function withdraw<T, K extends Canonical>(store: Store, token: SelectorFamilyToken<T, K>): SelectorFamily<T, K>;
429
447
  declare function withdraw<T, K extends Canonical>(store: Store, token: ReadableFamilyToken<T, K>): ReadableFamily<T, K>;
430
448
  declare function withdraw<T, K extends Canonical>(store: Store, token: WritableFamilyToken<T, K>): WritableFamily<T, K>;
431
- declare function withdraw<T extends Func>(store: Store, token: TransactionToken<T>): Transaction<T extends Func ? T : never>;
449
+ declare function withdraw<T extends Fn>(store: Store, token: TransactionToken<T>): Transaction<T extends Fn ? T : never>;
432
450
  declare function withdraw<T>(store: Store, token: TimelineToken<T>): Timeline<T extends TimelineManageable ? T : never>;
433
451
  declare function withdraw<T>(store: Store, token: WritableToken<T>): WritableState<T>;
434
452
  declare function withdraw<T>(store: Store, token: ReadableToken<T>): ReadableState<T>;
435
453
  declare function withdraw(store: Store, token: AtomIOToken): AtomIOInternalResource;
436
454
  //#endregion
437
455
  //#region src/internal/mutable/transceiver.d.ts
438
- interface Transceiver<S extends Json.Serializable> {
456
+ interface Transceiver<V, S extends Json.Serializable, J extends Json.Serializable> {
439
457
  do: (update: S) => number | `OUT_OF_RANGE` | null;
440
458
  undo: (update: S) => void;
441
459
  subscribe: (key: string, fn: (update: S) => void) => () => void;
442
460
  cacheUpdateNumber: number;
443
461
  getUpdateNumber: (update: S) => number;
462
+ view: () => V;
463
+ toJSON: () => J;
444
464
  }
445
- declare function isTransceiver(value: unknown): value is Transceiver<Json.Serializable>;
465
+ type TransceiverConstructor<J extends Json.Serializable, T extends Transceiver<any, any, J>> = (new () => T) & {
466
+ fromJSON: (json: J) => T;
467
+ };
468
+ declare function isTransceiver(value: unknown): value is Transceiver<any, Json.Serializable, Json.Serializable>;
446
469
  type TransceiverMode = `playback` | `record` | `transaction`;
447
- type Signal$1<TVR extends Transceiver<any>> = TVR extends Transceiver<infer S> ? S : never;
470
+ type ViewOf<T> = T extends Transceiver<infer V, any, any> ? V : T;
471
+ type SignalFrom<T extends Transceiver<any, any, any>> = T extends Transceiver<any, infer S, any> ? S : never;
472
+ type AsJSON<T extends Transceiver<any, any, any>> = T extends Transceiver<any, any, infer J> ? J : never;
473
+ type ConstructorOf<T extends Transceiver<any, any, any>> = TransceiverConstructor<AsJSON<T>, T>;
448
474
  //#endregion
449
475
  //#region src/internal/mutable/create-mutable-atom.d.ts
450
- declare function createMutableAtom<T extends Transceiver<any>, J extends Json.Serializable>(store: Store, options: MutableAtomOptions<T, J>, family: FamilyMetadata | undefined): MutableAtomToken<T, J>;
476
+ declare function createMutableAtom<T extends Transceiver<any, any, any>>(store: Store, options: MutableAtomOptions<T>, family: FamilyMetadata | undefined): MutableAtomToken<T>;
451
477
  //#endregion
452
478
  //#region src/internal/mutable/create-mutable-atom-family.d.ts
453
- declare function createMutableAtomFamily<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(store: Store, options: MutableAtomFamilyOptions<T, J, K>, internalRoles?: string[]): MutableAtomFamilyToken<T, J, K>;
479
+ declare function createMutableAtomFamily<T extends Transceiver<any, any, any>, K extends Canonical>(store: Store, options: MutableAtomFamilyOptions<T, K>, internalRoles?: string[]): MutableAtomFamilyToken<T, K>;
454
480
  //#endregion
455
481
  //#region src/internal/mutable/get-json-family.d.ts
456
- declare const getJsonFamily: <Core extends Transceiver<Json.Serializable>, SerializableCore extends Json.Serializable, Key extends Canonical>(mutableAtomFamily: MutableAtomFamilyToken<Core, SerializableCore, Key>, store: Store) => WritablePureSelectorFamily<SerializableCore, Key>;
482
+ 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>;
457
483
  //#endregion
458
484
  //#region src/internal/mutable/get-json-token.d.ts
459
- declare const getJsonToken: <Core extends Transceiver<any>, SerializableCore extends Json.Serializable>(store: Store, mutableAtomToken: MutableAtomToken<Core, SerializableCore>) => WritablePureSelectorToken<SerializableCore>;
485
+ declare const getJsonToken: <T extends Transceiver<any, any, any>>(store: Store, mutableAtomToken: MutableAtomToken<T>) => WritablePureSelectorToken<AsJSON<T>>;
460
486
  //#endregion
461
487
  //#region src/internal/mutable/get-update-family.d.ts
462
- declare const getUpdateFamily: <Core extends Transceiver<Json.Serializable>, SerializableCore extends Json.Serializable, Key extends string>(mutableAtomFamily: MutableAtomFamilyToken<Core, SerializableCore, Key>, store: Store) => AtomFamily<Signal$1<Core>, Key>;
488
+ declare const getUpdateFamily: <T extends Transceiver<any, Json.Serializable, Json.Serializable>, K extends string>(mutableAtomFamily: MutableAtomFamilyToken<T, K>, store: Store) => AtomFamily<SignalFrom<T>, K>;
463
489
  //#endregion
464
490
  //#region src/internal/mutable/get-update-token.d.ts
465
- declare const getUpdateToken: <Core extends Transceiver<any>, SerializableCore extends Json.Serializable>(mutableAtomToken: MutableAtomToken<Core, SerializableCore>) => RegularAtomToken<Signal$1<Core>>;
491
+ declare const getUpdateToken: <T extends Transceiver<any, any, any>>(mutableAtomToken: MutableAtomToken<T>) => RegularAtomToken<SignalFrom<T>>;
466
492
  //#endregion
467
493
  //#region src/internal/mutable/tracker.d.ts
468
494
  /**
@@ -470,31 +496,31 @@ declare const getUpdateToken: <Core extends Transceiver<any>, SerializableCore e
470
496
  * subscribe to the transceiver's inner value. When the inner value changes,
471
497
  * the tracker will update its own state to reflect the change.
472
498
  */
473
- declare class Tracker<Mutable extends Transceiver<any>> {
474
- private initializeState;
499
+ declare class Tracker<T extends Transceiver<any, any, any>> {
500
+ private initializeSignalAtom;
475
501
  private unsubscribeFromInnerValue;
476
502
  private unsubscribeFromState;
477
- private observeCore;
478
- private updateCore;
479
- mutableState: MutableAtomToken<Mutable, Json.Serializable>;
480
- latestUpdateState: RegularAtomToken<(Mutable extends Transceiver<infer Signal> ? Signal : never) | null>;
503
+ private captureSignalsFromCore;
504
+ private supplySignalsToCore;
505
+ mutableAtomToken: MutableAtomToken<T>;
506
+ latestSignalToken: RegularAtomToken<SignalFrom<T> | null>;
481
507
  [Symbol.dispose]: () => void;
482
- constructor(mutableState: MutableAtomToken<Mutable, Json.Serializable>, store: Store);
508
+ constructor(mutableAtomToken: MutableAtomToken<T>, store: Store);
483
509
  }
484
510
  //#endregion
485
511
  //#region src/internal/mutable/tracker-family.d.ts
486
- declare class FamilyTracker<Core extends Transceiver<any>, FamilyMemberKey extends Canonical> {
512
+ declare class FamilyTracker<T extends Transceiver<any, any, any>, K extends Canonical> {
487
513
  private trackers;
488
- readonly latestUpdateAtoms: RegularAtomFamily<(Core extends Transceiver<infer Signal> ? Signal : never) | null, FamilyMemberKey>;
489
- readonly mutableAtoms: MutableAtomFamily<Core, any, FamilyMemberKey>;
490
- constructor(mutableAtoms: MutableAtomFamily<Core, any, FamilyMemberKey>, store: Store);
514
+ readonly latestSignalAtoms: RegularAtomFamily<SignalFrom<T> | null, K>;
515
+ readonly mutableAtoms: MutableAtomFamily<T, K>;
516
+ constructor(mutableAtoms: MutableAtomFamily<T, K>, store: Store);
491
517
  }
492
518
  //#endregion
493
519
  //#region src/internal/arbitrary.d.ts
494
520
  declare function arbitrary(random?: () => number): string;
495
521
  //#endregion
496
522
  //#region src/internal/atom/create-regular-atom.d.ts
497
- declare function createRegularAtom<T>(store: Store, options: RegularAtomOptions<T>, family: FamilyMetadata | undefined): RegularAtomToken<T>;
523
+ declare function createRegularAtom<T>(store: Store, options: RegularAtomOptions<T>, family: FamilyMetadata | undefined, internalRoles?: internalRole[]): RegularAtomToken<T>;
498
524
  //#endregion
499
525
  //#region src/internal/atom/dispose-atom.d.ts
500
526
  declare function disposeAtom(store: Store, atomToken: AtomToken<unknown>): void;
@@ -521,10 +547,16 @@ declare class Future<T> extends Promise<T> {
521
547
  }
522
548
  //#endregion
523
549
  //#region src/internal/caching.d.ts
524
- declare function cacheValue<T>(store: Store, key: string, value: T, subject: Subject<StateUpdate<unknown>>): T;
525
- declare function cacheValue<T extends Promise<any>>(store: Store, key: string, value: T, subject: Subject<StateUpdate<unknown>>): Future<T>;
526
- declare const readCachedValue: <T>(state: ReadableState<any>, target: Store) => T;
527
- declare const evictCachedValue: (target: Store, key: string) => void;
550
+ declare function writeToCache<T>(target: Store, key: string, value: T, subject: Subject<StateUpdate<unknown>>): T;
551
+ declare function writeToCache<T extends Promise<any>>(target: Store, key: string, value: T, subject: Subject<StateUpdate<unknown>>): Future<Awaited<T>>;
552
+ /**
553
+ * @param target - the newest layer of the store
554
+ * @param state - the state to read from cache
555
+ * @param mut - whether the value is intended to be mutable
556
+ * @returns the state's current value
557
+ */
558
+ declare function readFromCache<T>(target: Store, state: ReadableState<T>, mut: `mut` | undefined): T;
559
+ declare function evictCachedValue(target: Store, key: string): void;
528
560
  //#endregion
529
561
  //#region src/internal/capitalize.d.ts
530
562
  declare function capitalize<S extends string>(string: S): Capitalize<S>;
@@ -549,7 +581,7 @@ declare function disposeFromStore(store: Store, token: ReadableToken<any>): void
549
581
  declare function disposeFromStore<K extends Canonical>(store: Store, token: ReadableFamilyToken<any, K>, key: K): void;
550
582
  //#endregion
551
583
  //#region src/internal/families/find-in-store.d.ts
552
- declare function findInStore<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J, K>;
584
+ declare function findInStore<T extends Transceiver<any, any, any>, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, K>, key: Key): MutableAtomToken<T, K>;
553
585
  declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T, K>;
554
586
  declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: AtomFamilyToken<T, K>, key: Key): AtomToken<T, K>;
555
587
  declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritablePureSelectorFamilyToken<T, K>, key: Key): WritablePureSelectorToken<T, K>;
@@ -559,7 +591,7 @@ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store
559
591
  declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T, K>;
560
592
  //#endregion
561
593
  //#region src/internal/families/init-family-member.d.ts
562
- declare function initFamilyMemberInStore<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J, K>;
594
+ declare function initFamilyMemberInStore<T extends Transceiver<any, any, any>, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, K>, key: Key): MutableAtomToken<T, K>;
563
595
  declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T, K>;
564
596
  declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: AtomFamilyToken<T, K>, key: Key): AtomToken<T, K>;
565
597
  declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritablePureSelectorFamilyToken<T, K>, key: Key): WritablePureSelectorToken<T, K>;
@@ -569,7 +601,7 @@ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(
569
601
  declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T, K>;
570
602
  //#endregion
571
603
  //#region src/internal/families/seek-in-store.d.ts
572
- declare function seekInStore<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J, K> | undefined;
604
+ 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, K> | undefined;
573
605
  declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T, K> | undefined;
574
606
  declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: AtomFamilyToken<T, K>, key: Key): AtomToken<T, K> | undefined;
575
607
  declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritablePureSelectorFamilyToken<T, K>, key: Key): WritablePureSelectorToken<T, K> | undefined;
@@ -589,7 +621,8 @@ declare function getFromStore<T>(store: Store, token: ReadableToken<T>): T;
589
621
  declare function getFromStore<T, K extends Canonical>(store: Store, token: ReadableFamilyToken<T, K>, key: K): T;
590
622
  //#endregion
591
623
  //#region src/internal/get-state/read-or-compute-value.d.ts
592
- declare const readOrComputeValue: <T>(target: Store, state: ReadableState<T>) => T;
624
+ declare function readOrComputeValue<T>(target: Store, state: ReadableState<T>, mut?: undefined): ViewOf<T>;
625
+ declare function readOrComputeValue<T>(target: Store, state: ReadableState<T>, mut: `mut`): T;
593
626
  //#endregion
594
627
  //#region src/internal/get-trace.d.ts
595
628
  declare function getTrace(error: Error): string;
@@ -640,18 +673,6 @@ declare const isReadonlySelectorKey: (store: Store, key: string) => key is Reado
640
673
  type StateKey<T> = AtomKey<T> | ReadonlySelectorKey<T> | SelectorKey<T>;
641
674
  declare const isStateKey: (store: Store, key: string) => key is StateKey<unknown>;
642
675
  //#endregion
643
- //#region src/internal/lazy-map.d.ts
644
- declare class LazyMap<K, V> extends Map<K, V> {
645
- deleted: Set<K>;
646
- protected readonly source: Map<K, V>;
647
- constructor(source: Map<K, V>);
648
- get(key: K): V | undefined;
649
- set(key: K, value: V): this;
650
- hasOwn(key: K): boolean;
651
- has(key: K): boolean;
652
- delete(key: K): boolean;
653
- }
654
- //#endregion
655
676
  //#region src/internal/not-found-error.d.ts
656
677
  declare class NotFoundError extends Error {
657
678
  constructor(token: AtomIOToken, store: Store);
@@ -720,7 +741,7 @@ declare const recallState: <T>(store: Store, state: ReadableState<T>) => T;
720
741
  //#endregion
721
742
  //#region src/internal/subscribe/subscribe-in-store.d.ts
722
743
  declare function subscribeInStore<T>(store: Store$1, token: ReadableToken<T>, handleUpdate: UpdateHandler<T>, key?: string): () => void;
723
- declare function subscribeInStore<F extends Func$1>(store: Store$1, token: TransactionToken<F>, handleUpdate: TransactionUpdateHandler<F>, key?: string): () => void;
744
+ declare function subscribeInStore<F extends Fn$1>(store: Store$1, token: TransactionToken<F>, handleUpdate: TransactionUpdateHandler<F>, key?: string): () => void;
724
745
  declare function subscribeInStore<M extends TimelineManageable>(store: Store$1, token: TimelineToken<M>, handleUpdate: (update: TimelineUpdate<M> | `redo` | `undo`) => void, key?: string): () => void;
725
746
  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;
726
747
  //#endregion
@@ -734,7 +755,7 @@ declare function subscribeToState<T>(store: Store, token: ReadableToken<T>, key:
734
755
  declare const subscribeToTimeline: <ManagedAtom extends TimelineManageable>(store: Store, token: TimelineToken<ManagedAtom>, key: string, handleUpdate: (update: TimelineUpdate<any> | `redo` | `undo`) => void) => (() => void);
735
756
  //#endregion
736
757
  //#region src/internal/subscribe/subscribe-to-transaction.d.ts
737
- declare const subscribeToTransaction: <F extends Func>(store: Store, token: TransactionToken<F>, key: string, handleUpdate: TransactionUpdateHandler<F>) => (() => void);
758
+ declare const subscribeToTransaction: <F extends Fn>(store: Store, token: TransactionToken<F>, key: string, handleUpdate: TransactionUpdateHandler<F>) => (() => void);
738
759
  //#endregion
739
760
  //#region src/internal/index.d.ts
740
761
  type AtomIOState = {
@@ -750,13 +771,14 @@ type RegularAtom<T> = Flat<AtomIOState & {
750
771
  type: `atom`;
751
772
  default: T | (() => T);
752
773
  cleanup?: () => void;
774
+ internalRoles?: internalRole[];
753
775
  }>;
754
- type MutableAtom<T extends Transceiver<any>, J extends Json.Serializable> = Flat<AtomIOState & JsonInterface<T, J> & {
776
+ type MutableAtom<T extends Transceiver<any, any, any>> = Flat<AtomIOState & {
755
777
  type: `mutable_atom`;
756
- default: () => T;
778
+ class: ConstructorOf<T>;
757
779
  cleanup?: () => void;
758
780
  }>;
759
- type Atom<T> = RegularAtom<T> | (T extends Transceiver<any> ? MutableAtom<T, any> : never);
781
+ type Atom<T> = RegularAtom<T> | (T extends Transceiver<any, any, any> ? MutableAtom<T> : never);
760
782
  type WritableHeldSelector<T> = Flat<AtomIOState & {
761
783
  type: `writable_held_selector`;
762
784
  const: T;
@@ -790,12 +812,12 @@ type RegularAtomFamily<T, K extends Canonical> = RegularAtomFamilyToken<T, K> &
790
812
  internalRoles: string[] | undefined;
791
813
  subject: Subject<StateCreation<AtomToken<T>> | StateDisposal<AtomToken<T>>>;
792
814
  };
793
- type MutableAtomFamily<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical> = Flat<JsonInterface<T, J> & MutableAtomFamilyToken<T, J, K> & {
815
+ type MutableAtomFamily<T extends Transceiver<any, any, any>, K extends Canonical> = Flat<MutableAtomFamilyToken<T, K> & {
794
816
  install: (store: Store) => void;
795
817
  internalRoles: string[] | undefined;
796
- subject: Subject<StateCreation<MutableAtomToken<T, J>> | StateDisposal<MutableAtomToken<T, J>>>;
797
- }> & ((key: K) => MutableAtomToken<T, J>);
798
- type AtomFamily<T, K extends Canonical = Canonical> = MutableAtomFamily<T extends Transceiver<any> ? T : never, any, K> | RegularAtomFamily<T, K>;
818
+ subject: Subject<StateLifecycleEvent<MutableAtomToken<T>>>;
819
+ }> & ((key: K) => MutableAtomToken<T>);
820
+ type AtomFamily<T, K extends Canonical = Canonical> = MutableAtomFamily<T extends Transceiver<any, any, any> ? T : never, K> | RegularAtomFamily<T, K>;
799
821
  type WritablePureSelectorFamily<T, K extends Canonical> = Flat<WritablePureSelectorFamilyToken<T, K> & {
800
822
  default: (key: K) => T;
801
823
  install: (store: Store) => void;
@@ -829,5 +851,5 @@ type WritableFamily<T, K extends Canonical> = AtomFamily<T, K> | WritablePureSel
829
851
  type ReadableFamily<T, K extends Canonical> = AtomFamily<T, K> | SelectorFamily<T, K>;
830
852
  type AtomIOInternalResource = ReadableFamily<any, any> | ReadableState<any> | Timeline<any> | Transaction<any>;
831
853
  //#endregion
832
- export { Atom, AtomFamily, AtomIOInternalResource, AtomIOState, AtomKey, BaseExternalStoreConfiguration, ChildStore, CircularBuffer, Count, Each, Empty, EnvironmentData, ExternalStoreConfiguration, ExternalStoreWithContentConfiguration, FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, Flat, Func, Future, HeldSelector, HeldSelectorFamily, IMPLICIT, Join, JoinStateFamilies, Junction, JunctionAdvancedConfiguration, JunctionEntries, JunctionEntriesBase, JunctionJSON, JunctionSchema, JunctionSchemaBase, LazyMap, Lineage, Modify, Molecule, MutableAtom, MutableAtomFamily, NotFoundError, OperationProgress, PureSelector, PureSelectorFamily, ReadableFamily, ReadableState, ReadonlyHeldSelector, ReadonlyHeldSelectorFamily, ReadonlyPureSelector, ReadonlyPureSelectorFamily, ReadonlySelector, ReadonlySelectorFamily, ReadonlySelectorKey, Refinement, RegularAtom, RegularAtomFamily, ReservedIntrospectionKey, RootStore, Selector, SelectorFamily, SelectorKey, Signal$1 as Signal, StateKey, StatefulSubject, Store, StoreEventCarrier, Subject, TRANSACTION_PHASES, Timeline, TimelineAtomUpdate, TimelineMoleculeCreation, TimelineMoleculeDisposal, TimelineSelectorUpdate, TimelineStateCreation, TimelineStateDisposal, TimelineTransactionUpdate, Tracker, Transaction, TransactionEpoch, TransactionPhase, TransactionProgress, Transceiver, TransceiverMode, WritableFamily, WritableHeldSelector, WritableHeldSelectorFamily, WritablePureSelector, WritablePureSelectorFamily, WritableSelector, WritableSelectorFamily, WritableState, abortTransaction, actUponStore, allocateIntoStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, capitalize, claimWithinStore, clearStore, closeOperation, counterfeit, createJoin, createMutableAtom, createMutableAtomFamily, createReadonlyHeldSelector, createReadonlyPureSelector, createReadonlyPureSelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneSelector, createTimeline, createTransaction, createWritableHeldSelector, createWritablePureSelector, createWritablePureSelectorFamily, deallocateFromStore, deposit, disposeAtom, disposeFromStore, disposeSelector, editRelationsInStore, evictCachedValue, findInStore, findRelationsInStore, fuseWithinStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getInternalRelationsFromStore, getJoin, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getTrace, getUpdateFamily, getUpdateToken, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestMoleculeTransferEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, installIntoStore, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isReservedIntrospectionKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeRootMoleculeInStore, markDone, newest, openOperation, prettyPrintTokenType, readCachedValue, readOrComputeValue, recallState, registerSelector, resetAtomOrSelector, resetInStore, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootDependency, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceRootSelectorAtoms, updateSelectorAtoms, withdraw };
854
+ export { AsJSON, Atom, AtomFamily, AtomIOInternalResource, AtomIOState, AtomKey, BaseExternalStoreConfiguration, ChildStore, CircularBuffer, ConstructorOf, Count, 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, JunctionSchema, JunctionSchemaBase, LazyMap, Lineage, Modify, Molecule, MutableAtom, MutableAtomFamily, NotFoundError, OperationProgress, PureSelector, PureSelectorFamily, ReadableFamily, ReadableState, ReadonlyHeldSelector, ReadonlyHeldSelectorFamily, ReadonlyPureSelector, ReadonlyPureSelectorFamily, ReadonlySelector, ReadonlySelectorFamily, ReadonlySelectorKey, Refinement, RegularAtom, RegularAtomFamily, ReservedIntrospectionKey, RootStore, Selector, SelectorFamily, SelectorKey, SignalFrom, StateKey, StatefulSubject, Store, StoreEventCarrier, Subject, TRANSACTION_PHASES, Timeline, TimelineAtomUpdate, TimelineMoleculeCreation, TimelineMoleculeDisposal, TimelineSelectorUpdate, TimelineStateCreation, TimelineStateDisposal, TimelineTransactionUpdate, Tracker, Transaction, TransactionEpoch, TransactionPhase, TransactionProgress, Transceiver, TransceiverConstructor, TransceiverMode, ViewOf, WritableFamily, WritableHeldSelector, WritableHeldSelectorFamily, WritablePureSelector, WritablePureSelectorFamily, WritableSelector, WritableSelectorFamily, WritableState, abortTransaction, actUponStore, allocateIntoStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, capitalize, claimWithinStore, clearStore, closeOperation, counterfeit, createJoin, createMutableAtom, createMutableAtomFamily, createReadonlyHeldSelector, createReadonlyPureSelector, createReadonlyPureSelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneSelector, createTimeline, createTransaction, createWritableHeldSelector, createWritablePureSelector, createWritablePureSelectorFamily, deallocateFromStore, deposit, disposeAtom, disposeFromStore, disposeSelector, editRelationsInStore, evictCachedValue, findInStore, findRelationsInStore, fuseWithinStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getInternalRelationsFromStore, getJoin, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getTrace, getUpdateFamily, getUpdateToken, hasRole, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestMoleculeTransferEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, installIntoStore, internalRole, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isReservedIntrospectionKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeRootMoleculeInStore, markDone, newest, openOperation, prettyPrintTokenType, readFromCache, readOrComputeValue, recallState, registerSelector, resetAtomOrSelector, resetInStore, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootDependency, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceRootSelectorAtoms, updateSelectorAtoms, withdraw, writeToCache };
833
855
  //# sourceMappingURL=index.d.ts.map