atom.io 0.28.2 → 0.29.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.
@@ -505,14 +505,33 @@ function createAtomFamily(store, options) {
505
505
  return createRegularAtomFamily(store, options);
506
506
  }
507
507
 
508
+ // internal/src/families/get-family-of-token.ts
509
+ function getFamilyOfToken(store, token) {
510
+ if (token.family) {
511
+ const family = store.families.get(token.family.key);
512
+ if (family) {
513
+ return family;
514
+ }
515
+ }
516
+ }
517
+
508
518
  // internal/src/get-state/get-from-store.ts
509
519
  function getFromStore(store, ...params) {
510
520
  let token;
521
+ let family;
522
+ let key;
511
523
  if (params.length === 1) {
512
524
  token = params[0];
525
+ if (token.type !== `molecule`) {
526
+ family = getFamilyOfToken(store, token) ?? null;
527
+ if (family) {
528
+ key = token.family ? parseJson(token.family.subKey) : null;
529
+ token = findInStore(store, family, key);
530
+ }
531
+ }
513
532
  } else {
514
- const family = params[0];
515
- const key = params[1];
533
+ family = params[0];
534
+ key = params[1];
516
535
  let maybeToken;
517
536
  if (family.type === `molecule_family`) {
518
537
  maybeToken = seekInStore(store, family, key) ?? counterfeit(family, key);
@@ -522,7 +541,7 @@ function getFromStore(store, ...params) {
522
541
  token = maybeToken;
523
542
  }
524
543
  if (`counterfeit` in token && `family` in token) {
525
- const family = token.type === `molecule` ? withdraw(token.family, store) : (
544
+ family = token.type === `molecule` ? withdraw(token.family, store) : (
526
545
  // biome-ignore lint/style/noNonNullAssertion: family must be present
527
546
  store.families.get(token.family.key)
528
547
  );
@@ -877,14 +896,6 @@ function disposeSelector(selectorToken, store) {
877
896
  }
878
897
  target.valueMap.delete(key);
879
898
  target.selectorAtoms.delete(key);
880
- const downstreamTokens = target.selectorGraph.getRelationEntries({ upstreamSelectorKey: key }).filter(([_, { source }]) => source === key).map(
881
- ([downstreamSelectorKey]) => target.selectors.get(downstreamSelectorKey) ?? target.readonlySelectors.get(downstreamSelectorKey)
882
- );
883
- for (const downstreamToken of downstreamTokens) {
884
- if (downstreamToken) {
885
- disposeSelector(downstreamToken, store);
886
- }
887
- }
888
899
  target.selectorGraph.delete(key);
889
900
  store.logger.info(`\u{1F525}`, selectorToken.type, key, `deleted`);
890
901
  if (isChildStore(target) && target.transactionMeta.phase === `building`) {
@@ -1256,8 +1267,7 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1256
1267
 
1257
1268
  // internal/src/families/init-family-member.ts
1258
1269
  function initFamilyMemberInStore(store, token, key) {
1259
- const familyKey = token.key;
1260
- const family = store.families.get(familyKey);
1270
+ const family = store.families.get(token.key);
1261
1271
  if (family === void 0) {
1262
1272
  throw new NotFoundError(token, store);
1263
1273
  }
@@ -1387,16 +1397,22 @@ ${disposal.trace}` : `No previous disposal trace was found.`
1387
1397
  // internal/src/set-state/set-into-store.ts
1388
1398
  function setIntoStore(store, ...params) {
1389
1399
  let token;
1400
+ let family;
1401
+ let key;
1390
1402
  let value;
1391
1403
  if (params.length === 2) {
1392
1404
  token = params[0];
1393
1405
  value = params[1];
1406
+ family = getFamilyOfToken(store, token) ?? null;
1407
+ if (family) {
1408
+ key = token.family ? parseJson(token.family.subKey) : null;
1409
+ token = findInStore(store, family, key);
1410
+ }
1394
1411
  } else {
1395
- const family = params[0];
1396
- const key = params[1];
1412
+ family = params[0];
1413
+ key = params[1];
1397
1414
  value = params[2];
1398
- const maybeToken = findInStore(store, family, key);
1399
- token = maybeToken;
1415
+ token = findInStore(store, family, key);
1400
1416
  }
1401
1417
  if (`counterfeit` in token) {
1402
1418
  const disposal = store.disposalTraces.buffer.find(
@@ -1447,7 +1463,7 @@ function ingestAtomUpdate(applying, atomUpdate, store) {
1447
1463
  function ingestCreationEvent(update, applying, store) {
1448
1464
  switch (applying) {
1449
1465
  case `newValue`: {
1450
- createInStore(update.token, store);
1466
+ createInStore(update, store);
1451
1467
  break;
1452
1468
  }
1453
1469
  case `oldValue`: {
@@ -1463,34 +1479,18 @@ function ingestDisposalEvent(update, applying, store) {
1463
1479
  break;
1464
1480
  }
1465
1481
  case `oldValue`: {
1466
- createInStore(update.token, store);
1482
+ createInStore(update, store);
1467
1483
  store.valueMap.set(update.token.key, update.value);
1468
1484
  break;
1469
1485
  }
1470
1486
  }
1471
1487
  }
1472
- function createInStore(token, store) {
1473
- if (token.family) {
1474
- const family = store.families.get(token.family.key);
1488
+ function createInStore(update, store) {
1489
+ const { family: familyMeta } = update.token;
1490
+ if (familyMeta) {
1491
+ const family = store.families.get(familyMeta.key);
1475
1492
  if (family) {
1476
- const molecule = store.molecules.get(token.family.subKey);
1477
- if (molecule) {
1478
- growMoleculeInStore(molecule, family, store);
1479
- return;
1480
- }
1481
- if (store.config.lifespan === `immortal`) {
1482
- store.logger.error(
1483
- `\u{1F41E}`,
1484
- `atom`,
1485
- token.family.key,
1486
- `tried to create member`,
1487
- `"${token.family.subKey}"`,
1488
- `but a molecule with that key was not found in store`,
1489
- `"${store.config.name}"`
1490
- );
1491
- return;
1492
- }
1493
- initFamilyMemberInStore(store, family, parseJson(token.family.subKey));
1493
+ findInStore(store, family, parseJson(familyMeta.subKey));
1494
1494
  }
1495
1495
  }
1496
1496
  }
@@ -2713,15 +2713,6 @@ function disposeAtom(atomToken, store) {
2713
2713
  }
2714
2714
  target.atoms.delete(key);
2715
2715
  target.valueMap.delete(key);
2716
- const selectorKeys = target.selectorAtoms.getRelatedKeys(key);
2717
- if (selectorKeys) {
2718
- for (const selectorKey of selectorKeys) {
2719
- const token = target.selectors.get(selectorKey) ?? target.readonlySelectors.get(selectorKey);
2720
- if (token) {
2721
- disposeSelector(token, store);
2722
- }
2723
- }
2724
- }
2725
2716
  target.selectorAtoms.delete(key);
2726
2717
  target.atomsThatAreDefault.delete(key);
2727
2718
  target.timelineTopics.delete(key);
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Transceiver, Func, EnvironmentData, Flat, Subject, Store, Timeline, TimelineAtomUpdate, TimelineMoleculeCreation, TimelineMoleculeDisposal, TimelineSelectorUpdate, TimelineStateCreation, TimelineStateDisposal, TimelineTransactionUpdate } from 'atom.io/internal';
2
- import { Json, JsonInterface, Canonical } from 'atom.io/json';
2
+ import { Json, JsonInterface, Canonical, stringified } from 'atom.io/json';
3
3
  import { MoleculeConstructor as MoleculeConstructor$1, MoleculeToken as MoleculeToken$1, MoleculeFamilyToken as MoleculeFamilyToken$1, MoleculeParams as MoleculeParams$1, getState as getState$1, setState as setState$1, makeMolecule as makeMolecule$1, ActorToolkit as ActorToolkit$1, MutableAtomFamilyToken as MutableAtomFamilyToken$1, MutableAtomToken as MutableAtomToken$1, RegularAtomFamilyToken as RegularAtomFamilyToken$1, RegularAtomToken as RegularAtomToken$1, WritableSelectorFamilyToken as WritableSelectorFamilyToken$1, WritableSelectorToken as WritableSelectorToken$1, ReadonlySelectorFamilyToken as ReadonlySelectorFamilyToken$1, ReadonlySelectorToken as ReadonlySelectorToken$1, WritableFamilyToken as WritableFamilyToken$1, WritableToken as WritableToken$1, ReadableFamilyToken as ReadableFamilyToken$1, ReadableToken as ReadableToken$1, MoleculeCreation as MoleculeCreation$1, MoleculeDisposal as MoleculeDisposal$1 } from 'atom.io';
4
4
  import { findState } from 'atom.io/ephemeral';
5
5
  import { seekState } from 'atom.io/immortal';
@@ -391,40 +391,40 @@ declare function belongsTo<Family extends ReadonlySelectorFamilyToken$1<any, any
391
391
  declare function belongsTo<Family extends WritableFamilyToken$1<any, any>>(family: Family, unknownToken: ReadableToken$1<any>): unknownToken is WritableToken$1<TokenType<Family>>;
392
392
  declare function belongsTo<Family extends ReadableFamilyToken$1<any, any>>(family: Family, unknownToken: ReadableToken$1<any>): unknownToken is ReadableToken$1<TokenType<Family>>;
393
393
 
394
- type RegularAtomToken<T> = {
394
+ type RegularAtomToken<T, K extends Canonical = any> = {
395
395
  key: string;
396
396
  type: `atom`;
397
- family?: FamilyMetadata;
397
+ family?: FamilyMetadata<K>;
398
398
  __T?: T;
399
399
  };
400
- type MutableAtomToken<T extends Transceiver<any>, J extends Json.Serializable> = {
400
+ type MutableAtomToken<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical = any> = {
401
401
  key: string;
402
402
  type: `mutable_atom`;
403
- family?: FamilyMetadata;
403
+ family?: FamilyMetadata<K>;
404
404
  __J?: J;
405
405
  __U?: T extends Transceiver<infer Update> ? Update : never;
406
406
  };
407
- type AtomToken<T> = MutableAtomToken<T extends Transceiver<any> ? T : never, any> | RegularAtomToken<T>;
408
- type WritableSelectorToken<T> = {
407
+ type AtomToken<T, K extends Canonical = any> = MutableAtomToken<T extends Transceiver<any> ? T : never, any, K> | RegularAtomToken<T, K>;
408
+ type WritableSelectorToken<T, K extends Canonical = any> = {
409
409
  key: string;
410
410
  type: `selector`;
411
- family?: FamilyMetadata;
411
+ family?: FamilyMetadata<K>;
412
412
  __T?: T;
413
413
  };
414
- type ReadonlySelectorToken<T> = {
414
+ type ReadonlySelectorToken<T, K extends Canonical = any> = {
415
415
  key: string;
416
416
  type: `readonly_selector`;
417
- family?: FamilyMetadata;
417
+ family?: FamilyMetadata<K>;
418
418
  __T?: T;
419
419
  };
420
- type SelectorToken<T> = ReadonlySelectorToken<T> | WritableSelectorToken<T>;
421
- type WritableToken<T> = AtomToken<T> | WritableSelectorToken<T>;
422
- type ReadableToken<T> = AtomToken<T> | SelectorToken<T>;
420
+ type SelectorToken<T, K extends Canonical = any> = ReadonlySelectorToken<T, K> | WritableSelectorToken<T, K>;
421
+ type WritableToken<T, K extends Canonical = any> = AtomToken<T, K> | WritableSelectorToken<T, K>;
422
+ type ReadableToken<T, K extends Canonical = any> = AtomToken<T, K> | SelectorToken<T, K>;
423
423
  type WritableFamilyToken<T, K extends Canonical> = AtomFamilyToken<T, K> | WritableSelectorFamilyToken<T, K>;
424
424
  type ReadableFamilyToken<T, K extends Canonical> = AtomFamilyToken<T, K> | SelectorFamilyToken<T, K>;
425
- type FamilyMetadata = {
425
+ type FamilyMetadata<K extends Canonical = any> = {
426
426
  key: string;
427
- subKey: string;
427
+ subKey: stringified<K>;
428
428
  };
429
429
 
430
430
  export { type ActorToolkit, type AtomEffect, type AtomFamilyToken, AtomIOLogger, type AtomOnly, type AtomToken, type CtorToolkit, type Effectors, type FamilyMetadata, type GetterToolkit, type KeyedStateUpdate, LOG_LEVELS, type LogFilter, type LogFn, type LogLevel, type Logger, type LoggerIcon, type MoleculeConstructor, type MoleculeCreation, type MoleculeDisposal, type MoleculeFamily, type MoleculeFamilyOptions, type MoleculeFamilyToken, type MoleculeKey, type MoleculeParams, type MoleculeToken, type MoleculeType, type MutableAtomFamilyOptions, type MutableAtomFamilyToken, type MutableAtomOptions, type MutableAtomToken, type Read, type ReadableFamilyToken, type ReadableToken, type ReadonlySelectorFamilyOptions, type ReadonlySelectorFamilyToken, type ReadonlySelectorOptions, type ReadonlySelectorToken, type RegularAtomFamilyOptions, type RegularAtomFamilyToken, type RegularAtomOptions, type RegularAtomToken, type SelectorFamilyToken, type SelectorToken, type SetterToolkit, Silo, type StateCreation, type StateDisposal, type StateUpdate, type TimelineManageable, type TimelineOptions, type TimelineToken, type TimelineUpdate, type TokenDenomination, type TokenType, type Transact, type TransactionIO, type TransactionOptions, type TransactionToken, type TransactionUpdate, type TransactionUpdateContent, type TransactionUpdateHandler, type UpdateHandler, type WritableFamilyToken, type WritableSelectorFamilyOptions, type WritableSelectorFamilyToken, type WritableSelectorOptions, type WritableSelectorToken, type WritableToken, type Write, atom, atomFamily, belongsTo, disposeState, getState, isToken, makeMolecule, makeRootMolecule, moleculeFamily, redo, runTransaction, selector, selectorFamily, setState, simpleLog, simpleLogger, subscribe, timeline, transaction, undo };
@@ -10,7 +10,7 @@ import { Json, Canonical } from 'atom.io/json';
10
10
  * @returns
11
11
  * The current value of the state.
12
12
  */
13
- declare function findState<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J>;
13
+ declare function findState<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J, K>;
14
14
  /**
15
15
  * Finds a state in the store.
16
16
  * @param token - The token of the state family.
@@ -18,7 +18,7 @@ declare function findState<T extends Transceiver<any>, J extends Json.Serializab
18
18
  * @returns
19
19
  * The current value of the state.
20
20
  */
21
- declare function findState<T, K extends Canonical, Key extends K>(token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T>;
21
+ declare function findState<T, K extends Canonical, Key extends K>(token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T, K>;
22
22
  /**
23
23
  * Finds a state in the store.
24
24
  * @param token - The token of the state family.
@@ -26,7 +26,7 @@ declare function findState<T, K extends Canonical, Key extends K>(token: Regular
26
26
  * @returns
27
27
  * The current value of the state.
28
28
  */
29
- declare function findState<T, K extends Canonical, Key extends K>(token: WritableSelectorFamilyToken<T, K>, key: Key): WritableSelectorToken<T>;
29
+ declare function findState<T, K extends Canonical, Key extends K>(token: WritableSelectorFamilyToken<T, K>, key: Key): WritableSelectorToken<T, K>;
30
30
  /**
31
31
  * Finds a state in the store.
32
32
  * @param token - The token of the state family.
@@ -34,7 +34,7 @@ declare function findState<T, K extends Canonical, Key extends K>(token: Writabl
34
34
  * @returns
35
35
  * The current value of the state.
36
36
  */
37
- declare function findState<T, K extends Canonical, Key extends K>(token: ReadonlySelectorFamilyToken<T, K>, key: Key): ReadonlySelectorToken<T>;
37
+ declare function findState<T, K extends Canonical, Key extends K>(token: ReadonlySelectorFamilyToken<T, K>, key: Key): ReadonlySelectorToken<T, K>;
38
38
  /**
39
39
  * Finds a state in the store.
40
40
  * @param token - The token of the state family.
@@ -42,7 +42,7 @@ declare function findState<T, K extends Canonical, Key extends K>(token: Readonl
42
42
  * @returns
43
43
  * The current value of the state.
44
44
  */
45
- declare function findState<T, K extends Canonical, Key extends K>(token: WritableFamilyToken<T, K>, key: Key): WritableToken<T>;
45
+ declare function findState<T, K extends Canonical, Key extends K>(token: WritableFamilyToken<T, K>, key: Key): WritableToken<T, K>;
46
46
  /**
47
47
  * @public
48
48
  * Finds a {@link ReadableToken} in the store.
@@ -52,6 +52,6 @@ declare function findState<T, K extends Canonical, Key extends K>(token: Writabl
52
52
  * The current value of the state.
53
53
  * @overload Unknown
54
54
  */
55
- declare function findState<T, K extends Canonical, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T>;
55
+ declare function findState<T, K extends Canonical, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T, K>;
56
56
 
57
57
  export { findState };
@@ -29,7 +29,7 @@ export function findState<
29
29
  J extends Json.Serializable,
30
30
  K extends Canonical,
31
31
  Key extends K,
32
- >(token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J>
32
+ >(token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J, K>
33
33
  /**
34
34
  * Finds a state in the store.
35
35
  * @param token - The token of the state family.
@@ -40,7 +40,7 @@ export function findState<
40
40
  export function findState<T, K extends Canonical, Key extends K>(
41
41
  token: RegularAtomFamilyToken<T, K>,
42
42
  key: Key,
43
- ): RegularAtomToken<T>
43
+ ): RegularAtomToken<T, K>
44
44
  /**
45
45
  * Finds a state in the store.
46
46
  * @param token - The token of the state family.
@@ -51,7 +51,7 @@ export function findState<T, K extends Canonical, Key extends K>(
51
51
  export function findState<T, K extends Canonical, Key extends K>(
52
52
  token: WritableSelectorFamilyToken<T, K>,
53
53
  key: Key,
54
- ): WritableSelectorToken<T>
54
+ ): WritableSelectorToken<T, K>
55
55
  /**
56
56
  * Finds a state in the store.
57
57
  * @param token - The token of the state family.
@@ -62,7 +62,7 @@ export function findState<T, K extends Canonical, Key extends K>(
62
62
  export function findState<T, K extends Canonical, Key extends K>(
63
63
  token: ReadonlySelectorFamilyToken<T, K>,
64
64
  key: Key,
65
- ): ReadonlySelectorToken<T>
65
+ ): ReadonlySelectorToken<T, K>
66
66
  /**
67
67
  * Finds a state in the store.
68
68
  * @param token - The token of the state family.
@@ -73,7 +73,7 @@ export function findState<T, K extends Canonical, Key extends K>(
73
73
  export function findState<T, K extends Canonical, Key extends K>(
74
74
  token: WritableFamilyToken<T, K>,
75
75
  key: Key,
76
- ): WritableToken<T>
76
+ ): WritableToken<T, K>
77
77
  /**
78
78
  * @public
79
79
  * Finds a {@link ReadableToken} in the store.
@@ -86,7 +86,7 @@ export function findState<T, K extends Canonical, Key extends K>(
86
86
  export function findState<T, K extends Canonical, Key extends K>(
87
87
  token: ReadableFamilyToken<T, K>,
88
88
  key: Key,
89
- ): ReadableToken<T>
89
+ ): ReadableToken<T, K>
90
90
 
91
91
  export function findState(
92
92
  token: ReadableFamilyToken<any, any>,
@@ -2,12 +2,12 @@ import { MutableAtomFamilyToken, MutableAtomToken, RegularAtomFamilyToken, Regul
2
2
  import { Transceiver } from 'atom.io/internal';
3
3
  import { Json, Canonical } from 'atom.io/json';
4
4
 
5
- declare function seekState<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J> | undefined;
6
- declare function seekState<T, K extends Canonical, Key extends K>(token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T> | undefined;
7
- declare function seekState<T, K extends Canonical, Key extends K>(token: WritableSelectorFamilyToken<T, K>, key: Key): WritableSelectorToken<T> | undefined;
8
- declare function seekState<T, K extends Canonical, Key extends K>(token: ReadonlySelectorFamilyToken<T, K>, key: Key): ReadonlySelectorToken<T> | undefined;
9
- declare function seekState<T, K extends Canonical, Key extends K>(token: WritableFamilyToken<T, K>, key: Key): WritableToken<T> | undefined;
10
- declare function seekState<T, K extends Canonical, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T> | undefined;
5
+ declare function seekState<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J, K> | undefined;
6
+ declare function seekState<T, K extends Canonical, Key extends K>(token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T, K> | undefined;
7
+ declare function seekState<T, K extends Canonical, Key extends K>(token: WritableSelectorFamilyToken<T, K>, key: Key): WritableSelectorToken<T, K> | undefined;
8
+ declare function seekState<T, K extends Canonical, Key extends K>(token: ReadonlySelectorFamilyToken<T, K>, key: Key): ReadonlySelectorToken<T, K> | undefined;
9
+ declare function seekState<T, K extends Canonical, Key extends K>(token: WritableFamilyToken<T, K>, key: Key): WritableToken<T, K> | undefined;
10
+ declare function seekState<T, K extends Canonical, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T, K> | undefined;
11
11
  declare function seekState<M extends MoleculeConstructor>(token: MoleculeFamilyToken<M>, key: MoleculeKey<M>): MoleculeToken<M> | undefined;
12
12
 
13
13
  export { seekState };
@@ -28,32 +28,32 @@ export function seekState<
28
28
  >(
29
29
  token: MutableAtomFamilyToken<T, J, K>,
30
30
  key: Key,
31
- ): MutableAtomToken<T, J> | undefined
31
+ ): MutableAtomToken<T, J, K> | undefined
32
32
 
33
33
  export function seekState<T, K extends Canonical, Key extends K>(
34
34
  token: RegularAtomFamilyToken<T, K>,
35
35
  key: Key,
36
- ): RegularAtomToken<T> | undefined
36
+ ): RegularAtomToken<T, K> | undefined
37
37
 
38
38
  export function seekState<T, K extends Canonical, Key extends K>(
39
39
  token: WritableSelectorFamilyToken<T, K>,
40
40
  key: Key,
41
- ): WritableSelectorToken<T> | undefined
41
+ ): WritableSelectorToken<T, K> | undefined
42
42
 
43
43
  export function seekState<T, K extends Canonical, Key extends K>(
44
44
  token: ReadonlySelectorFamilyToken<T, K>,
45
45
  key: Key,
46
- ): ReadonlySelectorToken<T> | undefined
46
+ ): ReadonlySelectorToken<T, K> | undefined
47
47
 
48
48
  export function seekState<T, K extends Canonical, Key extends K>(
49
49
  token: WritableFamilyToken<T, K>,
50
50
  key: Key,
51
- ): WritableToken<T> | undefined
51
+ ): WritableToken<T, K> | undefined
52
52
 
53
53
  export function seekState<T, K extends Canonical, Key extends K>(
54
54
  token: ReadableFamilyToken<T, K>,
55
55
  key: Key,
56
- ): ReadableToken<T> | undefined
56
+ ): ReadableToken<T, K> | undefined
57
57
 
58
58
  export function seekState<M extends MoleculeConstructor>(
59
59
  token: MoleculeFamilyToken<M>,
@@ -451,32 +451,32 @@ declare function disposeFromStore(store: Store, token: MoleculeToken<any> | Read
451
451
  declare function disposeFromStore<K extends Canonical>(store: Store, token: ReadableFamilyToken<any, K>, key: K): void;
452
452
  declare function disposeFromStore<M extends MoleculeConstructor>(store: Store, token: MoleculeFamilyToken<M>, key: MoleculeKey<M>): void;
453
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;
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, K>;
455
+ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T, K>;
456
+ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: AtomFamilyToken<T, K>, key: Key): AtomToken<T, K>;
457
+ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritableSelectorFamilyToken<T, K>, key: Key): WritableSelectorToken<T, K>;
458
+ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadonlySelectorFamilyToken<T, K>, key: Key): ReadonlySelectorToken<T, K>;
459
+ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: SelectorFamilyToken<T, K>, key: Key): SelectorToken<T, K>;
460
+ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritableFamilyToken<T, K>, key: Key): WritableToken<T, K>;
461
+ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T, K>;
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, K>;
464
+ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T, K>;
465
+ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: AtomFamilyToken<T, K>, key: Key): AtomToken<T, K>;
466
+ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritableSelectorFamilyToken<T, K>, key: Key): WritableSelectorToken<T, K>;
467
+ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadonlySelectorFamilyToken<T, K>, key: Key): ReadonlySelectorToken<T, K>;
468
+ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: SelectorFamilyToken<T, K>, key: Key): SelectorToken<T, K>;
469
+ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritableFamilyToken<T, K>, key: Key): WritableToken<T, K>;
470
+ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T, K>;
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, K> | undefined;
473
+ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T, K> | undefined;
474
+ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: AtomFamilyToken<T, K>, key: Key): AtomToken<T, K> | undefined;
475
+ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritableSelectorFamilyToken<T, K>, key: Key): WritableSelectorToken<T, K> | undefined;
476
+ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadonlySelectorFamilyToken<T, K>, key: Key): ReadonlySelectorToken<T, K> | undefined;
477
+ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: SelectorFamilyToken<T, K>, key: Key): SelectorToken<T, K> | undefined;
478
+ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritableFamilyToken<T, K>, key: Key): WritableToken<T, K> | undefined;
479
+ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T, K> | undefined;
480
480
  declare function seekInStore<M extends MoleculeConstructor>(store: Store, token: MoleculeFamilyToken<M>, key: MoleculeKey<M>): MoleculeKey<M> | undefined;
481
481
 
482
482
  type EnvironmentData = {
@@ -496,7 +496,7 @@ declare const readOrComputeValue: <T>(state: ReadableState<T>, target: Store) =>
496
496
  declare function ingestAtomUpdate(applying: `newValue` | `oldValue`, atomUpdate: KeyedStateUpdate<any>, store: Store): void;
497
497
 
498
498
  declare function ingestCreationEvent(update: StateCreation<any>, applying: `newValue` | `oldValue`, store: Store): void;
499
- declare function ingestDisposalEvent(update: StateDisposal<any>, applying: `newValue` | `oldValue`, store: Store): void;
499
+ declare function ingestDisposalEvent(update: StateDisposal<ReadableToken<any>>, applying: `newValue` | `oldValue`, store: Store): void;
500
500
  declare function ingestMoleculeCreationEvent(update: MoleculeCreation<any>, applying: `newValue` | `oldValue`, store: Store): void;
501
501
  declare function ingestMoleculeDisposalEvent(update: MoleculeDisposal, applying: `newValue` | `oldValue`, store: Store): void;
502
502
 
@@ -1,3 +1,3 @@
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-D3ZPRYEW.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-4WXELLFT.js';
2
2
  import '../../dist/chunk-IBTHB2PI.js';
3
3
  import '../../dist/chunk-XWL6SNVU.js';
@@ -30,17 +30,6 @@ export function disposeAtom(atomToken: AtomToken<unknown>, store: Store): void {
30
30
  }
31
31
  target.atoms.delete(key)
32
32
  target.valueMap.delete(key)
33
- const selectorKeys = target.selectorAtoms.getRelatedKeys(key)
34
- if (selectorKeys) {
35
- for (const selectorKey of selectorKeys) {
36
- const token =
37
- target.selectors.get(selectorKey) ??
38
- target.readonlySelectors.get(selectorKey)
39
- if (token) {
40
- disposeSelector(token, store)
41
- }
42
- }
43
- }
44
33
  target.selectorAtoms.delete(key)
45
34
  target.atomsThatAreDefault.delete(key)
46
35
  target.timelineTopics.delete(key)
@@ -33,49 +33,49 @@ export function findInStore<
33
33
  store: Store,
34
34
  token: MutableAtomFamilyToken<T, J, K>,
35
35
  key: Key,
36
- ): MutableAtomToken<T, J>
36
+ ): MutableAtomToken<T, J, K>
37
37
 
38
38
  export function findInStore<T, K extends Canonical, Key extends K>(
39
39
  store: Store,
40
40
  token: RegularAtomFamilyToken<T, K>,
41
41
  key: Key,
42
- ): RegularAtomToken<T>
42
+ ): RegularAtomToken<T, K>
43
43
 
44
44
  export function findInStore<T, K extends Canonical, Key extends K>(
45
45
  store: Store,
46
46
  token: AtomFamilyToken<T, K>,
47
47
  key: Key,
48
- ): AtomToken<T>
48
+ ): AtomToken<T, K>
49
49
 
50
50
  export function findInStore<T, K extends Canonical, Key extends K>(
51
51
  store: Store,
52
52
  token: WritableSelectorFamilyToken<T, K>,
53
53
  key: Key,
54
- ): WritableSelectorToken<T>
54
+ ): WritableSelectorToken<T, K>
55
55
 
56
56
  export function findInStore<T, K extends Canonical, Key extends K>(
57
57
  store: Store,
58
58
  token: ReadonlySelectorFamilyToken<T, K>,
59
59
  key: Key,
60
- ): ReadonlySelectorToken<T>
60
+ ): ReadonlySelectorToken<T, K>
61
61
 
62
62
  export function findInStore<T, K extends Canonical, Key extends K>(
63
63
  store: Store,
64
64
  token: SelectorFamilyToken<T, K>,
65
65
  key: Key,
66
- ): SelectorToken<T>
66
+ ): SelectorToken<T, K>
67
67
 
68
68
  export function findInStore<T, K extends Canonical, Key extends K>(
69
69
  store: Store,
70
70
  token: WritableFamilyToken<T, K>,
71
71
  key: Key,
72
- ): WritableToken<T>
72
+ ): WritableToken<T, K>
73
73
 
74
74
  export function findInStore<T, K extends Canonical, Key extends K>(
75
75
  store: Store,
76
76
  token: ReadableFamilyToken<T, K>,
77
77
  key: Key,
78
- ): ReadableToken<T>
78
+ ): ReadableToken<T, K>
79
79
 
80
80
  export function findInStore(
81
81
  store: Store,
@@ -0,0 +1,64 @@
1
+ import type {
2
+ MutableAtomFamilyToken,
3
+ MutableAtomToken,
4
+ ReadableFamilyToken,
5
+ ReadableToken,
6
+ ReadonlySelectorFamilyToken,
7
+ ReadonlySelectorToken,
8
+ RegularAtomFamilyToken,
9
+ RegularAtomToken,
10
+ WritableFamilyToken,
11
+ WritableSelectorFamilyToken,
12
+ WritableSelectorToken,
13
+ WritableToken,
14
+ } from "atom.io"
15
+ import type { Canonical, Json } from "atom.io/json"
16
+
17
+ import type { Transceiver } from "../mutable"
18
+ import type { Store } from "../store"
19
+
20
+ export function getFamilyOfToken<
21
+ T extends Transceiver<any>,
22
+ J extends Json.Serializable,
23
+ K extends Canonical,
24
+ >(
25
+ store: Store,
26
+ token: MutableAtomToken<T, J, K>,
27
+ ): MutableAtomFamilyToken<T, J, K> | undefined
28
+
29
+ export function getFamilyOfToken<T, K extends Canonical>(
30
+ store: Store,
31
+ token: RegularAtomToken<T, K>,
32
+ ): RegularAtomFamilyToken<T, K> | undefined
33
+
34
+ export function getFamilyOfToken<T, K extends Canonical>(
35
+ store: Store,
36
+ token: WritableSelectorToken<T, K>,
37
+ ): WritableSelectorFamilyToken<T, K> | undefined
38
+
39
+ export function getFamilyOfToken<T, K extends Canonical>(
40
+ store: Store,
41
+ token: ReadonlySelectorToken<T, K>,
42
+ ): ReadonlySelectorFamilyToken<T, K> | undefined
43
+
44
+ export function getFamilyOfToken<T, K extends Canonical>(
45
+ store: Store,
46
+ token: WritableToken<T, K>,
47
+ ): WritableFamilyToken<T, K> | undefined
48
+
49
+ export function getFamilyOfToken<T, K extends Canonical>(
50
+ store: Store,
51
+ token: ReadableToken<T, K>,
52
+ ): ReadableFamilyToken<T, K> | undefined
53
+
54
+ export function getFamilyOfToken(
55
+ store: Store,
56
+ token: ReadableToken<any, any>,
57
+ ): ReadableFamilyToken<any, any> | undefined {
58
+ if (token.family) {
59
+ const family = store.families.get(token.family.key)
60
+ if (family) {
61
+ return family
62
+ }
63
+ }
64
+ }