atom.io 0.25.0 → 0.25.2

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.
@@ -78,6 +78,12 @@ function newest(scion) {
78
78
  }
79
79
  return scion;
80
80
  }
81
+ function eldest(scion) {
82
+ while (scion.parent !== null) {
83
+ scion = scion.parent;
84
+ }
85
+ return scion;
86
+ }
81
87
 
82
88
  // internal/src/store/deposit.ts
83
89
  function deposit(state) {
@@ -430,7 +436,7 @@ var NotFoundError = class extends Error {
430
436
  const store = params.length === 2 ? params[1] : params[2];
431
437
  if (params.length === 2) {
432
438
  super(
433
- `${prettyPrintTokenType(token)} "${token.key}" not found in store "${store.config.name}".`
439
+ `${prettyPrintTokenType(token)} ${json.stringifyJson(token.key)} not found in store "${store.config.name}".`
434
440
  );
435
441
  } else {
436
442
  const key = params[1];
@@ -843,15 +849,19 @@ var updateSelectorAtoms = (selectorKey, dependency, covered, store) => {
843
849
 
844
850
  // internal/src/selector/register-selector.ts
845
851
  var registerSelector = (selectorKey, covered, store) => ({
846
- get: (dependency, key) => {
852
+ get: (...params) => {
847
853
  const target = newest(store);
848
- if (key) {
849
- switch (dependency.type) {
854
+ let dependency;
855
+ if (params.length === 2) {
856
+ const [family, key] = params;
857
+ switch (family.type) {
850
858
  case `molecule_family`:
851
- return getFromStore(dependency, key, store);
852
- case `atom_family`:
853
- dependency = seekInStore(dependency, key, store);
859
+ return getFromStore(family, key, store);
860
+ default:
861
+ dependency = seekInStore(family, key, store);
854
862
  }
863
+ } else {
864
+ [dependency] = params;
855
865
  }
856
866
  if (dependency.type === `molecule`) {
857
867
  return getFromStore(dependency, store);
@@ -1454,6 +1464,7 @@ function capitalize2(string) {
1454
1464
  return string[0].toUpperCase() + string.slice(1);
1455
1465
  }
1456
1466
  function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1467
+ const rootStore = eldest(store);
1457
1468
  const target = newest(store);
1458
1469
  const stringKey = json.stringifyJson(key);
1459
1470
  target.moleculeInProgress = stringKey;
@@ -1477,22 +1488,22 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1477
1488
  owner.below.set(molecule.stringKey, molecule);
1478
1489
  }
1479
1490
  const toolkit = {
1480
- get: (t) => getFromStore(t, void 0, newest(store)),
1481
- set: (t, newValue) => {
1482
- setIntoStore(t, newValue, newest(store));
1491
+ get: (...ps) => getFromStore(...ps, newest(rootStore)),
1492
+ set: (...ps) => {
1493
+ setIntoStore(...ps, newest(rootStore));
1483
1494
  },
1484
- seek: (t, k) => seekInStore(t, k, newest(store)),
1485
- json: (t) => getJsonToken(t, newest(store)),
1495
+ seek: (t, k) => seekInStore(t, k, newest(rootStore)),
1496
+ json: (t) => getJsonToken(t, newest(rootStore)),
1486
1497
  run: (t, i = arbitrary()) => actUponStore(t, i, newest(store)),
1487
- make: (ctx, f, k, ...args) => makeMoleculeInStore(newest(store), ctx, f, k, ...args),
1498
+ make: (ctx, f, k, ...args) => makeMoleculeInStore(newest(rootStore), ctx, f, k, ...args),
1488
1499
  dispose: (t) => {
1489
- disposeFromStore(t, newest(store));
1500
+ disposeFromStore(t, newest(rootStore));
1490
1501
  },
1491
- env: () => getEnvironmentData(newest(store)),
1502
+ env: () => getEnvironmentData(newest(rootStore)),
1492
1503
  bond: (token2, maybeRole) => {
1493
1504
  if (token2.type === `join`) {
1494
1505
  const { as: role } = maybeRole;
1495
- const join = data.getJoin(token2, store);
1506
+ const join = data.getJoin(token2, rootStore);
1496
1507
  join.molecules.set(stringKey, molecule);
1497
1508
  molecule.joins.set(token2.key, join);
1498
1509
  const unsubFromFamily = family.subject.subscribe(
@@ -1517,7 +1528,11 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1517
1528
  }
1518
1529
  return tokens;
1519
1530
  }
1520
- return growMoleculeInStore(molecule, withdraw(token2, store), newest(store));
1531
+ return growMoleculeInStore(
1532
+ molecule,
1533
+ withdraw(token2, rootStore),
1534
+ newest(rootStore)
1535
+ );
1521
1536
  },
1522
1537
  claim: (below, options) => {
1523
1538
  const { exclusive } = options;
@@ -3324,6 +3339,7 @@ exports.disposeAtom = disposeAtom;
3324
3339
  exports.disposeFromStore = disposeFromStore;
3325
3340
  exports.disposeMolecule = disposeMolecule;
3326
3341
  exports.disposeSelector = disposeSelector;
3342
+ exports.eldest = eldest;
3327
3343
  exports.evictCachedValue = evictCachedValue;
3328
3344
  exports.findInStore = findInStore;
3329
3345
  exports.getContinuityKey = getContinuityKey;
@@ -162,6 +162,7 @@ interface Lineage {
162
162
  child: typeof this | null;
163
163
  }
164
164
  declare function newest<T extends Lineage>(scion: T): T;
165
+ declare function eldest<T extends Lineage>(scion: T): T;
165
166
 
166
167
  type OperationProgress = {
167
168
  open: false;
@@ -583,4 +584,4 @@ type Selector<T> = ReadonlySelector<T> | WritableSelector<T>;
583
584
  type WritableState<T> = Atom<T> | WritableSelector<T>;
584
585
  type ReadableState<T> = Atom<T> | Selector<T>;
585
586
 
586
- export { type Atom, type AtomIOState, type AtomKey, type ChildStore, type EnvironmentData, FamilyTracker, Future, IMPLICIT, LazyMap, type Lineage, type Modify, Molecule, type MutableAtom, NotFoundError, type OperationProgress, type ReadableState, type ReadonlySelector, type ReadonlySelectorKey, type RegularAtom, type RootStore, type Selector, type SelectorKey, type Signal, type StateKey, StatefulSubject, Store, Subject, TRANSACTION_PHASES, type Timeline, type TimelineAtomUpdate, type TimelineMoleculeCreation, type TimelineMoleculeDisposal, type TimelineSelectorUpdate, type TimelineStateCreation, type TimelineStateDisposal, type TimelineTransactionUpdate, Tracker, type Transaction, type TransactionEpoch, type TransactionPhase, type TransactionProgress, type Transceiver, type TransceiverMode, type Withdrawable, type WritableSelector, type WritableState, abortTransaction, actUponStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtomFamily, createMoleculeFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deposit, disposeAtom, disposeFromStore, disposeMolecule, disposeSelector, evictCachedValue, findInStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateToken, growMoleculeInStore, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, isAtomDefault, isAtomKey, isChildStore, isDone, isMutable, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeMoleculeInStore, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, readCachedValue, readOrComputeValue, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw };
587
+ export { type Atom, type AtomIOState, type AtomKey, type ChildStore, type EnvironmentData, FamilyTracker, Future, IMPLICIT, LazyMap, type Lineage, type Modify, Molecule, type MutableAtom, NotFoundError, type OperationProgress, type ReadableState, type ReadonlySelector, type ReadonlySelectorKey, type RegularAtom, type RootStore, type Selector, type SelectorKey, type Signal, type StateKey, StatefulSubject, Store, Subject, TRANSACTION_PHASES, type Timeline, type TimelineAtomUpdate, type TimelineMoleculeCreation, type TimelineMoleculeDisposal, type TimelineSelectorUpdate, type TimelineStateCreation, type TimelineStateDisposal, type TimelineTransactionUpdate, Tracker, type Transaction, type TransactionEpoch, type TransactionPhase, type TransactionProgress, type Transceiver, type TransceiverMode, type Withdrawable, type WritableSelector, type WritableState, abortTransaction, actUponStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtomFamily, createMoleculeFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deposit, disposeAtom, disposeFromStore, disposeMolecule, disposeSelector, eldest, evictCachedValue, findInStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateToken, growMoleculeInStore, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, isAtomDefault, isAtomKey, isChildStore, isDone, isMutable, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeMoleculeInStore, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, readCachedValue, readOrComputeValue, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw };
@@ -58,6 +58,12 @@ function newest(scion) {
58
58
  }
59
59
  return scion;
60
60
  }
61
+ function eldest(scion) {
62
+ while (scion.parent !== null) {
63
+ scion = scion.parent;
64
+ }
65
+ return scion;
66
+ }
61
67
 
62
68
  // internal/src/store/deposit.ts
63
69
  function deposit(state) {
@@ -155,7 +161,7 @@ var NotFoundError = class extends Error {
155
161
  const store = params.length === 2 ? params[1] : params[2];
156
162
  if (params.length === 2) {
157
163
  super(
158
- `${prettyPrintTokenType(token)} "${token.key}" not found in store "${store.config.name}".`
164
+ `${prettyPrintTokenType(token)} ${stringifyJson(token.key)} not found in store "${store.config.name}".`
159
165
  );
160
166
  } else {
161
167
  const key = params[1];
@@ -568,15 +574,19 @@ var updateSelectorAtoms = (selectorKey, dependency, covered, store) => {
568
574
 
569
575
  // internal/src/selector/register-selector.ts
570
576
  var registerSelector = (selectorKey, covered, store) => ({
571
- get: (dependency, key) => {
577
+ get: (...params) => {
572
578
  const target = newest(store);
573
- if (key) {
574
- switch (dependency.type) {
579
+ let dependency;
580
+ if (params.length === 2) {
581
+ const [family, key] = params;
582
+ switch (family.type) {
575
583
  case `molecule_family`:
576
- return getFromStore(dependency, key, store);
577
- case `atom_family`:
578
- dependency = seekInStore(dependency, key, store);
584
+ return getFromStore(family, key, store);
585
+ default:
586
+ dependency = seekInStore(family, key, store);
579
587
  }
588
+ } else {
589
+ [dependency] = params;
580
590
  }
581
591
  if (dependency.type === `molecule`) {
582
592
  return getFromStore(dependency, store);
@@ -1179,6 +1189,7 @@ function capitalize2(string) {
1179
1189
  return string[0].toUpperCase() + string.slice(1);
1180
1190
  }
1181
1191
  function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1192
+ const rootStore = eldest(store);
1182
1193
  const target = newest(store);
1183
1194
  const stringKey = stringifyJson(key);
1184
1195
  target.moleculeInProgress = stringKey;
@@ -1202,22 +1213,22 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1202
1213
  owner.below.set(molecule.stringKey, molecule);
1203
1214
  }
1204
1215
  const toolkit = {
1205
- get: (t) => getFromStore(t, void 0, newest(store)),
1206
- set: (t, newValue) => {
1207
- setIntoStore(t, newValue, newest(store));
1216
+ get: (...ps) => getFromStore(...ps, newest(rootStore)),
1217
+ set: (...ps) => {
1218
+ setIntoStore(...ps, newest(rootStore));
1208
1219
  },
1209
- seek: (t, k) => seekInStore(t, k, newest(store)),
1210
- json: (t) => getJsonToken(t, newest(store)),
1220
+ seek: (t, k) => seekInStore(t, k, newest(rootStore)),
1221
+ json: (t) => getJsonToken(t, newest(rootStore)),
1211
1222
  run: (t, i = arbitrary()) => actUponStore(t, i, newest(store)),
1212
- make: (ctx, f, k, ...args) => makeMoleculeInStore(newest(store), ctx, f, k, ...args),
1223
+ make: (ctx, f, k, ...args) => makeMoleculeInStore(newest(rootStore), ctx, f, k, ...args),
1213
1224
  dispose: (t) => {
1214
- disposeFromStore(t, newest(store));
1225
+ disposeFromStore(t, newest(rootStore));
1215
1226
  },
1216
- env: () => getEnvironmentData(newest(store)),
1227
+ env: () => getEnvironmentData(newest(rootStore)),
1217
1228
  bond: (token2, maybeRole) => {
1218
1229
  if (token2.type === `join`) {
1219
1230
  const { as: role } = maybeRole;
1220
- const join = getJoin(token2, store);
1231
+ const join = getJoin(token2, rootStore);
1221
1232
  join.molecules.set(stringKey, molecule);
1222
1233
  molecule.joins.set(token2.key, join);
1223
1234
  const unsubFromFamily = family.subject.subscribe(
@@ -1242,7 +1253,11 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1242
1253
  }
1243
1254
  return tokens;
1244
1255
  }
1245
- return growMoleculeInStore(molecule, withdraw(token2, store), newest(store));
1256
+ return growMoleculeInStore(
1257
+ molecule,
1258
+ withdraw(token2, rootStore),
1259
+ newest(rootStore)
1260
+ );
1246
1261
  },
1247
1262
  claim: (below, options) => {
1248
1263
  const { exclusive } = options;
@@ -3009,4 +3024,4 @@ var timeTravel = (action, token, store) => {
3009
3024
  );
3010
3025
  };
3011
3026
 
3012
- export { FamilyTracker, Future, IMPLICIT, LazyMap, Molecule, NotFoundError, StatefulSubject, Store, Subject, TRANSACTION_PHASES, Tracker, abortTransaction, actUponStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtomFamily, createMoleculeFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deposit, disposeAtom, disposeFromStore, disposeMolecule, disposeSelector, evictCachedValue, findInStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateToken, growMoleculeInStore, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, isAtomDefault, isAtomKey, isChildStore, isDone, isMutable, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeMoleculeInStore, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, readCachedValue, readOrComputeValue, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw };
3027
+ export { FamilyTracker, Future, IMPLICIT, LazyMap, Molecule, NotFoundError, StatefulSubject, Store, Subject, TRANSACTION_PHASES, Tracker, abortTransaction, actUponStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtomFamily, createMoleculeFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deposit, disposeAtom, disposeFromStore, disposeMolecule, disposeSelector, eldest, evictCachedValue, findInStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateToken, growMoleculeInStore, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, isAtomDefault, isAtomKey, isChildStore, isDone, isMutable, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeMoleculeInStore, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, readCachedValue, readOrComputeValue, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw };
@@ -10,3 +10,10 @@ export function newest<T extends Lineage>(scion: T): T {
10
10
  }
11
11
  return scion
12
12
  }
13
+
14
+ export function eldest<T extends Lineage>(scion: T): T {
15
+ while (scion.parent !== null) {
16
+ scion = scion.parent
17
+ }
18
+ return scion
19
+ }
@@ -1,5 +1,6 @@
1
1
  import type {
2
2
  CtorToolkit,
3
+ getState,
3
4
  MK,
4
5
  MoleculeConstructor,
5
6
  MoleculeCreation,
@@ -8,6 +9,7 @@ import type {
8
9
  MoleculeParams,
9
10
  MoleculeToken,
10
11
  ReadableFamilyToken,
12
+ setState,
11
13
  } from "atom.io"
12
14
  import { findRelations, getJoin, type JoinToken } from "atom.io/data"
13
15
  import type { seekState } from "atom.io/immortal"
@@ -17,7 +19,7 @@ import { arbitrary } from "../arbitrary"
17
19
  import { disposeFromStore, seekInStore } from "../families"
18
20
  import { getEnvironmentData } from "../get-environment-data"
19
21
  import { getFromStore } from "../get-state"
20
- import { newest } from "../lineage"
22
+ import { eldest, newest } from "../lineage"
21
23
  import { getJsonToken } from "../mutable"
22
24
  import { setIntoStore } from "../set-state"
23
25
  import type { Store } from "../store"
@@ -37,6 +39,7 @@ export function makeMoleculeInStore<M extends MoleculeConstructor>(
37
39
  key: MoleculeKey<M>,
38
40
  ...params: MoleculeParams<M>
39
41
  ): MoleculeToken<M> {
42
+ const rootStore = eldest(store)
40
43
  const target = newest(store)
41
44
  const stringKey = stringifyJson(key)
42
45
 
@@ -65,26 +68,27 @@ export function makeMoleculeInStore<M extends MoleculeConstructor>(
65
68
  }
66
69
 
67
70
  const toolkit = {
68
- get: (t) => getFromStore(t, undefined, newest(store)),
69
- set: (t, newValue) => {
70
- setIntoStore(t, newValue, newest(store))
71
- },
72
- seek: ((t, k) => seekInStore(t, k, newest(store))) as typeof seekState,
73
- json: (t) => getJsonToken(t, newest(store)),
71
+ get: ((...ps: Parameters<typeof getState>) =>
72
+ getFromStore(...ps, newest(rootStore))) as typeof getState,
73
+ set: ((...ps: Parameters<typeof setState>) => {
74
+ setIntoStore(...ps, newest(rootStore))
75
+ }) as typeof setState,
76
+ seek: ((t, k) => seekInStore(t, k, newest(rootStore))) as typeof seekState,
77
+ json: (t) => getJsonToken(t, newest(rootStore)),
74
78
  run: (t, i = arbitrary()) => actUponStore(t, i, newest(store)),
75
79
  make: (ctx, f, k, ...args) =>
76
- makeMoleculeInStore(newest(store), ctx, f, k, ...args),
80
+ makeMoleculeInStore(newest(rootStore), ctx, f, k, ...args),
77
81
  dispose: (t) => {
78
- disposeFromStore(t, newest(store))
82
+ disposeFromStore(t, newest(rootStore))
79
83
  },
80
- env: () => getEnvironmentData(newest(store)),
84
+ env: () => getEnvironmentData(newest(rootStore)),
81
85
  bond: ((
82
86
  token: JoinToken<any, any, any, any> | ReadableFamilyToken<any, any>,
83
87
  maybeRole,
84
88
  ) => {
85
89
  if (token.type === `join`) {
86
90
  const { as: role } = maybeRole
87
- const join = getJoin(token, store)
91
+ const join = getJoin(token, rootStore)
88
92
  join.molecules.set(stringKey, molecule)
89
93
  molecule.joins.set(token.key, join)
90
94
  const unsubFromFamily = family.subject.subscribe(
@@ -119,7 +123,11 @@ export function makeMoleculeInStore<M extends MoleculeConstructor>(
119
123
  }
120
124
  return tokens
121
125
  }
122
- return growMoleculeInStore(molecule, withdraw(token, store), newest(store))
126
+ return growMoleculeInStore(
127
+ molecule,
128
+ withdraw(token, rootStore),
129
+ newest(rootStore),
130
+ )
123
131
  }) as CtorToolkit<MK<M>>[`bond`],
124
132
  claim: (below, options) => {
125
133
  const { exclusive } = options
@@ -54,7 +54,7 @@ export class NotFoundError extends Error {
54
54
 
55
55
  if (params.length === 2) {
56
56
  super(
57
- `${prettyPrintTokenType(token)} "${token.key}" not found in store "${
57
+ `${prettyPrintTokenType(token)} ${stringifyJson(token.key)} not found in store "${
58
58
  store.config.name
59
59
  }".`,
60
60
  )
@@ -6,7 +6,7 @@ import type {
6
6
  ReadableToken,
7
7
  setState,
8
8
  SetterToolkit,
9
- WritableSelectorFamilyToken,
9
+ WritableFamilyToken,
10
10
  WritableToken,
11
11
  } from "atom.io"
12
12
  import type { findState } from "atom.io/ephemeral"
@@ -30,29 +30,32 @@ export const registerSelector = (
30
30
  store: Store,
31
31
  ): SetterToolkit => ({
32
32
  get: (
33
- dependency:
34
- | MoleculeFamilyToken<any>
35
- | MoleculeToken<MoleculeConstructor>
36
- | ReadableFamilyToken<any, any>
37
- | ReadableToken<any>,
38
- key?: Json.Serializable,
33
+ ...params:
34
+ | [MoleculeFamilyToken<any>, Json.Serializable]
35
+ | [MoleculeToken<MoleculeConstructor>]
36
+ | [ReadableFamilyToken<any, any>, Json.Serializable]
37
+ | [ReadableToken<any>]
39
38
  ) => {
40
39
  const target = newest(store)
40
+ let dependency: MoleculeToken<MoleculeConstructor> | ReadableToken<any>
41
41
 
42
- if (key) {
43
- switch (dependency.type) {
42
+ if (params.length === 2) {
43
+ const [family, key] = params
44
+ switch (family.type) {
44
45
  case `molecule_family`:
45
- return getFromStore(dependency, key, store)
46
- case `atom_family`:
47
- dependency = seekInStore(dependency, key, store) as any
46
+ return getFromStore(family, key, store)
47
+ default:
48
+ dependency = seekInStore(family, key, store) as any
48
49
  }
50
+ } else {
51
+ ;[dependency] = params
49
52
  }
50
53
 
51
54
  if (dependency.type === `molecule`) {
52
55
  return getFromStore(dependency, store)
53
56
  }
54
57
 
55
- const dependencyState = withdraw(dependency as ReadableToken<any>, store)
58
+ const dependencyState = withdraw(dependency, store)
56
59
  const dependencyValue = readOrComputeValue(dependencyState, store)
57
60
 
58
61
  store.logger.info(
@@ -79,7 +82,7 @@ export const registerSelector = (
79
82
  set: (<T, New extends T>(
80
83
  ...params:
81
84
  | [
82
- token: WritableSelectorFamilyToken<T, any>,
85
+ token: WritableFamilyToken<T, any>,
83
86
  key: Json.Serializable,
84
87
  value: New | ((oldValue: any) => New),
85
88
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atom.io",
3
- "version": "0.25.0",
3
+ "version": "0.25.2",
4
4
  "description": "Composable and testable reactive data library.",
5
5
  "homepage": "https://atom.io.fyi",
6
6
  "sideEffects": false,