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.
- package/data/dist/index.cjs +139 -66
- package/data/dist/index.d.ts +6 -0
- package/data/dist/index.js +3 -3
- package/data/src/join.ts +135 -56
- package/data/src/struct-family.ts +2 -2
- package/dist/{chunk-RT43TVKP.js → chunk-GVHKIJ3G.js} +1 -1
- package/dist/{chunk-KGZGBCYS.js → chunk-JA4V7TJY.js} +135 -62
- package/dist/index.cjs +2 -7
- package/dist/index.d.ts +29 -14
- package/dist/index.js +4 -8
- package/ephemeral/dist/index.cjs +11 -0
- package/ephemeral/dist/index.js +9 -0
- package/ephemeral/package.json +16 -0
- package/ephemeral/src/index.ts +1 -0
- package/eslint-plugin/dist/index.cjs +156 -1
- package/eslint-plugin/dist/index.js +156 -1
- package/eslint-plugin/src/rules/index.ts +1 -0
- package/eslint-plugin/src/rules/lifespan.ts +204 -0
- package/eslint-plugin/src/rules/synchronous-selector-dependencies.ts +1 -65
- package/eslint-plugin/src/walk.ts +73 -0
- package/immortal/dist/index.cjs +100 -0
- package/immortal/dist/index.js +97 -0
- package/immortal/package.json +16 -0
- package/immortal/src/index.ts +2 -0
- package/immortal/src/molecule.ts +134 -0
- package/immortal/src/seek-state.ts +60 -0
- package/internal/dist/index.cjs +211 -194
- package/internal/dist/index.d.ts +30 -14
- package/internal/dist/index.js +210 -194
- package/internal/src/atom/dispose-atom.ts +4 -1
- package/internal/src/families/create-readonly-selector-family.ts +9 -9
- package/internal/src/families/create-regular-atom-family.ts +15 -20
- package/internal/src/families/create-writable-selector-family.ts +6 -7
- package/internal/src/families/find-in-store.ts +11 -5
- package/internal/src/families/index.ts +2 -0
- package/internal/src/families/init-family-member.ts +91 -0
- package/internal/src/families/seek-in-store.ts +106 -0
- package/internal/src/future.ts +6 -20
- package/internal/src/get-state/get-from-store.ts +2 -3
- package/internal/src/mutable/create-mutable-atom-family.ts +17 -23
- package/internal/src/mutable/create-mutable-atom.ts +3 -1
- package/internal/src/mutable/get-json-family.ts +2 -2
- package/internal/src/mutable/get-json-token.ts +27 -12
- package/internal/src/mutable/tracker-family.ts +14 -12
- package/internal/src/mutable/tracker.ts +2 -24
- package/internal/src/not-found-error.ts +11 -3
- package/internal/src/operation.ts +0 -1
- package/internal/src/selector/create-readonly-selector.ts +2 -2
- package/internal/src/selector/create-writable-selector.ts +2 -2
- package/internal/src/selector/dispose-selector.ts +40 -23
- package/internal/src/selector/register-selector.ts +8 -5
- package/internal/src/set-state/set-into-store.ts +2 -2
- package/internal/src/store/index.ts +0 -1
- package/internal/src/store/store.ts +18 -5
- package/internal/src/subscribe/recall-state.ts +3 -3
- package/internal/src/subscribe/subscribe-to-state.ts +18 -5
- package/internal/src/transaction/build-transaction.ts +7 -2
- package/introspection/dist/index.cjs +39 -65
- package/introspection/dist/index.js +39 -65
- package/introspection/src/attach-atom-index.ts +38 -48
- package/introspection/src/attach-introspection-states.ts +0 -1
- package/introspection/src/attach-selector-index.ts +45 -50
- package/introspection/src/attach-timeline-family.ts +2 -17
- package/json/dist/index.cjs +38 -4
- package/json/dist/index.js +40 -6
- package/json/src/select-json-family.ts +46 -7
- package/package.json +31 -11
- package/react/dist/index.cjs +1 -1
- package/react/dist/index.js +1 -1
- package/react/src/use-json.ts +1 -1
- package/react-devtools/dist/index.cjs +11 -10
- package/react-devtools/dist/index.js +2 -1
- package/react-devtools/src/StateIndex.tsx +2 -1
- package/react-devtools/src/TimelineIndex.tsx +2 -1
- package/react-devtools/src/TransactionIndex.tsx +7 -7
- package/realtime-client/dist/index.cjs +3 -3
- package/realtime-client/dist/index.js +3 -3
- package/realtime-client/src/pull-mutable-atom-family-member.ts +1 -1
- package/realtime-client/src/pull-mutable-atom.ts +1 -1
- package/realtime-client/src/sync-continuity.ts +1 -2
- package/realtime-react/dist/index.cjs +1 -1
- package/realtime-react/dist/index.js +1 -1
- package/realtime-server/dist/index.cjs +18 -17
- package/realtime-server/dist/index.js +7 -6
- package/realtime-server/src/realtime-continuity-synchronizer.ts +5 -3
- package/realtime-server/src/realtime-mutable-family-provider.ts +2 -1
- package/realtime-server/src/realtime-mutable-provider.ts +1 -1
- package/realtime-testing/dist/index.cjs +6 -2
- package/realtime-testing/dist/index.js +8 -5
- package/realtime-testing/src/setup-realtime-test.tsx +5 -2
- package/src/atom.ts +10 -4
- package/src/index.ts +1 -2
- package/src/selector.ts +10 -4
- package/src/silo.ts +3 -3
- package/src/transaction.ts +5 -2
- package/src/validators.ts +0 -6
- package/internal/src/store/withdraw-new-family-member.ts +0 -69
- /package/{src → ephemeral/src}/find-state.ts +0 -0
- /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.
|
|
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.
|
|
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.
|
|
57
|
+
"@types/react": "18.3.2",
|
|
58
58
|
"@types/tmp": "0.2.6",
|
|
59
|
-
"@typescript-eslint/parser": "7.
|
|
60
|
-
"@typescript-eslint/rule-tester": "7.
|
|
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.
|
|
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.
|
|
68
|
-
"framer-motion": "11.
|
|
69
|
-
"happy-dom": "14.
|
|
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.
|
|
73
|
+
"preact": "10.22.0",
|
|
74
74
|
"react": "18.3.1",
|
|
75
75
|
"react-dom": "18.3.1",
|
|
76
|
-
"react-router-dom": "6.23.
|
|
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",
|
package/react/dist/index.cjs
CHANGED
|
@@ -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) {
|
package/react/dist/index.js
CHANGED
|
@@ -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) {
|
package/react/src/use-json.ts
CHANGED
|
@@ -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
|
-
|
|
1722
|
-
|
|
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:
|
|
1744
|
-
typeState:
|
|
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:
|
|
1768
|
-
typeState:
|
|
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:
|
|
1996
|
-
timelineState:
|
|
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:
|
|
2050
|
-
logState:
|
|
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,
|
|
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 {
|
|
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 {
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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-
|
|
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-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
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`
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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]);
|