atom.io 0.25.0 → 0.25.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.
@@ -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];
@@ -1454,6 +1460,7 @@ function capitalize2(string) {
1454
1460
  return string[0].toUpperCase() + string.slice(1);
1455
1461
  }
1456
1462
  function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1463
+ const rootStore = eldest(store);
1457
1464
  const target = newest(store);
1458
1465
  const stringKey = json.stringifyJson(key);
1459
1466
  target.moleculeInProgress = stringKey;
@@ -1477,22 +1484,22 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1477
1484
  owner.below.set(molecule.stringKey, molecule);
1478
1485
  }
1479
1486
  const toolkit = {
1480
- get: (t) => getFromStore(t, void 0, newest(store)),
1481
- set: (t, newValue) => {
1482
- setIntoStore(t, newValue, newest(store));
1487
+ get: (...ps) => getFromStore(...ps, newest(rootStore)),
1488
+ set: (...ps) => {
1489
+ setIntoStore(...ps, newest(rootStore));
1483
1490
  },
1484
- seek: (t, k) => seekInStore(t, k, newest(store)),
1485
- json: (t) => getJsonToken(t, newest(store)),
1491
+ seek: (t, k) => seekInStore(t, k, newest(rootStore)),
1492
+ json: (t) => getJsonToken(t, newest(rootStore)),
1486
1493
  run: (t, i = arbitrary()) => actUponStore(t, i, newest(store)),
1487
- make: (ctx, f, k, ...args) => makeMoleculeInStore(newest(store), ctx, f, k, ...args),
1494
+ make: (ctx, f, k, ...args) => makeMoleculeInStore(newest(rootStore), ctx, f, k, ...args),
1488
1495
  dispose: (t) => {
1489
- disposeFromStore(t, newest(store));
1496
+ disposeFromStore(t, newest(rootStore));
1490
1497
  },
1491
- env: () => getEnvironmentData(newest(store)),
1498
+ env: () => getEnvironmentData(newest(rootStore)),
1492
1499
  bond: (token2, maybeRole) => {
1493
1500
  if (token2.type === `join`) {
1494
1501
  const { as: role } = maybeRole;
1495
- const join = data.getJoin(token2, store);
1502
+ const join = data.getJoin(token2, rootStore);
1496
1503
  join.molecules.set(stringKey, molecule);
1497
1504
  molecule.joins.set(token2.key, join);
1498
1505
  const unsubFromFamily = family.subject.subscribe(
@@ -1517,7 +1524,11 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1517
1524
  }
1518
1525
  return tokens;
1519
1526
  }
1520
- return growMoleculeInStore(molecule, withdraw(token2, store), newest(store));
1527
+ return growMoleculeInStore(
1528
+ molecule,
1529
+ withdraw(token2, rootStore),
1530
+ newest(rootStore)
1531
+ );
1521
1532
  },
1522
1533
  claim: (below, options) => {
1523
1534
  const { exclusive } = options;
@@ -3324,6 +3335,7 @@ exports.disposeAtom = disposeAtom;
3324
3335
  exports.disposeFromStore = disposeFromStore;
3325
3336
  exports.disposeMolecule = disposeMolecule;
3326
3337
  exports.disposeSelector = disposeSelector;
3338
+ exports.eldest = eldest;
3327
3339
  exports.evictCachedValue = evictCachedValue;
3328
3340
  exports.findInStore = findInStore;
3329
3341
  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];
@@ -1179,6 +1185,7 @@ function capitalize2(string) {
1179
1185
  return string[0].toUpperCase() + string.slice(1);
1180
1186
  }
1181
1187
  function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1188
+ const rootStore = eldest(store);
1182
1189
  const target = newest(store);
1183
1190
  const stringKey = stringifyJson(key);
1184
1191
  target.moleculeInProgress = stringKey;
@@ -1202,22 +1209,22 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1202
1209
  owner.below.set(molecule.stringKey, molecule);
1203
1210
  }
1204
1211
  const toolkit = {
1205
- get: (t) => getFromStore(t, void 0, newest(store)),
1206
- set: (t, newValue) => {
1207
- setIntoStore(t, newValue, newest(store));
1212
+ get: (...ps) => getFromStore(...ps, newest(rootStore)),
1213
+ set: (...ps) => {
1214
+ setIntoStore(...ps, newest(rootStore));
1208
1215
  },
1209
- seek: (t, k) => seekInStore(t, k, newest(store)),
1210
- json: (t) => getJsonToken(t, newest(store)),
1216
+ seek: (t, k) => seekInStore(t, k, newest(rootStore)),
1217
+ json: (t) => getJsonToken(t, newest(rootStore)),
1211
1218
  run: (t, i = arbitrary()) => actUponStore(t, i, newest(store)),
1212
- make: (ctx, f, k, ...args) => makeMoleculeInStore(newest(store), ctx, f, k, ...args),
1219
+ make: (ctx, f, k, ...args) => makeMoleculeInStore(newest(rootStore), ctx, f, k, ...args),
1213
1220
  dispose: (t) => {
1214
- disposeFromStore(t, newest(store));
1221
+ disposeFromStore(t, newest(rootStore));
1215
1222
  },
1216
- env: () => getEnvironmentData(newest(store)),
1223
+ env: () => getEnvironmentData(newest(rootStore)),
1217
1224
  bond: (token2, maybeRole) => {
1218
1225
  if (token2.type === `join`) {
1219
1226
  const { as: role } = maybeRole;
1220
- const join = getJoin(token2, store);
1227
+ const join = getJoin(token2, rootStore);
1221
1228
  join.molecules.set(stringKey, molecule);
1222
1229
  molecule.joins.set(token2.key, join);
1223
1230
  const unsubFromFamily = family.subject.subscribe(
@@ -1242,7 +1249,11 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1242
1249
  }
1243
1250
  return tokens;
1244
1251
  }
1245
- return growMoleculeInStore(molecule, withdraw(token2, store), newest(store));
1252
+ return growMoleculeInStore(
1253
+ molecule,
1254
+ withdraw(token2, rootStore),
1255
+ newest(rootStore)
1256
+ );
1246
1257
  },
1247
1258
  claim: (below, options) => {
1248
1259
  const { exclusive } = options;
@@ -3009,4 +3020,4 @@ var timeTravel = (action, token, store) => {
3009
3020
  );
3010
3021
  };
3011
3022
 
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 };
3023
+ 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
  )
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atom.io",
3
- "version": "0.25.0",
3
+ "version": "0.25.1",
4
4
  "description": "Composable and testable reactive data library.",
5
5
  "homepage": "https://atom.io.fyi",
6
6
  "sideEffects": false,