atom.io 0.31.0 → 0.32.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 (171) hide show
  1. package/data/dist/index.d.ts +867 -101
  2. package/data/dist/index.js +10 -558
  3. package/data/src/index.ts +0 -2
  4. package/data/src/struct-family.ts +1 -1
  5. package/data/src/struct.ts +1 -2
  6. package/dist/chunk-354XQWHH.js +153 -0
  7. package/dist/chunk-4LWKCEW3.js +14 -0
  8. package/dist/chunk-5F2V7S3B.js +83 -0
  9. package/dist/chunk-ECOMOMUN.js +631 -0
  10. package/dist/{chunk-42UH5F5Q.js → chunk-GY2XQYZY.js} +2051 -755
  11. package/dist/chunk-NF7FJKJD.js +107 -0
  12. package/dist/chunk-R3ZUK5EH.js +1024 -0
  13. package/dist/chunk-Z2UJW4NQ.js +523 -0
  14. package/dist/index.d.ts +855 -127
  15. package/dist/index.js +1 -143
  16. package/eslint-plugin/dist/index.d.ts +1 -30
  17. package/eslint-plugin/dist/index.js +0 -146
  18. package/eslint-plugin/src/index.ts +0 -1
  19. package/eslint-plugin/src/rules/index.ts +0 -1
  20. package/internal/dist/index.d.ts +794 -70
  21. package/internal/dist/index.js +1 -2
  22. package/internal/src/atom/create-regular-atom.ts +3 -3
  23. package/internal/src/atom/dispose-atom.ts +4 -13
  24. package/internal/src/atom/is-default.ts +3 -3
  25. package/internal/src/caching.ts +5 -5
  26. package/internal/src/capitalize.ts +3 -0
  27. package/internal/src/families/create-readonly-selector-family.ts +5 -6
  28. package/internal/src/families/create-writable-selector-family.ts +1 -4
  29. package/internal/src/families/dispose-from-store.ts +3 -13
  30. package/internal/src/families/find-in-store.ts +1 -6
  31. package/internal/src/get-state/get-from-store.ts +2 -2
  32. package/internal/src/get-state/read-or-compute-value.ts +1 -1
  33. package/internal/src/index.ts +19 -9
  34. package/internal/src/ingest-updates/ingest-creation-disposal.ts +2 -3
  35. package/internal/src/install-into-store.ts +48 -0
  36. package/internal/src/join/edit-relations-in-store.ts +32 -0
  37. package/internal/src/join/find-relations-in-store.ts +124 -0
  38. package/internal/src/join/get-internal-relations-from-store.ts +14 -0
  39. package/internal/src/join/get-join.ts +31 -0
  40. package/internal/src/join/index.ts +5 -0
  41. package/{data/src/join.ts → internal/src/join/join-internal.ts} +20 -429
  42. package/internal/src/keys.ts +7 -7
  43. package/internal/src/molecule.ts +299 -0
  44. package/internal/src/mutable/create-mutable-atom-family.ts +1 -1
  45. package/internal/src/mutable/create-mutable-atom.ts +3 -3
  46. package/internal/src/mutable/get-json-token.ts +1 -1
  47. package/internal/src/mutable/tracker-family.ts +19 -17
  48. package/internal/src/mutable/tracker.ts +8 -8
  49. package/internal/src/not-found-error.ts +8 -30
  50. package/internal/src/pretty-print.ts +2 -13
  51. package/internal/src/selector/create-readonly-selector.ts +3 -7
  52. package/internal/src/selector/create-writable-selector.ts +4 -4
  53. package/internal/src/selector/dispose-selector.ts +20 -11
  54. package/internal/src/selector/get-selector-dependency-keys.ts +1 -1
  55. package/internal/src/selector/register-selector.ts +7 -17
  56. package/internal/src/selector/trace-selector-atoms.ts +2 -2
  57. package/internal/src/set-state/copy-mutable-if-needed.ts +1 -1
  58. package/internal/src/set-state/emit-update.ts +1 -1
  59. package/internal/src/set-state/evict-downstream.ts +1 -1
  60. package/internal/src/set-state/set-atom-or-selector.ts +1 -1
  61. package/internal/src/set-state/set-atom.ts +10 -10
  62. package/internal/src/set-state/set-into-store.ts +2 -2
  63. package/internal/src/set-state/stow-update.ts +1 -1
  64. package/internal/src/store/deposit.ts +10 -8
  65. package/internal/src/store/store.ts +1 -1
  66. package/internal/src/store/withdraw.ts +34 -53
  67. package/internal/src/subscribe/recall-state.ts +1 -1
  68. package/internal/src/subscribe/subscribe-in-store.ts +3 -3
  69. package/internal/src/subscribe/subscribe-to-root-atoms.ts +3 -3
  70. package/internal/src/subscribe/subscribe-to-state.ts +5 -5
  71. package/internal/src/subscribe/subscribe-to-timeline.ts +3 -3
  72. package/internal/src/subscribe/subscribe-to-transaction.ts +3 -3
  73. package/internal/src/timeline/create-timeline.ts +17 -37
  74. package/internal/src/transaction/act-upon-store.ts +2 -2
  75. package/internal/src/transaction/apply-transaction.ts +5 -5
  76. package/internal/src/transaction/assign-transaction-to-continuity.ts +1 -1
  77. package/internal/src/transaction/build-transaction.ts +5 -8
  78. package/internal/src/transaction/create-transaction.ts +3 -3
  79. package/internal/src/transaction/get-epoch-number.ts +3 -3
  80. package/internal/src/transaction/set-epoch-number.ts +2 -2
  81. package/introspection/dist/index.d.ts +922 -6
  82. package/introspection/dist/index.js +2 -620
  83. package/json/dist/index.d.ts +899 -5
  84. package/json/dist/index.js +1 -81
  85. package/json/src/select-json-family.ts +3 -14
  86. package/package.json +27 -45
  87. package/react/dist/index.d.ts +921 -3
  88. package/react/dist/index.js +2 -82
  89. package/react/src/use-o.ts +1 -1
  90. package/react/src/use-tl.ts +2 -2
  91. package/react-devtools/dist/index.css +16 -14
  92. package/react-devtools/dist/index.d.ts +26 -1
  93. package/react-devtools/dist/index.js +6 -6
  94. package/react-devtools/src/devtools.scss +16 -14
  95. package/realtime/dist/index.d.ts +202 -8
  96. package/realtime/dist/index.js +2 -107
  97. package/realtime/src/realtime-continuity.ts +2 -2
  98. package/realtime/src/shared-room-store.ts +1 -2
  99. package/realtime-client/dist/index.d.ts +960 -22
  100. package/realtime-client/dist/index.js +3 -509
  101. package/realtime-client/src/continuity/register-and-attempt-confirmed-update.ts +3 -3
  102. package/realtime-client/src/continuity/use-conceal-state.ts +1 -1
  103. package/realtime-client/src/pull-atom-family-member.ts +2 -2
  104. package/realtime-client/src/pull-atom.ts +2 -2
  105. package/realtime-client/src/pull-mutable-atom-family-member.ts +2 -2
  106. package/realtime-client/src/pull-mutable-atom.ts +2 -2
  107. package/realtime-client/src/pull-selector-family-member.ts +4 -4
  108. package/realtime-client/src/pull-selector.ts +4 -4
  109. package/realtime-client/src/push-state.ts +5 -10
  110. package/realtime-client/src/server-action.ts +4 -4
  111. package/realtime-client/src/sync-continuity.ts +6 -6
  112. package/realtime-react/dist/index.d.ts +166 -12
  113. package/realtime-react/dist/index.js +5 -154
  114. package/realtime-react/src/use-pull-atom-family-member.ts +1 -1
  115. package/realtime-react/src/use-pull-atom.ts +1 -1
  116. package/realtime-react/src/use-pull-mutable-atom.ts +1 -1
  117. package/realtime-react/src/use-pull-mutable-family-member.ts +1 -1
  118. package/realtime-react/src/use-pull-selector-family-member.ts +1 -1
  119. package/realtime-react/src/use-pull-selector.ts +1 -1
  120. package/realtime-react/src/use-push.ts +1 -1
  121. package/realtime-react/src/use-server-action.ts +2 -2
  122. package/realtime-react/src/use-sync-continuity.ts +1 -1
  123. package/realtime-server/dist/index.d.ts +971 -28
  124. package/realtime-server/dist/index.js +3 -1001
  125. package/realtime-server/src/continuity/prepare-to-serve-transaction-request.ts +1 -1
  126. package/realtime-server/src/continuity/prepare-to-sync-realtime-continuity.ts +3 -3
  127. package/realtime-server/src/continuity/subscribe-to-continuity-actions.ts +2 -2
  128. package/realtime-server/src/continuity/subscribe-to-continuity-perpectives.ts +2 -2
  129. package/realtime-server/src/ipc-sockets/child-socket.ts +0 -1
  130. package/realtime-server/src/realtime-action-receiver.ts +1 -1
  131. package/realtime-server/src/realtime-family-provider.ts +2 -2
  132. package/realtime-server/src/realtime-mutable-family-provider.ts +2 -2
  133. package/realtime-server/src/realtime-mutable-provider.ts +2 -2
  134. package/realtime-server/src/realtime-server-stores/server-room-external-actions.ts +2 -1
  135. package/realtime-server/src/realtime-server-stores/server-room-external-store.ts +1 -1
  136. package/realtime-server/src/realtime-server-stores/server-user-store.ts +1 -2
  137. package/realtime-server/src/realtime-state-provider.ts +2 -2
  138. package/realtime-testing/dist/index.d.ts +1091 -3
  139. package/realtime-testing/dist/index.js +23 -26
  140. package/realtime-testing/src/setup-realtime-test.tsx +6 -5
  141. package/src/atom.ts +53 -29
  142. package/src/dispose-state.ts +12 -2
  143. package/{ephemeral/src → src}/find-state.ts +35 -25
  144. package/src/get-state.ts +16 -0
  145. package/src/index.ts +77 -3
  146. package/src/join.ts +218 -0
  147. package/src/realm.ts +169 -0
  148. package/src/selector.ts +20 -0
  149. package/src/set-state.ts +16 -8
  150. package/src/silo.ts +13 -7
  151. package/src/timeline.ts +1 -1
  152. package/src/transaction.ts +4 -8
  153. package/transceivers/set-rtx/dist/index.d.ts +37 -2
  154. package/transceivers/set-rtx/dist/index.js +1 -212
  155. package/transceivers/set-rtx/src/set-rtx.ts +4 -1
  156. package/web/dist/index.d.ts +30 -1
  157. package/web/dist/index.js +1 -15
  158. package/data/src/until.ts +0 -15
  159. package/dist/chunk-ICGFFQ3H.js +0 -272
  160. package/ephemeral/dist/index.d.ts +0 -57
  161. package/ephemeral/dist/index.js +0 -9
  162. package/ephemeral/package.json +0 -13
  163. package/ephemeral/src/index.ts +0 -1
  164. package/eslint-plugin/src/rules/lifespan.ts +0 -203
  165. package/immortal/dist/index.d.ts +0 -12
  166. package/immortal/dist/index.js +0 -9
  167. package/immortal/package.json +0 -13
  168. package/immortal/src/index.ts +0 -1
  169. package/immortal/src/seek-state.ts +0 -60
  170. package/src/allocate.ts +0 -443
  171. package/src/molecule.ts +0 -16
