atom.io 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/data/dist/index.cjs +139 -66
  2. package/data/dist/index.d.ts +6 -0
  3. package/data/dist/index.js +3 -3
  4. package/data/src/join.ts +135 -56
  5. package/data/src/struct-family.ts +2 -2
  6. package/dist/{chunk-RT43TVKP.js → chunk-GVHKIJ3G.js} +1 -1
  7. package/dist/{chunk-KGZGBCYS.js → chunk-JA4V7TJY.js} +135 -62
  8. package/dist/index.cjs +2 -7
  9. package/dist/index.d.ts +29 -14
  10. package/dist/index.js +4 -8
  11. package/ephemeral/dist/index.cjs +11 -0
  12. package/ephemeral/dist/index.js +9 -0
  13. package/ephemeral/package.json +16 -0
  14. package/ephemeral/src/index.ts +1 -0
  15. package/eslint-plugin/dist/index.cjs +156 -1
  16. package/eslint-plugin/dist/index.js +156 -1
  17. package/eslint-plugin/src/rules/index.ts +1 -0
  18. package/eslint-plugin/src/rules/lifespan.ts +204 -0
  19. package/eslint-plugin/src/rules/synchronous-selector-dependencies.ts +1 -65
  20. package/eslint-plugin/src/walk.ts +73 -0
  21. package/immortal/dist/index.cjs +100 -0
  22. package/immortal/dist/index.js +97 -0
  23. package/immortal/package.json +16 -0
  24. package/immortal/src/index.ts +2 -0
  25. package/immortal/src/molecule.ts +134 -0
  26. package/immortal/src/seek-state.ts +60 -0
  27. package/internal/dist/index.cjs +211 -194
  28. package/internal/dist/index.d.ts +30 -14
  29. package/internal/dist/index.js +210 -194
  30. package/internal/src/atom/dispose-atom.ts +4 -1
  31. package/internal/src/families/create-readonly-selector-family.ts +9 -9
  32. package/internal/src/families/create-regular-atom-family.ts +15 -20
  33. package/internal/src/families/create-writable-selector-family.ts +6 -7
  34. package/internal/src/families/find-in-store.ts +11 -5
  35. package/internal/src/families/index.ts +2 -0
  36. package/internal/src/families/init-family-member.ts +91 -0
  37. package/internal/src/families/seek-in-store.ts +106 -0
  38. package/internal/src/future.ts +6 -20
  39. package/internal/src/get-state/get-from-store.ts +2 -3
  40. package/internal/src/mutable/create-mutable-atom-family.ts +17 -23
  41. package/internal/src/mutable/create-mutable-atom.ts +3 -1
  42. package/internal/src/mutable/get-json-family.ts +2 -2
  43. package/internal/src/mutable/get-json-token.ts +27 -12
  44. package/internal/src/mutable/tracker-family.ts +14 -12
  45. package/internal/src/mutable/tracker.ts +2 -24
  46. package/internal/src/not-found-error.ts +11 -3
  47. package/internal/src/operation.ts +0 -1
  48. package/internal/src/selector/create-readonly-selector.ts +2 -2
  49. package/internal/src/selector/create-writable-selector.ts +2 -2
  50. package/internal/src/selector/dispose-selector.ts +40 -23
  51. package/internal/src/selector/register-selector.ts +8 -5
  52. package/internal/src/set-state/set-into-store.ts +2 -2
  53. package/internal/src/store/index.ts +0 -1
  54. package/internal/src/store/store.ts +18 -5
  55. package/internal/src/subscribe/recall-state.ts +3 -3
  56. package/internal/src/subscribe/subscribe-to-state.ts +18 -5
  57. package/internal/src/transaction/build-transaction.ts +7 -2
  58. package/introspection/dist/index.cjs +39 -65
  59. package/introspection/dist/index.js +39 -65
  60. package/introspection/src/attach-atom-index.ts +38 -48
  61. package/introspection/src/attach-introspection-states.ts +0 -1
  62. package/introspection/src/attach-selector-index.ts +45 -50
  63. package/introspection/src/attach-timeline-family.ts +2 -17
  64. package/json/dist/index.cjs +38 -4
  65. package/json/dist/index.js +40 -6
  66. package/json/src/select-json-family.ts +46 -7
  67. package/package.json +31 -11
  68. package/react/dist/index.cjs +1 -1
  69. package/react/dist/index.js +1 -1
  70. package/react/src/use-json.ts +1 -1
  71. package/react-devtools/dist/index.cjs +11 -10
  72. package/react-devtools/dist/index.js +2 -1
  73. package/react-devtools/src/StateIndex.tsx +2 -1
  74. package/react-devtools/src/TimelineIndex.tsx +2 -1
  75. package/react-devtools/src/TransactionIndex.tsx +7 -7
  76. package/realtime-client/dist/index.cjs +3 -3
  77. package/realtime-client/dist/index.js +3 -3
  78. package/realtime-client/src/pull-mutable-atom-family-member.ts +1 -1
  79. package/realtime-client/src/pull-mutable-atom.ts +1 -1
  80. package/realtime-client/src/sync-continuity.ts +1 -2
  81. package/realtime-react/dist/index.cjs +1 -1
  82. package/realtime-react/dist/index.js +1 -1
  83. package/realtime-server/dist/index.cjs +18 -17
  84. package/realtime-server/dist/index.js +7 -6
  85. package/realtime-server/src/realtime-continuity-synchronizer.ts +5 -3
  86. package/realtime-server/src/realtime-mutable-family-provider.ts +2 -1
  87. package/realtime-server/src/realtime-mutable-provider.ts +1 -1
  88. package/realtime-testing/dist/index.cjs +6 -2
  89. package/realtime-testing/dist/index.js +8 -5
  90. package/realtime-testing/src/setup-realtime-test.tsx +5 -2
  91. package/src/atom.ts +10 -4
  92. package/src/index.ts +1 -2
  93. package/src/selector.ts +10 -4
  94. package/src/silo.ts +3 -3
  95. package/src/transaction.ts +5 -2
  96. package/src/validators.ts +0 -6
  97. package/internal/src/store/withdraw-new-family-member.ts +0 -69
  98. /package/{src → ephemeral/src}/find-state.ts +0 -0
  99. /package/src/{dispose.ts → dispose-state.ts} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atom.io",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "description": "Composable and testable reactive data library.",
