atom.io 0.27.4 → 0.27.5

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 (93) hide show
  1. package/data/dist/index.js +57 -72
  2. package/data/src/dict.ts +9 -12
  3. package/data/src/join.ts +25 -26
  4. package/data/src/struct-family.ts +17 -23
  5. package/data/src/struct.ts +9 -12
  6. package/dist/{chunk-JRENM6KL.js → chunk-6ABWLAGY.js} +177 -151
  7. package/dist/index.d.ts +3 -3
  8. package/dist/index.js +33 -53
  9. package/ephemeral/dist/index.js +1 -1
  10. package/ephemeral/src/find-state.ts +1 -1
  11. package/immortal/dist/index.js +2 -2
  12. package/immortal/src/seek-state.ts +2 -2
  13. package/internal/dist/index.d.ts +80 -62
  14. package/internal/dist/index.js +1 -1
  15. package/internal/src/atom/create-regular-atom.ts +3 -3
  16. package/internal/src/atom/create-standalone-atom.ts +7 -5
  17. package/internal/src/families/create-atom-family.ts +5 -5
  18. package/internal/src/families/create-readonly-selector-family.ts +20 -9
  19. package/internal/src/families/create-regular-atom-family.ts +15 -6
  20. package/internal/src/families/create-selector-family.ts +5 -5
  21. package/internal/src/families/create-writable-selector-family.ts +20 -10
  22. package/internal/src/families/dispose-from-store.ts +11 -14
  23. package/internal/src/families/find-in-store.ts +11 -11
  24. package/internal/src/families/init-family-member.ts +9 -9
  25. package/internal/src/families/seek-in-store.ts +10 -10
  26. package/internal/src/get-state/get-from-store.ts +32 -18
  27. package/internal/src/ingest-updates/ingest-atom-update.ts +1 -1
  28. package/internal/src/ingest-updates/ingest-creation-disposal.ts +5 -5
  29. package/internal/src/molecule/create-molecule-family.ts +1 -1
  30. package/internal/src/molecule/dispose-molecule.ts +1 -1
  31. package/internal/src/molecule/grow-molecule-in-store.ts +1 -1
  32. package/internal/src/molecule/make-molecule-in-store.ts +5 -5
  33. package/internal/src/mutable/create-mutable-atom-family.ts +15 -6
  34. package/internal/src/mutable/create-mutable-atom.ts +3 -3
  35. package/internal/src/mutable/get-json-token.ts +2 -2
  36. package/internal/src/mutable/tracker-family.ts +3 -3
  37. package/internal/src/mutable/tracker.ts +14 -18
  38. package/internal/src/selector/create-readonly-selector.ts +2 -2
  39. package/internal/src/selector/create-standalone-selector.ts +5 -5
  40. package/internal/src/selector/create-writable-selector.ts +2 -2
  41. package/internal/src/selector/register-selector.ts +9 -9
  42. package/internal/src/set-state/set-into-store.ts +8 -16
  43. package/internal/src/store/deposit.ts +53 -13
  44. package/internal/src/store/store.ts +1 -1
  45. package/internal/src/subscribe/index.ts +2 -0
  46. package/internal/src/subscribe/subscribe-in-store.ts +62 -0
  47. package/internal/src/timeline/time-travel.ts +1 -1
  48. package/internal/src/transaction/build-transaction.ts +6 -6
  49. package/introspection/dist/index.js +66 -87
  50. package/introspection/src/attach-atom-index.ts +5 -8
  51. package/introspection/src/attach-selector-index.ts +6 -8
  52. package/introspection/src/attach-timeline-family.ts +25 -28
  53. package/introspection/src/attach-timeline-index.ts +5 -8
  54. package/introspection/src/attach-transaction-index.ts +5 -8
  55. package/introspection/src/attach-transaction-logs.ts +21 -27
  56. package/json/dist/index.js +12 -15
  57. package/json/src/select-json-family.ts +4 -4
  58. package/json/src/select-json.ts +6 -9
  59. package/package.json +1 -1
  60. package/react/dist/index.js +7 -7
  61. package/react/src/parse-state-overloads.ts +2 -2
  62. package/react/src/use-i.ts +1 -1
  63. package/react/src/use-json.ts +2 -2
  64. package/react/src/use-o.ts +2 -2
  65. package/realtime-client/dist/index.js +35 -55
  66. package/realtime-client/src/pull-atom-family-member.ts +1 -1
  67. package/realtime-client/src/pull-atom.ts +1 -1
  68. package/realtime-client/src/pull-mutable-atom-family-member.ts +3 -3
  69. package/realtime-client/src/pull-mutable-atom.ts +3 -3
  70. package/realtime-client/src/sync-continuity.ts +27 -47
  71. package/realtime-react/dist/index.js +3 -3
  72. package/realtime-react/src/use-pull-atom-family-member.ts +1 -1
  73. package/realtime-react/src/use-pull-mutable-family-member.ts +1 -1
  74. package/realtime-react/src/use-pull-selector-family-member.ts +1 -1
  75. package/realtime-server/dist/index.js +32 -32
  76. package/realtime-server/src/realtime-continuity-synchronizer.ts +16 -16
  77. package/realtime-server/src/realtime-family-provider.ts +3 -3
  78. package/realtime-server/src/realtime-mutable-family-provider.ts +5 -5
  79. package/realtime-server/src/realtime-mutable-provider.ts +2 -2
  80. package/realtime-server/src/realtime-state-provider.ts +1 -1
  81. package/realtime-server/src/realtime-state-receiver.ts +1 -1
  82. package/realtime-testing/dist/index.js +7 -7
  83. package/realtime-testing/src/setup-realtime-test.tsx +7 -7
  84. package/src/atom.ts +2 -2
  85. package/src/dispose-state.ts +2 -2
  86. package/src/get-state.ts +9 -13
  87. package/src/molecule.ts +1 -1
  88. package/src/selector.ts +2 -2
  89. package/src/set-state.ts +10 -7
  90. package/src/silo.ts +23 -53
  91. package/src/subscribe.ts +3 -23
  92. package/src/timeline.ts +2 -2
  93. package/internal/src/families/throw-in-case-of-conflicting-family.ts +0 -18