@@ -1,82 +1,2 @@
1
- import { createWritableSelectorFamily } from '../../dist/chunk-42UH5F5Q.js';
2
- import '../../dist/chunk-ICGFFQ3H.js';
1
+ export { JSON_DEFAULTS, JSON_TYPE_NAMES, fromEntries, isJson, parseJson, selectJson, selectJsonFamily, stringifyJson, toEntries } from '../../dist/chunk-GY2XQYZY.js';
3
2
  import '../../dist/chunk-XWL6SNVU.js';
4
- import { createStandaloneSelector, IMPLICIT, withdraw, seekInStore } from 'atom.io/internal';
5
-
6
- // json/src/entries.ts
7
- function fromEntries(entries) {
8
- return Object.fromEntries(entries);
9
- }
10
- function toEntries(obj) {
11
- return Object.entries(obj);
12
- }
13
- var selectJson = (atom, transform, store = IMPLICIT.STORE) => {
14
- return createStandaloneSelector(store, {
15
- key: `${atom.key}:JSON`,
16
- get: ({ get }) => transform.toJson(get(atom)),
17
- set: ({ set }, newValue) => {
18
- set(atom, transform.fromJson(newValue));
19
- }
20
- });
21
- };
22
- function selectJsonFamily(atomFamilyToken, transform, store = IMPLICIT.STORE) {
23
- const jsonFamily = createWritableSelectorFamily(
24
- store,
25
- {
26
- key: `${atomFamilyToken.key}:JSON`,
27
- get: (key) => ({ get }) => {
28
- const baseState = get(atomFamilyToken, key);
29
- return transform.toJson(baseState);
30
- },
31
- set: (key) => ({ set }, newValue) => {
32
- set(atomFamilyToken, key, transform.fromJson(newValue));
33
- }
34
- },
35
- [`mutable`, `json`]
36
- );
37
- const atomFamily = withdraw(atomFamilyToken, store);
38
- atomFamily.subject.subscribe(
39
- `store=${store.config.name}::json-selector-family`,
40
- (event) => {
41
- if (event.token.family) {
42
- seekInStore(store, jsonFamily, parseJson(event.token.family.subKey));
43
- }
44
- }
45
- );
46
- return jsonFamily;
47
- }
48
-
49
- // json/src/index.ts
50
- var parseJson = (str) => JSON.parse(str);
51
- var stringifyJson = (json) => JSON.stringify(json);
52
- var JSON_PROTOTYPES = [
53
- Array.prototype,
54
- Boolean.prototype,
55
- Number.prototype,
56
- Object.prototype,
57
- String.prototype
58
- ];
59
- var isJson = (input) => {
60
- if (input === null) return true;
61
- if (input === undefined) return false;
62
- const prototype = Object.getPrototypeOf(input);
63
- return JSON_PROTOTYPES.includes(prototype);
64
- };
65
- var JSON_TYPE_NAMES = [
66
- `array`,
67
- `boolean`,
68
- `null`,
69
- `number`,
70
- `object`,
71
- `string`
72
- ];
73
- var JSON_DEFAULTS = {
74
- array: [],
75
- boolean: false,
76
- null: null,
77
- number: 0,
78
- object: {},
79
- string: ``
80
- };
81
-
82
- export { JSON_DEFAULTS, JSON_TYPE_NAMES, fromEntries, isJson, parseJson, selectJson, selectJsonFamily, stringifyJson, toEntries };
@@ -1,39 +1,37 @@
1
1
  import type * as AtomIO from "atom.io"
