atom.io 0.24.8 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/data/dist/index.cjs +40 -62
  2. package/data/dist/index.d.ts +3 -3
  3. package/data/dist/index.js +41 -63
  4. package/data/src/join.ts +47 -64
  5. package/dist/index.cjs +26 -8
  6. package/dist/index.d.ts +37 -15
  7. package/dist/index.js +27 -9
  8. package/internal/dist/index.cjs +204 -104
  9. package/internal/dist/index.d.ts +10 -5
  10. package/internal/dist/index.js +205 -105
  11. package/internal/src/families/dispose-from-store.ts +56 -3
  12. package/internal/src/get-state/get-from-store.ts +58 -25
  13. package/internal/src/molecule/make-molecule-in-store.ts +59 -23
  14. package/internal/src/not-found-error.ts +29 -6
  15. package/internal/src/selector/create-writable-selector.ts +5 -5
  16. package/internal/src/selector/register-selector.ts +58 -9
  17. package/internal/src/set-state/set-into-store.ts +48 -1
  18. package/internal/src/store/store.ts +4 -4
  19. package/internal/src/transaction/build-transaction.ts +10 -9
  20. package/internal/src/transaction/create-transaction.ts +2 -2
  21. package/internal/src/transaction/index.ts +2 -2
  22. package/package.json +5 -5
  23. package/react/dist/index.cjs +4 -1
  24. package/react/dist/index.js +5 -2
  25. package/react/src/use-o.ts +11 -3
  26. package/realtime/dist/index.cjs +0 -1
  27. package/realtime/dist/index.js +0 -1
  28. package/realtime/src/realtime-continuity.ts +0 -1
  29. package/realtime-server/dist/index.cjs +7 -7
  30. package/realtime-server/dist/index.js +7 -7
  31. package/realtime-server/src/realtime-server-stores/server-room-external-actions.ts +7 -7
  32. package/src/dispose-state.ts +32 -3
  33. package/src/get-state.ts +37 -4
  34. package/src/molecule.ts +20 -7
  35. package/src/set-state.ts +19 -2
  36. package/src/silo.ts +11 -4
  37. package/src/transaction.ts +9 -17
@@ -407,8 +407,6 @@ var abortTransaction = (store) => {
407
407
  );
408
408
  target.parent.child = null;
409
409
  };
410
-
411
- // internal/src/not-found-error.ts
412
410
  var capitalize = (str) => str[0].toUpperCase() + str.slice(1);
