atom.io 0.27.3 → 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 (96) 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-ETCFHO7J.js → chunk-6ABWLAGY.js} +246 -159
  7. package/dist/index.d.ts +4 -4
  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 +88 -73
  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 +35 -7
  19. package/internal/src/families/create-regular-atom-family.ts +16 -6
  20. package/internal/src/families/create-selector-family.ts +5 -5
  21. package/internal/src/families/create-writable-selector-family.ts +35 -8
  22. package/internal/src/families/dispose-from-store.ts +22 -16
  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 -13
  26. package/internal/src/get-state/get-from-store.ts +58 -20
  27. package/internal/src/get-state/read-or-compute-value.ts +1 -1
  28. package/internal/src/index.ts +5 -3
  29. package/internal/src/ingest-updates/ingest-atom-update.ts +1 -1
  30. package/internal/src/ingest-updates/ingest-creation-disposal.ts +5 -5
  31. package/internal/src/molecule/create-molecule-family.ts +1 -1
  32. package/internal/src/molecule/dispose-molecule.ts +1 -1
  33. package/internal/src/molecule/grow-molecule-in-store.ts +1 -1
  34. package/internal/src/molecule/make-molecule-in-store.ts +5 -5
  35. package/internal/src/mutable/create-mutable-atom-family.ts +15 -6
  36. package/internal/src/mutable/create-mutable-atom.ts +3 -3
  37. package/internal/src/mutable/get-json-token.ts +2 -2
  38. package/internal/src/mutable/tracker-family.ts +3 -3
  39. package/internal/src/mutable/tracker.ts +14 -18
  40. package/internal/src/selector/create-readonly-selector.ts +2 -2
  41. package/internal/src/selector/create-standalone-selector.ts +5 -5
  42. package/internal/src/selector/create-writable-selector.ts +8 -8
  43. package/internal/src/selector/register-selector.ts +9 -9
  44. package/internal/src/set-state/set-into-store.ts +21 -18
  45. package/internal/src/store/deposit.ts +62 -21
  46. package/internal/src/store/store.ts +2 -1
  47. package/internal/src/subscribe/index.ts +2 -0
  48. package/internal/src/subscribe/subscribe-in-store.ts +62 -0
  49. package/internal/src/timeline/time-travel.ts +1 -1
  50. package/internal/src/transaction/build-transaction.ts +7 -6
  51. package/introspection/dist/index.js +66 -87
  52. package/introspection/src/attach-atom-index.ts +5 -8
  53. package/introspection/src/attach-selector-index.ts +6 -8
  54. package/introspection/src/attach-timeline-family.ts +25 -28
  55. package/introspection/src/attach-timeline-index.ts +5 -8
  56. package/introspection/src/attach-transaction-index.ts +5 -8
  57. package/introspection/src/attach-transaction-logs.ts +21 -27
  58. package/json/dist/index.js +12 -15
  59. package/json/src/select-json-family.ts +4 -4
  60. package/json/src/select-json.ts +6 -9
  61. package/package.json +4 -4
  62. package/react/dist/index.js +7 -7
  63. package/react/src/parse-state-overloads.ts +2 -2
  64. package/react/src/use-i.ts +1 -1
  65. package/react/src/use-json.ts +2 -2
  66. package/react/src/use-o.ts +2 -2
  67. package/realtime-client/dist/index.js +35 -55
  68. package/realtime-client/src/pull-atom-family-member.ts +1 -1
  69. package/realtime-client/src/pull-atom.ts +1 -1
  70. package/realtime-client/src/pull-mutable-atom-family-member.ts +3 -3
  71. package/realtime-client/src/pull-mutable-atom.ts +3 -3
  72. package/realtime-client/src/sync-continuity.ts +27 -47
  73. package/realtime-react/dist/index.js +3 -3
  74. package/realtime-react/src/use-pull-atom-family-member.ts +1 -1
  75. package/realtime-react/src/use-pull-mutable-family-member.ts +1 -1
  76. package/realtime-react/src/use-pull-selector-family-member.ts +1 -1
  77. package/realtime-server/dist/index.js +32 -32
  78. package/realtime-server/src/realtime-continuity-synchronizer.ts +16 -16
  79. package/realtime-server/src/realtime-family-provider.ts +3 -3
  80. package/realtime-server/src/realtime-mutable-family-provider.ts +5 -5
  81. package/realtime-server/src/realtime-mutable-provider.ts +2 -2
  82. package/realtime-server/src/realtime-state-provider.ts +1 -1
  83. package/realtime-server/src/realtime-state-receiver.ts +1 -1
  84. package/realtime-testing/dist/index.js +7 -7
  85. package/realtime-testing/src/setup-realtime-test.tsx +7 -7
  86. package/src/atom.ts +2 -2
  87. package/src/dispose-state.ts +2 -2
  88. package/src/get-state.ts +9 -13
  89. package/src/logger.ts +4 -0
  90. package/src/molecule.ts +1 -1
  91. package/src/selector.ts +2 -2
  92. package/src/set-state.ts +10 -7
  93. package/src/silo.ts +23 -53
  94. package/src/subscribe.ts +3 -23
  95. package/src/timeline.ts +2 -2
  96. 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) {
@@ -202,7 +203,7 @@ var readOrComputeValue = (state, target) => {
202
203
  target.logger.info(`\u{1F4D6}`, state.type, state.key, `reading cached value`);
203
204
  return readCachedValue(state, target);
204
205
  }
205
- if (state.type !== `atom` && state.type !== `mutable_atom`) {
206
+ if (state.type === `selector` || state.type === `readonly_selector`) {
206
207
  target.logger.info(`\u{1F9EE}`, state.type, state.key, `computing value`);
207
208
  return state.get();
208
209
  }
@@ -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,42 +468,62 @@ 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);
481
+ store.defaults.set(options.key, options.default);
484
482
  return familyToken;
485
483
  }
486
484
 
487
485
  // internal/src/families/create-atom-family.ts
488
- function createAtomFamily(options, store) {
486
+ function createAtomFamily(store, options) {
489
487
  const isMutable = `mutable` in options;
490
488
  if (isMutable) {
491
- return createMutableAtomFamily(options, store);
489
+ return createMutableAtomFamily(store, options);
492
490
  }
493
- return createRegularAtomFamily(options, store);
491
+ return createRegularAtomFamily(store, options);
494
492
  }
495
-
496
- // internal/src/get-state/get-from-store.ts
497
- function getFromStore(...params) {
493
+ function getFromStore(store, ...params) {
498
494
  let token;
499
- let store;
500
- if (params.length === 2) {
495
+ if (params.length === 1) {
501
496
  token = params[0];
502
- store = params[1];
503
497
  } else {
504
498
  const family = params[0];
505
499
  const key = params[1];
506
- store = params[2];
507
- 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);
508
501
  if (!maybeToken) {
509
- throw new NotFoundError(family, key, store);
502
+ store.logger.error(
503
+ `\u2757`,
504
+ family.type,
505
+ family.key,
506
+ `tried to get member`,
507
+ stringifyJson(key),
508
+ `but it was not found in store`,
509
+ store.config.name
510
+ );
511
+ switch (family.type) {
512
+ case `atom_family`:
513
+ case `mutable_atom_family`:
514
+ return store.defaults.get(family.key);
515
+ case `selector_family`:
516
+ case `readonly_selector_family`: {
517
+ if (store.defaults.has(family.key)) {
518
+ return store.defaults.get(family.key);
519
+ }
520
+ const defaultValue = withdraw(family, store).default(key);
521
+ store.defaults.set(family.key, defaultValue);
522
+ return defaultValue;
523
+ }
524
+ case `molecule_family`:
525
+ throw new NotFoundError(family, key, store);
526
+ }
510
527
  }
511
528
  token = maybeToken;
512
529
  }
@@ -606,12 +623,12 @@ var registerSelector = (selectorKey, covered, store) => ({
606
623
  const [family, key] = params;
607
624
  switch (family.type) {
608
625
  case `molecule_family`:
609
- return getFromStore(family, key, store);
626
+ return getFromStore(store, family, key);
610
627
  default:
611
628
  if (store.config.lifespan === `ephemeral`) {
612
- dependency = findInStore(family, key, store);
629
+ dependency = findInStore(store, family, key);
613
630
  } else {
614
- const maybeDependency = seekInStore(family, key, store);
631
+ const maybeDependency = seekInStore(store, family, key);
615
632
  if (maybeDependency) {
616
633
  dependency = maybeDependency;
617
634
  } else {
@@ -623,7 +640,7 @@ var registerSelector = (selectorKey, covered, store) => ({
623
640
  [dependency] = params;
624
641
  }
625
642
  if (dependency.type === `molecule`) {
626
- return getFromStore(dependency, store);
643
+ return getFromStore(store, dependency);
627
644
  }
628
645
  const dependencyState = withdraw(dependency, store);
629
646
  const dependencyValue = readOrComputeValue(dependencyState, store);
@@ -657,7 +674,7 @@ var registerSelector = (selectorKey, covered, store) => ({
657
674
  const family = params[0];
658
675
  const key = params[1];
659
676
  value = params[2];
660
- 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);
661
678
  if (!maybeToken) {
662
679
  throw new NotFoundError(family, key, store);
663
680
  }
@@ -667,13 +684,13 @@ var registerSelector = (selectorKey, covered, store) => ({
667
684
  const state = withdraw(token, target);
668
685
  setAtomOrSelector(state, value, target);
669
686
  },
670
- find: (token, key) => findInStore(token, key, store),
671
- seek: (token, key) => seekInStore(token, key, store),
672
- 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)
673
690
  });
674
691
 
675
692
  // internal/src/selector/create-readonly-selector.ts
676
- var createReadonlySelector = (options, family, store) => {
693
+ var createReadonlySelector = (store, options, family) => {
677
694
  const target = newest(store);
678
695
  const subject = new Subject();
679
696
  const covered = /* @__PURE__ */ new Set();
@@ -691,7 +708,7 @@ var createReadonlySelector = (options, family, store) => {
691
708
  const readonlySelector = {
692
709
  ...options,
693
710
  subject,
694
- install: (s) => createReadonlySelector(options, family, s),
711
+ install: (s) => createReadonlySelector(s, options, family),
695
712
  get: getSelf,
696
713
  type: `readonly_selector`,
697
714
  ...family && { family }
@@ -716,22 +733,22 @@ var createReadonlySelector = (options, family, store) => {
716
733
  };
717
734
 
718
735
  // internal/src/selector/create-writable-selector.ts
719
- var createWritableSelector = (options, family, store) => {
736
+ var createWritableSelector = (store, options, family) => {
720
737
  const target = newest(store);
721
738
  const subject = new Subject();
722
739
  const covered = /* @__PURE__ */ new Set();
723
- const toolkit = registerSelector(options.key, covered, target);
724
- const { find, get, seek, json } = toolkit;
740
+ const setterToolkit = registerSelector(options.key, covered, target);
741
+ const { find, get, seek, json } = setterToolkit;
725
742
  const getterToolkit = { find, get, seek, json };
726
- const getSelf = (innerTarget = newest(store)) => {
727
- const value = options.get(getterToolkit);
743
+ const getSelf = (getFn = options.get, innerTarget = newest(store)) => {
744
+ const value = getFn(getterToolkit);
728
745
  cacheValue(options.key, value, subject, innerTarget);
729
746
  covered.clear();
730
747
  return value;
731
748
  };
732
749
  const setSelf = (next) => {
733
750
  const innerTarget = newest(store);
734
- const oldValue = getSelf(innerTarget);
751
+ const oldValue = getSelf(options.get, innerTarget);
735
752
  const newValue = become(next)(oldValue);
736
753
  store.logger.info(
737
754
  `\u{1F4DD}`,
@@ -748,12 +765,12 @@ var createWritableSelector = (options, family, store) => {
748
765
  if (isRootStore(innerTarget)) {
749
766
  subject.next({ newValue, oldValue });
750
767
  }
751
- options.set(toolkit, newValue);
768
+ options.set(setterToolkit, newValue);
752
769
  };
753
770
  const mySelector = {
754
771
  ...options,
755
772
  subject,
756
- install: (s) => createWritableSelector(options, family, s),
773
+ install: (s) => createWritableSelector(s, options, family),
757
774
  get: getSelf,
758
775
  set: setSelf,
759
776
  type: `selector`,
@@ -773,14 +790,14 @@ var createWritableSelector = (options, family, store) => {
773
790
  };
774
791
 
775
792
  // internal/src/selector/create-standalone-selector.ts
776
- function createStandaloneSelector(options, store) {
793
+ function createStandaloneSelector(store, options) {
777
794
  const isWritable = `set` in options;
778
795
  if (isWritable) {
779
- const state2 = createWritableSelector(options, void 0, store);
796
+ const state2 = createWritableSelector(store, options, void 0);
780
797
  store.on.selectorCreation.next(state2);
781
798
  return state2;
782
799
  }
783
- const state = createReadonlySelector(options, void 0, store);
800
+ const state = createReadonlySelector(store, options, void 0);
784
801
  store.on.selectorCreation.next(state);
785
802
  return state;
786
803
  }
@@ -861,12 +878,22 @@ function disposeSelector(selectorToken, store) {
861
878
  }
862
879
 
863
880
  // internal/src/families/create-readonly-selector-family.ts
864
- function createReadonlySelectorFamily(options, store, internalRoles) {
881
+ function createReadonlySelectorFamily(store, options, internalRoles) {
865
882
  const familyToken = {
866
883
  key: options.key,
867
884
  type: `readonly_selector_family`
868
885
  };
869
- 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
+ }
870
897
  const subject = new Subject();
871
898
  const familyFunction = (key) => {
872
899
  const subKey = stringifyJson(key);
@@ -874,30 +901,49 @@ function createReadonlySelectorFamily(options, store, internalRoles) {
874
901
  const fullKey = `${options.key}(${subKey})`;
875
902
  const target = newest(store);
876
903
  const token = createReadonlySelector(
904
+ target,
877
905
  {
878
906
  key: fullKey,
879
907
  get: options.get(key)
880
908
  },
881
- family,
882
- target
909
+ family
883
910
  );
884
911
  subject.next({ type: `state_creation`, token });
885
912
  return token;
886
913
  };
887
914
  const readonlySelectorFamily = Object.assign(familyFunction, familyToken, {
915
+ internalRoles,
888
916
  subject,
889
- install: (s) => createReadonlySelectorFamily(options, s),
890
- internalRoles
917
+ install: (s) => createReadonlySelectorFamily(s, options),
918
+ default: (key) => {
919
+ const getFn = options.get(key);
920
+ return getFn({
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)
925
+ });
926
+ }
891
927
  });
892
928
  store.families.set(options.key, readonlySelectorFamily);
893
929
  return familyToken;
894
930
  }
895
- function createWritableSelectorFamily(options, store, internalRoles) {
931
+ function createWritableSelectorFamily(store, options, internalRoles) {
896
932
  const familyToken = {
897
933
  key: options.key,
898
934
  type: `selector_family`
899
935
  };
900
- 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
+ }
901
947
  const subject = new Subject();
902
948
  const familyFunction = (key) => {
903
949
  const subKey = stringifyJson(key);
@@ -905,33 +951,42 @@ function createWritableSelectorFamily(options, store, internalRoles) {
905
951
  const fullKey = `${options.key}(${subKey})`;
906
952
  const target = newest(store);
907
953
  const token = createWritableSelector(
954
+ target,
908
955
  {
909
956
  key: fullKey,
910
957
  get: options.get(key),
911
958
  set: options.set(key)
912
959
  },
913
- family,
914
- target
960
+ family
915
961
  );
916
962
  subject.next({ type: `state_creation`, token });
917
963
  return token;
918
964
  };
919
965
  const selectorFamily = Object.assign(familyFunction, familyToken, {
966
+ internalRoles,
920
967
  subject,
921
- install: (s) => createWritableSelectorFamily(options, s),
922
- internalRoles
968
+ install: (s) => createWritableSelectorFamily(s, options),
969
+ default: (key) => {
970
+ const getFn = options.get(key);
971
+ return getFn({
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)
976
+ });
977
+ }
923
978
  });
924
979
  store.families.set(options.key, selectorFamily);
925
980
  return familyToken;
926
981
  }
927
982
 
928
983
  // internal/src/families/create-selector-family.ts
929
- function createSelectorFamily(options, store) {
984
+ function createSelectorFamily(store, options) {
930
985
  const isWritable = `set` in options;
931
986
  if (isWritable) {
932
- return createWritableSelectorFamily(options, store);
987
+ return createWritableSelectorFamily(store, options);
933
988
  }
934
- return createReadonlySelectorFamily(options, store);
989
+ return createReadonlySelectorFamily(store, options);
935
990
  }
936
991
 
937
992
  // internal/src/molecule/dispose-molecule.ts
@@ -974,7 +1029,7 @@ function disposeMolecule(token, store) {
974
1029
  disposalEvent.family = token.family;
975
1030
  }
976
1031
  for (const state of molecule.tokens.values()) {
977
- disposeFromStore(state, store);
1032
+ disposeFromStore(store, state);
978
1033
  }
979
1034
  for (const child of molecule.below.values()) {
980
1035
  if (child.family?.dependsOn === `all`) {
@@ -1004,7 +1059,7 @@ function disposeMolecule(token, store) {
1004
1059
  }
1005
1060
 
1006
1061
  // internal/src/families/init-family-member.ts
1007
- function initFamilyMemberInStore(token, key, store) {
1062
+ function initFamilyMemberInStore(store, token, key) {
1008
1063
  const familyKey = token.key;
1009
1064
  const family = store.families.get(familyKey);
1010
1065
  if (family === void 0) {
@@ -1033,7 +1088,7 @@ function initFamilyMemberInStore(token, key, store) {
1033
1088
  }
1034
1089
  return state;
1035
1090
  }
1036
- function seekInStore(token, key, store) {
1091
+ function seekInStore(store, token, key) {
1037
1092
  const subKey = stringifyJson(key);
1038
1093
  const fullKey = `${token.key}(${subKey})`;
1039
1094
  const target = newest(store);
@@ -1051,9 +1106,6 @@ function seekInStore(token, key, store) {
1051
1106
  break;
1052
1107
  case `molecule_family`:
1053
1108
  state = target.molecules.get(stringifyJson(key));
1054
- if (state) {
1055
- return deposit(state);
1056
- }
1057
1109
  }
1058
1110
  if (state) {
1059
1111
  return deposit(state);
@@ -1062,34 +1114,40 @@ function seekInStore(token, key, store) {
1062
1114
  }
1063
1115
 
1064
1116
  // internal/src/families/find-in-store.ts
1065
- function findInStore(token, key, store) {
1117
+ function findInStore(store, token, key) {
1066
1118
  if (store.config.lifespan === `immortal`) {
1067
1119
  throw new Error(
1068
1120
  `Do not use \`find\` or \`findState\` in an immortal store. Prefer \`seek\` or \`seekState\`.`
1069
1121
  );
1070
1122
  }
1071
- let state = seekInStore(token, key, store);
1123
+ let state = seekInStore(store, token, key);
1072
1124
  if (state) {
1073
1125
  return state;
1074
1126
  }
1075
- state = initFamilyMemberInStore(token, key, store);
1127
+ state = initFamilyMemberInStore(store, token, key);
1076
1128
  return state;
1077
1129
  }
1078
1130
 
1079
1131
  // internal/src/families/dispose-from-store.ts
1080
- function disposeFromStore(...params) {
1132
+ function disposeFromStore(store, ...params) {
1081
1133
  let token;
1082
- let store;
1083
- if (params.length === 2) {
1134
+ if (params.length === 1) {
1084
1135
  token = params[0];
1085
- store = params[1];
1086
1136
  } else {
1087
1137
  const family = params[0];
1088
1138
  const key = params[1];
1089
- store = params[2];
1090
- 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);
1091
1140
  if (!maybeToken) {
1092
- throw new NotFoundError(family, key, store);
1141
+ store.logger.error(
1142
+ `\u2757`,
1143
+ family.type,
1144
+ family.key,
1145
+ `tried to dispose of member`,
1146
+ stringifyJson(key),
1147
+ `but it was not found in store`,
1148
+ store.config.name
1149
+ );
1150
+ return;
1093
1151
  }
1094
1152
  token = maybeToken;
1095
1153
  }
@@ -1109,22 +1167,30 @@ function disposeFromStore(...params) {
1109
1167
  }
1110
1168
 
1111
1169
  // internal/src/set-state/set-into-store.ts
1112
- function setIntoStore(...params) {
1170
+ function setIntoStore(store, ...params) {
1113
1171
  let token;
1114
1172
  let value;
1115
- let store;
1116
- if (params.length === 3) {
1173
+ if (params.length === 2) {
1117
1174
  token = params[0];
1118
1175
  value = params[1];
1119
- store = params[2];
1120
1176
  } else {
1121
1177
  const family = params[0];
1122
1178
  const key = params[1];
1123
1179
  value = params[2];
1124
- store = params[3];
1125
- 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);
1126
1181
  if (!maybeToken) {
1127
- throw new NotFoundError(family, key, store);
1182
+ store.logger.error(
1183
+ `\u2757`,
1184
+ family.type,
1185
+ family.key,
1186
+ `tried to set member`,
1187
+ stringifyJson(key),
1188
+ `to`,
1189
+ value,
1190
+ `but it was not found in store`,
1191
+ store.config.name
1192
+ );
1193
+ return;
1128
1194
  }
1129
1195
  token = maybeToken;
1130
1196
  }
@@ -1140,7 +1206,7 @@ function setIntoStore(...params) {
1140
1206
  token.key,
1141
1207
  `resuming deferred setState from T-${rejectionTime}`
1142
1208
  );
1143
- setIntoStore(token, value, store);
1209
+ setIntoStore(store, token, value);
1144
1210
  }
1145
1211
  );
1146
1212
  return;
@@ -1158,11 +1224,11 @@ function ingestAtomUpdate(applying, atomUpdate, store) {
1158
1224
  if (atomUpdate.family) {
1159
1225
  Object.assign(token, { family: atomUpdate.family });
1160
1226
  }
1161
- setIntoStore(token, value, store);
1227
+ setIntoStore(store, token, value);
1162
1228
  }
1163
1229
 
1164
1230
  // internal/src/molecule/create-molecule-family.ts
1165
- function createMoleculeFamily(options, store) {
1231
+ function createMoleculeFamily(store, options) {
1166
1232
  const subject = new Subject();
1167
1233
  const token = {
1168
1234
  type: `molecule_family`,
@@ -1180,7 +1246,7 @@ function createMoleculeFamily(options, store) {
1180
1246
 
1181
1247
  // internal/src/molecule/grow-molecule-in-store.ts
1182
1248
  function growMoleculeInStore(molecule, family, store) {
1183
- const stateToken = initFamilyMemberInStore(family, molecule.key, store);
1249
+ const stateToken = initFamilyMemberInStore(store, family, molecule.key);
1184
1250
  molecule.tokens.set(stateToken.key, stateToken);
1185
1251
  const isTransaction = isChildStore(store) && store.transactionMeta.phase === `building`;
1186
1252
  const moleculeInProgress = store.moleculeInProgress === molecule.key;
@@ -1253,16 +1319,16 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1253
1319
  owner.below.set(molecule.stringKey, molecule);
1254
1320
  }
1255
1321
  const toolkit = {
1256
- get: (...ps) => getFromStore(...ps, newest(rootStore)),
1322
+ get: (...ps) => getFromStore(newest(rootStore), ...ps),
1257
1323
  set: (...ps) => {
1258
- setIntoStore(...ps, newest(rootStore));
1324
+ setIntoStore(newest(rootStore), ...ps);
1259
1325
  },
1260
- seek: (t, k) => seekInStore(t, k, newest(rootStore)),
1261
- json: (t) => getJsonToken(t, newest(rootStore)),
1326
+ seek: (t, k) => seekInStore(newest(rootStore), t, k),
1327
+ json: (t) => getJsonToken(newest(rootStore), t),
1262
1328
  run: (t, i = arbitrary()) => actUponStore(t, i, newest(store)),
1263
1329
  make: (ctx, f, k, ...args) => makeMoleculeInStore(newest(rootStore), ctx, f, k, ...args),
1264
1330
  dispose: (t) => {
1265
- disposeFromStore(t, newest(rootStore));
1331
+ disposeFromStore(newest(rootStore), t);
1266
1332
  },
1267
1333
  env: () => getEnvironmentData(newest(rootStore)),
1268
1334
  bond: (token2, maybeRole) => {
@@ -1356,7 +1422,7 @@ function ingestCreationEvent(update, applying, store) {
1356
1422
  break;
1357
1423
  }
1358
1424
  case `oldValue`: {
1359
- disposeFromStore(update.token, store);
1425
+ disposeFromStore(store, update.token);
1360
1426
  break;
1361
1427
  }
1362
1428
  }
@@ -1364,7 +1430,7 @@ function ingestCreationEvent(update, applying, store) {
1364
1430
  function ingestDisposalEvent(update, applying, store) {
1365
1431
  switch (applying) {
1366
1432
  case `newValue`: {
1367
- disposeFromStore(update.token, store);
1433
+ disposeFromStore(store, update.token);
1368
1434
  break;
1369
1435
  }
1370
1436
  case `oldValue`: {
@@ -1386,7 +1452,7 @@ function createInStore(token, store) {
1386
1452
  if (store.config.lifespan === `immortal`) {
1387
1453
  throw new Error(`No molecule found for key "${token.family.subKey}"`);
1388
1454
  }
1389
- initFamilyMemberInStore(family, parseJson(token.family.subKey), store);
1455
+ initFamilyMemberInStore(store, family, parseJson(token.family.subKey));
1390
1456
  }
1391
1457
  }
1392
1458
  }
@@ -1402,14 +1468,14 @@ function ingestMoleculeCreationEvent(update, applying, store) {
1402
1468
  );
1403
1469
  break;
1404
1470
  case `oldValue`:
1405
- disposeFromStore(update.token, store);
1471
+ disposeFromStore(store, update.token);
1406
1472
  break;
1407
1473
  }
1408
1474
  }
1409
1475
  function ingestMoleculeDisposalEvent(update, applying, store) {
1410
1476
  switch (applying) {
1411
1477
  case `newValue`:
1412
- disposeFromStore(update.token, store);
1478
+ disposeFromStore(store, update.token);
1413
1479
  break;
1414
1480
  case `oldValue`:
1415
1481
  {
@@ -1609,6 +1675,7 @@ var buildTransaction = (key, params, store, id) => {
1609
1675
  }),
1610
1676
  selectors: new LazyMap(parent.selectors),
1611
1677
  valueMap: new LazyMap(parent.valueMap),
1678
+ defaults: parent.defaults,
1612
1679
  molecules: new LazyMap(parent.molecules),
1613
1680
  moleculeFamilies: new LazyMap(parent.moleculeFamilies),
1614
1681
  moleculeInProgress: parent.moleculeInProgress,
@@ -1627,17 +1694,17 @@ var buildTransaction = (key, params, store, id) => {
1627
1694
  output: void 0
1628
1695
  },
1629
1696
  toolkit: {
1630
- get: (...ps) => getFromStore(...ps, child),
1697
+ get: (...ps) => getFromStore(child, ...ps),
1631
1698
  set: (...ps) => {
1632
- setIntoStore(...ps, child);
1699
+ setIntoStore(child, ...ps);
1633
1700
  },
1634
1701
  run: (token, identifier = arbitrary()) => actUponStore(token, identifier, child),
1635
- find: (token, k) => findInStore(token, k, child),
1636
- seek: (token, k) => seekInStore(token, k, child),
1637
- 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),
1638
1705
  make: (context, family, k, ...args) => makeMoleculeInStore(child, context, family, k, ...args),
1639
1706
  dispose: (...ps) => {
1640
- disposeFromStore(...ps, child);
1707
+ disposeFromStore(child, ...ps);
1641
1708
  },
1642
1709
  env: () => getEnvironmentData(child)
1643
1710
  }
@@ -1711,6 +1778,7 @@ var Store = class {
1711
1778
  parent = null;
1712
1779
  child = null;
1713
1780
  valueMap = /* @__PURE__ */ new Map();
1781
+ defaults = /* @__PURE__ */ new Map();
1714
1782
  atoms = /* @__PURE__ */ new Map();
1715
1783
  selectors = /* @__PURE__ */ new Map();
1716
1784
  readonlySelectors = /* @__PURE__ */ new Map();
@@ -1810,7 +1878,7 @@ var Store = class {
1810
1878
  }
1811
1879
  atom.install(this);
1812
1880
  if (atom.type === `mutable_atom`) {
1813
- const originalJsonToken = getJsonToken(atom, store);
1881
+ const originalJsonToken = getJsonToken(store, atom);
1814
1882
  const originalUpdateToken = getUpdateToken(atom);
1815
1883
  mutableHelpers.add(originalJsonToken.key);
1816
1884
  mutableHelpers.add(originalUpdateToken.key);
@@ -1903,6 +1971,19 @@ var recallState = (state, store) => {
1903
1971
  }
1904
1972
  return target.valueMap.get(state.key);
1905
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
+ }
1906
1987
 
1907
1988
  // internal/src/subscribe/subscribe-to-root-atoms.ts
1908
1989
  var subscribeToRootAtoms = (selector, store) => {
@@ -1949,7 +2030,7 @@ var subscribeToRootAtoms = (selector, store) => {
1949
2030
  };
1950
2031
 
1951
2032
  // internal/src/subscribe/subscribe-to-state.ts
1952
- function subscribeToState(token, handleUpdate, key, store) {
2033
+ function subscribeToState2(token, handleUpdate, key, store) {
1953
2034
  function safelyHandleUpdate(update) {
1954
2035
  if (store.operation.open) {
1955
2036
  const unsubscribe2 = store.on.operationClose.subscribe(
@@ -1997,7 +2078,7 @@ function subscribeToState(token, handleUpdate, key, store) {
1997
2078
  }
1998
2079
 
1999
2080
  // internal/src/subscribe/subscribe-to-timeline.ts
2000
- var subscribeToTimeline = (token, handleUpdate, key, store) => {
2081
+ var subscribeToTimeline2 = (token, handleUpdate, key, store) => {
2001
2082
  const tl = withdraw(token, store);
2002
2083
  store.logger.info(`\u{1F440}`, `timeline`, token.key, `Adding subscription "${key}"`);
2003
2084
  const unsubscribe = tl.subject.subscribe(key, handleUpdate);
@@ -2013,7 +2094,7 @@ var subscribeToTimeline = (token, handleUpdate, key, store) => {
2013
2094
  };
2014
2095
 
2015
2096
  // internal/src/subscribe/subscribe-to-transaction.ts
2016
- var subscribeToTransaction = (token, handleUpdate, key, store) => {
2097
+ var subscribeToTransaction2 = (token, handleUpdate, key, store) => {
2017
2098
  const tx = withdraw(token, store);
2018
2099
  store.logger.info(
2019
2100
  `\u{1F440}`,
@@ -2045,12 +2126,12 @@ var Tracker = class {
2045
2126
  subKey: mutableState.family.subKey
2046
2127
  } : void 0;
2047
2128
  const latestUpdateState = createRegularAtom(
2129
+ store,
2048
2130
  {
2049
2131
  key: latestUpdateStateKey,
2050
2132
  default: null
2051
2133
  },
2052
- familyMetaData,
2053
- store
2134
+ familyMetaData
2054
2135
  );
2055
2136
  if (store.parent?.valueMap.has(latestUpdateStateKey)) {
2056
2137
  const parentValue = store.parent.valueMap.get(latestUpdateStateKey);
@@ -2062,14 +2143,14 @@ var Tracker = class {
2062
2143
  unsubscribeFromState;
2063
2144
  observeCore(mutableState, latestUpdateState, target) {
2064
2145
  const subscriptionKey = `tracker:${target.config.name}:${isChildStore(target) ? target.transactionMeta.update.key : `main`}:${mutableState.key}`;
2065
- const originalInnerValue = getFromStore(mutableState, target);
2146
+ const originalInnerValue = getFromStore(target, mutableState);
2066
2147
  this.unsubscribeFromInnerValue = originalInnerValue.subscribe(
2067
2148
  subscriptionKey,
2068
2149
  (update) => {
2069
- setIntoStore(latestUpdateState, update, target);
2150
+ setIntoStore(target, latestUpdateState, update);
2070
2151
  }
2071
2152
  );
2072
- this.unsubscribeFromState = subscribeToState(
2153
+ this.unsubscribeFromState = subscribeToState2(
2073
2154
  mutableState,
2074
2155
  (update) => {
2075
2156
  if (update.newValue !== update.oldValue) {
@@ -2077,7 +2158,7 @@ var Tracker = class {
2077
2158
  this.unsubscribeFromInnerValue = update.newValue.subscribe(
2078
2159
  subscriptionKey,
2079
2160
  (transceiverUpdate) => {
2080
- setIntoStore(latestUpdateState, transceiverUpdate, target);
2161
+ setIntoStore(target, latestUpdateState, transceiverUpdate);
2081
2162
  }
2082
2163
  );
2083
2164
  }
@@ -2088,7 +2169,7 @@ var Tracker = class {
2088
2169
  }
2089
2170
  updateCore(mutableState, latestUpdateState, target) {
2090
2171
  const subscriptionKey = `tracker:${target.config.name}:${isChildStore(target) ? target.transactionMeta.update.key : `main`}:${mutableState.key}`;
2091
- subscribeToState(
2172
+ subscribeToState2(
2092
2173
  latestUpdateState,
2093
2174
  ({ newValue, oldValue }) => {
2094
2175
  const timelineId = target.timelineTopics.getRelatedKey(
@@ -2097,22 +2178,18 @@ var Tracker = class {
2097
2178
  if (timelineId) {
2098
2179
  const timelineData = target.timelines.get(timelineId);
2099
2180
  if (timelineData?.timeTraveling) {
2100
- const unsubscribe2 = subscribeToTimeline(
2181
+ const unsubscribe2 = subscribeToTimeline2(
2101
2182
  { key: timelineId, type: `timeline` },
2102
2183
  (update) => {
2103
2184
  unsubscribe2();
2104
- setIntoStore(
2105
- mutableState,
2106
- (transceiver) => {
2107
- if (update === `redo` && newValue) {
2108
- transceiver.do(newValue);
2109
- } else if (update === `undo` && oldValue) {
2110
- transceiver.undo(oldValue);
2111
- }
2112
- return transceiver;
2113
- },
2114
- target
2115
- );
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
+ });
2116
2193
  },
2117
2194
  subscriptionKey,
2118
2195
  target
@@ -2124,14 +2201,14 @@ var Tracker = class {
2124
2201
  subscriptionKey,
2125
2202
  () => {
2126
2203
  unsubscribe();
2127
- const mutable = getFromStore(mutableState, target);
2204
+ const mutable = getFromStore(target, mutableState);
2128
2205
  const updateNumber = newValue === null ? -1 : mutable.getUpdateNumber(newValue);
2129
2206
  const eventOffset = updateNumber - mutable.cacheUpdateNumber;
2130
2207
  if (newValue && eventOffset === 1) {
2131
2208
  setIntoStore(
2209
+ target,
2132
2210
  mutableState,
2133
- (transceiver) => (transceiver.do(newValue), transceiver),
2134
- target
2211
+ (transceiver) => (transceiver.do(newValue), transceiver)
2135
2212
  );
2136
2213
  } else {
2137
2214
  target.logger.info(
@@ -2167,7 +2244,7 @@ var Tracker = class {
2167
2244
  };
2168
2245
 
2169
2246
  // internal/src/mutable/create-mutable-atom.ts
2170
- function createMutableAtom(options, family, store) {
2247
+ function createMutableAtom(store, options, family) {
2171
2248
  store.logger.info(
2172
2249
  `\u{1F528}`,
2173
2250
  `atom`,
@@ -2196,7 +2273,7 @@ function createMutableAtom(options, family, store) {
2196
2273
  options.key,
2197
2274
  `installing in store "${s.config.name}"`
2198
2275
  );
2199
- return createMutableAtom(options, family, s);
2276
+ return createMutableAtom(s, options, family);
2200
2277
  },
2201
2278
  subject
2202
2279
  };
@@ -2214,9 +2291,9 @@ function createMutableAtom(options, family, store) {
2214
2291
  for (const effect of options.effects) {
2215
2292
  const cleanup = effect({
2216
2293
  setSelf: (next) => {
2217
- setIntoStore(token, next, store);
2294
+ setIntoStore(store, token, next);
2218
2295
  },
2219
- onSet: (handle) => subscribeToState(token, handle, `effect[${effectIndex}]`, store)
2296
+ onSet: (handle) => subscribeToState2(token, handle, `effect[${effectIndex}]`, store)
2220
2297
  });
2221
2298
  if (cleanup) {
2222
2299
  cleanupFunctions.push(cleanup);
@@ -2241,11 +2318,11 @@ var FamilyTracker = class {
2241
2318
  mutableAtoms;
2242
2319
  constructor(mutableAtoms, store) {
2243
2320
  const updateAtoms = createRegularAtomFamily(
2321
+ store,
2244
2322
  {
2245
2323
  key: `*${mutableAtoms.key}`,
2246
2324
  default: null
2247
2325
  },
2248
- store,
2249
2326
  [`mutable`, `updates`]
2250
2327
  );
2251
2328
  this.latestUpdateAtoms = withdraw(updateAtoms, store);
@@ -2255,7 +2332,7 @@ var FamilyTracker = class {
2255
2332
  (event) => {
2256
2333
  if (event.token.family) {
2257
2334
  const key = parseJson(event.token.family.subKey);
2258
- seekInStore(this.latestUpdateAtoms, key, store);
2335
+ seekInStore(store, this.latestUpdateAtoms, key);
2259
2336
  new Tracker(event.token, store);
2260
2337
  }
2261
2338
  }
@@ -2265,7 +2342,7 @@ var FamilyTracker = class {
2265
2342
  (event) => {
2266
2343
  if (event.token.family) {
2267
2344
  const key = parseJson(event.token.family.subKey);
2268
- const mutableAtomToken = seekInStore(this.mutableAtoms, key, store);
2345
+ const mutableAtomToken = seekInStore(store, this.mutableAtoms, key);
2269
2346
  if (mutableAtomToken) {
2270
2347
  new Tracker(mutableAtomToken, store);
2271
2348
  }
@@ -2276,12 +2353,22 @@ var FamilyTracker = class {
2276
2353
  };
2277
2354
 
2278
2355
  // internal/src/mutable/create-mutable-atom-family.ts
2279
- function createMutableAtomFamily(options, store, internalRoles) {
2356
+ function createMutableAtomFamily(store, options, internalRoles) {
2280
2357
  const familyToken = {
2281
2358
  key: options.key,
2282
2359
  type: `mutable_atom_family`
2283
2360
  };
2284
- 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
+ }
2285
2372
  const subject = new Subject();
2286
2373
  const familyFunction = (key) => {
2287
2374
  const subKey = stringifyJson(key);
@@ -2298,13 +2385,13 @@ function createMutableAtomFamily(options, store, internalRoles) {
2298
2385
  if (options.effects) {
2299
2386
  individualOptions.effects = options.effects(key);
2300
2387
  }
2301
- const token = createMutableAtom(individualOptions, family, target);
2388
+ const token = createMutableAtom(target, individualOptions, family);
2302
2389
  subject.next({ type: `state_creation`, token });
2303
2390
  return token;
2304
2391
  };
2305
2392
  const atomFamily = Object.assign(familyFunction, familyToken, {
2306
2393
  subject,
2307
- install: (s) => createMutableAtomFamily(options, s),
2394
+ install: (s) => createMutableAtomFamily(s, options),
2308
2395
  toJson: options.toJson,
2309
2396
  fromJson: options.fromJson,
2310
2397
  internalRoles
@@ -2324,7 +2411,7 @@ var getJsonFamily = (mutableAtomFamily, store) => {
2324
2411
  };
2325
2412
 
2326
2413
  // internal/src/mutable/get-json-token.ts
2327
- var getJsonToken = (mutableAtomToken, store) => {
2414
+ var getJsonToken = (store, mutableAtomToken) => {
2328
2415
  if (mutableAtomToken.family) {
2329
2416
  const target = newest(store);
2330
2417
  const jsonFamilyKey = `${mutableAtomToken.family.key}:JSON`;
@@ -2334,7 +2421,7 @@ var getJsonToken = (mutableAtomToken, store) => {
2334
2421
  };
2335
2422
  const family = withdraw(jsonFamilyToken, target);
2336
2423
  const subKey = JSON.parse(mutableAtomToken.family.subKey);
2337
- const jsonToken = findInStore(family, subKey, store);
2424
+ const jsonToken = findInStore(store, family, subKey);
2338
2425
  return jsonToken;
2339
2426
  }
2340
2427
  const token = {
@@ -2453,7 +2540,7 @@ var markAtomAsNotDefault = (key, store) => {
2453
2540
  };
2454
2541
 
2455
2542
  // internal/src/atom/create-regular-atom.ts
2456
- function createRegularAtom(options, family, store) {
2543
+ function createRegularAtom(store, options, family) {
2457
2544
  store.logger.info(
2458
2545
  `\u{1F528}`,
2459
2546
  `atom`,
@@ -2482,7 +2569,7 @@ function createRegularAtom(options, family, store) {
2482
2569
  options.key,
2483
2570
  `installing in store "${s.config.name}"`
2484
2571
  );
2485
- return createRegularAtom(options, family, s);
2572
+ return createRegularAtom(s, options, family);
2486
2573
  },
2487
2574
  subject
2488
2575
  };
@@ -2503,9 +2590,9 @@ function createRegularAtom(options, family, store) {
2503
2590
  for (const effect of options.effects) {
2504
2591
  const cleanup = effect({
2505
2592
  setSelf: (next) => {
2506
- setIntoStore(token, next, store);
2593
+ setIntoStore(store, token, next);
2507
2594
  },
2508
- onSet: (handle) => subscribeToState(token, handle, `effect[${effectIndex}]`, store)
2595
+ onSet: (handle) => subscribeToState2(token, handle, `effect[${effectIndex}]`, store)
2509
2596
  });
2510
2597
  if (cleanup) {
2511
2598
  cleanupFunctions.push(cleanup);
@@ -2522,14 +2609,14 @@ function createRegularAtom(options, family, store) {
2522
2609
  }
2523
2610
 
2524
2611
  // internal/src/atom/create-standalone-atom.ts
2525
- function createStandaloneAtom(options, store) {
2612
+ function createStandaloneAtom(store, options) {
2526
2613
  const isMutable = `mutable` in options;
2527
2614
  if (isMutable) {
2528
- const state2 = createMutableAtom(options, void 0, store);
2615
+ const state2 = createMutableAtom(store, options, void 0);
2529
2616
  store.on.atomCreation.next(state2);
2530
2617
  return state2;
2531
2618
  }
2532
- const state = createRegularAtom(options, void 0, store);
2619
+ const state = createRegularAtom(store, options, void 0);
2533
2620
  store.on.atomCreation.next(state);
2534
2621
  return state;
2535
2622
  }
@@ -3009,7 +3096,7 @@ function handleStateLifecycleEvent(event, tl, store) {
3009
3096
  }
3010
3097
 
3011
3098
  // internal/src/timeline/time-travel.ts
3012
- var timeTravel = (action, token, store) => {
3099
+ var timeTravel = (store, action, token) => {
3013
3100
  store.logger.info(
3014
3101
  action === `redo` ? `\u23E9` : `\u23EA`,
3015
3102
  `timeline`,
@@ -3084,4 +3171,4 @@ var timeTravel = (action, token, store) => {
3084
3171
  );
3085
3172
  };
3086
3173
 
3087
- 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 };