2
2
  import type { Store, Transceiver } from "atom.io/internal"
3
- import { IMPLICIT, seekInStore, withdraw } from "atom.io/internal"
4
3
 
5
4
  import { createWritableSelectorFamily } from "../../internal/src/families/create-writable-selector-family"
6
5
  import type { Canonical, Json, JsonInterface } from "."
7
- import { parseJson } from "."
8
6
 
9
7
  export function selectJsonFamily<
10
8
  T extends Transceiver<any>,
11
9
  J extends Json.Serializable,
12
10
  K extends Canonical,
13
11
  >(
12
+ store: Store,
14
13
  atomFamilyToken: AtomIO.MutableAtomFamilyToken<T, J, K>,
15
14
  transform: JsonInterface<T, J>,
16
- store: Store,
17
15
  ): AtomIO.WritableSelectorFamilyToken<J, K>
18
16
  export function selectJsonFamily<
19
17
  T,
20
18
  J extends Json.Serializable,
21
19
  K extends Canonical,
22
20
  >(
21
+ store: Store,
23
22
  atomFamilyToken: AtomIO.RegularAtomFamilyToken<T, K>,
24
23
  transform: JsonInterface<T, J>,
25
- store: Store,
26
24
  ): AtomIO.WritableSelectorFamilyToken<J, K>
