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
@@ -0,0 +1,153 @@
1
+ import { myIdState__INTERNAL, pullAtom, pullAtomFamilyMember, pullMutableAtom, pullMutableAtomFamilyMember, pullSelector, pullSelectorFamilyMember, pushState, serverAction, syncContinuity } from './chunk-Z2UJW4NQ.js';
2
+ import { useI, StoreContext, useO } from './chunk-5F2V7S3B.js';
3
+ import { findInStore, actUponStore, arbitrary } from './chunk-GY2XQYZY.js';
4
+ import * as React from 'react';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ var RealtimeContext = React.createContext({
8
+ socket: null,
9
+ services: null
10
+ });
11
+ var RealtimeProvider = ({ children, socket }) => {
12
+ const services = React.useRef(/* @__PURE__ */ new Map()).current;
13
+ const setMyId = useI(myIdState__INTERNAL);
14
+ React.useEffect(() => {
15
+ setMyId(socket?.id);
16
+ socket?.on(`connect`, () => {
17
+ setMyId(socket.id);
18
+ });
19
+ socket?.on(`disconnect`, () => {
20
+ setMyId(undefined);
21
+ });
22
+ }, [socket, setMyId]);
23
+ return /* @__PURE__ */ jsx(RealtimeContext.Provider, { value: { socket, services }, children });
24
+ };
25
+ var { NODE_ENV } = globalThis.env ?? {};
26
+ var IN_DEV = NODE_ENV === `development`;
27
+ function noop() {
28
+ }
29
+ function useSingleEffect(effect, deps) {
30
+ if (IN_DEV) {
31
+ const cleanup = React.useRef(noop);
32
+ React.useEffect(() => {
33
+ let dispose = cleanup.current;
34
+ if (dispose === noop) {
35
+ dispose = effect() ?? noop;
36
+ cleanup.current = dispose;
37
+ } else {
38
+ return () => {
39
+ dispose();
40
+ cleanup.current = noop;
41
+ };
42
+ }
43
+ }, deps);
44
+ } else {
45
+ React.useEffect(effect, deps);
46
+ }
47
+ }
48
+
49
+ // realtime-react/src/on-mount.ts
50
+ function onMount(effect) {
51
+ useSingleEffect(effect, []);
52
+ }
53
+
54
+ // realtime-react/src/use-realtime-service.ts
55
+ function useRealtimeService(key, create) {
56
+ const { socket, services } = React.useContext(RealtimeContext);
57
+ onMount(() => {
58
+ let service = services?.get(key);
59
+ if (service) {
60
+ service[0]++;
61
+ } else {
62
+ const dispose = socket ? create(socket) : undefined;
63
+ service = [1, dispose];
64
+ services?.set(key, service);
65
+ }
66
+ return () => {
67
+ if (service) {
68
+ service[0]--;
69
+ if (service[0] === 0) {
70
+ service[1]?.();
71
+ services?.delete(key);
72
+ }
73
+ }
74
+ };
75
+ });
76
+ }
77
+
78
+ // realtime-react/src/use-pull-atom.ts
79
+ function usePullAtom(token) {
80
+ const store = React.useContext(StoreContext);
81
+ useRealtimeService(
82
+ `pull:${token.key}`,
83
+ (socket) => pullAtom(store, socket, token)
84
+ );
85
+ return useO(token);
86
+ }
87
+ function usePullAtomFamilyMember(family, subKey) {
88
+ const store = React.useContext(StoreContext);
89
+ const token = findInStore(store, family, subKey);
90
+ useRealtimeService(
91
+ `pull:${token.key}`,
92
+ (socket) => pullAtomFamilyMember(store, socket, token)
93
+ );
94
+ return useO(token);
95
+ }
96
+ function usePullMutable(token) {
97
+ const store = React.useContext(StoreContext);
98
+ useRealtimeService(
99
+ `pull:${token.key}`,
100
+ (socket) => pullMutableAtom(store, socket, token)
101
+ );
102
+ return useO(token);
103
+ }
104
+ function usePullMutableAtomFamilyMember(familyToken, key) {
105
+ const store = React.useContext(StoreContext);
106
+ const token = findInStore(store, familyToken, key);
107
+ useRealtimeService(
108
+ `pull:${token.key}`,
109
+ (socket) => pullMutableAtomFamilyMember(store, socket, token)
110
+ );
111
+ return useO(token);
112
+ }
113
+ function usePullSelector(token) {
114
+ const store = React.useContext(StoreContext);
115
+ useRealtimeService(
116
+ `pull:${token.key}`,
117
+ (socket) => pullSelector(store, socket, token)
118
+ );
119
+ return useO(token);
120
+ }
121
+ function usePullSelectorFamilyMember(familyToken, key) {
122
+ const store = React.useContext(StoreContext);
123
+ const token = findInStore(store, familyToken, key);
124
+ useRealtimeService(
125
+ `pull:${token.key}`,
126
+ (socket) => pullSelectorFamilyMember(store, socket, token)
127
+ );
128
+ return useO(token);
129
+ }
130
+ function usePush(token) {
131
+ const store = React.useContext(StoreContext);
132
+ useRealtimeService(
133
+ `push:${token.key}`,
134
+ (socket) => pushState(store, socket, token)
135
+ );
136
+ return useI(token);
137
+ }
138
+ function useServerAction(token) {
139
+ const store = React.useContext(StoreContext);
140
+ useRealtimeService(
141
+ `tx:${token.key}`,
142
+ (socket) => serverAction(store, socket, token)
143
+ );
144
+ return actUponStore(store, token, arbitrary());
145
+ }
146
+ function useSyncContinuity(token) {
147
+ const store = React.useContext(StoreContext);
148
+ useRealtimeService(`tx-sync:${token.key}`, (socket) => {
149
+ return syncContinuity(store, socket, token);
150
+ });
151
+ }
152
+
153
+ export { RealtimeContext, RealtimeProvider, usePullAtom, usePullAtomFamilyMember, usePullMutable, usePullMutableAtomFamilyMember, usePullSelector, usePullSelectorFamilyMember, usePush, useServerAction, useSyncContinuity };
@@ -0,0 +1,14 @@
1
+ // web/src/persist-sync.ts
2
+ var persistSync = (storage, { stringify, parse }, key) => ({ setSelf, onSet }) => {
3
+ const savedValue = storage.getItem(key);
4
+ if (savedValue != null) setSelf(parse(savedValue));
5
+ onSet(({ newValue }) => {
6
+ if (newValue == null) {
7
+ storage.removeItem(key);
8
+ return;
9
+ }
10
+ storage.setItem(key, stringify(newValue));
11
+ });
12
+ };
13
+
14
+ export { persistSync };
@@ -0,0 +1,83 @@
1
+ import { IMPLICIT, setIntoStore, subscribeToState, getFromStore, findInStore, getJsonToken, withdraw, subscribeToTimeline, undo, redo } from './chunk-GY2XQYZY.js';
2
+ import * as React5 from 'react';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ var StoreContext = React5.createContext(IMPLICIT.STORE);
6
+ var StoreProvider = ({ children, store = IMPLICIT.STORE }) => /* @__PURE__ */ jsx(StoreContext.Provider, { value: store, children });
7
+
8
+ // react/src/parse-state-overloads.ts
9
+ function parseStateOverloads(store, ...rest) {
10
+ let token;
11
+ if (rest.length === 2) {
12
+ const family = rest[0];
13
+ const key = rest[1];
14
+ token = findInStore(store, family, key);
15
+ } else {
16
+ token = rest[0];
17
+ }
18
+ return token;
19
+ }
20
+
21
+ // react/src/use-i.ts
22
+ function useI(...params) {
23
+ const store = React5.useContext(StoreContext);
24
+ const token = parseStateOverloads(store, ...params);
25
+ const setter = React5.useRef(null);
26
+ if (setter.current === null) {
27
+ setter.current = (next) => {
28
+ setIntoStore(store, token, next);
29
+ };
30
+ }
31
+ return setter.current;
32
+ }
33
+ function useO(...params) {
34
+ const store = React5.useContext(StoreContext);
35
+ const token = parseStateOverloads(store, ...params);
36
+ const id = React5.useId();
37
+ return React5.useSyncExternalStore(
38
+ (dispatch) => subscribeToState(store, token, `use-o:${id}`, dispatch),
39
+ () => getFromStore(store, token),
40
+ () => getFromStore(store, token)
41
+ );
42
+ }
43
+
44
+ // react/src/use-json.ts
45
+ function useJSON(token, key) {
46
+ const store = React5.useContext(StoreContext);
47
+ const stateToken = token.type === `mutable_atom_family` ? findInStore(store, token, key) : token;
48
+ const jsonToken = getJsonToken(store, stateToken);
49
+ return useO(jsonToken);
50
+ }
51
+ function useTL(token) {
52
+ const store = React5.useContext(StoreContext);
53
+ const id = React5.useId();
54
+ const timeline = withdraw(store, token);
55
+ const tokenRef = React5.useRef(token);
56
+ const rebuildMeta = () => {
57
+ return {
58
+ at: timeline.at,
59
+ length: timeline.history.length,
60
+ undo: () => {
61
+ undo(token);
62
+ },
63
+ redo: () => {
64
+ redo(token);
65
+ }
66
+ };
67
+ };
68
+ const meta = React5.useRef(rebuildMeta());
69
+ const retrieve = () => {
70
+ if (meta.current.at !== timeline?.at || meta.current.length !== timeline?.history.length || tokenRef.current !== token) {
71
+ tokenRef.current = token;
72
+ meta.current = rebuildMeta();
73
+ }
74
+ return meta.current;
75
+ };
76
+ return React5.useSyncExternalStore(
77
+ (dispatch) => subscribeToTimeline(store, token, `use-tl:${id}`, dispatch),
78
+ retrieve,
79
+ retrieve
80
+ );
81
+ }
82
+
83
+ export { StoreContext, StoreProvider, useI, useJSON, useO, useTL };