atom.io 0.31.1 → 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 (155) 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-Y5MBNTVU.js → chunk-GY2XQYZY.js} +1791 -703
  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 +622 -26
  15. package/dist/index.js +1 -228
  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 +783 -64
  21. package/internal/dist/index.js +1 -1
  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/get-state/get-from-store.ts +2 -2
  31. package/internal/src/get-state/read-or-compute-value.ts +1 -1
  32. package/internal/src/index.ts +2 -0
  33. package/internal/src/install-into-store.ts +1 -1
  34. package/internal/src/join/edit-relations-in-store.ts +32 -0
  35. package/internal/src/join/find-relations-in-store.ts +124 -0
  36. package/internal/src/join/get-internal-relations-from-store.ts +14 -0
  37. package/internal/src/join/get-join.ts +31 -0
  38. package/internal/src/join/index.ts +5 -0
  39. package/{data/src/join.ts → internal/src/join/join-internal.ts} +20 -429
  40. package/internal/src/keys.ts +7 -7
  41. package/internal/src/mutable/create-mutable-atom-family.ts +1 -1
  42. package/internal/src/mutable/create-mutable-atom.ts +3 -3
  43. package/internal/src/mutable/get-json-token.ts +1 -1
  44. package/internal/src/mutable/tracker-family.ts +19 -17
  45. package/internal/src/mutable/tracker.ts +8 -8
  46. package/internal/src/pretty-print.ts +1 -1
  47. package/internal/src/selector/create-readonly-selector.ts +3 -7
  48. package/internal/src/selector/create-writable-selector.ts +4 -4
  49. package/internal/src/selector/dispose-selector.ts +20 -11
  50. package/internal/src/selector/get-selector-dependency-keys.ts +1 -1
  51. package/internal/src/selector/register-selector.ts +6 -9
  52. package/internal/src/selector/trace-selector-atoms.ts +2 -2
  53. package/internal/src/set-state/copy-mutable-if-needed.ts +1 -1
  54. package/internal/src/set-state/emit-update.ts +1 -1
  55. package/internal/src/set-state/evict-downstream.ts +1 -1
  56. package/internal/src/set-state/set-atom-or-selector.ts +1 -1
  57. package/internal/src/set-state/set-atom.ts +10 -10
  58. package/internal/src/set-state/set-into-store.ts +2 -2
  59. package/internal/src/set-state/stow-update.ts +1 -1
  60. package/internal/src/store/store.ts +1 -1
  61. package/internal/src/store/withdraw.ts +22 -22
  62. package/internal/src/subscribe/recall-state.ts +1 -1
  63. package/internal/src/subscribe/subscribe-in-store.ts +3 -3
  64. package/internal/src/subscribe/subscribe-to-root-atoms.ts +3 -3
  65. package/internal/src/subscribe/subscribe-to-state.ts +5 -5
  66. package/internal/src/subscribe/subscribe-to-timeline.ts +3 -3
  67. package/internal/src/subscribe/subscribe-to-transaction.ts +3 -3
  68. package/internal/src/timeline/create-timeline.ts +17 -37
  69. package/internal/src/transaction/act-upon-store.ts +2 -2
  70. package/internal/src/transaction/apply-transaction.ts +5 -5
  71. package/internal/src/transaction/assign-transaction-to-continuity.ts +1 -1
  72. package/internal/src/transaction/build-transaction.ts +5 -8
  73. package/internal/src/transaction/create-transaction.ts +3 -3
  74. package/internal/src/transaction/get-epoch-number.ts +3 -3
  75. package/internal/src/transaction/set-epoch-number.ts +2 -2
  76. package/introspection/dist/index.d.ts +922 -6
  77. package/introspection/dist/index.js +2 -620
  78. package/json/dist/index.d.ts +899 -5
  79. package/json/dist/index.js +1 -80
  80. package/json/src/select-json-family.ts +3 -14
  81. package/package.json +24 -42
  82. package/react/dist/index.d.ts +921 -3
  83. package/react/dist/index.js +2 -82
  84. package/react/src/use-o.ts +1 -1
  85. package/react/src/use-tl.ts +2 -2
  86. package/react-devtools/dist/index.css +16 -14
  87. package/react-devtools/dist/index.d.ts +26 -1
  88. package/react-devtools/dist/index.js +6 -6
  89. package/react-devtools/src/devtools.scss +16 -14
  90. package/realtime/dist/index.d.ts +202 -8
  91. package/realtime/dist/index.js +2 -107
  92. package/realtime/src/realtime-continuity.ts +2 -2
  93. package/realtime/src/shared-room-store.ts +1 -2
  94. package/realtime-client/dist/index.d.ts +960 -22
  95. package/realtime-client/dist/index.js +3 -509
  96. package/realtime-client/src/continuity/register-and-attempt-confirmed-update.ts +3 -3
  97. package/realtime-client/src/continuity/use-conceal-state.ts +1 -1
  98. package/realtime-client/src/pull-atom-family-member.ts +2 -2
  99. package/realtime-client/src/pull-atom.ts +2 -2
  100. package/realtime-client/src/pull-mutable-atom-family-member.ts +2 -2
  101. package/realtime-client/src/pull-mutable-atom.ts +2 -2
  102. package/realtime-client/src/pull-selector-family-member.ts +4 -4
  103. package/realtime-client/src/pull-selector.ts +4 -4
  104. package/realtime-client/src/push-state.ts +5 -10
  105. package/realtime-client/src/server-action.ts +4 -4
  106. package/realtime-client/src/sync-continuity.ts +6 -6
  107. package/realtime-react/dist/index.d.ts +166 -12
  108. package/realtime-react/dist/index.js +5 -154
  109. package/realtime-react/src/use-pull-atom-family-member.ts +1 -1
  110. package/realtime-react/src/use-pull-atom.ts +1 -1
  111. package/realtime-react/src/use-pull-mutable-atom.ts +1 -1
  112. package/realtime-react/src/use-pull-mutable-family-member.ts +1 -1
  113. package/realtime-react/src/use-pull-selector-family-member.ts +1 -1
  114. package/realtime-react/src/use-pull-selector.ts +1 -1
  115. package/realtime-react/src/use-push.ts +1 -1
  116. package/realtime-react/src/use-server-action.ts +2 -2
  117. package/realtime-react/src/use-sync-continuity.ts +1 -1
  118. package/realtime-server/dist/index.d.ts +971 -28
  119. package/realtime-server/dist/index.js +3 -1001
  120. package/realtime-server/src/continuity/prepare-to-serve-transaction-request.ts +1 -1
  121. package/realtime-server/src/continuity/prepare-to-sync-realtime-continuity.ts +3 -3
  122. package/realtime-server/src/continuity/subscribe-to-continuity-actions.ts +2 -2
  123. package/realtime-server/src/continuity/subscribe-to-continuity-perpectives.ts +2 -2
  124. package/realtime-server/src/realtime-action-receiver.ts +1 -1
  125. package/realtime-server/src/realtime-family-provider.ts +2 -2
  126. package/realtime-server/src/realtime-mutable-family-provider.ts +2 -2
  127. package/realtime-server/src/realtime-mutable-provider.ts +2 -2
  128. package/realtime-server/src/realtime-server-stores/server-room-external-actions.ts +2 -1
  129. package/realtime-server/src/realtime-server-stores/server-room-external-store.ts +1 -1
  130. package/realtime-server/src/realtime-server-stores/server-user-store.ts +1 -2
  131. package/realtime-server/src/realtime-state-provider.ts +2 -2
  132. package/realtime-testing/dist/index.d.ts +1091 -3
  133. package/realtime-testing/dist/index.js +20 -22
  134. package/realtime-testing/src/setup-realtime-test.tsx +2 -1
  135. package/src/index.ts +4 -0
  136. package/src/join.ts +218 -0
  137. package/src/silo.ts +4 -4
  138. package/src/timeline.ts +1 -1
  139. package/src/transaction.ts +4 -8
  140. package/transceivers/set-rtx/dist/index.d.ts +37 -2
  141. package/transceivers/set-rtx/dist/index.js +1 -215
  142. package/web/dist/index.d.ts +30 -1
  143. package/web/dist/index.js +1 -15
  144. package/data/src/until.ts +0 -15
  145. package/ephemeral/dist/index.d.ts +0 -67
  146. package/ephemeral/dist/index.js +0 -9
  147. package/ephemeral/package.json +0 -13
  148. package/ephemeral/src/index.ts +0 -1
  149. package/eslint-plugin/src/rules/lifespan.ts +0 -203
  150. package/immortal/dist/index.d.ts +0 -12
  151. package/immortal/dist/index.js +0 -9
  152. package/immortal/package.json +0 -13
  153. package/immortal/src/index.ts +0 -1
  154. package/immortal/src/seek-state.ts +0 -60
  155. /package/{ephemeral/src → src}/find-state.ts +0 -0