27
25
  export function selectJsonFamily<
28
26
  T,
29
27
  J extends Json.Serializable,
30
28
  K extends Canonical,
31
29
  >(
30
+ store: Store,
32
31
  atomFamilyToken:
33
32
  | AtomIO.MutableAtomFamilyToken<T extends Transceiver<any> ? T : never, J, K>
34
33
  | AtomIO.RegularAtomFamilyToken<T, K>,
35
34
  transform: JsonInterface<T, J>,
36
- store: Store = IMPLICIT.STORE,
37
35
  ): AtomIO.WritableSelectorFamilyToken<J, K> {
38
36
  const jsonFamily = createWritableSelectorFamily<J, K>(
39
37
  store,
@@ -53,14 +51,5 @@ export function selectJsonFamily<
53
51
  },
54
52
  [`mutable`, `json`],
55
53
  )
56
- const atomFamily = withdraw(atomFamilyToken, store)
57
- atomFamily.subject.subscribe(
58
- `store=${store.config.name}::json-selector-family`,
59
- (event) => {
60
- if (event.token.family) {
61
- seekInStore(store, jsonFamily, parseJson(event.token.family.subKey) as K)
62
- }
63
- },
64
- )
65
54
  return jsonFamily
66
55
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atom.io",
3
- "version": "0.31.0",
3
+ "version": "0.32.0",
4
4
  "description": "Composable and testable reactive data library.",
