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
@@ -5,19 +5,16 @@ import { stringifyJson } from 'atom.io/json';
5
5
  import { SetRTX } from 'atom.io/transceivers/set-rtx';
6
6
 
7
7
  function dict(family, index, store = IMPLICIT.STORE) {
8
- return createStandaloneSelector(
9
- {
10
- key: `${family.key}Dict`,
11
- get: ({ get }) => {
12
- const keys = get(index);
13
- return keys.reduce((acc, key) => {
14
- acc[key] = get(findInStore(family, key, store));
15
- return acc;
16
- }, {});
17
- }
18
- },
19
- store
20
- );
8
+ return createStandaloneSelector(store, {
9
+ key: `${family.key}Dict`,
10
+ get: ({ get }) => {
11
+ const keys = get(index);
12
+ return keys.reduce((acc, key) => {
13
+ acc[key] = get(findInStore(store, family, key));
14
+ return acc;
15
+ }, {});
16
+ }
17
+ });
21
18
  }
22
19
  function capitalize(string) {
23
20
  return string[0].toUpperCase() + string.slice(1);
@@ -61,15 +58,15 @@ var Join = class _Join {
61
58
  this.alternates.set(store.config.name, this);
62
59
  this.store.miscResources.set(`join:${options.key}`, this);
63
60
  this.toolkit = {
64
- get: (...ps) => getFromStore(...ps, store),
61
+ get: (...ps) => getFromStore(store, ...ps),
65
62
  set: (...ps) => {
66
- setIntoStore(...ps, store);
63
+ setIntoStore(store, ...ps);
67
64
  },
68
- find: (token, key) => findInStore(token, key, store),
69
- seek: (token, key) => seekInStore(token, key, store),
70
- json: (token) => getJsonToken(token, store),
65
+ find: (...ps) => findInStore(store, ...ps),
66
+ seek: (...ps) => seekInStore(store, ...ps),
67
+ json: (token) => getJsonToken(store, token),
71
68
  dispose: (...ps) => {
72
- disposeFromStore(...ps, store);
69
+ disposeFromStore(store, ...ps);
73
70
  }
74
71
  };
75
72
  this.retrieve = (token, key) => {
@@ -85,11 +82,12 @@ var Join = class _Join {
85
82
  if (store.config.lifespan === `immortal`) {
86
83
  throw new NotFoundError(token, key, store);
87
84
  }
88
- return initFamilyMemberInStore(token, key, store);
85
+ return initFamilyMemberInStore(store, token, key);
89
86
  };
90
87
  const aSide = options.between[0];
91
88
  const bSide = options.between[1];
92
89
  const relatedKeysAtoms = createMutableAtomFamily(
90
+ store,
93
91
  {
94
92
  key: `${options.key}/relatedKeys`,
95
93
  default: () => new SetRTX(),
@@ -97,7 +95,6 @@ var Join = class _Join {
97
95
  fromJson: (json) => SetRTX.fromJSON(json),
98
96
  toJson: (set) => set.toJSON()
99
97
  },
100
- store,
101
98
  [`join`, `relations`]
102
99
  );
103
100
  this.core = { findRelatedKeysState: relatedKeysAtoms };
@@ -228,11 +225,11 @@ var Join = class _Join {
228
225
  let contentMolecules;
229
226
  if (defaultContent) {
230
227
  contentAtoms = createRegularAtomFamily(
228
+ store,
231
229
  {
232
230
  key: `${options.key}/content`,
233
231
  default: defaultContent
234
232
  },
235
- store,
236
233
  [`join`, `content`]
237
234
  );
238
235
  const joinToken = {
@@ -242,18 +239,15 @@ var Join = class _Join {
242
239
  b: options.between[1],
243
240
  cardinality: options.cardinality
244
241
  };
245
- contentMolecules = createMoleculeFamily(
246
- {
247
- key: `${options.key}/content-molecules`,
248
- new: class ContentMolecule {
249
- constructor(toolkit, key) {
250
- this.key = key;
251
- toolkit.bond(joinToken, { as: null });
252
- }
242
+ contentMolecules = createMoleculeFamily(store, {
243
+ key: `${options.key}/content-molecules`,
244
+ new: class ContentMolecule {
245
+ constructor(toolkit, key) {
246
+ this.key = key;
247
+ toolkit.bond(joinToken, { as: null });
253
248
  }
254
- },
255
- store
256
- );
249
+ }
250
+ });
257
251
  const getContent = ({ get }, key) => get(this.retrieve(contentAtoms, key));
258
252
  const setContent = ({ set }, key, content) => {
259
253
  set(this.retrieve(contentAtoms, key), content);
@@ -309,6 +303,7 @@ var Join = class _Join {
309
303
  }
310
304
  });
311
305
  const createSingleKeyStateFamily = () => createReadonlySelectorFamily(
306
+ store,
312
307
  {
313
308
  key: `${options.key}/singleRelatedKey`,
314
309
  get: (key) => ({ get }) => {
@@ -320,11 +315,11 @@ var Join = class _Join {
320
315
  return null;
321
316
  }
322
317
  },
323
- store,
324
318
  [`join`, `keys`]
325
319
  );
326
320
  const getMultipleKeyStateFamily = () => {
327
321
  return createReadonlySelectorFamily(
322
+ store,
328
323
  {
329
324
  key: `${options.key}/multipleRelatedKeys`,
330
325
  get: (key) => ({ get }) => {
@@ -334,11 +329,11 @@ var Join = class _Join {
334
329
  return json.members;
335
330
  }
336
331
  },
337
- store,
338
332
  [`join`, `keys`]
339
333
  );
340
334
  };
341
335
  const createSingleEntryStateFamily = () => createReadonlySelectorFamily(
336
+ store,
342
337
  {
343
338
  key: `${options.key}/singleRelatedEntry`,
344
339
  get: (key) => ({ get }) => {
@@ -353,10 +348,10 @@ var Join = class _Join {
353
348
  return null;
354
349
  }
355
350
  },
356
- store,
357
351
  [`join`, `entries`]
358
352
  );
359
353
  const getMultipleEntryStateFamily = () => createReadonlySelectorFamily(
354
+ store,
360
355
  {
361
356
  key: `${options.key}/multipleRelatedEntries`,
362
357
  get: (key) => ({ get }) => {
@@ -371,7 +366,6 @@ var Join = class _Join {
371
366
  });
372
367
  }
373
368
  },
374
- store,
375
369
  [`join`, `entries`]
376
370
  );
377
371
  switch (options.cardinality) {
@@ -631,27 +625,24 @@ function struct(options, store = IMPLICIT.STORE) {
631
625
  const atoms = Object.keys(options.default).reduce((acc, key) => {
632
626
  const atomName = options.key + capitalize2(key) + `State`;
633
627
  acc[atomName] = createRegularAtom(
628
+ store,
634
629
  {
635
630
  key: `${options.key}.${key}`,
636
631
  default: options.default[key]
637
632
  },
638
- void 0,
639
- store
633
+ void 0
640
634
  );
641
635
  return acc;
642
636
  }, {});
643
- const structState = createStandaloneSelector(
644
- {
645
- key: options.key,
646
- get: ({ get }) => {
647
- return Object.keys(options.default).reduce((acc, key) => {
648
- acc[key] = get(atoms[options.key + capitalize2(key) + `State`]);
649
- return acc;
650
- }, {});
651
- }
652
- },
653
- store
654
- );
637
+ const structState = createStandaloneSelector(store, {
638
+ key: options.key,
639
+ get: ({ get }) => {
640
+ return Object.keys(options.default).reduce((acc, key) => {
641
+ acc[key] = get(atoms[options.key + capitalize2(key) + `State`]);
642
+ return acc;
643
+ }, {});
644
+ }
645
+ });
655
646
  return [atoms, structState];
656
647
  }
657
648
  var capitalize3 = (str) => str[0].toUpperCase() + str.slice(1);
@@ -659,29 +650,23 @@ var nameFamily = (topKey, subKey) => `find` + capitalize3(topKey) + capitalize3(
659
650
  function structFamily(options) {
660
651
  const atoms = Object.keys(options.default).reduce((acc, subKey) => {
661
652
  const atomFamilyName = nameFamily(options.key, subKey);
662
- acc[atomFamilyName] = createRegularAtomFamily(
663
- {
664
- key: `${options.key}.${subKey}`,
665
- default: options.default[subKey]
666
- },
667
- IMPLICIT.STORE
668
- );
653
+ acc[atomFamilyName] = createRegularAtomFamily(IMPLICIT.STORE, {
654
+ key: `${options.key}.${subKey}`,
655
+ default: options.default[subKey]
656
+ });
669
657
  return acc;
670
658
  }, {});
671
- const findStructState = createSelectorFamily(
672
- {
673
- key: options.key,
674
- get: (id) => ({ find, get }) => {
675
- return Object.keys(options.default).reduce((acc, subKey) => {
676
- acc[subKey] = get(
677
- find(atoms[nameFamily(options.key, subKey)], id)
678
- );
679
- return acc;
680
- }, {});
681
- }
682
- },
683
- IMPLICIT.STORE
684
- );
659
+ const findStructState = createSelectorFamily(IMPLICIT.STORE, {
660
+ key: options.key,
661
+ get: (id) => ({ find, get }) => {
662
+ return Object.keys(options.default).reduce((acc, subKey) => {
663
+ acc[subKey] = get(
664
+ find(atoms[nameFamily(options.key, subKey)], id)
665
+ );
666
+ return acc;
667
+ }, {});
668
+ }
669
+ });
685
670
  return [atoms, findStructState];
686
671
  }
687
672
 
package/data/src/dict.ts CHANGED
@@ -18,17 +18,14 @@ export function dict<State, Key extends Canonical>(
18
18
  | AtomIO.WritableSelectorToken<Key[]>,
19
19
  store: Store = IMPLICIT.STORE,
20
20
  ): AtomIO.ReadonlySelectorToken<{ [K in stringified<Key>]: State }> {
21
- return createStandaloneSelector(
22
- {
23
- key: `${family.key}Dict`,
24
- get: ({ get }) => {
25
- const keys = get(index)
26
- return keys.reduce((acc, key) => {
27
- acc[key] = get(findInStore(family, key, store))
28
- return acc
29
- }, {} as any)
30
- },
21
+ return createStandaloneSelector(store, {
22
+ key: `${family.key}Dict`,
23
+ get: ({ get }) => {
24
+ const keys = get(index)
25
+ return keys.reduce((acc, key) => {
26
+ acc[key] = get(findInStore(store, family, key))
27
+ return acc
28
+ }, {} as any)
31
29
  },
32
- store,
33
- )
30
+ })
34
31
  }
package/data/src/join.ts CHANGED
@@ -197,15 +197,17 @@ export class Join<
197
197
 
198
198
  this.toolkit = {
199
199
  get: ((...ps: Parameters<typeof getState>) =>
200
- getFromStore(...ps, store)) as typeof getState,
200
+ getFromStore(store, ...ps)) as typeof getState,
201
201
  set: ((...ps: Parameters<typeof setState>) => {
202
- setIntoStore(...ps, store)
202
+ setIntoStore(store, ...ps)
203
203
  }) as typeof setState,
204
- find: ((token, key) => findInStore(token, key, store)) as typeof findState,
205
- seek: ((token, key) => seekInStore(token, key, store)) as typeof seekState,
206
- json: (token) => getJsonToken(token, store),
204
+ find: ((...ps: Parameters<typeof findState>) =>
205
+ findInStore(store, ...ps)) as typeof findState,
206
+ seek: ((...ps: Parameters<typeof seekState>) =>
207
+ seekInStore(store, ...ps)) as typeof seekState,
208
+ json: (token) => getJsonToken(store, token),
207
209
  dispose: ((...ps: Parameters<typeof disposeState>) => {
208
- disposeFromStore(...ps, store)
210
+ disposeFromStore(store, ...ps)
209
211
  }) as typeof disposeState,
210
212
  }
211
213
  this.retrieve = ((
@@ -224,7 +226,7 @@ export class Join<
224
226
  if (store.config.lifespan === `immortal`) {
225
227
  throw new NotFoundError(token, key, store)
226
228
  }
227
- return initFamilyMemberInStore(token, key, store)
229
+ return initFamilyMemberInStore(store, token, key)
228
230
  }) as typeof findState
229
231
  const aSide: ASide = options.between[0]
230
232
  const bSide: BSide = options.between[1]
@@ -233,6 +235,7 @@ export class Join<
233
235
  SetRTXJson<string>,
234
236
  string
235
237
  >(
238
+ store,
236
239
  {
237
240
  key: `${options.key}/relatedKeys`,
238
241
  default: () => new SetRTX(),
@@ -240,7 +243,6 @@ export class Join<
240
243
  fromJson: (json) => SetRTX.fromJSON(json),
241
244
  toJson: (set) => set.toJSON(),
242
245
  },
243
- store,
244
246
  [`join`, `relations`],
245
247
  )
246
248
  this.core = { findRelatedKeysState: relatedKeysAtoms }
@@ -396,11 +398,11 @@ export class Join<
396
398
  >
397
399
  if (defaultContent) {
398
400
  contentAtoms = createRegularAtomFamily<Content, string>(
401
+ store,
399
402
  {
400
403
  key: `${options.key}/content`,
401
404
  default: defaultContent,
402
405
  },
403
- store,
404
406
  [`join`, `content`],
405
407
  )
406
408
  const joinToken = {
@@ -410,20 +412,17 @@ export class Join<
410
412
  b: options.between[1],
411
413
  cardinality: options.cardinality,
412
414
  } as const satisfies JoinToken<ASide, BSide, Cardinality, Content>
413
- contentMolecules = createMoleculeFamily(
414
- {
415
- key: `${options.key}/content-molecules`,
416
- new: class ContentMolecule {
417
- public constructor(
418
- toolkit: CtorToolkit<string>,
419
- public key: string,
420
- ) {
421
- toolkit.bond(joinToken, { as: null } as any)
422
- }
423
- },
415
+ contentMolecules = createMoleculeFamily(store, {
416
+ key: `${options.key}/content-molecules`,
417
+ new: class ContentMolecule {
418
+ public constructor(
419
+ toolkit: CtorToolkit<string>,
420
+ public key: string,
421
+ ) {
422
+ toolkit.bond(joinToken, { as: null } as any)
423
+ }
424
424
  },
425
- store,
426
- )
425
+ })
427
426
  const getContent: Read<(key: string) => Content | null> = ({ get }, key) =>
428
427
  get(this.retrieve(contentAtoms, key))
429
428
  const setContent: Write<(key: string, content: Content) => void> = (
@@ -490,6 +489,7 @@ export class Join<
490
489
 
491
490
  const createSingleKeyStateFamily = () =>
492
491
  createReadonlySelectorFamily<string | null, string>(
492
+ store,
493
493
  {
494
494
  key: `${options.key}/singleRelatedKey`,
495
495
  get:
@@ -503,11 +503,11 @@ export class Join<
503
503
  return null
504
504
  },
505
505
  },
506
- store,
507
506
  [`join`, `keys`],
508
507
  )
509
508
  const getMultipleKeyStateFamily = () => {
510
509
  return createReadonlySelectorFamily<string[], string>(
510
+ store,
511
511
  {
512
512
  key: `${options.key}/multipleRelatedKeys`,
513
513
  get:
@@ -519,12 +519,12 @@ export class Join<
519
519
  return json.members
520
520
  },
521
521
  },
522
- store,
523
522
  [`join`, `keys`],
524
523
  )
525
524
  }
526
525
  const createSingleEntryStateFamily = () =>
527
526
  createReadonlySelectorFamily<[string, Content] | null, string>(
527
+ store,
528
528
  {
529
529
  key: `${options.key}/singleRelatedEntry`,
530
530
  get:
@@ -541,11 +541,11 @@ export class Join<
541
541
  return null
542
542
  },
543
543
  },
544
- store,
545
544
  [`join`, `entries`],
546
545
  )
547
546
  const getMultipleEntryStateFamily = () =>
548
547
  createReadonlySelectorFamily<[string, Content][], string>(
548
+ store,
549
549
  {
550
550
  key: `${options.key}/multipleRelatedEntries`,
551
551
  get:
@@ -562,7 +562,6 @@ export class Join<
562
562
  })
563
563
  },
564
564
  },
565
- store,
566
565
  [`join`, `entries`],
567
566
  )
568
567
 
@@ -29,31 +29,25 @@ export function structFamily<
29
29
  >}State`]: AtomIO.RegularAtomFamilyToken<Struct[K], string>
30
30
  } = Object.keys(options.default).reduce((acc, subKey) => {
31
31
  const atomFamilyName = nameFamily(options.key, subKey)
32
- acc[atomFamilyName] = createRegularAtomFamily(
33
- {
34
- key: `${options.key}.${subKey}`,
35
- default: (options.default as any)[subKey],
36
- },
37
- IMPLICIT.STORE,
38
- )
32
+ acc[atomFamilyName] = createRegularAtomFamily(IMPLICIT.STORE, {
33
+ key: `${options.key}.${subKey}`,
34
+ default: (options.default as any)[subKey],
35
+ })
39
36
  return acc
40
37
  }, {} as any)
41
38
  const findStructState: AtomIO.ReadonlySelectorFamilyToken<Struct, string> =
42
- createSelectorFamily(
43
- {
44
- key: options.key,
45
- get:
46
- (id) =>
47
- ({ find, get }) => {
48
- return Object.keys(options.default).reduce((acc, subKey) => {
49
- acc[subKey] = get(
50
- find((atoms as any)[nameFamily(options.key, subKey)], id),
51
- )
52
- return acc
53
- }, {} as any)
54
- },
55
- },
56
- IMPLICIT.STORE,
57
- )
39
+ createSelectorFamily(IMPLICIT.STORE, {
40
+ key: options.key,
41
+ get:
42
+ (id) =>
43
+ ({ find, get }) => {
44
+ return Object.keys(options.default).reduce((acc, subKey) => {
45
+ acc[subKey] = get(
46
+ find((atoms as any)[nameFamily(options.key, subKey)], id),
47
+ )
48
+ return acc
49
+ }, {} as any)
50
+ },
51
+ })
58
52
  return [atoms, findStructState]
59
53
  }
@@ -32,26 +32,23 @@ export function struct<
32
32
  } = Object.keys(options.default).reduce((acc, key) => {
33
33
  const atomName = options.key + capitalize(key) + `State`
34
34
  acc[atomName] = createRegularAtom(
35
+ store,
35
36
  {
36
37
  key: `${options.key}.${key}`,
37
38
  default: options.default[key],
38
39
  },
39
40
  undefined,
40
- store,
41
41
  )
42
42
  return acc
43
43
  }, {} as any)
44
- const structState = createStandaloneSelector(
45
- {
46
- key: options.key,
47
- get: ({ get }) => {
48
- return Object.keys(options.default).reduce((acc, key) => {
49
- acc[key] = get(atoms[options.key + capitalize(key) + `State`])
50
- return acc
51
- }, {} as any)
52
- },
44
+ const structState = createStandaloneSelector(store, {
45
+ key: options.key,
46
+ get: ({ get }) => {
47
+ return Object.keys(options.default).reduce((acc, key) => {
48
+ acc[key] = get(atoms[options.key + capitalize(key) + `State`])
49
+ return acc
50
+ }, {} as any)
53
51
  },
54
- store,
55
- )
52
+ })
56
53
  return [atoms, structState]
57
54
  }