413
411
  function prettyPrintTokenType(token) {
414
412
  switch (token.type) {
@@ -427,10 +425,19 @@ function prettyPrintTokenType(token) {
427
425
  }
428
426
  }
429
427
  var NotFoundError = class extends Error {
430
- constructor(token, store) {
431
- super(
432
- `${prettyPrintTokenType(token)} "${token.key}" not found in store "${store.config.name}".`
433
- );
428
+ constructor(...params) {
429
+ const token = params[0];
430
+ const store = params.length === 2 ? params[1] : params[2];
431
+ if (params.length === 2) {
432
+ super(
433
+ `${prettyPrintTokenType(token)} "${token.key}" not found in store "${store.config.name}".`
434
+ );
435
+ } else {
436
+ const key = params[1];
437
+ super(
438
+ `${prettyPrintTokenType(token)} "${token.key}" member ${json.stringifyJson(key)} not found in store "${store.config.name}".`
439
+ );
440
+ }
434
441
  }
435
442
  };
436
443
 
@@ -690,41 +697,6 @@ var setAtomOrSelector = (state, value, store) => {
690
697
  break;
691
698
  }
692
699
  };
693
-
694
- // internal/src/set-state/set-into-store.ts
695
- function setIntoStore(token, value, store) {
696
- const rejectionTime = openOperation(token, store);
697
- if (rejectionTime) {
698
- const unsubscribe = store.on.operationClose.subscribe(
699
- `waiting to set "${token.key}" at T-${rejectionTime}`,
700
- () => {
701
- unsubscribe();
702
- store.logger.info(
703
- `\u{1F7E2}`,
704
- token.type,
705
- token.key,
706
- `resuming deferred setState from T-${rejectionTime}`
707
- );
708
- setIntoStore(token, value, store);
709
- }
710
- );
711
- return;
712
- }
713
- const state = withdraw(token, store);
714
- setAtomOrSelector(state, value, store);
715
- closeOperation(store);
716
- }
717
-
718
- // internal/src/ingest-updates/ingest-atom-update.ts
719
- function ingestAtomUpdate(applying, atomUpdate, store) {
720
- const { key, newValue, oldValue } = atomUpdate;
721
- const value = applying === `newValue` ? newValue : oldValue;
722
- const token = { key, type: `atom` };
723
- if (atomUpdate.family) {
724
- Object.assign(token, { family: atomUpdate.family });
725
- }
726
- setIntoStore(token, value, store);
727
- }
728
700
  function createRegularAtomFamily(options, store) {
729
701
  const subject = new Subject();
730
702
  const atomFamily = Object.assign(
@@ -766,17 +738,31 @@ function createAtomFamily(options, store) {
766
738
  }
767
739
 
768
740
  // internal/src/get-state/get-from-store.ts
769
- function getFromStore(token, store) {
770
- if (token.type === `molecule`) {
771
- try {
772
- const molecule = withdraw(token, store);
773
- return molecule.instance;
774
- } catch (_) {
775
- return void 0;
741
+ function getFromStore(...params) {
742
+ let token;
743
+ let store;
744
+ if (params.length === 2) {
745
+ token = params[0];
746
+ store = params[1];
747
+ } else {
748
+ const family = params[0];
749
+ const key = params[1];
750
+ store = params[2];
751
+ const maybeToken = family.type === `molecule_family` ? seekInStore(family, key, store) : store.config.lifespan === `immortal` ? seekInStore(family, key, store) : findInStore(family, key, store);
752
+ if (!maybeToken) {
753
+ throw new NotFoundError(family, key, store);
776
754
  }
755
+ token = maybeToken;
756
+ }
757
+ switch (token.type) {
758
+ case `atom`:
759
+ case `mutable_atom`:
760
+ case `selector`:
761
+ case `readonly_selector`:
762
+ return readOrComputeValue(withdraw(token, store), store);
763
+ case `molecule`:
764
+ return withdraw(token, store).instance;
777
765
  }
778
- const state = withdraw(token, store);
779
- return readOrComputeValue(state, store);
780
766
  }
781
767
 
782
768
  // internal/src/keys.ts
@@ -857,8 +843,16 @@ var updateSelectorAtoms = (selectorKey, dependency, covered, store) => {
857
843
 
858
844
  // internal/src/selector/register-selector.ts
859
845
  var registerSelector = (selectorKey, covered, store) => ({
860
- get: (dependency) => {
846
+ get: (dependency, key) => {
861
847
  const target = newest(store);
848
+ if (key) {
849
+ switch (dependency.type) {
850
+ case `molecule_family`:
851
+ return getFromStore(dependency, key, store);
852
+ case `atom_family`:
853
+ dependency = seekInStore(dependency, key, store);
854
+ }
855
+ }
862
856
  if (dependency.type === `molecule`) {
863
857
  return getFromStore(dependency, store);
864
858
  }
@@ -884,10 +878,25 @@ var registerSelector = (selectorKey, covered, store) => ({
884
878
  updateSelectorAtoms(selectorKey, dependency, covered, store);
885
879
  return dependencyValue;
886
880
  },
887
- set: (WritableToken, newValue) => {
881
+ set: (...params) => {
882
+ let token;
883
+ let value;
884
+ if (params.length === 2) {
885
+ token = params[0];
886
+ value = params[1];
887
+ } else {
888
+ const family = params[0];
889
+ const key = params[1];
890
+ value = params[2];
891
+ const maybeToken = store.config.lifespan === `ephemeral` ? findInStore(family, key, store) : seekInStore(family, key, store);
892
+ if (!maybeToken) {
893
+ throw new NotFoundError(family, key, store);
894
+ }
895
+ token = maybeToken;
896
+ }
888
897
  const target = newest(store);
889
- const state = withdraw(WritableToken, target);
890
- setAtomOrSelector(state, newValue, target);
898
+ const state = withdraw(token, target);
899
+ setAtomOrSelector(state, value, target);
891
900
  },
892
901
  find: (token, key) => findInStore(token, key, store),
893
902
  seek: (token, key) => seekInStore(token, key, store),
@@ -940,11 +949,11 @@ var createWritableSelector = (options, family, store) => {
940
949
  const target = newest(store);
941
950
  const subject = new Subject();
942
951
  const covered = /* @__PURE__ */ new Set();
943
- const transactors = registerSelector(options.key, covered, target);
944
- const { find, get, seek, json } = transactors;
945
- const readonlyTransactors = { find, get, seek, json };
952
+ const toolkit = registerSelector(options.key, covered, target);
953
+ const { find, get, seek, json } = toolkit;
954
+ const getterToolkit = { find, get, seek, json };
946
955
  const getSelf = (innerTarget = newest(store)) => {
947
- const value = options.get(readonlyTransactors);
956
+ const value = options.get(getterToolkit);
948
957
  cacheValue(options.key, value, subject, innerTarget);
949
958
  covered.clear();
950
959
  return value;
@@ -968,7 +977,7 @@ var createWritableSelector = (options, family, store) => {
968
977
  if (isRootStore(innerTarget)) {
969
978
  subject.next({ newValue, oldValue });
970
979
  }
971
- options.set(transactors, newValue);
980
+ options.set(toolkit, newValue);
972
981
  };
973
982
  const mySelector = __spreadValues(__spreadProps(__spreadValues({}, options), {
974
983
  subject,
@@ -1222,23 +1231,6 @@ function disposeMolecule(token, store) {
1222
1231
  }
1223
1232
  }
1224
1233
 
1225
- // internal/src/families/dispose-from-store.ts
1226
- function disposeFromStore(token, store = IMPLICIT.STORE) {
1227
- switch (token.type) {
1228
- case `atom`:
1229
- case `mutable_atom`:
1230
- disposeAtom(token, store);
1231
- break;
1232
- case `selector`:
1233
- case `readonly_selector`:
1234
- disposeSelector(token, store);
1235
- break;
1236
- case `molecule`:
1237
- disposeMolecule(token, store);
1238
- break;
1239
- }
1240
- }
1241
-
1242
1234
  // internal/src/families/init-family-member.ts
1243
1235
  function initFamilyMemberInStore(token, key, store) {
1244
1236
  const familyKey = token.key;
@@ -1312,6 +1304,91 @@ function findInStore(token, key, store) {
1312
1304
  return state;
1313
1305
  }
1314
1306
 
1307
+ // internal/src/families/dispose-from-store.ts
1308
+ function disposeFromStore(...params) {
1309
+ let token;
1310
+ let store;
1311
+ if (params.length === 2) {
1312
+ token = params[0];
1313
+ store = params[1];
1314
+ } else {
1315
+ const family = params[0];
1316
+ const key = params[1];
1317
+ store = params[2];
1318
+ const maybeToken = family.type === `molecule_family` ? seekInStore(family, key, store) : store.config.lifespan === `immortal` ? seekInStore(family, key, store) : findInStore(family, key, store);
1319
+ if (!maybeToken) {
1320
+ throw new NotFoundError(family, key, store);
1321
+ }
1322
+ token = maybeToken;
1323
+ }
1324
+ switch (token.type) {
1325
+ case `atom`:
1326
+ case `mutable_atom`:
1327
+ disposeAtom(token, store);
1328
+ break;
1329
+ case `selector`:
1330
+ case `readonly_selector`:
1331
+ disposeSelector(token, store);
1332
+ break;
1333
+ case `molecule`:
1334
+ disposeMolecule(token, store);
1335
+ break;
1336
+ }
1337
+ }
1338
+
1339
+ // internal/src/set-state/set-into-store.ts
1340
+ function setIntoStore(...params) {
1341
+ let token;
1342
+ let value;
1343
+ let store;
1344
+ if (params.length === 3) {
1345
+ token = params[0];
1346
+ value = params[1];
1347
+ store = params[2];
1348
+ } else {
1349
+ const family = params[0];
1350
+ const key = params[1];
1351
+ value = params[2];
1352
+ store = params[3];
1353
+ const maybeToken = store.config.lifespan === `ephemeral` ? findInStore(family, key, store) : seekInStore(family, key, store);
1354
+ if (!maybeToken) {
1355
+ throw new NotFoundError(family, key, store);
1356
+ }
1357
+ token = maybeToken;
1358
+ }
1359
+ const rejectionTime = openOperation(token, store);
1360
+ if (rejectionTime) {
1361
+ const unsubscribe = store.on.operationClose.subscribe(
1362
+ `waiting to set "${token.key}" at T-${rejectionTime}`,
1363
+ () => {
1364
+ unsubscribe();
1365
+ store.logger.info(
1366
+ `\u{1F7E2}`,
1367
+ token.type,
1368
+ token.key,
1369
+ `resuming deferred setState from T-${rejectionTime}`
1370
+ );
1371
+ setIntoStore(token, value, store);
1372
+ }
1373
+ );
1374
+ return;
1375
+ }
1376
+ const state = withdraw(token, store);
1377
+ setAtomOrSelector(state, value, store);
1378
+ closeOperation(store);
1379
+ }
1380
+
1381
+ // internal/src/ingest-updates/ingest-atom-update.ts
1382
+ function ingestAtomUpdate(applying, atomUpdate, store) {
1383
+ const { key, newValue, oldValue } = atomUpdate;
1384
+ const value = applying === `newValue` ? newValue : oldValue;
1385
+ const token = { key, type: `atom` };
1386
+ if (atomUpdate.family) {
1387
+ Object.assign(token, { family: atomUpdate.family });
1388
+ }
1389
+ setIntoStore(token, value, store);
1390
+ }
1391
+
1315
1392
  // internal/src/molecule/create-molecule-family.ts
1316
1393
  function createMoleculeFamily(options, store) {
1317
1394
  var _a;
@@ -1373,30 +1450,34 @@ var Molecule = class {
1373
1450
  };
1374
1451
 
1375
1452
  // internal/src/molecule/make-molecule-in-store.ts
1453
+ function capitalize2(string) {
1454
+ return string[0].toUpperCase() + string.slice(1);
1455
+ }
1376
1456
  function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1377
1457
  const target = newest(store);
1378
- target.moleculeInProgress = key;
1458
+ const stringKey = json.stringifyJson(key);
1459
+ target.moleculeInProgress = stringKey;
1379
1460
  const contextArray = Array.isArray(context) ? context : [context];
1380
1461
  const owners = contextArray.map((ctx) => {
1381
1462
  if (ctx instanceof Molecule) {
1382
1463
  return ctx;
1383
1464
  }
1384
- const stringKey = json.stringifyJson(ctx.key);
1385
- const molecule2 = store.molecules.get(stringKey);
1465
+ const ctxStringKey = json.stringifyJson(ctx.key);
1466
+ const molecule2 = store.molecules.get(ctxStringKey);
1386
1467
  if (!molecule2) {
1387
1468
  throw new Error(
1388
- `Molecule ${stringKey} not found in store "${store.config.name}"`
1469
+ `Molecule ${ctxStringKey} not found in store "${store.config.name}"`
1389
1470
  );
1390
1471
  }
1391
1472
  return molecule2;
1392
1473
  });
1393
1474
  const molecule = new Molecule(owners, key, familyToken);
1394
- target.molecules.set(json.stringifyJson(key), molecule);
1475
+ target.molecules.set(stringKey, molecule);
1395
1476
  for (const owner of owners) {
1396
1477
  owner.below.set(molecule.stringKey, molecule);
1397
1478
  }
1398
- const transactors = {
1399
- get: (t) => getFromStore(t, newest(store)),
1479
+ const toolkit = {
1480
+ get: (t) => getFromStore(t, void 0, newest(store)),
1400
1481
  set: (t, newValue) => {
1401
1482
  setIntoStore(t, newValue, newest(store));
1402
1483
  },
@@ -1408,11 +1489,36 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1408
1489
  disposeFromStore(t, newest(store));
1409
1490
  },
1410
1491
  env: () => getEnvironmentData(newest(store)),
1411
- bond: (f) => growMoleculeInStore(
1412
- molecule,
1413
- withdraw(f, store),
1414
- newest(store)
1415
- ),
1492
+ bond: (token2, maybeRole) => {
1493
+ if (token2.type === `join`) {
1494
+ const { as: role } = maybeRole;
1495
+ const join = data.getJoin(token2, store);
1496
+ join.molecules.set(stringKey, molecule);
1497
+ molecule.joins.set(token2.key, join);
1498
+ const unsubFromFamily = family.subject.subscribe(
1499
+ `join:${token2.key}-${stringKey}`,
1500
+ (event) => {
1501
+ if (event.type === `molecule_disposal` && json.stringifyJson(event.token.key) === stringKey) {
1502
+ unsubFromFamily();
1503
+ join.molecules.delete(stringKey);
1504
+ }
1505
+ }
1506
+ );
1507
+ if (role === null) {
1508
+ return;
1509
+ }
1510
+ const otherRole = token2.a === role ? token2.b : token2.a;
1511
+ const relations = data.findRelations(token2, key);
1512
+ const relatedKeys = relations[`${otherRole}KeysOf${capitalize2(role)}`];
1513
+ const relatedEntries = relations[`${otherRole}EntriesOf${capitalize2(role)}`];
1514
+ let tokens = { relatedKeys };
1515
+ if (relatedEntries) {
1516
+ tokens = Object.assign(tokens, { relatedEntries });
1517
+ }
1518
+ return tokens;
1519
+ }
1520
+ return growMoleculeInStore(molecule, withdraw(token2, store), newest(store));
1521
+ },
1416
1522
  claim: (below, options) => {
1417
1523
  const { exclusive } = options;
1418
1524
  const belowMolecule = newest(store).molecules.get(json.stringifyJson(below.key));
@@ -1430,12 +1536,6 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1430
1536
  }
1431
1537
  }
1432
1538
  },
1433
- join: (joinToken) => {
1434
- const join = data.getJoin(joinToken, store);
1435
- join.molecules.set(json.stringifyJson(key), molecule);
1436
- molecule.joins.set(joinToken.key, join);
1437
- return joinToken;
1438
- },
1439
1539
  spawn: (f, k, ...p) => makeMoleculeInStore(
1440
1540
  newest(store),
1441
1541
  [molecule],
@@ -1446,7 +1546,7 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1446
1546
  };
1447
1547
  const family = withdraw(familyToken, store);
1448
1548
  const Constructor = family.new;
1449
- molecule.instance = new Constructor(transactors, key, ...params);
1549
+ molecule.instance = new Constructor(toolkit, key, ...params);
1450
1550
  const token = {
1451
1551
  type: `molecule`,
1452
1552
  key,
@@ -1747,18 +1847,18 @@ var buildTransaction = (key, params, store, id) => {
1747
1847
  params,
1748
1848
  output: void 0
1749
1849
  },
1750
- transactors: {
1751
- get: (token) => getFromStore(token, child),
1752
- set: (token, value) => {
1753
- setIntoStore(token, value, child);
1850
+ toolkit: {
1851
+ get: (...ps) => getFromStore(...ps, child),
1852
+ set: (...ps) => {
1853
+ setIntoStore(...ps, child);
1754
1854
  },
1755
1855
  run: (token, identifier = arbitrary()) => actUponStore(token, identifier, child),
1756
1856
  find: (token, k) => findInStore(token, k, child),
1757
1857
  seek: (token, k) => seekInStore(token, k, child),
1758
1858
  json: (token) => getJsonToken(token, child),
1759
1859
  make: (context, family, k, ...args) => makeMoleculeInStore(child, context, family, k, ...args),
1760
- dispose: (token) => {
1761
- disposeFromStore(token, child);
1860
+ dispose: (...ps) => {
1861
+ disposeFromStore(...ps, child);
1762
1862
  },
1763
1863
  env: () => getEnvironmentData(child)
1764
1864
  }
@@ -1786,8 +1886,8 @@ function createTransaction(options, store) {
1786
1886
  const childStore = buildTransaction(options.key, params, store, id);
1787
1887
  try {
1788
1888
  const target2 = newest(store);
1789
- const { transactors } = childStore.transactionMeta;
1790
- const output = options.do(transactors, ...params);
1889
+ const { toolkit } = childStore.transactionMeta;
1890
+ const output = options.do(toolkit, ...params);
1791
1891
  applyTransaction(output, target2);
1792
1892
  return output;
1793
1893
  } catch (thrown) {
@@ -1903,6 +2003,7 @@ var Store = class {
1903
2003
  for (const logger of this.loggers) logger.warn(...messages);
1904
2004
  }
1905
2005
  };
2006
+ this.config = __spreadValues(__spreadValues({}, store == null ? void 0 : store.config), config);
1906
2007
  if (store !== null) {
1907
2008
  this.valueMap = new Map(store == null ? void 0 : store.valueMap);
1908
2009
  this.operation = __spreadValues({}, store == null ? void 0 : store.operation);
@@ -1914,7 +2015,6 @@ var Store = class {
1914
2015
  )
1915
2016
  };
1916
2017
  }
1917
- this.config = __spreadValues(__spreadValues({}, store == null ? void 0 : store.config), config);
1918
2018
  for (const [, family] of store.families) {
1919
2019
  family.install(this);
1920
2020
  }
@@ -1,5 +1,5 @@
1
1
  import * as atom_io from 'atom.io';
2
- import { Func, TransactionToken, TransactionUpdate, TransactionOptions, TransactorsWithRunAndEnv, RegularAtomToken, MutableAtomToken, AtomToken, WritableSelectorToken, ReadonlySelectorToken, SelectorToken, WritableToken, MoleculeToken, MoleculeFamily, MoleculeFamilyToken, ReadableToken, TimelineManageable, Flat, StateUpdate, TokenType, FamilyMetadata, StateCreation, StateDisposal, MoleculeConstructor, MoleculeCreation, MoleculeDisposal, TimelineUpdate, TimelineOptions, TimelineToken, WritableSelectorFamily, MutableAtomFamily, RegularAtomFamily, ReadonlySelectorFamily, AtomIOLogger, Logger, AtomFamily, ReadableFamily, SelectorFamily, WritableFamily, RegularAtomFamilyToken, MutableAtomFamilyToken, AtomFamilyToken, ReadonlySelectorFamilyToken, WritableSelectorFamilyToken, SelectorFamilyToken, ReadableFamilyToken, WritableFamilyToken, MutableAtomOptions, MutableAtomFamilyOptions, RegularAtomOptions, RegularAtomFamilyOptions, ReadonlySelectorFamilyOptions, WritableSelectorFamilyOptions, MoleculeKey, KeyedStateUpdate, MoleculeFamilyOptions, MK, MoleculeParams, ReadonlySelectorOptions, WritableSelectorOptions, Transactors, UpdateHandler, TransactionUpdateHandler } from 'atom.io';
2
+ import { Func, TransactionToken, TransactionUpdate, TransactionOptions, ActorToolkit, RegularAtomToken, MutableAtomToken, AtomToken, WritableSelectorToken, ReadonlySelectorToken, SelectorToken, WritableToken, MoleculeToken, MoleculeFamily, MoleculeFamilyToken, ReadableToken, TimelineManageable, Flat, StateUpdate, TokenType, FamilyMetadata, StateCreation, StateDisposal, MoleculeConstructor, MoleculeCreation, MoleculeDisposal, TimelineUpdate, TimelineOptions, TimelineToken, WritableSelectorFamily, MutableAtomFamily, RegularAtomFamily, ReadonlySelectorFamily, AtomIOLogger, Logger, AtomFamily, ReadableFamily, SelectorFamily, WritableFamily, RegularAtomFamilyToken, MutableAtomFamilyToken, AtomFamilyToken, ReadonlySelectorFamilyToken, WritableSelectorFamilyToken, SelectorFamilyToken, ReadableFamilyToken, WritableFamilyToken, MutableAtomOptions, MutableAtomFamilyOptions, RegularAtomOptions, RegularAtomFamilyOptions, ReadonlySelectorFamilyOptions, WritableSelectorFamilyOptions, MoleculeKey, KeyedStateUpdate, MoleculeFamilyOptions, MK, MoleculeParams, ReadonlySelectorOptions, WritableSelectorOptions, SetterToolkit, UpdateHandler, TransactionUpdateHandler } from 'atom.io';
3
3
  import { Json, JsonInterface } from 'atom.io/json';
4
4
  import { Join } from 'atom.io/data';
5
5
 
@@ -134,7 +134,7 @@ type TransactionPhase = (typeof TRANSACTION_PHASES)[number];
134
134
  type TransactionProgress<F extends Func> = {
135
135
  phase: `applying` | `building`;
136
136
  update: TransactionUpdate<F>;
137
- transactors: TransactorsWithRunAndEnv;
137
+ toolkit: ActorToolkit;
138
138
  };
139
139
  type TransactionEpoch = {
140
140
  epoch: Map<string, number>;
@@ -397,7 +397,9 @@ declare function createRegularAtomFamily<T, K extends Json.Serializable>(options
397
397
  declare function createSelectorFamily<T, K extends Json.Serializable>(options: WritableSelectorFamilyOptions<T, K>, store: Store): WritableSelectorFamily<T, K>;
398
398
  declare function createSelectorFamily<T, K extends Json.Serializable>(options: ReadonlySelectorFamilyOptions<T, K>, store: Store): ReadonlySelectorFamily<T, K>;
399
399
 
400
- declare function disposeFromStore(token: MoleculeToken<any> | ReadableToken<any>, store?: Store): void;
400
+ declare function disposeFromStore(token: MoleculeToken<any> | ReadableToken<any>, store: Store): void;
401
+ declare function disposeFromStore<K extends Json.Serializable>(token: ReadableFamilyToken<any, K>, key: K, store: Store): void;
402
+ declare function disposeFromStore<M extends MoleculeConstructor>(token: MoleculeFamilyToken<M>, key: MoleculeKey<M>, store: Store): void;
401
403
 
402
404
  declare function findInStore<T extends Transceiver<any>, J extends Json.Serializable, K extends Json.Serializable, Key extends K>(token: MutableAtomFamilyToken<T, J, K>, key: Key, store: Store): MutableAtomToken<T, J>;
403
405
  declare function findInStore<T, K extends Json.Serializable, Key extends K>(token: RegularAtomFamilyToken<T, K>, key: Key, store: Store): RegularAtomToken<T>;
@@ -434,7 +436,8 @@ declare function getEnvironmentData(store: Store): EnvironmentData;
434
436
 
435
437
  declare function getFromStore<T>(token: ReadableToken<T>, store: Store): T;
436
438
  declare function getFromStore<M extends MoleculeConstructor>(token: MoleculeToken<M>, store: Store): InstanceType<M> | undefined;
437
- declare function getFromStore<T, M extends MoleculeConstructor, Token extends MoleculeToken<M> | ReadableToken<T>>(token: Token, store: Store): InstanceType<M> | T | undefined;
439
+ declare function getFromStore<T, K extends Json.Serializable>(token: ReadableFamilyToken<T, K>, key: K, store: Store): T;
440
+ declare function getFromStore<M extends MoleculeConstructor>(token: MoleculeFamilyToken<M>, key: MoleculeKey<M>, store: Store): InstanceType<M>;
438
441
 
439
442
  declare const readOrComputeValue: <T>(state: ReadableState<T>, target: Store) => T;
440
443
 
@@ -510,6 +513,7 @@ declare function makeMoleculeInStore<M extends MoleculeConstructor>(store: Store
510
513
  type AtomIOToken = MoleculeFamilyToken<any> | MoleculeToken<any> | ReadableFamilyToken<any, any> | ReadableToken<any> | TimelineToken<any> | TransactionToken<any>;
511
514
  declare class NotFoundError extends Error {
512
515
  constructor(token: AtomIOToken, store: Store);
516
+ constructor(familyToken: AtomIOToken, key: Json.Serializable, store: Store);
513
517
  }
514
518
 
515
519
  declare const createReadonlySelector: <T>(options: ReadonlySelectorOptions<T>, family: FamilyMetadata | undefined, store: Store) => ReadonlySelectorToken<T>;
@@ -523,7 +527,7 @@ declare function disposeSelector(selectorToken: ReadonlySelectorToken<unknown> |
523
527
 
524
528
  declare const getSelectorDependencyKeys: (key: string, store: Store) => (AtomKey<unknown> | ReadonlySelectorKey<unknown> | SelectorKey<unknown>)[];
525
529
 
526
- declare const registerSelector: (selectorKey: string, covered: Set<string>, store: Store) => Transactors;
530
+ declare const registerSelector: (selectorKey: string, covered: Set<string>, store: Store) => SetterToolkit;
527
531
 
528
532
  declare const traceSelectorAtoms: (directDependencyKey: StateKey<unknown>, covered: Set<string>, store: Store) => AtomKey<unknown>[];
529
533
  declare const traceAllSelectorAtoms: (selector: Selector<any>, store: Store) => AtomKey<unknown>[];
@@ -536,6 +540,7 @@ declare const become: <T>(nextVersionOfThing: Modify<T> | T) => (originalThing:
536
540
  declare const setAtomOrSelector: <T>(state: WritableState<T>, value: T | ((oldValue: T) => T), store: Store) => void;
537
541
 
538
542
  declare function setIntoStore<T, New extends T>(token: WritableToken<T>, value: New | ((oldValue: T) => New), store: Store): void;
543
+ declare function setIntoStore<T, K extends Json.Serializable, New extends T>(token: WritableFamilyToken<T, K>, key: K, value: New | ((oldValue: T) => New), store: Store): void;
539
544
 
540
545
  declare const subscribeToRootAtoms: <T>(selector: Selector<T>, store: Store) => (() => void)[];
541
546