5
5
  "homepage": "https://atom.io.fyi",
6
6
  "sideEffects": false,
@@ -59,17 +59,17 @@
59
59
  "@types/npmlog": "7.0.0",
60
60
  "@types/react": "19.0.10",
61
61
  "@types/tmp": "0.2.6",
62
- "@typescript-eslint/parser": "8.24.1",
63
- "@typescript-eslint/rule-tester": "8.24.1",
64
- "@typescript-eslint/utils": "8.24.1",
65
- "@vitest/coverage-v8": "3.0.6",
66
- "@vitest/ui": "3.0.6",
67
- "bun-types": "1.2.2",
62
+ "@typescript-eslint/parser": "8.25.0",
63
+ "@typescript-eslint/rule-tester": "8.25.0",
64
+ "@typescript-eslint/utils": "8.25.0",
65
+ "@vitest/coverage-v8": "3.0.7",
66
+ "@vitest/ui": "3.0.7",
67
+ "bun-types": "1.2.3",
68
68
  "concurrently": "9.1.2",
69
69
  "drizzle-kit": "0.30.4",
70
70
  "drizzle-orm": "0.39.3",
71
- "eslint": "9.20.1",
72
- "happy-dom": "17.1.1",
71
+ "eslint": "9.21.0",
72
+ "happy-dom": "17.1.8",
73
73
  "http-proxy": "1.18.1",
74
74
  "motion": "12.4.7",
75
75
  "npmlog": "7.0.1",
@@ -85,12 +85,12 @@
85
85
  "tsup": "8.3.6",
86
86
  "tsx": "4.19.3",
87
87
  "typescript": "5.7.3",
88
- "vite": "6.1.1",
88
+ "vite": "6.2.0",
89
89
  "vite-tsconfig-paths": "5.1.4",
90
- "vitest": "3.0.6",
90
+ "vitest": "3.0.7",
91
91
  "zod": "3.24.2",
92
92
  "break-check": "0.6.6",
93
- "recoverage": "0.0.6"
93
+ "recoverage": "0.0.7"
94
94
  },
95
95
  "main": "dist/index.js",
96
96
  "types": "dist/index.d.ts",
@@ -100,15 +100,9 @@
100
100
  "data/dist",