@@ -2,6 +2,7 @@ import { Junction } from './chunk-IBTHB2PI.js';
2
2
  import { stringifyJson, parseJson, selectJson, selectJsonFamily } from 'atom.io/json';
3
3
  import { AtomIOLogger } from 'atom.io';
4
4
  import { getJoin, findRelations } from 'atom.io/data';
5
+ import { subscribeToTimeline, subscribeToTransaction, subscribeToState, arbitrary as arbitrary$1 } from 'atom.io/internal';
5
6
 
6
7
  // internal/src/arbitrary.ts
7
8
  function arbitrary(random = Math.random) {
@@ -437,26 +438,22 @@ var setAtomOrSelector = (state, value, store) => {
437
438
  break;
438
439
  }
439
440
  };
440
-
441
- // internal/src/families/throw-in-case-of-conflicting-family.ts
442
- function throwInCaseOfConflictingFamily(family, store) {
443
- const existingFamily = store.families.get(family.key);
444
- if (existingFamily) {
445
- throw new Error(
446
- `Tried to create ${family.type === `atom_family` ? `an` : `a`} ${prettyPrintTokenType(family)} with key "${family.key}", but "${family.key}" already exists in store "${store.config.name}" as ${existingFamily.type === `atom_family` ? `an` : `a`} ${prettyPrintTokenType(
447
- existingFamily
448
- )}`
449
- );
450
- }
451
- }
452
-
453
- // internal/src/families/create-regular-atom-family.ts
454
- function createRegularAtomFamily(options, store, internalRoles) {
441
+ function createRegularAtomFamily(store, options, internalRoles) {
455
442
  const familyToken = {
456
443
  key: options.key,
457
444
  type: `atom_family`
458
445
  };
459
- throwInCaseOfConflictingFamily(familyToken, store);
446
+ const existing = store.families.get(options.key);
447
+ if (existing) {
448
+ store.logger.error(
449
+ `\u2757`,
450
+ `atom_family`,
451
+ options.key,
452
+ `Overwriting an existing ${prettyPrintTokenType(
453
+ existing
454
+ )} "${existing.key}" in store "${store.config.name}". You can safely ignore this warning if it is due to hot module replacement.`
455
+ );
456
+ }
460
457
  const subject = new Subject();
461
458
  const familyFunction = (key) => {
462
459
  const subKey = stringifyJson(key);
@@ -471,13 +468,13 @@ function createRegularAtomFamily(options, store, internalRoles) {
471
468
  if (options.effects) {
472
469
  individualOptions.effects = options.effects(key);
473
470
  }
474
- const token = createRegularAtom(individualOptions, family, target);
471
+ const token = createRegularAtom(target, individualOptions, family);
475
472
  subject.next({ type: `state_creation`, token });
476
473
  return token;
477
474
  };
478
475
  const atomFamily = Object.assign(familyFunction, familyToken, {
479
476
  subject,
480
- install: (s) => createRegularAtomFamily(options, s),
477
+ install: (s) => createRegularAtomFamily(s, options),
481
478
  internalRoles
482
479
  });
483
480
  store.families.set(options.key, atomFamily);
@@ -486,24 +483,21 @@ function createRegularAtomFamily(options, store, internalRoles) {
486
483
  }
487
484
 
488
485
  // internal/src/families/create-atom-family.ts
489
- function createAtomFamily(options, store) {
486
+ function createAtomFamily(store, options) {
490
487
  const isMutable = `mutable` in options;
491
488
  if (isMutable) {
492
- return createMutableAtomFamily(options, store);
489
+ return createMutableAtomFamily(store, options);
493
490
  }
494
- return createRegularAtomFamily(options, store);
491
+ return createRegularAtomFamily(store, options);
495
492
  }
496
- function getFromStore(...params) {
493
+ function getFromStore(store, ...params) {
497
494
  let token;
498
- let store;
499
- if (params.length === 2) {
495
+ if (params.length === 1) {
500
496
  token = params[0];
501
- store = params[1];
502
497
  } else {
503
498
  const family = params[0];
504
499
  const key = params[1];
505
- store = params[2];
506
- const maybeToken = family.type === `molecule_family` ? seekInStore(family, key, store) : store.config.lifespan === `immortal` ? seekInStore(family, key, store) : findInStore(family, key, store);
500
+ const maybeToken = family.type === `molecule_family` ? seekInStore(store, family, key) : store.config.lifespan === `immortal` ? seekInStore(store, family, key) : findInStore(store, family, key);
507
501
  if (!maybeToken) {
508
502
  store.logger.error(
509
503
  `\u2757`,
@@ -629,12 +623,12 @@ var registerSelector = (selectorKey, covered, store) => ({
629
623
  const [family, key] = params;
630
624
  switch (family.type) {
631
625
  case `molecule_family`:
632
- return getFromStore(family, key, store);
626
+ return getFromStore(store, family, key);
633
627
  default:
634
628
  if (store.config.lifespan === `ephemeral`) {
635
- dependency = findInStore(family, key, store);
629
+ dependency = findInStore(store, family, key);
636
630
  } else {
637
- const maybeDependency = seekInStore(family, key, store);
631
+ const maybeDependency = seekInStore(store, family, key);
638
632
  if (maybeDependency) {
639
633
  dependency = maybeDependency;
640
634
  } else {
@@ -646,7 +640,7 @@ var registerSelector = (selectorKey, covered, store) => ({
646
640
  [dependency] = params;
647
641
  }
648
642
  if (dependency.type === `molecule`) {
649
- return getFromStore(dependency, store);
643
+ return getFromStore(store, dependency);
650
644
  }
651
645
  const dependencyState = withdraw(dependency, store);
652
646
  const dependencyValue = readOrComputeValue(dependencyState, store);
@@ -680,7 +674,7 @@ var registerSelector = (selectorKey, covered, store) => ({
680
674
  const family = params[0];
681
675
  const key = params[1];
682
676
  value = params[2];
683
- const maybeToken = store.config.lifespan === `ephemeral` ? findInStore(family, key, store) : seekInStore(family, key, store);
677
+ const maybeToken = store.config.lifespan === `ephemeral` ? findInStore(store, family, key) : seekInStore(store, family, key);
684
678
  if (!maybeToken) {
685
679
  throw new NotFoundError(family, key, store);
686
680
  }
@@ -690,13 +684,13 @@ var registerSelector = (selectorKey, covered, store) => ({
690
684
  const state = withdraw(token, target);
691
685
  setAtomOrSelector(state, value, target);
692
686
  },
693
- find: (token, key) => findInStore(token, key, store),
694
- seek: (token, key) => seekInStore(token, key, store),
695
- json: (token) => getJsonToken(token, store)
687
+ find: (token, key) => findInStore(store, token, key),
688
+ seek: (token, key) => seekInStore(store, token, key),
689
+ json: (token) => getJsonToken(store, token)
696
690
  });
697
691
 
698
692
  // internal/src/selector/create-readonly-selector.ts
699
- var createReadonlySelector = (options, family, store) => {
693
+ var createReadonlySelector = (store, options, family) => {
700
694
  const target = newest(store);
701
695
  const subject = new Subject();
702
696
  const covered = /* @__PURE__ */ new Set();
@@ -714,7 +708,7 @@ var createReadonlySelector = (options, family, store) => {
714
708
  const readonlySelector = {
715
709
  ...options,
716
710
  subject,
717
- install: (s) => createReadonlySelector(options, family, s),
711
+ install: (s) => createReadonlySelector(s, options, family),
718
712
  get: getSelf,
719
713
  type: `readonly_selector`,
720
714
  ...family && { family }
@@ -739,7 +733,7 @@ var createReadonlySelector = (options, family, store) => {
739
733
  };
740
734
 
741
735
  // internal/src/selector/create-writable-selector.ts
742
- var createWritableSelector = (options, family, store) => {
736
+ var createWritableSelector = (store, options, family) => {
743
737
  const target = newest(store);
744
738
  const subject = new Subject();
745
739
  const covered = /* @__PURE__ */ new Set();
@@ -776,7 +770,7 @@ var createWritableSelector = (options, family, store) => {
776
770
  const mySelector = {
777
771
  ...options,
778
772
  subject,
779
- install: (s) => createWritableSelector(options, family, s),
773
+ install: (s) => createWritableSelector(s, options, family),
780
774
  get: getSelf,
781
775
  set: setSelf,
782
776
  type: `selector`,
@@ -796,14 +790,14 @@ var createWritableSelector = (options, family, store) => {
796
790
  };
797
791
 
798
792
  // internal/src/selector/create-standalone-selector.ts
799
- function createStandaloneSelector(options, store) {
793
+ function createStandaloneSelector(store, options) {
800
794
  const isWritable = `set` in options;
801
795
  if (isWritable) {
802
- const state2 = createWritableSelector(options, void 0, store);
796
+ const state2 = createWritableSelector(store, options, void 0);
803
797
  store.on.selectorCreation.next(state2);
804
798
  return state2;
805
799
  }
806
- const state = createReadonlySelector(options, void 0, store);
800
+ const state = createReadonlySelector(store, options, void 0);
807
801
  store.on.selectorCreation.next(state);
808
802
  return state;
809
803
  }
@@ -884,12 +878,22 @@ function disposeSelector(selectorToken, store) {
884
878
  }
885
879
 
886
880
  // internal/src/families/create-readonly-selector-family.ts
887
- function createReadonlySelectorFamily(options, store, internalRoles) {
881
+ function createReadonlySelectorFamily(store, options, internalRoles) {
888
882
  const familyToken = {
889
883
  key: options.key,
890
884
  type: `readonly_selector_family`
891
885
  };
892
- throwInCaseOfConflictingFamily(familyToken, store);
886
+ const existing = store.families.get(options.key);
887
+ if (existing) {
888
+ store.logger.error(
889
+ `\u2757`,
890
+ `readonly_selector_family`,
891
+ options.key,
892
+ `Overwriting an existing ${prettyPrintTokenType(
893
+ existing
894
+ )} "${existing.key}" in store "${store.config.name}". You can safely ignore this warning if it is due to hot module replacement.`
895
+ );
896
+ }
893
897
  const subject = new Subject();
894
898
  const familyFunction = (key) => {
895
899
  const subKey = stringifyJson(key);
@@ -897,12 +901,12 @@ function createReadonlySelectorFamily(options, store, internalRoles) {
897
901
  const fullKey = `${options.key}(${subKey})`;
898
902
  const target = newest(store);
899
903
  const token = createReadonlySelector(
904
+ target,
900
905
  {
901
906
  key: fullKey,
902
907
  get: options.get(key)
903
908
  },
904
- family,
905
- target
909
+ family
906
910
  );
907
911
  subject.next({ type: `state_creation`, token });
908
912
  return token;
@@ -910,26 +914,36 @@ function createReadonlySelectorFamily(options, store, internalRoles) {
910
914
  const readonlySelectorFamily = Object.assign(familyFunction, familyToken, {
911
915
  internalRoles,
912
916
  subject,
913
- install: (s) => createReadonlySelectorFamily(options, s),
917
+ install: (s) => createReadonlySelectorFamily(s, options),
914
918
  default: (key) => {
915
919
  const getFn = options.get(key);
916
920
  return getFn({
917
- get: (token) => getFromStore(token, store),
918
- find: (token, k) => findInStore(token, k, store),
919
- seek: (token, k) => seekInStore(token, k, store),
920
- json: (token) => getJsonToken(token, store)
921
+ get: (...ps) => getFromStore(store, ...ps),
922
+ find: (token, k) => findInStore(store, token, k),
923
+ seek: (token, k) => seekInStore(store, token, k),
924
+ json: (token) => getJsonToken(store, token)
921
925
  });
922
926
  }
923
927
  });
924
928
  store.families.set(options.key, readonlySelectorFamily);
925
929
  return familyToken;
926
930
  }
927
- function createWritableSelectorFamily(options, store, internalRoles) {
931
+ function createWritableSelectorFamily(store, options, internalRoles) {
928
932
  const familyToken = {
929
933
  key: options.key,
930
934
  type: `selector_family`
931
935
  };
932
- throwInCaseOfConflictingFamily(familyToken, store);
936
+ const existing = store.families.get(options.key);
937
+ if (existing) {
938
+ store.logger.error(
939
+ `\u2757`,
940
+ `selector_family`,
941
+ options.key,
942
+ `Overwriting an existing ${prettyPrintTokenType(
943
+ existing
944
+ )} "${existing.key}" in store "${store.config.name}". You can safely ignore this warning if it is due to hot module replacement.`
945
+ );
946
+ }
933
947
  const subject = new Subject();
934
948
  const familyFunction = (key) => {
935
949
  const subKey = stringifyJson(key);
@@ -937,13 +951,13 @@ function createWritableSelectorFamily(options, store, internalRoles) {
937
951
  const fullKey = `${options.key}(${subKey})`;
938
952
  const target = newest(store);
939
953
  const token = createWritableSelector(
954
+ target,
940
955
  {
941
956
  key: fullKey,
942
957
  get: options.get(key),
943
958
  set: options.set(key)
944
959
  },
945
- family,
946
- target
960
+ family
947
961
  );
948
962
  subject.next({ type: `state_creation`, token });
949
963
  return token;
@@ -951,15 +965,14 @@ function createWritableSelectorFamily(options, store, internalRoles) {
951
965
  const selectorFamily = Object.assign(familyFunction, familyToken, {
952
966
  internalRoles,
953
967
  subject,
954
- install: (s) => createWritableSelectorFamily(options, s),
968
+ install: (s) => createWritableSelectorFamily(s, options),
955
969
  default: (key) => {
956
970
  const getFn = options.get(key);
957
971
  return getFn({
958
- get: (...params) => getFromStore(...params, store),
959
- // TODO: make store zero-arg
960
- find: (token, k) => findInStore(token, k, store),
961
- seek: (token, k) => seekInStore(token, k, store),
962
- json: (token) => getJsonToken(token, store)
972
+ get: (...ps) => getFromStore(store, ...ps),
973
+ find: (token, k) => findInStore(store, token, k),
974
+ seek: (token, k) => seekInStore(store, token, k),
975
+ json: (token) => getJsonToken(store, token)
963
976
  });
964
977
  }
965
978
  });
@@ -968,12 +981,12 @@ function createWritableSelectorFamily(options, store, internalRoles) {
968
981
  }
969
982
 
970
983
  // internal/src/families/create-selector-family.ts
971
- function createSelectorFamily(options, store) {
984
+ function createSelectorFamily(store, options) {
972
985
  const isWritable = `set` in options;
973
986
  if (isWritable) {
974
- return createWritableSelectorFamily(options, store);
987
+ return createWritableSelectorFamily(store, options);
975
988
  }
976
- return createReadonlySelectorFamily(options, store);
989
+ return createReadonlySelectorFamily(store, options);
977
990
  }
978
991
 
979
992
  // internal/src/molecule/dispose-molecule.ts
@@ -1016,7 +1029,7 @@ function disposeMolecule(token, store) {
1016
1029
  disposalEvent.family = token.family;
1017
1030
  }
1018
1031
  for (const state of molecule.tokens.values()) {
1019
- disposeFromStore(state, store);
1032
+ disposeFromStore(store, state);
1020
1033
  }
1021
1034
  for (const child of molecule.below.values()) {
1022
1035
  if (child.family?.dependsOn === `all`) {
@@ -1046,7 +1059,7 @@ function disposeMolecule(token, store) {
1046
1059
  }
1047
1060
 
1048
1061
  // internal/src/families/init-family-member.ts
1049
- function initFamilyMemberInStore(token, key, store) {
1062
+ function initFamilyMemberInStore(store, token, key) {
1050
1063
  const familyKey = token.key;
1051
1064
  const family = store.families.get(familyKey);
1052
1065
  if (family === void 0) {
@@ -1075,7 +1088,7 @@ function initFamilyMemberInStore(token, key, store) {
1075
1088
  }
1076
1089
  return state;
1077
1090
  }
1078
- function seekInStore(token, key, store) {
1091
+ function seekInStore(store, token, key) {
1079
1092
  const subKey = stringifyJson(key);
1080
1093
  const fullKey = `${token.key}(${subKey})`;
1081
1094
  const target = newest(store);
@@ -1101,32 +1114,29 @@ function seekInStore(token, key, store) {
1101
1114
  }
1102
1115
 
1103
1116
  // internal/src/families/find-in-store.ts
1104
- function findInStore(token, key, store) {
1117
+ function findInStore(store, token, key) {
1105
1118
  if (store.config.lifespan === `immortal`) {
1106
1119
  throw new Error(
1107
1120
  `Do not use \`find\` or \`findState\` in an immortal store. Prefer \`seek\` or \`seekState\`.`
1108
1121
  );
1109
1122
  }
1110
- let state = seekInStore(token, key, store);
1123
+ let state = seekInStore(store, token, key);
1111
1124
  if (state) {
1112
1125
  return state;
1113
1126
  }
1114
- state = initFamilyMemberInStore(token, key, store);
1127
+ state = initFamilyMemberInStore(store, token, key);
1115
1128
  return state;
1116
1129
  }
1117
1130
 
1118
1131
  // internal/src/families/dispose-from-store.ts
1119
- function disposeFromStore(...params) {
1132
+ function disposeFromStore(store, ...params) {
1120
1133
  let token;
1121
- let store;
1122
- if (params.length === 2) {
1134
+ if (params.length === 1) {
1123
1135
  token = params[0];
1124
- store = params[1];
1125
1136
  } else {
1126
1137
  const family = params[0];
1127
1138
  const key = params[1];
1128
- store = params[2];
1129
- const maybeToken = family.type === `molecule_family` ? seekInStore(family, key, store) : store.config.lifespan === `immortal` ? seekInStore(family, key, store) : findInStore(family, key, store);
1139
+ const maybeToken = family.type === `molecule_family` ? seekInStore(store, family, key) : store.config.lifespan === `immortal` ? seekInStore(store, family, key) : findInStore(store, family, key);
1130
1140
  if (!maybeToken) {
1131
1141
  store.logger.error(
1132
1142
  `\u2757`,
@@ -1157,20 +1167,17 @@ function disposeFromStore(...params) {
1157
1167
  }
1158
1168
 
1159
1169
  // internal/src/set-state/set-into-store.ts
1160
- function setIntoStore(...params) {
1170
+ function setIntoStore(store, ...params) {
1161
1171
  let token;
1162
1172
  let value;
1163
- let store;
1164
- if (params.length === 3) {
1173
+ if (params.length === 2) {
1165
1174
  token = params[0];
1166
1175
  value = params[1];
1167
- store = params[2];
1168
1176
  } else {
1169
1177
  const family = params[0];
1170
1178
  const key = params[1];
1171
1179
  value = params[2];
1172
- store = params[3];
1173
- const maybeToken = store.config.lifespan === `ephemeral` ? findInStore(family, key, store) : seekInStore(family, key, store);
1180
+ const maybeToken = store.config.lifespan === `ephemeral` ? findInStore(store, family, key) : seekInStore(store, family, key);
1174
1181
  if (!maybeToken) {
1175
1182
  store.logger.error(
1176
1183
  `\u2757`,
@@ -1199,7 +1206,7 @@ function setIntoStore(...params) {
1199
1206
  token.key,
1200
1207
  `resuming deferred setState from T-${rejectionTime}`
1201
1208
  );
1202
- setIntoStore(token, value, store);
1209
+ setIntoStore(store, token, value);
1203
1210
  }
1204
1211
  );
1205
1212
  return;
@@ -1217,11 +1224,11 @@ function ingestAtomUpdate(applying, atomUpdate, store) {
1217
1224
  if (atomUpdate.family) {
1218
1225
  Object.assign(token, { family: atomUpdate.family });
1219
1226
  }
1220
- setIntoStore(token, value, store);
1227
+ setIntoStore(store, token, value);
1221
1228
  }
1222
1229
 
1223
1230
  // internal/src/molecule/create-molecule-family.ts
1224
- function createMoleculeFamily(options, store) {
1231
+ function createMoleculeFamily(store, options) {
1225
1232
  const subject = new Subject();
1226
1233
  const token = {
1227
1234
  type: `molecule_family`,
@@ -1239,7 +1246,7 @@ function createMoleculeFamily(options, store) {
1239
1246
 
1240
1247
  // internal/src/molecule/grow-molecule-in-store.ts
1241
1248
  function growMoleculeInStore(molecule, family, store) {
1242
- const stateToken = initFamilyMemberInStore(family, molecule.key, store);
1249
+ const stateToken = initFamilyMemberInStore(store, family, molecule.key);
1243
1250
  molecule.tokens.set(stateToken.key, stateToken);
1244
1251
  const isTransaction = isChildStore(store) && store.transactionMeta.phase === `building`;
1245
1252
  const moleculeInProgress = store.moleculeInProgress === molecule.key;
@@ -1312,16 +1319,16 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1312
1319
  owner.below.set(molecule.stringKey, molecule);
1313
1320
  }
1314
1321
  const toolkit = {
1315
- get: (...ps) => getFromStore(...ps, newest(rootStore)),
1322
+ get: (...ps) => getFromStore(newest(rootStore), ...ps),
1316
1323
  set: (...ps) => {
1317
- setIntoStore(...ps, newest(rootStore));
1324
+ setIntoStore(newest(rootStore), ...ps);
1318
1325
  },
1319
- seek: (t, k) => seekInStore(t, k, newest(rootStore)),
1320
- json: (t) => getJsonToken(t, newest(rootStore)),
1326
+ seek: (t, k) => seekInStore(newest(rootStore), t, k),
1327
+ json: (t) => getJsonToken(newest(rootStore), t),
1321
1328
  run: (t, i = arbitrary()) => actUponStore(t, i, newest(store)),
1322
1329
  make: (ctx, f, k, ...args) => makeMoleculeInStore(newest(rootStore), ctx, f, k, ...args),
1323
1330
  dispose: (t) => {
1324
- disposeFromStore(t, newest(rootStore));
1331
+ disposeFromStore(newest(rootStore), t);
1325
1332
  },
1326
1333
  env: () => getEnvironmentData(newest(rootStore)),
1327
1334
  bond: (token2, maybeRole) => {
@@ -1415,7 +1422,7 @@ function ingestCreationEvent(update, applying, store) {
1415
1422
  break;
1416
1423
  }
1417
1424
  case `oldValue`: {
1418
- disposeFromStore(update.token, store);
1425
+ disposeFromStore(store, update.token);
1419
1426
  break;
1420
1427
  }
1421
1428
  }
@@ -1423,7 +1430,7 @@ function ingestCreationEvent(update, applying, store) {
1423
1430
  function ingestDisposalEvent(update, applying, store) {
1424
1431
  switch (applying) {
1425
1432
  case `newValue`: {
1426
- disposeFromStore(update.token, store);
1433
+ disposeFromStore(store, update.token);
1427
1434
  break;
1428
1435
  }
1429
1436
  case `oldValue`: {
@@ -1445,7 +1452,7 @@ function createInStore(token, store) {
1445
1452
  if (store.config.lifespan === `immortal`) {
1446
1453
  throw new Error(`No molecule found for key "${token.family.subKey}"`);
1447
1454
  }
1448
- initFamilyMemberInStore(family, parseJson(token.family.subKey), store);
1455
+ initFamilyMemberInStore(store, family, parseJson(token.family.subKey));
1449
1456
  }
1450
1457
  }
1451
1458
  }
@@ -1461,14 +1468,14 @@ function ingestMoleculeCreationEvent(update, applying, store) {
1461
1468
  );
1462
1469
  break;
1463
1470
  case `oldValue`:
1464
- disposeFromStore(update.token, store);
1471
+ disposeFromStore(store, update.token);
1465
1472
  break;
1466
1473
  }
1467
1474
  }
1468
1475
  function ingestMoleculeDisposalEvent(update, applying, store) {
1469
1476
  switch (applying) {
1470
1477
  case `newValue`:
1471
- disposeFromStore(update.token, store);
1478
+ disposeFromStore(store, update.token);
1472
1479
  break;
1473
1480
  case `oldValue`:
1474
1481
  {
@@ -1687,17 +1694,17 @@ var buildTransaction = (key, params, store, id) => {
1687
1694
  output: void 0
1688
1695
  },
1689
1696
  toolkit: {
1690
- get: (...ps) => getFromStore(...ps, child),
1697
+ get: (...ps) => getFromStore(child, ...ps),
1691
1698
  set: (...ps) => {
1692
- setIntoStore(...ps, child);
1699
+ setIntoStore(child, ...ps);
1693
1700
  },
1694
1701
  run: (token, identifier = arbitrary()) => actUponStore(token, identifier, child),
1695
- find: (token, k) => findInStore(token, k, child),
1696
- seek: (token, k) => seekInStore(token, k, child),
1697
- json: (token) => getJsonToken(token, child),
1702
+ find: (token, k) => findInStore(child, token, k),
1703
+ seek: (token, k) => seekInStore(child, token, k),
1704
+ json: (token) => getJsonToken(child, token),
1698
1705
  make: (context, family, k, ...args) => makeMoleculeInStore(child, context, family, k, ...args),
1699
1706
  dispose: (...ps) => {
1700
- disposeFromStore(...ps, child);
1707
+ disposeFromStore(child, ...ps);
1701
1708
  },
1702
1709
  env: () => getEnvironmentData(child)
1703
1710
  }
@@ -1871,7 +1878,7 @@ var Store = class {
1871
1878
  }
1872
1879
  atom.install(this);
1873
1880
  if (atom.type === `mutable_atom`) {
1874
- const originalJsonToken = getJsonToken(atom, store);
1881
+ const originalJsonToken = getJsonToken(store, atom);
1875
1882
  const originalUpdateToken = getUpdateToken(atom);
1876
1883
  mutableHelpers.add(originalJsonToken.key);
1877
1884
  mutableHelpers.add(originalUpdateToken.key);
@@ -1964,6 +1971,19 @@ var recallState = (state, store) => {
1964
1971
  }
1965
1972
  return target.valueMap.get(state.key);
1966
1973
  };
1974
+ function subscribeInStore(store, token, handleUpdate, key = arbitrary$1()) {
1975
+ switch (token.type) {
1976
+ case `atom`:
1977
+ case `mutable_atom`:
1978
+ case `readonly_selector`:
1979
+ case `selector`:
1980
+ return subscribeToState(token, handleUpdate, key, store);
1981
+ case `transaction`:
1982
+ return subscribeToTransaction(token, handleUpdate, key, store);
1983
+ case `timeline`:
1984
+ return subscribeToTimeline(token, handleUpdate, key, store);
1985
+ }
1986
+ }
1967
1987
 
1968
1988
  // internal/src/subscribe/subscribe-to-root-atoms.ts
1969
1989
  var subscribeToRootAtoms = (selector, store) => {
@@ -2010,7 +2030,7 @@ var subscribeToRootAtoms = (selector, store) => {
2010
2030
  };
2011
2031
 
2012
2032
  // internal/src/subscribe/subscribe-to-state.ts
2013
- function subscribeToState(token, handleUpdate, key, store) {
2033
+ function subscribeToState2(token, handleUpdate, key, store) {
2014
2034
  function safelyHandleUpdate(update) {
2015
2035
  if (store.operation.open) {
2016
2036
  const unsubscribe2 = store.on.operationClose.subscribe(
@@ -2058,7 +2078,7 @@ function subscribeToState(token, handleUpdate, key, store) {
2058
2078
  }
2059
2079
 
2060
2080
  // internal/src/subscribe/subscribe-to-timeline.ts
2061
- var subscribeToTimeline = (token, handleUpdate, key, store) => {
2081
+ var subscribeToTimeline2 = (token, handleUpdate, key, store) => {
2062
2082
  const tl = withdraw(token, store);
2063
2083
  store.logger.info(`\u{1F440}`, `timeline`, token.key, `Adding subscription "${key}"`);
2064
2084
  const unsubscribe = tl.subject.subscribe(key, handleUpdate);
@@ -2074,7 +2094,7 @@ var subscribeToTimeline = (token, handleUpdate, key, store) => {
2074
2094
  };
2075
2095
 
2076
2096
  // internal/src/subscribe/subscribe-to-transaction.ts
2077
- var subscribeToTransaction = (token, handleUpdate, key, store) => {
2097
+ var subscribeToTransaction2 = (token, handleUpdate, key, store) => {
2078
2098
  const tx = withdraw(token, store);
2079
2099
  store.logger.info(
2080
2100
  `\u{1F440}`,
@@ -2106,12 +2126,12 @@ var Tracker = class {
2106
2126
  subKey: mutableState.family.subKey
2107
2127
  } : void 0;
2108
2128
  const latestUpdateState = createRegularAtom(
2129
+ store,
2109
2130
  {
2110
2131
  key: latestUpdateStateKey,
2111
2132
  default: null
2112
2133
  },
2113
- familyMetaData,
2114
- store
2134
+ familyMetaData
2115
2135
  );
2116
2136
  if (store.parent?.valueMap.has(latestUpdateStateKey)) {
2117
2137
  const parentValue = store.parent.valueMap.get(latestUpdateStateKey);
@@ -2123,14 +2143,14 @@ var Tracker = class {
2123
2143
  unsubscribeFromState;
2124
2144
  observeCore(mutableState, latestUpdateState, target) {
2125
2145
  const subscriptionKey = `tracker:${target.config.name}:${isChildStore(target) ? target.transactionMeta.update.key : `main`}:${mutableState.key}`;
2126
- const originalInnerValue = getFromStore(mutableState, target);
2146
+ const originalInnerValue = getFromStore(target, mutableState);
2127
2147
  this.unsubscribeFromInnerValue = originalInnerValue.subscribe(
2128
2148
  subscriptionKey,
2129
2149
  (update) => {
2130
- setIntoStore(latestUpdateState, update, target);
2150
+ setIntoStore(target, latestUpdateState, update);
2131
2151
  }
2132
2152
  );
2133
- this.unsubscribeFromState = subscribeToState(
2153
+ this.unsubscribeFromState = subscribeToState2(
2134
2154
  mutableState,
2135
2155
  (update) => {
2136
2156
  if (update.newValue !== update.oldValue) {
@@ -2138,7 +2158,7 @@ var Tracker = class {
2138
2158
  this.unsubscribeFromInnerValue = update.newValue.subscribe(
2139
2159
  subscriptionKey,
2140
2160
  (transceiverUpdate) => {
2141
- setIntoStore(latestUpdateState, transceiverUpdate, target);
2161
+ setIntoStore(target, latestUpdateState, transceiverUpdate);
2142
2162
  }
2143
2163
  );
2144
2164
  }
@@ -2149,7 +2169,7 @@ var Tracker = class {
2149
2169
  }
2150
2170
  updateCore(mutableState, latestUpdateState, target) {
2151
2171
  const subscriptionKey = `tracker:${target.config.name}:${isChildStore(target) ? target.transactionMeta.update.key : `main`}:${mutableState.key}`;
2152
- subscribeToState(
2172
+ subscribeToState2(
2153
2173
  latestUpdateState,
2154
2174
  ({ newValue, oldValue }) => {
2155
2175
  const timelineId = target.timelineTopics.getRelatedKey(
@@ -2158,22 +2178,18 @@ var Tracker = class {
2158
2178
  if (timelineId) {
2159
2179
  const timelineData = target.timelines.get(timelineId);
2160
2180
  if (timelineData?.timeTraveling) {
2161
- const unsubscribe2 = subscribeToTimeline(
2181
+ const unsubscribe2 = subscribeToTimeline2(
2162
2182
  { key: timelineId, type: `timeline` },
2163
2183
  (update) => {
2164
2184
  unsubscribe2();
2165
- setIntoStore(
2166
- mutableState,
2167
- (transceiver) => {
2168
- if (update === `redo` && newValue) {
2169
- transceiver.do(newValue);
2170
- } else if (update === `undo` && oldValue) {
2171
- transceiver.undo(oldValue);
2172
- }
2173
- return transceiver;
2174
- },
2175
- target
2176
- );
2185
+ setIntoStore(target, mutableState, (transceiver) => {
2186
+ if (update === `redo` && newValue) {
2187
+ transceiver.do(newValue);
2188
+ } else if (update === `undo` && oldValue) {
2189
+ transceiver.undo(oldValue);
2190
+ }
2191
+ return transceiver;
2192
+ });
2177
2193
  },
2178
2194
  subscriptionKey,
2179
2195
  target
@@ -2185,14 +2201,14 @@ var Tracker = class {
2185
2201
  subscriptionKey,
2186
2202
  () => {
2187
2203
  unsubscribe();
2188
- const mutable = getFromStore(mutableState, target);
2204
+ const mutable = getFromStore(target, mutableState);
2189
2205
  const updateNumber = newValue === null ? -1 : mutable.getUpdateNumber(newValue);
2190
2206
  const eventOffset = updateNumber - mutable.cacheUpdateNumber;
2191
2207
  if (newValue && eventOffset === 1) {
2192
2208
  setIntoStore(
2209
+ target,
2193
2210
  mutableState,
2194
- (transceiver) => (transceiver.do(newValue), transceiver),
2195
- target
2211
+ (transceiver) => (transceiver.do(newValue), transceiver)
2196
2212
  );
2197
2213
  } else {
2198
2214
  target.logger.info(
@@ -2228,7 +2244,7 @@ var Tracker = class {
2228
2244
  };
2229
2245
 
2230
2246
  // internal/src/mutable/create-mutable-atom.ts
2231
- function createMutableAtom(options, family, store) {
2247
+ function createMutableAtom(store, options, family) {
2232
2248
  store.logger.info(
2233
2249
  `\u{1F528}`,
2234
2250
  `atom`,
@@ -2257,7 +2273,7 @@ function createMutableAtom(options, family, store) {
2257
2273
  options.key,
2258
2274
  `installing in store "${s.config.name}"`
2259
2275
  );
2260
- return createMutableAtom(options, family, s);
2276
+ return createMutableAtom(s, options, family);
2261
2277
  },
2262
2278
  subject
2263
2279
  };
@@ -2275,9 +2291,9 @@ function createMutableAtom(options, family, store) {
2275
2291
  for (const effect of options.effects) {
2276
2292
  const cleanup = effect({
2277
2293
  setSelf: (next) => {
2278
- setIntoStore(token, next, store);
2294
+ setIntoStore(store, token, next);
2279
2295
  },
2280
- onSet: (handle) => subscribeToState(token, handle, `effect[${effectIndex}]`, store)
2296
+ onSet: (handle) => subscribeToState2(token, handle, `effect[${effectIndex}]`, store)
2281
2297
  });
2282
2298
  if (cleanup) {
2283
2299
  cleanupFunctions.push(cleanup);
@@ -2302,11 +2318,11 @@ var FamilyTracker = class {
2302
2318
  mutableAtoms;
2303
2319
  constructor(mutableAtoms, store) {
2304
2320
  const updateAtoms = createRegularAtomFamily(
2321
+ store,
2305
2322
  {
2306
2323
  key: `*${mutableAtoms.key}`,
2307
2324
  default: null
2308
2325
  },
2309
- store,
2310
2326
  [`mutable`, `updates`]
2311
2327
  );
2312
2328
  this.latestUpdateAtoms = withdraw(updateAtoms, store);
@@ -2316,7 +2332,7 @@ var FamilyTracker = class {
2316
2332
  (event) => {
2317
2333
  if (event.token.family) {
2318
2334
  const key = parseJson(event.token.family.subKey);
2319
- seekInStore(this.latestUpdateAtoms, key, store);
2335
+ seekInStore(store, this.latestUpdateAtoms, key);
2320
2336
  new Tracker(event.token, store);
2321
2337
  }
2322
2338
  }
@@ -2326,7 +2342,7 @@ var FamilyTracker = class {
2326
2342
  (event) => {
2327
2343
  if (event.token.family) {
2328
2344
  const key = parseJson(event.token.family.subKey);
2329
- const mutableAtomToken = seekInStore(this.mutableAtoms, key, store);
2345
+ const mutableAtomToken = seekInStore(store, this.mutableAtoms, key);
2330
2346
  if (mutableAtomToken) {
2331
2347
  new Tracker(mutableAtomToken, store);
2332
2348
  }
@@ -2337,12 +2353,22 @@ var FamilyTracker = class {
2337
2353
  };
2338
2354
 
2339
2355
  // internal/src/mutable/create-mutable-atom-family.ts
2340
- function createMutableAtomFamily(options, store, internalRoles) {
2356
+ function createMutableAtomFamily(store, options, internalRoles) {
2341
2357
  const familyToken = {
2342
2358
  key: options.key,
2343
2359
  type: `mutable_atom_family`
2344
2360
  };
2345
- throwInCaseOfConflictingFamily(familyToken, store);
2361
+ const existing = store.families.get(options.key);
2362
+ if (existing) {
2363
+ store.logger.error(
2364
+ `\u2757`,
2365
+ `mutable_atom_family`,
2366
+ options.key,
2367
+ `Overwriting an existing ${prettyPrintTokenType(
2368
+ existing
2369
+ )} "${existing.key}" in store "${store.config.name}". You can safely ignore this warning if it is due to hot module replacement.`
2370
+ );
2371
+ }
2346
2372
  const subject = new Subject();
2347
2373
  const familyFunction = (key) => {
2348
2374
  const subKey = stringifyJson(key);
@@ -2359,13 +2385,13 @@ function createMutableAtomFamily(options, store, internalRoles) {
2359
2385
  if (options.effects) {
2360
2386
  individualOptions.effects = options.effects(key);
2361
2387
  }
2362
- const token = createMutableAtom(individualOptions, family, target);
2388
+ const token = createMutableAtom(target, individualOptions, family);
2363
2389
  subject.next({ type: `state_creation`, token });
2364
2390
  return token;
2365
2391
  };
2366
2392
  const atomFamily = Object.assign(familyFunction, familyToken, {
2367
2393
  subject,
2368
- install: (s) => createMutableAtomFamily(options, s),
2394
+ install: (s) => createMutableAtomFamily(s, options),
2369
2395
  toJson: options.toJson,
2370
2396
  fromJson: options.fromJson,
2371
2397
  internalRoles
@@ -2385,7 +2411,7 @@ var getJsonFamily = (mutableAtomFamily, store) => {
2385
2411
  };
2386
2412
 
2387
2413
  // internal/src/mutable/get-json-token.ts
2388
- var getJsonToken = (mutableAtomToken, store) => {
2414
+ var getJsonToken = (store, mutableAtomToken) => {
2389
2415
  if (mutableAtomToken.family) {
2390
2416
  const target = newest(store);
2391
2417
  const jsonFamilyKey = `${mutableAtomToken.family.key}:JSON`;
@@ -2395,7 +2421,7 @@ var getJsonToken = (mutableAtomToken, store) => {
2395
2421
  };
2396
2422
  const family = withdraw(jsonFamilyToken, target);
2397
2423
  const subKey = JSON.parse(mutableAtomToken.family.subKey);
2398
- const jsonToken = findInStore(family, subKey, store);
2424
+ const jsonToken = findInStore(store, family, subKey);
2399
2425
  return jsonToken;
2400
2426
  }
2401
2427
  const token = {
@@ -2514,7 +2540,7 @@ var markAtomAsNotDefault = (key, store) => {
2514
2540
  };
2515
2541
 
2516
2542
  // internal/src/atom/create-regular-atom.ts
2517
- function createRegularAtom(options, family, store) {
2543
+ function createRegularAtom(store, options, family) {
2518
2544
  store.logger.info(
2519
2545
  `\u{1F528}`,
2520
2546
  `atom`,
@@ -2543,7 +2569,7 @@ function createRegularAtom(options, family, store) {
2543
2569
  options.key,
2544
2570
  `installing in store "${s.config.name}"`
2545
2571
  );
2546
- return createRegularAtom(options, family, s);
2572
+ return createRegularAtom(s, options, family);
2547
2573
  },
2548
2574
  subject
2549
2575
  };
@@ -2564,9 +2590,9 @@ function createRegularAtom(options, family, store) {
2564
2590
  for (const effect of options.effects) {
2565
2591
  const cleanup = effect({
2566
2592
  setSelf: (next) => {
2567
- setIntoStore(token, next, store);
2593
+ setIntoStore(store, token, next);
2568
2594
  },
2569
- onSet: (handle) => subscribeToState(token, handle, `effect[${effectIndex}]`, store)
2595
+ onSet: (handle) => subscribeToState2(token, handle, `effect[${effectIndex}]`, store)
2570
2596
  });
2571
2597
  if (cleanup) {
2572
2598
  cleanupFunctions.push(cleanup);
@@ -2583,14 +2609,14 @@ function createRegularAtom(options, family, store) {
2583
2609
  }
2584
2610
 
2585
2611
  // internal/src/atom/create-standalone-atom.ts
2586
- function createStandaloneAtom(options, store) {
2612
+ function createStandaloneAtom(store, options) {
2587
2613
  const isMutable = `mutable` in options;
2588
2614
  if (isMutable) {
2589
- const state2 = createMutableAtom(options, void 0, store);
2615
+ const state2 = createMutableAtom(store, options, void 0);
2590
2616
  store.on.atomCreation.next(state2);
2591
2617
  return state2;
2592
2618
  }
2593
- const state = createRegularAtom(options, void 0, store);
2619
+ const state = createRegularAtom(store, options, void 0);
2594
2620
  store.on.atomCreation.next(state);
2595
2621
  return state;
2596
2622
  }
@@ -3070,7 +3096,7 @@ function handleStateLifecycleEvent(event, tl, store) {
3070
3096
  }
3071
3097
 
3072
3098
  // internal/src/timeline/time-travel.ts
3073
- var timeTravel = (action, token, store) => {
3099
+ var timeTravel = (store, action, token) => {
3074
3100
  store.logger.info(
3075
3101
  action === `redo` ? `\u23E9` : `\u23EA`,
3076
3102
  `timeline`,
@@ -3145,4 +3171,4 @@ var timeTravel = (action, token, store) => {
3145
3171
  );
3146
3172
  };
3147
3173
 
3148
- 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, createWritableSelectorFamily, 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, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw };
3174
+ 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, createWritableSelectorFamily, 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, subscribeToState2 as subscribeToState, subscribeToTimeline2 as subscribeToTimeline, subscribeToTransaction2 as subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw };