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
@@ -27,8 +27,8 @@ export function syncContinuity<F extends Func>(
27
27
  store: Store,
28
28
  ): () => void {
29
29
  const continuityKey = continuity.key
30
- const optimisticUpdates = getFromStore(optimisticUpdateQueue, store)
31
- const confirmedUpdates = getFromStore(confirmedUpdateQueue, store)
30
+ const optimisticUpdates = getFromStore(store, optimisticUpdateQueue)
31
+ const confirmedUpdates = getFromStore(store, confirmedUpdateQueue)
32
32
 
33
33
  const initializeContinuity = (epoch: number, payload: Json.Array) => {
34
34
  socket.off(`continuity-init:${continuityKey}`, initializeContinuity)
@@ -41,9 +41,9 @@ export function syncContinuity<F extends Func>(
41
41
  } else {
42
42
  v = x
43
43
  if (`type` in k && k.type === `mutable_atom`) {
44
- k = getJsonToken(k, store)
44
+ k = getJsonToken(store, k)
45
45
  }
46
- setIntoStore(k, v, store)
46
+ setIntoStore(store, k, v)
47
47
  }
48
48
  i++
49
49
  }
@@ -65,14 +65,10 @@ export function syncContinuity<F extends Func>(
65
65
  continuityKey,
66
66
  `reconciling updates`,
67
67
  )
68
- setIntoStore(
69
- optimisticUpdateQueue,
70
- (queue) => {
71
- queue.shift()
72
- return queue
73
- },
74
- store,
75
- )
68
+ setIntoStore(store, optimisticUpdateQueue, (queue) => {
69
+ queue.shift()
70
+ return queue
71
+ })
76
72
  if (optimisticUpdate.id === confirmedUpdate.id) {
77
73
  const clientResult = JSON.stringify(optimisticUpdate.updates)
78
74
  const serverResult = JSON.stringify(confirmedUpdate.updates)
@@ -199,15 +195,11 @@ export function syncContinuity<F extends Func>(
199
195
  `pushing confirmed update to queue`,
200
196
  confirmed,
201
197
  )
202
- setIntoStore(
203
- confirmedUpdateQueue,
204
- (queue) => {
205
- queue.push(confirmed)
206
- queue.sort((a, b) => a.epoch - b.epoch)
207
- return queue
208
- },
209
- store,
210
- )
198
+ setIntoStore(store, confirmedUpdateQueue, (queue) => {
199
+ queue.push(confirmed)
200
+ queue.sort((a, b) => a.epoch - b.epoch)
201
+ return queue
202
+ })
211
203
  }
212
204
  }
213
205
  } else {
@@ -260,15 +252,11 @@ export function syncContinuity<F extends Func>(
260
252
  continuityKey,
261
253
  `pushing confirmed update #${confirmed.epoch} to queue`,
262
254
  )
263
- setIntoStore(
264
- confirmedUpdateQueue,
265
- (queue) => {
266
- queue.push(confirmed)
267
- queue.sort((a, b) => a.epoch - b.epoch)
268
- return queue
269
- },
270
- store,
271
- )
255
+ setIntoStore(store, confirmedUpdateQueue, (queue) => {
256
+ queue.push(confirmed)
257
+ queue.sort((a, b) => a.epoch - b.epoch)
258
+ return queue
259
+ })
272
260
  }
273
261
  }
274
262
  }
@@ -297,15 +285,11 @@ export function syncContinuity<F extends Func>(
297
285
  continuityKey,
298
286
  `enqueuing new optimistic update`,
299
287
  )
300
- setIntoStore(
301
- optimisticUpdateQueue,
302
- (queue) => {
303
- queue.push(clientUpdate)
304
- queue.sort((a, b) => a.epoch - b.epoch)
305
- return queue
306
- },
307
- store,
308
- )
288
+ setIntoStore(store, optimisticUpdateQueue, (queue) => {
289
+ queue.push(clientUpdate)
290
+ queue.sort((a, b) => a.epoch - b.epoch)
291
+ return queue
292
+ })
309
293
  } else {
310
294
  store.logger.info(
311
295
  `🤞`,
@@ -313,14 +297,10 @@ export function syncContinuity<F extends Func>(
313
297
  continuityKey,
314
298
  `replacing existing optimistic update at index ${optimisticUpdateIndex}`,
315
299
  )
316
- setIntoStore(
317
- optimisticUpdateQueue,
318
- (queue) => {
319
- queue[optimisticUpdateIndex] = clientUpdate
320
- return queue
321
- },
322
- store,
323
- )
300
+ setIntoStore(store, optimisticUpdateQueue, (queue) => {
301
+ queue[optimisticUpdateIndex] = clientUpdate
302
+ return queue
303
+ })
324
304
  }
325
305
  socket.emit(`tx-run:${continuityKey}`, {
326
306
  id: clientUpdate.id,
@@ -88,7 +88,7 @@ function usePullAtom(token) {
88
88
  }
89
89
  function usePullAtomFamilyMember(family, subKey) {
90
90
  const store = React.useContext(StoreContext);
91
- const token = findInStore(family, subKey, store);
91
+ const token = findInStore(store, family, subKey);
92
92
  useRealtimeService(
93
93
  `pull:${token.key}`,
94
94
  (socket) => RTC.pullAtomFamilyMember(token, socket, store)
@@ -105,7 +105,7 @@ function usePullMutable(token) {
105
105
  }
106
106
  function usePullMutableAtomFamilyMember(familyToken, key) {
107
107
  const store = React.useContext(StoreContext);
108
- const token = findInStore(familyToken, key, store);
108
+ const token = findInStore(store, familyToken, key);
109
109
  useRealtimeService(
110
110
  `pull:${token.key}`,
111
111
  (socket) => RTC.pullMutableAtomFamilyMember(token, socket, store)
@@ -122,7 +122,7 @@ function usePullSelector(token) {
122
122
  }
123
123
  function usePullSelectorFamilyMember(familyToken, key) {
124
124
  const store = React.useContext(StoreContext);
125
- const token = findInStore(familyToken, key, store);
125
+ const token = findInStore(store, familyToken, key);
126
126
  useRealtimeService(
127
127
  `pull:${token.key}`,
128
128
  (socket) => RTC.pullSelectorFamilyMember(token, socket, store)
@@ -13,7 +13,7 @@ export function usePullAtomFamilyMember<
13
13
  Key extends K,
14
14
  >(family: AtomIO.RegularAtomFamilyToken<J, K>, subKey: Key): J {
15
15
  const store = React.useContext(StoreContext)
16
- const token = findInStore(family, subKey, store)
16
+ const token = findInStore(store, family, subKey)
17
17
  useRealtimeService(`pull:${token.key}`, (socket) =>
18
18
  RTC.pullAtomFamilyMember(token, socket, store),
19
19
  )
@@ -15,7 +15,7 @@ export function usePullMutableAtomFamilyMember<
15
15
  Key extends K,
16
16
  >(familyToken: AtomIO.MutableAtomFamilyToken<T, J, K>, key: Key): T {
17
17
  const store = React.useContext(StoreContext)
18
- const token = findInStore(familyToken, key, store)
18
+ const token = findInStore(store, familyToken, key)
19
19
  useRealtimeService(`pull:${token.key}`, (socket) =>
20
20
  RTC.pullMutableAtomFamilyMember(token, socket, store),
21
21
  )
@@ -13,7 +13,7 @@ export function usePullSelectorFamilyMember<
13
13
  Key extends K,
14
14
  >(familyToken: AtomIO.SelectorFamilyToken<T, K>, key: Key): T {
15
15
  const store = React.useContext(StoreContext)
16
- const token = findInStore(familyToken, key, store)
16
+ const token = findInStore(store, familyToken, key)
17
17
  useRealtimeService(`pull:${token.key}`, (socket) =>
18
18
  RTC.pullSelectorFamilyMember(token, socket, store),
19
19
  )
@@ -484,7 +484,7 @@ function realtimeContinuitySynchronizer({
484
484
  socket.id,
485
485
  store
486
486
  ).userKeyOfSocket;
487
- const userKey = getFromStore(userKeyState, store);
487
+ const userKey = getFromStore(store, userKeyState);
488
488
  if (!userKey) {
489
489
  store.logger.error(
490
490
  `\u274C`,
@@ -518,28 +518,28 @@ function realtimeContinuitySynchronizer({
518
518
  );
519
519
  return;
520
520
  }
521
- const newSocketState = findInStore(socketAtoms, newSocketKey, store);
522
- const newSocket = getFromStore(newSocketState, store);
521
+ const newSocketState = findInStore(store, socketAtoms, newSocketKey);
522
+ const newSocket = getFromStore(store, newSocketState);
523
523
  socket = newSocket;
524
524
  },
525
525
  `sync-continuity:${continuityKey}:${userKey}`,
526
526
  store
527
527
  );
528
528
  const userUnacknowledgedQueue = findInStore(
529
+ store,
529
530
  userUnacknowledgedQueues,
530
- userKey,
531
- store
531
+ userKey
532
532
  );
533
533
  getFromStore(
534
- userUnacknowledgedQueue,
535
- store
534
+ store,
535
+ userUnacknowledgedQueue
536
536
  );
537
537
  const unsubscribeFunctions = [];
538
538
  const revealPerspectives = () => {
539
539
  const unsubFns = [];
540
540
  for (const perspective of continuity.perspectives) {
541
541
  const { viewAtoms } = perspective;
542
- const userViewState = findInStore(viewAtoms, userKey, store);
542
+ const userViewState = findInStore(store, viewAtoms, userKey);
543
543
  const unsubscribe = subscribeToState(
544
544
  userViewState,
545
545
  ({ oldValue, newValue }) => {
@@ -549,8 +549,8 @@ function realtimeContinuitySynchronizer({
549
549
  (token) => !newKeys.includes(token.key)
550
550
  );
551
551
  const revealed = newValue.filter((token) => !oldKeys.includes(token.key)).flatMap((token) => {
552
- const resourceToken = token.type === `mutable_atom` ? getJsonToken(token, store) : token;
553
- const resource = getFromStore(resourceToken, store);
552
+ const resourceToken = token.type === `mutable_atom` ? getJsonToken(store, token) : token;
553
+ const resource = getFromStore(store, resourceToken);
554
554
  return [resourceToken, resource];
555
555
  });
556
556
  store.logger.info(
@@ -580,21 +580,21 @@ function realtimeContinuitySynchronizer({
580
580
  const sendInitialPayload = () => {
581
581
  const initialPayload = [];
582
582
  for (const atom2 of continuity.globals) {
583
- const resourceToken = atom2.type === `mutable_atom` ? getJsonToken(atom2, store) : atom2;
584
- initialPayload.push(resourceToken, getFromStore(atom2, store));
583
+ const resourceToken = atom2.type === `mutable_atom` ? getJsonToken(store, atom2) : atom2;
584
+ initialPayload.push(resourceToken, getFromStore(store, atom2));
585
585
  }
586
586
  for (const perspective of continuity.perspectives) {
587
587
  const { viewAtoms, resourceAtoms } = perspective;
588
- const userViewState = findInStore(viewAtoms, userKey, store);
589
- const userView = getFromStore(userViewState, store);
588
+ const userViewState = findInStore(store, viewAtoms, userKey);
589
+ const userView = getFromStore(store, userViewState);
590
590
  store.logger.info(`\u{1F441}`, `atom`, resourceAtoms.key, `${userKey} can see`, {
591
591
  viewAtoms,
592
592
  resourceAtoms,
593
593
  userView
594
594
  });
595
595
  for (const visibleToken of userView) {
596
- const resourceToken = visibleToken.type === `mutable_atom` ? getJsonToken(visibleToken, store) : visibleToken;
597
- const resource = getFromStore(resourceToken, store);
596
+ const resourceToken = visibleToken.type === `mutable_atom` ? getJsonToken(store, visibleToken) : visibleToken;
597
+ const resource = getFromStore(store, resourceToken);
598
598
  initialPayload.push(resourceToken, resource);
599
599
  }
600
600
  }
@@ -609,13 +609,13 @@ function realtimeContinuitySynchronizer({
609
609
  continuity.perspectives.flatMap((perspective) => {
610
610
  const { viewAtoms } = perspective;
611
611
  const userPerspectiveTokenState = findInStore(
612
+ store,
612
613
  viewAtoms,
613
- userKey,
614
- store
614
+ userKey
615
615
  );
616
616
  const visibleTokens = getFromStore(
617
- userPerspectiveTokenState,
618
- store
617
+ store,
618
+ userPerspectiveTokenState
619
619
  );
620
620
  return visibleTokens.map((token) => {
621
621
  const key = token.type === `mutable_atom` ? `*` + token.key : token.key;
@@ -733,11 +733,11 @@ function realtimeAtomFamilyProvider({
733
733
  }
734
734
  };
735
735
  const fillSubRequest = (subKey) => {
736
- const exposedSubKeys = getFromStore(index, store);
736
+ const exposedSubKeys = getFromStore(store, index);
737
737
  for (const exposedSubKey of exposedSubKeys) {
738
738
  if (stringifyJson(exposedSubKey) === stringifyJson(subKey)) {
739
- const token = findInStore(family, subKey, store);
740
- socket.emit(`serve:${token.key}`, getFromStore(token, store));
739
+ const token = findInStore(store, family, subKey);
740
+ socket.emit(`serve:${token.key}`, getFromStore(store, token));
741
741
  const unsubscribe = subscribeToState(
742
742
  token,
743
743
  ({ newValue }) => {
@@ -779,14 +779,14 @@ function realtimeMutableFamilyProvider({
779
779
  }
780
780
  };
781
781
  const fillSubRequest = (subKey) => {
782
- const exposedSubKeys = getFromStore(index, store);
782
+ const exposedSubKeys = getFromStore(store, index);
783
783
  for (const exposedSubKey of exposedSubKeys) {
784
784
  if (stringifyJson(exposedSubKey) === stringifyJson(subKey)) {
785
- const token = findInStore(family, subKey, store);
786
- getFromStore(token, store);
787
- const jsonToken = getJsonToken(token, store);
785
+ const token = findInStore(store, family, subKey);
786
+ getFromStore(store, token);
787
+ const jsonToken = getJsonToken(store, token);
788
788
  const updateToken = getUpdateToken(token);
789
- socket.emit(`init:${token.key}`, getFromStore(jsonToken, store));
789
+ socket.emit(`init:${token.key}`, getFromStore(store, jsonToken));
790
790
  const unsubscribe = subscribeToState(
791
791
  updateToken,
792
792
  ({ newValue }) => {
@@ -819,7 +819,7 @@ function realtimeMutableProvider({
819
819
  }) {
820
820
  return function mutableProvider(token) {
821
821
  let unsubscribeFromStateUpdates = null;
822
- const jsonToken = getJsonToken(token, store);
822
+ const jsonToken = getJsonToken(store, token);
823
823
  const trackerToken = getUpdateToken(token);
824
824
  const fillUnsubRequest = () => {
825
825
  socket.off(`unsub:${token.key}`, fillUnsubRequest);
@@ -827,7 +827,7 @@ function realtimeMutableProvider({
827
827
  unsubscribeFromStateUpdates = null;
828
828
  };
829
829
  const fillSubRequest = () => {
830
- socket.emit(`init:${token.key}`, getFromStore(jsonToken, store));
830
+ socket.emit(`init:${token.key}`, getFromStore(store, jsonToken));
831
831
  unsubscribeFromStateUpdates = subscribeToState(
832
832
  trackerToken,
833
833
  ({ newValue }) => {
@@ -852,7 +852,7 @@ function realtimeStateProvider({
852
852
  return function stateProvider(token) {
853
853
  let unsubscribeFromStateUpdates;
854
854
  const fillSubRequest = () => {
855
- socket.emit(`serve:${token.key}`, getFromStore(token, store));
855
+ socket.emit(`serve:${token.key}`, getFromStore(store, token));
856
856
  unsubscribeFromStateUpdates = subscribeToState(
857
857
  token,
858
858
  ({ newValue }) => {
@@ -886,7 +886,7 @@ function realtimeStateReceiver({
886
886
  }) {
887
887
  return function stateReceiver(token) {
888
888
  const publish = (newValue) => {
889
- setIntoStore(token, newValue, store);
889
+ setIntoStore(store, token, newValue);
890
890
  };
891
891
  const fillPubUnclaim = () => {
892
892
  socket.off(`pub:${token.key}`, publish);
@@ -36,7 +36,7 @@ export function realtimeContinuitySynchronizer({
36
36
  socket.id,
37
37
  store,
38
38
  ).userKeyOfSocket
39
- const userKey = getFromStore(userKeyState, store)
39
+ const userKey = getFromStore(store, userKeyState)
40
40
  if (!userKey) {
41
41
  store.logger.error(
42
42
  `❌`,
@@ -70,8 +70,8 @@ export function realtimeContinuitySynchronizer({
70
70
  )
71
71
  return
72
72
  }
73
- const newSocketState = findInStore(socketAtoms, newSocketKey, store)
74
- const newSocket = getFromStore(newSocketState, store)
73
+ const newSocketState = findInStore(store, socketAtoms, newSocketKey)
74
+ const newSocket = getFromStore(store, newSocketState)
75
75
  socket = newSocket
76
76
  },
77
77
  `sync-continuity:${continuityKey}:${userKey}`,
@@ -79,13 +79,13 @@ export function realtimeContinuitySynchronizer({
79
79
  )
80
80
 
81
81
  const userUnacknowledgedQueue = findInStore(
82
+ store,
82
83
  userUnacknowledgedQueues,
83
84
  userKey,
84
- store,
85
85
  )
86
86
  const userUnacknowledgedUpdates = getFromStore(
87
- userUnacknowledgedQueue,
88
87
  store,
88
+ userUnacknowledgedQueue,
89
89
  )
90
90
  const unsubscribeFunctions: (() => void)[] = []
91
91
 
@@ -93,7 +93,7 @@ export function realtimeContinuitySynchronizer({
93
93
  const unsubFns: (() => void)[] = []
94
94
  for (const perspective of continuity.perspectives) {
95
95
  const { viewAtoms } = perspective
96
- const userViewState = findInStore(viewAtoms, userKey, store)
96
+ const userViewState = findInStore(store, viewAtoms, userKey)
97
97
  const unsubscribe = subscribeToState(
98
98
  userViewState,
99
99
  ({ oldValue, newValue }) => {
@@ -107,9 +107,9 @@ export function realtimeContinuitySynchronizer({
107
107
  .flatMap((token) => {
108
108
  const resourceToken =
109
109
  token.type === `mutable_atom`
110
- ? getJsonToken(token, store)
110
+ ? getJsonToken(store, token)
111
111
  : token
112
- const resource = getFromStore(resourceToken, store)
112
+ const resource = getFromStore(store, resourceToken)
113
113
  return [resourceToken, resource]
114
114
  })
115
115
  store.logger.info(
@@ -141,13 +141,13 @@ export function realtimeContinuitySynchronizer({
141
141
  const initialPayload: Json.Serializable[] = []
142
142
  for (const atom of continuity.globals) {
143
143
  const resourceToken =
144
- atom.type === `mutable_atom` ? getJsonToken(atom, store) : atom
145
- initialPayload.push(resourceToken, getFromStore(atom, store))
144
+ atom.type === `mutable_atom` ? getJsonToken(store, atom) : atom
145
+ initialPayload.push(resourceToken, getFromStore(store, atom))
146
146
  }
147
147
  for (const perspective of continuity.perspectives) {
148
148
  const { viewAtoms, resourceAtoms } = perspective
149
- const userViewState = findInStore(viewAtoms, userKey, store)
150
- const userView = getFromStore(userViewState, store)
149
+ const userViewState = findInStore(store, viewAtoms, userKey)
150
+ const userView = getFromStore(store, userViewState)
151
151
  store.logger.info(`👁`, `atom`, resourceAtoms.key, `${userKey} can see`, {
152
152
  viewAtoms,
153
153
  resourceAtoms,
@@ -156,9 +156,9 @@ export function realtimeContinuitySynchronizer({
156
156
  for (const visibleToken of userView) {
157
157
  const resourceToken =
158
158
  visibleToken.type === `mutable_atom`
159
- ? getJsonToken(visibleToken, store)
159
+ ? getJsonToken(store, visibleToken)
160
160
  : visibleToken
161
- const resource = getFromStore(resourceToken, store)
161
+ const resource = getFromStore(store, resourceToken)
162
162
 
163
163
  initialPayload.push(resourceToken, resource)
164
164
  }
@@ -181,13 +181,13 @@ export function realtimeContinuitySynchronizer({
181
181
  continuity.perspectives.flatMap((perspective) => {
182
182
  const { viewAtoms } = perspective
183
183
  const userPerspectiveTokenState = findInStore(
184
+ store,
184
185
  viewAtoms,
185
186
  userKey,
186
- store,
187
187
  )
188
188
  const visibleTokens = getFromStore(
189
- userPerspectiveTokenState,
190
189
  store,
190
+ userPerspectiveTokenState,
191
191
  )
192
192
  return visibleTokens.map((token) => {
193
193
  const key =
@@ -34,11 +34,11 @@ export function realtimeAtomFamilyProvider({
34
34
  }
35
35
 
36
36
  const fillSubRequest = (subKey: K) => {
37
- const exposedSubKeys = getFromStore(index, store)
37
+ const exposedSubKeys = getFromStore(store, index)
38
38
  for (const exposedSubKey of exposedSubKeys) {
39
39
  if (stringifyJson(exposedSubKey) === stringifyJson(subKey)) {
40
- const token = findInStore(family, subKey, store)
41
- socket.emit(`serve:${token.key}`, getFromStore(token, store))
40
+ const token = findInStore(store, family, subKey)
41
+ socket.emit(`serve:${token.key}`, getFromStore(store, token))
42
42
  const unsubscribe = subscribeToState(
43
43
  token,
44
44
  ({ newValue }) => {
@@ -40,14 +40,14 @@ export function realtimeMutableFamilyProvider({
40
40
  }
41
41
 
42
42
  const fillSubRequest = (subKey: K) => {
43
- const exposedSubKeys = getFromStore(index, store)
43
+ const exposedSubKeys = getFromStore(store, index)
44
44
  for (const exposedSubKey of exposedSubKeys) {
45
45
  if (stringifyJson(exposedSubKey) === stringifyJson(subKey)) {
46
- const token = findInStore(family, subKey, store)
47
- getFromStore(token, store)
48
- const jsonToken = getJsonToken(token, store)
46
+ const token = findInStore(store, family, subKey)
47
+ getFromStore(store, token)
48
+ const jsonToken = getJsonToken(store, token)
49
49
  const updateToken = getUpdateToken(token)
50
- socket.emit(`init:${token.key}`, getFromStore(jsonToken, store))
50
+ socket.emit(`init:${token.key}`, getFromStore(store, jsonToken))
51
51
  const unsubscribe = subscribeToState(
52
52
  updateToken,
53
53
  ({ newValue }) => {
@@ -22,7 +22,7 @@ export function realtimeMutableProvider({
22
22
  >(token: AtomIO.MutableAtomToken<Core, SerializableCore>): () => void {
23
23
  let unsubscribeFromStateUpdates: (() => void) | null = null
24
24
 
25
- const jsonToken = getJsonToken(token, store)
25
+ const jsonToken = getJsonToken(store, token)
26
26
  const trackerToken = getUpdateToken(token)
27
27
 
28
28
  const fillUnsubRequest = () => {
@@ -32,7 +32,7 @@ export function realtimeMutableProvider({
32
32
  }
33
33
 
34
34
  const fillSubRequest = () => {
35
- socket.emit(`init:${token.key}`, getFromStore(jsonToken, store))
35
+ socket.emit(`init:${token.key}`, getFromStore(store, jsonToken))
36
36
  unsubscribeFromStateUpdates = subscribeToState(
37
37
  trackerToken,
38
38
  ({ newValue }) => {
@@ -15,7 +15,7 @@ export function realtimeStateProvider({
15
15
  let unsubscribeFromStateUpdates: (() => void) | undefined
16
16
 
17
17
  const fillSubRequest = () => {
18
- socket.emit(`serve:${token.key}`, getFromStore(token, store))
18
+ socket.emit(`serve:${token.key}`, getFromStore(store, token))
19
19
 
20
20
  unsubscribeFromStateUpdates = subscribeToState(
21
21
  token,
@@ -13,7 +13,7 @@ export function realtimeStateReceiver({
13
13
  token: WritableToken<J>,
14
14
  ): () => void {
15
15
  const publish = (newValue: J) => {
16
- setIntoStore(token, newValue, store)
16
+ setIntoStore(store, token, newValue)
17
17
  }
18
18
 
19
19
  const fillPubUnclaim = () => {
@@ -29,8 +29,8 @@ var setupRealtimeTestServer = (options) => {
29
29
  const server = new SocketIO.Server(httpServer).use((socket, next) => {
30
30
  const { token, username } = socket.handshake.auth;
31
31
  if (token === `test` && socket.id) {
32
- const socketState = findInStore(RTS.socketAtoms, socket.id, silo.store);
33
- setIntoStore(socketState, socket, silo.store);
32
+ const socketState = findInStore(silo.store, RTS.socketAtoms, socket.id);
33
+ setIntoStore(silo.store, socketState, socket);
34
34
  editRelationsInStore(
35
35
  RTS.usersOfSockets,
36
36
  (relations) => {
@@ -38,8 +38,8 @@ var setupRealtimeTestServer = (options) => {
38
38
  },
39
39
  silo.store
40
40
  );
41
- setIntoStore(RTS.userIndex, (index) => index.add(username), silo.store);
42
- setIntoStore(RTS.socketIndex, (index) => index.add(socket.id), silo.store);
41
+ setIntoStore(silo.store, RTS.userIndex, (index) => index.add(username));
42
+ setIntoStore(silo.store, RTS.socketIndex, (index) => index.add(socket.id));
43
43
  console.log(`${username} connected on ${socket.id}`);
44
44
  next();
45
45
  } else {
@@ -51,10 +51,10 @@ var setupRealtimeTestServer = (options) => {
51
51
  });
52
52
  const dispose = () => {
53
53
  server.close();
54
- const roomKeys = getFromStore(RT.roomIndex, silo.store);
54
+ const roomKeys = getFromStore(silo.store, RT.roomIndex);
55
55
  for (const roomKey of roomKeys) {
56
- const roomState = findInStore(RTS.roomSelectors, roomKey, silo.store);
57
- const room = getFromStore(roomState, silo.store);
56
+ const roomState = findInStore(silo.store, RTS.roomSelectors, roomKey);
57
+ const room = getFromStore(silo.store, roomState);
58
58
  if (room && !(room instanceof Promise)) {
59
59
  room.process.kill();
60
60
  }
@@ -89,8 +89,8 @@ export const setupRealtimeTestServer = (
89
89
  const server = new SocketIO.Server(httpServer).use((socket, next) => {
90
90
  const { token, username } = socket.handshake.auth
91
91
  if (token === `test` && socket.id) {
92
- const socketState = findInStore(RTS.socketAtoms, socket.id, silo.store)
93
- setIntoStore(socketState, socket, silo.store)
92
+ const socketState = findInStore(silo.store, RTS.socketAtoms, socket.id)
93
+ setIntoStore(silo.store, socketState, socket)
94
94
  editRelationsInStore(
95
95
  RTS.usersOfSockets,
96
96
  (relations) => {
@@ -98,8 +98,8 @@ export const setupRealtimeTestServer = (
98
98
  },
99
99
  silo.store,
100
100
  )
101
- setIntoStore(RTS.userIndex, (index) => index.add(username), silo.store)
102
- setIntoStore(RTS.socketIndex, (index) => index.add(socket.id), silo.store)
101
+ setIntoStore(silo.store, RTS.userIndex, (index) => index.add(username))
102
+ setIntoStore(silo.store, RTS.socketIndex, (index) => index.add(socket.id))
103
103
  console.log(`${username} connected on ${socket.id}`)
104
104
  next()
105
105
  } else {
@@ -113,10 +113,10 @@ export const setupRealtimeTestServer = (
113
113
 
114
114
  const dispose = () => {
115
115
  server.close()
116
- const roomKeys = getFromStore(RT.roomIndex, silo.store)
116
+ const roomKeys = getFromStore(silo.store, RT.roomIndex)
117
117
  for (const roomKey of roomKeys) {
118
- const roomState = findInStore(RTS.roomSelectors, roomKey, silo.store)
119
- const room = getFromStore(roomState, silo.store)
118
+ const roomState = findInStore(silo.store, RTS.roomSelectors, roomKey)
119
+ const room = getFromStore(silo.store, roomState)
120
120
  if (room && !(room instanceof Promise)) {
121
121
  room.process.kill()
122
122
  }
package/src/atom.ts CHANGED
@@ -53,7 +53,7 @@ export function atom<T>(options: RegularAtomOptions<T>): RegularAtomToken<T>
53
53
  export function atom(
54
54
  options: MutableAtomOptions<any, any> | RegularAtomOptions<any>,
55
55
  ): AtomToken<any> {
56
- return createStandaloneAtom(options, IMPLICIT.STORE)
56
+ return createStandaloneAtom(IMPLICIT.STORE, options)
57
57
  }
58
58
 
59
59
  export type RegularAtomFamilyOptions<T, K extends Canonical> = {
@@ -112,5 +112,5 @@ export function atomFamily<T, K extends Canonical>(
112
112
  | MutableAtomFamilyOptions<any, any, any>
113
113
  | RegularAtomFamilyOptions<T, K>,
114
114
  ): MutableAtomFamilyToken<any, any, any> | RegularAtomFamilyToken<T, K> {
115
- return createAtomFamily(options, IMPLICIT.STORE)
115
+ return createAtomFamily(IMPLICIT.STORE, options)
116
116
  }
@@ -32,8 +32,8 @@ export function disposeState(
32
32
  key?: Json.Serializable,
33
33
  ): void {
34
34
  if (key) {
35
- Internal.disposeFromStore(token as any, key, Internal.IMPLICIT.STORE)
35
+ Internal.disposeFromStore(Internal.IMPLICIT.STORE, token as any, key)
36
36
  } else {
37
- Internal.disposeFromStore(token as any, Internal.IMPLICIT.STORE)
37
+ Internal.disposeFromStore(Internal.IMPLICIT.STORE, token as any)
38
38
  }
39
39
  }
package/src/get-state.ts CHANGED
@@ -26,19 +26,15 @@ export function getState<M extends MoleculeConstructor>(
26
26
  ): InstanceType<M>
27
27
 
28
28
  export function getState(
29
- token:
30
- | MoleculeFamilyToken<any>
31
- | MoleculeToken<any>
32
- | ReadableFamilyToken<any, any>
33
- | ReadableToken<any>,
34
- key?: Canonical,
29
+ ...params:
30
+ | [
31
+ token: MoleculeFamilyToken<any> | ReadableFamilyToken<any, any>,
32
+ key: Canonical,
33
+ ]
34
+ | [token: MoleculeToken<any> | ReadableToken<any>]
35
35
  ): any {
36
- if (key) {
37
- return Internal.getFromStore(
38
- token as any,
39
- key as any,
40
- Internal.IMPLICIT.STORE,
41
- )
36
+ if (params.length === 2) {
37
+ return Internal.getFromStore(Internal.IMPLICIT.STORE, ...params)
42
38
  }
43
- return Internal.getFromStore(token as any, Internal.IMPLICIT.STORE)
39
+ return Internal.getFromStore(Internal.IMPLICIT.STORE, ...params)
44
40
  }