101
101
  "data/package.json",
102
102
  "data/src",
103
- "ephemeral/dist",
104
- "ephemeral/package.json",
105
- "ephemeral/src",
106
103
  "eslint-plugin/dist",
107
104
  "eslint-plugin/package.json",
108
105
  "eslint-plugin/src",
109
- "immortal/dist",
110
- "immortal/package.json",
111
- "immortal/src",
112
106
  "internal/dist",
113
107
  "internal/package.json",
114
108
  "internal/src",
@@ -157,21 +151,11 @@
157
151
  "import": "./data/dist/index.js",
158
152
  "types": "./data/dist/index.d.ts"
159
153
  },
160
- "./ephemeral/package.json": "./ephemeral/package.json",
161
- "./ephemeral": {
162
- "import": "./ephemeral/dist/index.js",
163
- "types": "./ephemeral/dist/index.d.ts"
164
- },
165
154
  "./eslint-plugin/package.json": "./eslint-plugin/package.json",
166
155
  "./eslint-plugin": {
167
156
  "import": "./eslint-plugin/dist/index.js",
168
157
  "types": "./eslint-plugin/dist/index.d.ts"
169
158
  },
170
- "./immortal/package.json": "./immortal/package.json",
171
- "./immortal": {
172
- "import": "./immortal/dist/index.js",
173
- "types": "./immortal/dist/index.d.ts"
174
- },
175
159
  "./internal/package.json": "./internal/package.json",
176
160
  "./internal": {
177
161
  "import": "./internal/dist/index.js",
@@ -237,23 +221,21 @@
237
221
  "manifest": "tsx __scripts__/manifest-build.node.ts",
238
222
  "clean:build": "find . -type d -name 'dist' -not -path '*/node_modules/*' | xargs rm -rf",
239
223
  "build": "bun run clean:build && concurrently \"bun:build:*\"",
240
- "build:main": "tsup",
241
- "build:types": "tsup --dts",
242
- "build:data": "cd data && tsup",
243
- "build:ephemeral": "cd ephemeral && tsup",
244
- "build:eslint-plugin": "cd eslint-plugin && tsup",
245
- "build:immortal": "cd immortal && tsup",
246
- "build:internal": "cd internal && tsup",
247
- "build:introspection": "cd introspection && tsup",
248
- "build:json": "cd json && tsup",
249
- "build:react": "cd react && tsup",
250
- "build:react-devtools": "cd react-devtools && tsup",
251
- "build:realtime": "cd realtime && tsup",
252
- "build:realtime-client": "cd realtime-client && tsup",
253
- "build:realtime-react": "cd realtime-react && tsup",
254
- "build:realtime-server": "cd realtime-server && tsup",
255
- "build:realtime-testing": "cd realtime-testing && tsup",
256
- "build:transceivers:set-rtx": "cd transceivers/set-rtx && tsup",
224
+ "build:main": "tsup-node",
225
+ "build:types": "tsup-node --dts",
226
+ "build:data": "cd data && tsup-node",
227
+ "build:eslint-plugin": "cd eslint-plugin && tsup-node",
228
+ "build:internal": "cd internal && tsup-node",
229
+ "build:introspection": "cd introspection && tsup-node",
230
+ "build:json": "cd json && tsup-node",
231
+ "build:react": "cd react && tsup-node",
232
+ "build:react-devtools": "cd react-devtools && tsup-node",
233
+ "build:realtime": "cd realtime && tsup-node",
234
+ "build:realtime-client": "cd realtime-client && tsup-node",
235
+ "build:realtime-react": "cd realtime-react && tsup-node",
236
+ "build:realtime-server": "cd realtime-server && tsup-node",
237
+ "build:realtime-testing": "cd realtime-testing && tsup-node",
238
+ "build:transceivers:set-rtx": "cd transceivers/set-rtx && tsup-node",
257
239
  "build:web": "cd web && tsup",
258
240
  "lint:biome": "biome check -- .",
259
241
  "lint:eslint": "eslint -- .",