5
5
  "homepage": "https://atom.io.fyi",
6
6
  "sideEffects": false,
@@ -48,32 +48,32 @@
48
48
  }
49
49
  },
50
50
  "devDependencies": {
51
- "@testing-library/react": "15.0.6",
51
+ "@testing-library/react": "15.0.7",
52
52
  "@types/eslint": "npm:@types/eslint@8.56.10",
53
53
  "@types/eslint-v9": "npm:@types/eslint@8.56.10",
54
54
  "@types/estree": "1.0.5",
55
55
  "@types/http-proxy": "1.17.14",
56
56
  "@types/npmlog": "7.0.0",
57
- "@types/react": "18.3.1",
57
+ "@types/react": "18.3.2",
58
58
  "@types/tmp": "0.2.6",
59
- "@typescript-eslint/parser": "7.8.0",
60
- "@typescript-eslint/rule-tester": "7.8.0",
59
+ "@typescript-eslint/parser": "7.9.0",
60
+ "@typescript-eslint/rule-tester": "7.9.0",
61
61
  "@vitest/coverage-v8": "1.6.0",
62
62
  "@vitest/ui": "1.6.0",
63
63
  "concurrently": "8.2.2",
64
- "drizzle-kit": "0.20.17",
64
+ "drizzle-kit": "0.21.2",
65
65
  "drizzle-orm": "0.30.10",
66
66
  "eslint": "npm:eslint@8.57.0",
67
- "eslint-v9": "npm:eslint@9.2.0",
68
- "framer-motion": "11.1.7",
69
- "happy-dom": "14.7.1",
67
+ "eslint-v9": "npm:eslint@9.3.0",
68
+ "framer-motion": "11.2.4",
69
+ "happy-dom": "14.11.0",
70
70
  "http-proxy": "1.18.1",
71
71
  "npmlog": "7.0.1",
72
72
  "postgres": "3.4.4",
73
- "preact": "10.21.0",
73
+ "preact": "10.22.0",
74
74
  "react": "18.3.1",
75
75
  "react-dom": "18.3.1",
76
- "react-router-dom": "6.23.0",
76
+ "react-router-dom": "6.23.1",
77
77
  "socket.io": "4.7.5",
78
78
  "socket.io-client": "4.7.5",
79
79
  "tmp": "0.2.3",
@@ -92,9 +92,15 @@
92
92
  "data/dist",
93
93
  "data/package.json",
94
94
  "data/src",
95
+ "ephemeral/dist",
96
+ "ephemeral/package.json",
97
+ "ephemeral/src",
95
98
  "eslint-plugin/dist",
96
99
  "eslint-plugin/package.json",
97
100
  "eslint-plugin/src",
101
+ "immortal/dist",
102
+ "immortal/package.json",
103
+ "immortal/src",
98
104
  "internal/dist",
99
105
  "internal/package.json",
100
106
  "internal/src",
@@ -144,6 +150,13 @@
144
150
  "import": "./data/dist/index.js",
145
151
  "require": "./data/dist/index.cjs"
146
152
  },
153
+ "./ephemeral/package.json": "./ephemeral/package.json",
154
+ "./ephemeral": {
155
+ "types": "./ephemeral/dist/index.d.ts",
156
+ "browser": "./ephemeral/dist/index.js",
157
+ "import": "./ephemeral/dist/index.js",
158
+ "require": "./ephemeral/dist/index.cjs"
159
+ },
147
160
  "./eslint-plugin/package.json": "./eslint-plugin/package.json",
148
161
  "./eslint-plugin": {
149
162
  "types": "./eslint-plugin/dist/index.d.ts",
@@ -151,6 +164,13 @@
151
164
  "import": "./eslint-plugin/dist/index.js",
152
165
  "require": "./eslint-plugin/dist/index.cjs"
153
166
  },