@@ -1,81 +1,2 @@
1
- import { createWritableSelectorFamily } from '../../dist/chunk-Y5MBNTVU.js';
1
+ export { JSON_DEFAULTS, JSON_TYPE_NAMES, fromEntries, isJson, parseJson, selectJson, selectJsonFamily, stringifyJson, toEntries } from '../../dist/chunk-GY2XQYZY.js';
2
2
  import '../../dist/chunk-XWL6SNVU.js';
3
- import { createStandaloneSelector, IMPLICIT, withdraw, seekInStore } from 'atom.io/internal';
4
-
5
- // json/src/entries.ts
6
- function fromEntries(entries) {
7
- return Object.fromEntries(entries);
8
- }
9
- function toEntries(obj) {
10
- return Object.entries(obj);
11
- }
12
- var selectJson = (atom, transform, store = IMPLICIT.STORE) => {
13
- return createStandaloneSelector(store, {
14
- key: `${atom.key}:JSON`,
15
- get: ({ get }) => transform.toJson(get(atom)),
16
- set: ({ set }, newValue) => {
17
- set(atom, transform.fromJson(newValue));
18
- }
19
- });
20
- };
21
- function selectJsonFamily(atomFamilyToken, transform, store = IMPLICIT.STORE) {
22
- const jsonFamily = createWritableSelectorFamily(
23
- store,
24
- {
25
- key: `${atomFamilyToken.key}:JSON`,
26
- get: (key) => ({ get }) => {
27
- const baseState = get(atomFamilyToken, key);
28
- return transform.toJson(baseState);
29
- },
30
- set: (key) => ({ set }, newValue) => {
31
- set(atomFamilyToken, key, transform.fromJson(newValue));
32
- }
33
- },
34
- [`mutable`, `json`]
35
- );
36
- const atomFamily = withdraw(atomFamilyToken, store);
37
- atomFamily.subject.subscribe(
38
- `store=${store.config.name}::json-selector-family`,
39
- (event) => {
40
- if (event.token.family) {
41
- seekInStore(store, jsonFamily, parseJson(event.token.family.subKey));
42
- }
43
- }
44
- );
45
- return jsonFamily;
46
- }
47
-
48
- // json/src/index.ts
49
- var parseJson = (str) => JSON.parse(str);
50
- var stringifyJson = (json) => JSON.stringify(json);
51
- var JSON_PROTOTYPES = [
52
- Array.prototype,
53
- Boolean.prototype,
54
- Number.prototype,
55
- Object.prototype,
56
- String.prototype
57
- ];
58
- var isJson = (input) => {
59
- if (input === null) return true;
60
- if (input === undefined) return false;
61
- const prototype = Object.getPrototypeOf(input);
62
- return JSON_PROTOTYPES.includes(prototype);
63
- };
64
- var JSON_TYPE_NAMES = [
65
- `array`,
66
- `boolean`,
67
- `null`,
68
- `number`,
69
- `object`,
70
- `string`
71
- ];
72
- var JSON_DEFAULTS = {
73
- array: [],
74
- boolean: false,
75
- null: null,
76
- number: 0,
77
- object: {},
78
- string: ``
79
- };
80
-
81
- 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.1",
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",
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
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
71
  "eslint": "9.21.0",
72
- "happy-dom": "17.1.4",
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,9 +85,9 @@
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
93
  "recoverage": "0.0.7"
@@ -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 -- .",