167
+ "./immortal/package.json": "./immortal/package.json",
168
+ "./immortal": {
169
+ "types": "./immortal/dist/index.d.ts",
170
+ "browser": "./immortal/dist/index.js",
171
+ "import": "./immortal/dist/index.js",
172
+ "require": "./immortal/dist/index.cjs"
173
+ },
154
174
  "./internal/package.json": "./internal/package.json",
155
175
  "./internal": {
156
176
  "types": "./internal/dist/index.d.ts",
@@ -54,7 +54,7 @@ function useO(token, key) {
54
54
  function useJSON(token, key) {
55
55
  const store = React5__namespace.useContext(StoreContext);
56
56
  const stateToken = token.type === `mutable_atom_family` ? internal.findInStore(token, key, store) : token;
57
- const jsonToken = internal.getJsonToken(stateToken);
57
+ const jsonToken = internal.getJsonToken(stateToken, store);
58
58
  return useO(jsonToken);
59
59
  }
60
60
  function useTL(token) {
@@ -32,7 +32,7 @@ function useO(token, key) {
32
32
  function useJSON(token, key) {
33
33
  const store = React5.useContext(StoreContext);
34
34
  const stateToken = token.type === `mutable_atom_family` ? findInStore(token, key, store) : token;
35
- const jsonToken = getJsonToken(stateToken);
35
+ const jsonToken = getJsonToken(stateToken, store);
36
36
  return useO(jsonToken);
37
37
  }
38
38
  function useTL(token) {
@@ -33,6 +33,6 @@ export function useJSON<
33
33
  token.type === `mutable_atom_family`
34
34
  ? findInStore(token, key as Key, store)
35
35
  : token
36
- const jsonToken = getJsonToken(stateToken)
36
+ const jsonToken = getJsonToken(stateToken, store)
37
37
  return useO(jsonToken)
38
38
  }
@@ -5,6 +5,7 @@ var introspection = require('atom.io/introspection');
5
5
  var react$1 = require('atom.io/react');
6
6
  var framerMotion = require('framer-motion');
7
7
  var react = require('react');
8
+ var ephemeral = require('atom.io/ephemeral');
8
9
  var jsxRuntime = require('react/jsx-runtime');
9
10
 
10
11
  var __defProp = Object.defineProperty;
@@ -1718,8 +1719,8 @@ var StateIndexTreeNode = ({ node, isOpenState }) => {
1718
1719
  const setIsOpen = react$1.useI(isOpenState);
1719
1720
  const isOpen = react$1.useO(isOpenState);
1720
1721
  for (const [key, childNode] of node.familyMembers) {
1721
- atom_io.findState(findViewIsOpenState, key);
1722
- atom_io.findState(findStateTypeState, childNode);
1722
+ ephemeral.findState(findViewIsOpenState, key);
1723
+ ephemeral.findState(findStateTypeState, childNode);
1723
1724
  }
1724
1725
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1725
1726
  /* @__PURE__ */ jsxRuntime.jsxs("header", { children: [
@@ -1740,8 +1741,8 @@ var StateIndexTreeNode = ({ node, isOpenState }) => {
1740
1741
  StateIndexNode,
1741
1742
  {
1742
1743
  node: childNode,
1743
- isOpenState: atom_io.findState(findViewIsOpenState, childNode.key),
1744
- typeState: atom_io.findState(findStateTypeState, childNode)
1744
+ isOpenState: ephemeral.findState(findViewIsOpenState, childNode.key),
1745
+ typeState: ephemeral.findState(findStateTypeState, childNode)
1745
1746
  },
1746
1747
  key
1747
1748
  )) : null
@@ -1764,8 +1765,8 @@ var StateIndex = ({ tokenIndex }) => {
1764
1765
  StateIndexNode,
1765
1766
  {
1766
1767
  node,
1767
- isOpenState: atom_io.findState(findViewIsOpenState, node.key),
1768
- typeState: atom_io.findState(findStateTypeState, node)
1768
+ isOpenState: ephemeral.findState(findViewIsOpenState, node.key),
1769
+ typeState: ephemeral.findState(findStateTypeState, node)
1769
1770
  },
1770
1771
  key
1771
1772
  );
@@ -1992,8 +1993,8 @@ var TimelineIndex = () => {
1992
1993
  TimelineLog,
1993
1994
  {
1994
1995
  token,
1995
- isOpenState: atom_io.findState(findViewIsOpenState, token.key),
1996
- timelineState: atom_io.findState(findTimelineState, token.key)
1996
+ isOpenState: ephemeral.findState(findViewIsOpenState, token.key),
1997
+ timelineState: ephemeral.findState(findTimelineState, token.key)
1997
1998
  },
1998
1999
  token.key
1999
2000
  );
@@ -2046,8 +2047,8 @@ var TransactionIndex = () => {
2046
2047
  TransactionLog,
2047
2048
  {
2048
2049
  token,
2049
- isOpenState: atom_io.findState(findViewIsOpenState, token.key),
2050
- logState: atom_io.findState(findTransactionLogState, token.key)
2050
+ isOpenState: ephemeral.findState(findViewIsOpenState, token.key),
2051
+ logState: ephemeral.findState(findTransactionLogState, token.key)
2051
2052
  },
2052
2053
  token.key
2053
2054
  );
@@ -2,11 +2,12 @@ import { pipe, ifDefined, isArray, isRecord, doesExtend, isPlainObject, raiseErr
2
2
  import { lazyLocalStorageEffect } from '../../dist/chunk-BWWVY5O5.js';
3
3
  import { JSON_TYPE_NAMES, isString, isNumber, isBoolean, stringifyJson, JSON_DEFAULTS } from '../../dist/chunk-BF4MVQF6.js';
4
4
  import { __spreadProps, __spreadValues, __objRest, __restKey } from '../../dist/chunk-F2X4B4VY.js';
5
- import { selectorFamily, atom, atomFamily, findState, undo, redo, getState } from 'atom.io';
5
+ import { selectorFamily, atom, atomFamily, undo, redo, getState } from 'atom.io';
6
6
  import { attachIntrospectionStates } from 'atom.io/introspection';
7
7
  import { useI, useO } from 'atom.io/react';
8
8
  import { motion, spring, LayoutGroup } from 'framer-motion';
9
9
  import { forwardRef, useRef, useState, useImperativeHandle, useLayoutEffect, Fragment as Fragment$1, Component, useId } from 'react';
10
+ import { findState } from 'atom.io/ephemeral';
10
11
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
11
12
 
12
13
  // ../anvl/src/refinement/can-exist.ts
@@ -3,7 +3,8 @@ import type {
3
3
  ReadonlySelectorToken,
4
4
  RegularAtomToken,
5
5
  } from "atom.io"
6
- import { findState, getState, selectorFamily } from "atom.io"
6
+ import { getState, selectorFamily } from "atom.io"
7
+ import { findState } from "atom.io/ephemeral"
7
8
  import type { FamilyNode, WritableTokenIndex } from "atom.io/introspection"
8
9
  import { useI, useO } from "atom.io/react"
9
10
  import type { FC } from "react"
@@ -3,7 +3,8 @@ import type {
3
3
  RegularAtomToken,
4
4
  TimelineToken,
5
5
  } from "atom.io"
6
- import { findState, redo, undo } from "atom.io"
6
+ import { redo, undo } from "atom.io"
7
+ import { findState } from "atom.io/ephemeral"
7
8
  import type { Timeline } from "atom.io/internal"
8
9
  import { useI, useO } from "atom.io/react"
9
10
  import { type FC, Fragment } from "react"
@@ -1,11 +1,11 @@
1
- import {
2
- findState,
3
- type Func,
4
- type ReadonlySelectorToken,
5
- type RegularAtomToken,
6
- type TransactionToken,
7
- type TransactionUpdate,
1
+ import type {
2
+ Func,
3
+ ReadonlySelectorToken,
4
+ RegularAtomToken,
5
+ TransactionToken,
6
+ TransactionUpdate,
8
7
  } from "atom.io"
8
+ import { findState } from "atom.io/ephemeral"
9
9
  import { useI, useO } from "atom.io/react"
10
10
  import type { FC } from "react"
11
11
 
@@ -56,7 +56,7 @@ function pullAtomFamilyMember(token, socket, store) {
56
56
  };
57
57
  }
58
58
  function pullMutableAtom(token, socket, store) {
59
- const jsonToken = Internal.getJsonToken(token);
59
+ const jsonToken = Internal.getJsonToken(token, store);
60
60
  const updateToken = Internal.getUpdateToken(token);
61
61
  socket.on(`init:${token.key}`, (data) => {
62
62
  Internal.setIntoStore(jsonToken, data, store);
@@ -83,7 +83,7 @@ function pullMutableAtomFamilyMember(token, socket, store) {
83
83
  const { key: familyKey, subKey: serializedSubKey } = token.family;
84
84
  const subKey = json.parseJson(serializedSubKey);
85
85
  socket.on(`init:${token.key}`, (data) => {
86
- const jsonToken = Internal.getJsonToken(token);
86
+ const jsonToken = Internal.getJsonToken(token, store);
87
87
  Internal.setIntoStore(jsonToken, data, store);
88
88
  });
89
89
  socket.on(
@@ -246,7 +246,7 @@ function syncContinuity(continuity, socket, store) {
246
246
  } else {
247
247
  v = x;
248
248
  if (`type` in k && k.type === `mutable_atom`) {
249
- k = Internal.getJsonToken(k);
249
+ k = Internal.getJsonToken(k, store);
250
250
  }
251
251
  Internal.setIntoStore(k, v, store);
252
252
  }
@@ -1,4 +1,4 @@
1
- export { syncContinuity } from '../../dist/chunk-RT43TVKP.js';
1
+ export { syncContinuity } from '../../dist/chunk-GVHKIJ3G.js';
2
2
  export { confirmedUpdateQueue, myIdState, myIdState__INTERNAL, myUsernameState, optimisticUpdateQueue } from '../../dist/chunk-O47EQUM6.js';
3
3
  import '../../dist/chunk-BWWVY5O5.js';
4
4
  import '../../dist/chunk-F2X4B4VY.js';
@@ -35,7 +35,7 @@ function pullAtomFamilyMember(token, socket, store) {
35
35
  };
36
36
  }
37
37
  function pullMutableAtom(token, socket, store) {
38
- const jsonToken = getJsonToken(token);
38
+ const jsonToken = getJsonToken(token, store);
39
39
  const updateToken = getUpdateToken(token);
40
40
  socket.on(`init:${token.key}`, (data) => {
41
41
  setIntoStore(jsonToken, data, store);
@@ -62,7 +62,7 @@ function pullMutableAtomFamilyMember(token, socket, store) {
62
62
  const { key: familyKey, subKey: serializedSubKey } = token.family;
63
63
  const subKey = parseJson(serializedSubKey);
64
64
  socket.on(`init:${token.key}`, (data) => {
65
- const jsonToken = getJsonToken(token);
65
+ const jsonToken = getJsonToken(token, store);
66
66
  setIntoStore(jsonToken, data, store);
67
67
  });
68
68
  socket.on(
@@ -20,7 +20,7 @@ export function pullMutableAtomFamilyMember<
20
20
  const { key: familyKey, subKey: serializedSubKey } = token.family
21
21
  const subKey = parseJson(serializedSubKey)
22
22
  socket.on(`init:${token.key}`, (data: J) => {
23
- const jsonToken = getJsonToken(token)
23
+ const jsonToken = getJsonToken(token, store)
24
24
  setIntoStore(jsonToken, data, store)
25
25
  })
26
26
  socket.on(
@@ -12,7 +12,7 @@ export function pullMutableAtom<
12
12
  socket: Socket,
13
13
  store: Store,
14
14
  ): () => void {
15
- const jsonToken = getJsonToken(token)
15
+ const jsonToken = getJsonToken(token, store)
16
16
  const updateToken = getUpdateToken(token)
17
17
  socket.on(`init:${token.key}`, (data: J) => {
18
18
  setIntoStore(jsonToken, data, store)
@@ -40,9 +40,8 @@ export function syncContinuity<F extends AtomIO.Func>(
40
40
  k = x
41
41
  } else {
42
42
  v = x
43
- // console.log(`❗❗❗❗❗`, k, v)
44
43
  if (`type` in k && k.type === `mutable_atom`) {
45
- k = getJsonToken(k)
44
+ k = getJsonToken(k, store)
46
45
  }
47
46
  setIntoStore(k, v, store)
48
47
  }
@@ -184,7 +184,7 @@ function syncContinuity(continuity, socket, store) {
184
184
  } else {
185
185
  v = x;
186
186
  if (`type` in k && k.type === `mutable_atom`) {
187
- k = internal.getJsonToken(k);
187
+ k = internal.getJsonToken(k, store);
188
188
  }
189
189
  internal.setIntoStore(k, v, store);
190
190
  }
@@ -1,4 +1,4 @@
1
- import { syncContinuity } from '../../dist/chunk-RT43TVKP.js';
1
+ import { syncContinuity } from '../../dist/chunk-GVHKIJ3G.js';
2
2
  import '../../dist/chunk-F2X4B4VY.js';
3
3
  import { useI, StoreContext, useO } from 'atom.io/react';
4
4
  import * as RTC from 'atom.io/realtime-client';
@@ -406,12 +406,12 @@ function findRelationsInStore(token, key, store) {
406
406
  relations = {
407
407
  get [keyAB]() {
408
408
  const familyAB = myJoin.states[keyAB];
409
- const state = internal.findInStore(familyAB, key, store);
409
+ const state = myJoin.retrieve(familyAB, key);
410
410
  return state;
411
411
  },
412
412
  get [keyBA]() {
413
413
  const familyBA = myJoin.states[keyBA];
414
- const state = internal.findInStore(familyBA, key, store);
414
+ const state = myJoin.retrieve(familyBA, key);
415
415
  return state;
416
416
  }
417
417
  };
@@ -421,12 +421,12 @@ function findRelationsInStore(token, key, store) {
421
421
  Object.assign(relations, {
422
422
  get [entryAB]() {
423
423
  const familyAB = myJoin.states[entryAB];
424
- const state = internal.findInStore(familyAB, key, store);
424
+ const state = myJoin.retrieve(familyAB, key);
425
425
  return state;
426
426
  },
427
427
  get [entryBA]() {
428
428
  const familyBA = myJoin.states[entryBA];
429
- const state = internal.findInStore(familyBA, key, store);
429
+ const state = myJoin.retrieve(familyBA, key);
430
430
  return state;
431
431
  }
432
432
  });
@@ -439,12 +439,12 @@ function findRelationsInStore(token, key, store) {
439
439
  relations = {
440
440
  get [keyAB]() {
441
441
  const familyAB = myJoin.states[keyAB];
442
- const state = internal.findInStore(familyAB, key, store);
442
+ const state = myJoin.retrieve(familyAB, key);
443
443
  return state;
444
444
  },
445
445
  get [keysBA]() {
446
446
  const familyBA = myJoin.states[keysBA];
447
- const state = internal.findInStore(familyBA, key, store);
447
+ const state = myJoin.retrieve(familyBA, key);
448
448
  return state;
449
449
  }
450
450
  };
@@ -454,12 +454,12 @@ function findRelationsInStore(token, key, store) {
454
454
  Object.assign(relations, {
455
455
  get [entryAB]() {
456
456
  const familyAB = myJoin.states[entryAB];
457
- const state = internal.findInStore(familyAB, key, store);
457
+ const state = myJoin.retrieve(familyAB, key);
458
458
  return state;
459
459
  },
460
460
  get [entriesBA]() {
461
461
  const familyBA = myJoin.states[entriesBA];
462
- const state = internal.findInStore(familyBA, key, store);
462
+ const state = myJoin.retrieve(familyBA, key);
463
463
  return state;
464
464
  }
465
465
  });
@@ -472,12 +472,12 @@ function findRelationsInStore(token, key, store) {
472
472
  relations = {
473
473
  get [keysAB]() {
474
474
  const familyAB = myJoin.states[keysAB];
475
- const state = internal.findInStore(familyAB, key, store);
475
+ const state = myJoin.retrieve(familyAB, key);
476
476
  return state;
477
477
  },
478
478
  get [keysBA]() {
479
479
  const familyBA = myJoin.states[keysBA];
480
- const state = internal.findInStore(familyBA, key, store);
480
+ const state = myJoin.retrieve(familyBA, key);
481
481
  return state;
482
482
  }
483
483
  };
@@ -487,12 +487,12 @@ function findRelationsInStore(token, key, store) {
487
487
  Object.assign(relations, {
488
488
  get [entriesAB]() {
489
489
  const familyAB = myJoin.states[entriesAB];
490
- const state = internal.findInStore(familyAB, key, store);
490
+ const state = myJoin.retrieve(familyAB, key);
491
491
  return state;
492
492
  },
493
493
  get [entriesBA]() {
494
494
  const familyBA = myJoin.states[entriesBA];
495
- const state = internal.findInStore(familyBA, key, store);
495
+ const state = myJoin.retrieve(familyBA, key);
496
496
  return state;
497
497
  }
498
498
  });
@@ -767,7 +767,7 @@ function realtimeContinuitySynchronizer({
767
767
  (token) => !newKeys.includes(token.key)
768
768
  );
769
769
  const revealed = newValue.filter((token) => !oldKeys.includes(token.key)).flatMap((token) => {
770
- const resourceToken = token.type === `mutable_atom` ? internal.getJsonToken(token) : token;
770
+ const resourceToken = token.type === `mutable_atom` ? internal.getJsonToken(token, store) : token;
771
771
  const resource = internal.getFromStore(resourceToken, store);
772
772
  return [resourceToken, resource];
773
773
  });
@@ -800,7 +800,7 @@ function realtimeContinuitySynchronizer({
800
800
  var _a;
801
801
  const initialPayload = [];
802
802
  for (const atom2 of continuity.globals) {
803
- const resourceToken = atom2.type === `mutable_atom` ? internal.getJsonToken(atom2) : atom2;
803
+ const resourceToken = atom2.type === `mutable_atom` ? internal.getJsonToken(atom2, store) : atom2;
804
804
  initialPayload.push(resourceToken, internal.getFromStore(atom2, store));
805
805
  }
806
806
  for (const perspective of continuity.perspectives) {
@@ -813,7 +813,7 @@ function realtimeContinuitySynchronizer({
813
813
  userView
814
814
  });
815
815
  for (const visibleToken of userView) {
816
- const resourceToken = visibleToken.type === `mutable_atom` ? internal.getJsonToken(visibleToken) : visibleToken;
816
+ const resourceToken = visibleToken.type === `mutable_atom` ? internal.getJsonToken(visibleToken, store) : visibleToken;
817
817
  const resource = internal.getFromStore(resourceToken, store);
818
818
  initialPayload.push(resourceToken, resource);
819
819
  }
@@ -1003,7 +1003,8 @@ function realtimeMutableFamilyProvider({
1003
1003
  for (const exposedSubKey of exposedSubKeys) {
1004
1004
  if (json.stringifyJson(exposedSubKey) === json.stringifyJson(subKey)) {
1005
1005
  const token = internal.findInStore(family, subKey, store);
1006
- const jsonToken = internal.getJsonToken(token);
1006
+ internal.getFromStore(token, store);
1007
+ const jsonToken = internal.getJsonToken(token, store);
1007
1008
  const updateToken = internal.getUpdateToken(token);
1008
1009
  socket.emit(`init:${token.key}`, internal.getFromStore(jsonToken, store));
1009
1010
  const unsubscribe = internal.subscribeToState(
@@ -1038,7 +1039,7 @@ function realtimeMutableProvider({
1038
1039
  }) {
1039
1040
  return function mutableProvider(token) {
1040
1041
  let unsubscribeFromStateUpdates = null;
1041
- const jsonToken = internal.getJsonToken(token);
1042
+ const jsonToken = internal.getJsonToken(token, store);
1042
1043
  const trackerToken = internal.getUpdateToken(token);
1043
1044
  const fillUnsubRequest = () => {
1044
1045
  socket.off(`unsub:${token.key}`, fillUnsubRequest);
@@ -1,4 +1,4 @@
1
- import { findRelationsInStore } from '../../dist/chunk-KGZGBCYS.js';
1
+ import { findRelationsInStore } from '../../dist/chunk-JA4V7TJY.js';
2
2
  import '../../dist/chunk-FTONNX2R.js';
3
3
  import { __spreadProps, __spreadValues } from '../../dist/chunk-F2X4B4VY.js';
4
4
  import { parseJson, stringifyJson } from 'atom.io/json';
@@ -597,7 +597,7 @@ function realtimeContinuitySynchronizer({
597
597
  (token) => !newKeys.includes(token.key)
598
598
  );
599
599
  const revealed = newValue.filter((token) => !oldKeys.includes(token.key)).flatMap((token) => {
600
- const resourceToken = token.type === `mutable_atom` ? getJsonToken(token) : token;
600
+ const resourceToken = token.type === `mutable_atom` ? getJsonToken(token, store) : token;
601
601
  const resource = getFromStore(resourceToken, store);
602
602
  return [resourceToken, resource];
603
603
  });
@@ -630,7 +630,7 @@ function realtimeContinuitySynchronizer({
630
630
  var _a;
631
631
  const initialPayload = [];
632
632
  for (const atom2 of continuity.globals) {
633
- const resourceToken = atom2.type === `mutable_atom` ? getJsonToken(atom2) : atom2;
633
+ const resourceToken = atom2.type === `mutable_atom` ? getJsonToken(atom2, store) : atom2;
634
634
  initialPayload.push(resourceToken, getFromStore(atom2, store));
635
635
  }
636
636
  for (const perspective of continuity.perspectives) {
@@ -643,7 +643,7 @@ function realtimeContinuitySynchronizer({
643
643
  userView
644
644
  });
645
645
  for (const visibleToken of userView) {
646
- const resourceToken = visibleToken.type === `mutable_atom` ? getJsonToken(visibleToken) : visibleToken;
646
+ const resourceToken = visibleToken.type === `mutable_atom` ? getJsonToken(visibleToken, store) : visibleToken;
647
647
  const resource = getFromStore(resourceToken, store);
648
648
  initialPayload.push(resourceToken, resource);
649
649
  }
@@ -833,7 +833,8 @@ function realtimeMutableFamilyProvider({
833
833
  for (const exposedSubKey of exposedSubKeys) {
834
834
  if (stringifyJson(exposedSubKey) === stringifyJson(subKey)) {
835
835
  const token = findInStore(family, subKey, store);
836
- const jsonToken = getJsonToken(token);
836
+ getFromStore(token, store);
837
+ const jsonToken = getJsonToken(token, store);
837
838
  const updateToken = getUpdateToken(token);
838
839
  socket.emit(`init:${token.key}`, getFromStore(jsonToken, store));
839
840
  const unsubscribe = subscribeToState(
@@ -868,7 +869,7 @@ function realtimeMutableProvider({
868
869
  }) {
869
870
  return function mutableProvider(token) {
870
871
  let unsubscribeFromStateUpdates = null;
871
- const jsonToken = getJsonToken(token);
872
+ const jsonToken = getJsonToken(token, store);
872
873
  const trackerToken = getUpdateToken(token);
873
874
  const fillUnsubRequest = () => {
874
875
  socket.off(`unsub:${token.key}`, fillUnsubRequest);
@@ -106,7 +106,9 @@ export function realtimeContinuitySynchronizer({
106
106
  .filter((token) => !oldKeys.includes(token.key))
107
107
  .flatMap((token) => {
108
108
  const resourceToken =
109
- token.type === `mutable_atom` ? getJsonToken(token) : token
109
+ token.type === `mutable_atom`
110
+ ? getJsonToken(token, store)
111
+ : token
110
112
  const resource = getFromStore(resourceToken, store)
111
113
  return [resourceToken, resource]
112
114
  })
@@ -139,7 +141,7 @@ export function realtimeContinuitySynchronizer({
139
141
  const initialPayload: Json.Serializable[] = []
140
142
  for (const atom of continuity.globals) {
141
143
  const resourceToken =
142
- atom.type === `mutable_atom` ? getJsonToken(atom) : atom
144
+ atom.type === `mutable_atom` ? getJsonToken(atom, store) : atom
143
145
  initialPayload.push(resourceToken, getFromStore(atom, store))
144
146
  }
145
147
  for (const perspective of continuity.perspectives) {
@@ -154,7 +156,7 @@ export function realtimeContinuitySynchronizer({
154
156
  for (const visibleToken of userView) {
155
157
  const resourceToken =
156
158
  visibleToken.type === `mutable_atom`
157
- ? getJsonToken(visibleToken)
159
+ ? getJsonToken(visibleToken, store)
158
160
  : visibleToken
159
161
  const resource = getFromStore(resourceToken, store)
160
162
 
@@ -44,7 +44,8 @@ export function realtimeMutableFamilyProvider({
44
44
  for (const exposedSubKey of exposedSubKeys) {
45
45
  if (stringifyJson(exposedSubKey) === stringifyJson(subKey)) {
46
46
  const token = findInStore(family, subKey, store)
47
- const jsonToken = getJsonToken(token)
47
+ getFromStore(token, store)
48
+ const jsonToken = getJsonToken(token, store)
48
49
  const updateToken = getUpdateToken(token)
49
50
  socket.emit(`init:${token.key}`, getFromStore(jsonToken, store))
50
51
  const unsubscribe = subscribeToState(
@@ -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)
25
+ const jsonToken = getJsonToken(token, store)
26
26
  const trackerToken = getUpdateToken(token)
27
27
 
28
28
  const fillUnsubRequest = () => {
@@ -11,6 +11,7 @@ var RTS = require('atom.io/realtime-server');
11
11
  var Happy = require('happy-dom');
12
12
  var SocketIO = require('socket.io');
13
13
  var socket_ioClient = require('socket.io-client');
14
+ require('atom.io/json');
14
15
  require('atom.io/transceivers/set-rtx');
15
16
  var jsxRuntime = require('react/jsx-runtime');
16
17
 
@@ -143,7 +144,10 @@ AtomIO__namespace.atom(
143
144
  var testNumber = 0;
144
145
  var setupRealtimeTestServer = (options) => {
145
146
  ++testNumber;
146
- const silo = new AtomIO__namespace.Silo(`SERVER-${testNumber}`, internal.IMPLICIT.STORE);
147
+ const silo = new AtomIO__namespace.Silo(
148
+ { name: `SERVER-${testNumber}`, lifespan: `ephemeral` },
149
+ internal.IMPLICIT.STORE
150
+ );
147
151
  const httpServer = http__namespace.createServer((_, res) => res.end(`Hello World!`));
148
152
  const address = httpServer.listen(options.port).address();
149
153
  const port = typeof address === `string` ? null : address === null ? null : address.port;
@@ -198,7 +202,7 @@ var setupRealtimeTestClient = (options, name, port) => {
198
202
  const socket = socket_ioClient.io(`http://localhost:${port}/`, {
199
203
  auth: { token: `test`, username: `${name}-${testNumber}` }
200
204
  });
201
- const silo = new AtomIO__namespace.Silo(name, internal.IMPLICIT.STORE);
205
+ const silo = new AtomIO__namespace.Silo({ name, lifespan: `ephemeral` }, internal.IMPLICIT.STORE);
202
206
  for (const [key, value] of silo.store.valueMap.entries()) {
203
207
  if (Array.isArray(value)) {
204
208
  silo.store.valueMap.set(key, [...value]);
@@ -1,8 +1,8 @@
1
- import { myUsernameState } from '../../dist/chunk-O47EQUM6.js';
2
- import { editRelationsInStore } from '../../dist/chunk-KGZGBCYS.js';
3
- import '../../dist/chunk-FTONNX2R.js';
4
1
  import { recordToEntries } from '../../dist/chunk-3V3VWQ7X.js';
2
+ import { myUsernameState } from '../../dist/chunk-O47EQUM6.js';
5
3
  import '../../dist/chunk-BWWVY5O5.js';
4
+ import { editRelationsInStore } from '../../dist/chunk-JA4V7TJY.js';
5
+ import '../../dist/chunk-FTONNX2R.js';
6
6
  import { __spreadProps, __spreadValues } from '../../dist/chunk-F2X4B4VY.js';
7
7
  import * as http from 'http';
8
8
  import { render, prettyDOM } from '@testing-library/react';
@@ -20,7 +20,10 @@ import { jsx } from 'react/jsx-runtime';
20
20
  var testNumber = 0;
21
21
  var setupRealtimeTestServer = (options) => {
22
22
  ++testNumber;
23
- const silo = new AtomIO.Silo(`SERVER-${testNumber}`, IMPLICIT.STORE);
23
+ const silo = new AtomIO.Silo(
24
+ { name: `SERVER-${testNumber}`, lifespan: `ephemeral` },
25
+ IMPLICIT.STORE
26
+ );
24
27
  const httpServer = http.createServer((_, res) => res.end(`Hello World!`));
25
28
  const address = httpServer.listen(options.port).address();
26
29
  const port = typeof address === `string` ? null : address === null ? null : address.port;
@@ -75,7 +78,7 @@ var setupRealtimeTestClient = (options, name, port) => {
75
78
  const socket = io(`http://localhost:${port}/`, {
76
79
  auth: { token: `test`, username: `${name}-${testNumber}` }
77
80
  });
78
- const silo = new AtomIO.Silo(name, IMPLICIT.STORE);
81
+ const silo = new AtomIO.Silo({ name, lifespan: `ephemeral` }, IMPLICIT.STORE);
79
82
  for (const [key, value] of silo.store.valueMap.entries()) {
80
83
  if (Array.isArray(value)) {
81
84
  silo.store.valueMap.set(key, [...value]);