atom.io 0.27.3 → 0.27.5
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.js +57 -72
- package/data/src/dict.ts +9 -12
- package/data/src/join.ts +25 -26
- package/data/src/struct-family.ts +17 -23
- package/data/src/struct.ts +9 -12
- package/dist/{chunk-ETCFHO7J.js → chunk-6ABWLAGY.js} +246 -159
- package/dist/index.d.ts +4 -4
- package/dist/index.js +33 -53
- package/ephemeral/dist/index.js +1 -1
- package/ephemeral/src/find-state.ts +1 -1
- package/immortal/dist/index.js +2 -2
- package/immortal/src/seek-state.ts +2 -2
- package/internal/dist/index.d.ts +88 -73
- package/internal/dist/index.js +1 -1
- package/internal/src/atom/create-regular-atom.ts +3 -3
- package/internal/src/atom/create-standalone-atom.ts +7 -5
- package/internal/src/families/create-atom-family.ts +5 -5
- package/internal/src/families/create-readonly-selector-family.ts +35 -7
- package/internal/src/families/create-regular-atom-family.ts +16 -6
- package/internal/src/families/create-selector-family.ts +5 -5
- package/internal/src/families/create-writable-selector-family.ts +35 -8
- package/internal/src/families/dispose-from-store.ts +22 -16
- package/internal/src/families/find-in-store.ts +11 -11
- package/internal/src/families/init-family-member.ts +9 -9
- package/internal/src/families/seek-in-store.ts +10 -13
- package/internal/src/get-state/get-from-store.ts +58 -20
- package/internal/src/get-state/read-or-compute-value.ts +1 -1
- package/internal/src/index.ts +5 -3
- package/internal/src/ingest-updates/ingest-atom-update.ts +1 -1
- package/internal/src/ingest-updates/ingest-creation-disposal.ts +5 -5
- package/internal/src/molecule/create-molecule-family.ts +1 -1
- package/internal/src/molecule/dispose-molecule.ts +1 -1
- package/internal/src/molecule/grow-molecule-in-store.ts +1 -1
- package/internal/src/molecule/make-molecule-in-store.ts +5 -5
- package/internal/src/mutable/create-mutable-atom-family.ts +15 -6
- package/internal/src/mutable/create-mutable-atom.ts +3 -3
- package/internal/src/mutable/get-json-token.ts +2 -2
- package/internal/src/mutable/tracker-family.ts +3 -3
- package/internal/src/mutable/tracker.ts +14 -18
- package/internal/src/selector/create-readonly-selector.ts +2 -2
- package/internal/src/selector/create-standalone-selector.ts +5 -5
- package/internal/src/selector/create-writable-selector.ts +8 -8
- package/internal/src/selector/register-selector.ts +9 -9
- package/internal/src/set-state/set-into-store.ts +21 -18
- package/internal/src/store/deposit.ts +62 -21
- package/internal/src/store/store.ts +2 -1
- package/internal/src/subscribe/index.ts +2 -0
- package/internal/src/subscribe/subscribe-in-store.ts +62 -0
- package/internal/src/timeline/time-travel.ts +1 -1
- package/internal/src/transaction/build-transaction.ts +7 -6
- package/introspection/dist/index.js +66 -87
- package/introspection/src/attach-atom-index.ts +5 -8
- package/introspection/src/attach-selector-index.ts +6 -8
- package/introspection/src/attach-timeline-family.ts +25 -28
- package/introspection/src/attach-timeline-index.ts +5 -8
- package/introspection/src/attach-transaction-index.ts +5 -8
- package/introspection/src/attach-transaction-logs.ts +21 -27
- package/json/dist/index.js +12 -15
- package/json/src/select-json-family.ts +4 -4
- package/json/src/select-json.ts +6 -9
- package/package.json +4 -4
- package/react/dist/index.js +7 -7
- package/react/src/parse-state-overloads.ts +2 -2
- package/react/src/use-i.ts +1 -1
- package/react/src/use-json.ts +2 -2
- package/react/src/use-o.ts +2 -2
- package/realtime-client/dist/index.js +35 -55
- package/realtime-client/src/pull-atom-family-member.ts +1 -1
- package/realtime-client/src/pull-atom.ts +1 -1
- package/realtime-client/src/pull-mutable-atom-family-member.ts +3 -3
- package/realtime-client/src/pull-mutable-atom.ts +3 -3
- package/realtime-client/src/sync-continuity.ts +27 -47
- package/realtime-react/dist/index.js +3 -3
- package/realtime-react/src/use-pull-atom-family-member.ts +1 -1
- package/realtime-react/src/use-pull-mutable-family-member.ts +1 -1
- package/realtime-react/src/use-pull-selector-family-member.ts +1 -1
- package/realtime-server/dist/index.js +32 -32
- package/realtime-server/src/realtime-continuity-synchronizer.ts +16 -16
- package/realtime-server/src/realtime-family-provider.ts +3 -3
- package/realtime-server/src/realtime-mutable-family-provider.ts +5 -5
- package/realtime-server/src/realtime-mutable-provider.ts +2 -2
- package/realtime-server/src/realtime-state-provider.ts +1 -1
- package/realtime-server/src/realtime-state-receiver.ts +1 -1
- package/realtime-testing/dist/index.js +7 -7
- package/realtime-testing/src/setup-realtime-test.tsx +7 -7
- package/src/atom.ts +2 -2
- package/src/dispose-state.ts +2 -2
- package/src/get-state.ts +9 -13
- package/src/logger.ts +4 -0
- package/src/molecule.ts +1 -1
- package/src/selector.ts +2 -2
- package/src/set-state.ts +10 -7
- package/src/silo.ts +23 -53
- package/src/subscribe.ts +3 -23
- package/src/timeline.ts +2 -2
- package/internal/src/families/throw-in-case-of-conflicting-family.ts +0 -18
|
@@ -12,35 +12,29 @@ export const attachTransactionLogs = (
|
|
|
12
12
|
const transactionUpdateLogAtoms = createRegularAtomFamily<
|
|
13
13
|
TransactionUpdate<Func>[],
|
|
14
14
|
string
|
|
15
|
-
>(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
},
|
|
30
|
-
store,
|
|
31
|
-
)
|
|
15
|
+
>(store, {
|
|
16
|
+
key: `👁🗨 Transaction Update Log (Internal)`,
|
|
17
|
+
default: () => [],
|
|
18
|
+
effects: (key) => [
|
|
19
|
+
({ setSelf }) => {
|
|
20
|
+
const tx = store.transactions.get(key)
|
|
21
|
+
tx?.subject.subscribe(`introspection`, (transactionUpdate) => {
|
|
22
|
+
if (transactionUpdate.key === key) {
|
|
23
|
+
setSelf((state) => [...state, transactionUpdate])
|
|
24
|
+
}
|
|
25
|
+
})
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
})
|
|
32
29
|
const findTransactionUpdateLogState = createSelectorFamily<
|
|
33
30
|
TransactionUpdate<Func>[],
|
|
34
31
|
string
|
|
35
|
-
>(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
(
|
|
41
|
-
|
|
42
|
-
},
|
|
43
|
-
store,
|
|
44
|
-
)
|
|
32
|
+
>(store, {
|
|
33
|
+
key: `👁🗨 Transaction Update Log`,
|
|
34
|
+
get:
|
|
35
|
+
(key) =>
|
|
36
|
+
({ get }) =>
|
|
37
|
+
get(transactionUpdateLogAtoms, key),
|
|
38
|
+
})
|
|
45
39
|
return findTransactionUpdateLogState
|
|
46
40
|
}
|
package/json/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { stringifyJson, parseJson } from '../../dist/chunk-AK23DRMD.js';
|
|
2
2
|
export { parseJson, stringifyJson } from '../../dist/chunk-AK23DRMD.js';
|
|
3
|
-
import { createWritableSelectorFamily } from '../../dist/chunk-
|
|
3
|
+
import { createWritableSelectorFamily } from '../../dist/chunk-6ABWLAGY.js';
|
|
4
4
|
import '../../dist/chunk-IBTHB2PI.js';
|
|
5
5
|
import '../../dist/chunk-XWL6SNVU.js';
|
|
6
6
|
import { createStandaloneSelector, IMPLICIT, growMoleculeInStore, initFamilyMemberInStore, withdraw, seekInStore } from 'atom.io/internal';
|
|
@@ -10,19 +10,17 @@ function fromEntries(entries) {
|
|
|
10
10
|
return Object.fromEntries(entries);
|
|
11
11
|
}
|
|
12
12
|
var selectJson = (atom, transform, store = IMPLICIT.STORE) => {
|
|
13
|
-
return createStandaloneSelector(
|
|
14
|
-
{
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
set
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
},
|
|
21
|
-
store
|
|
22
|
-
);
|
|
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
|
+
});
|
|
23
20
|
};
|
|
24
21
|
function selectJsonFamily(atomFamilyToken, transform, store = IMPLICIT.STORE) {
|
|
25
22
|
const jsonFamily = createWritableSelectorFamily(
|
|
23
|
+
store,
|
|
26
24
|
{
|
|
27
25
|
key: `${atomFamilyToken.key}:JSON`,
|
|
28
26
|
get: (key) => ({ seek, get }) => {
|
|
@@ -39,7 +37,7 @@ function selectJsonFamily(atomFamilyToken, transform, store = IMPLICIT.STORE) {
|
|
|
39
37
|
if (store.config.lifespan === `immortal`) {
|
|
40
38
|
throw new Error(`No molecule found for key "${stringKey}"`);
|
|
41
39
|
}
|
|
42
|
-
const newToken = initFamilyMemberInStore(atomFamilyToken, key
|
|
40
|
+
const newToken = initFamilyMemberInStore(store, atomFamilyToken, key);
|
|
43
41
|
return transform.toJson(get(newToken));
|
|
44
42
|
},
|
|
45
43
|
set: (key) => ({ seek, set }, newValue) => {
|
|
@@ -57,14 +55,13 @@ function selectJsonFamily(atomFamilyToken, transform, store = IMPLICIT.STORE) {
|
|
|
57
55
|
throw new Error(`No molecule found for key "${stringKey}"`);
|
|
58
56
|
}
|
|
59
57
|
set(
|
|
60
|
-
initFamilyMemberInStore(atomFamilyToken, key
|
|
58
|
+
initFamilyMemberInStore(store, atomFamilyToken, key),
|
|
61
59
|
transform.fromJson(newValue)
|
|
62
60
|
);
|
|
63
61
|
}
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
64
|
},
|
|
67
|
-
store,
|
|
68
65
|
[`mutable`, `json`]
|
|
69
66
|
);
|
|
70
67
|
const atomFamily = withdraw(atomFamilyToken, store);
|
|
@@ -72,7 +69,7 @@ function selectJsonFamily(atomFamilyToken, transform, store = IMPLICIT.STORE) {
|
|
|
72
69
|
`store=${store.config.name}::json-selector-family`,
|
|
73
70
|
(event) => {
|
|
74
71
|
if (event.token.family) {
|
|
75
|
-
seekInStore(jsonFamily, parseJson(event.token.family.subKey)
|
|
72
|
+
seekInStore(store, jsonFamily, parseJson(event.token.family.subKey));
|
|
76
73
|
}
|
|
77
74
|
}
|
|
78
75
|
);
|
|
@@ -42,6 +42,7 @@ export function selectJsonFamily<
|
|
|
42
42
|
store: Store = IMPLICIT.STORE,
|
|
43
43
|
): AtomIO.WritableSelectorFamilyToken<J, K> {
|
|
44
44
|
const jsonFamily = createWritableSelectorFamily<J, K>(
|
|
45
|
+
store,
|
|
45
46
|
{
|
|
46
47
|
key: `${atomFamilyToken.key}:JSON`,
|
|
47
48
|
get:
|
|
@@ -60,7 +61,7 @@ export function selectJsonFamily<
|
|
|
60
61
|
if (store.config.lifespan === `immortal`) {
|
|
61
62
|
throw new Error(`No molecule found for key "${stringKey}"`)
|
|
62
63
|
}
|
|
63
|
-
const newToken = initFamilyMemberInStore(atomFamilyToken, key
|
|
64
|
+
const newToken = initFamilyMemberInStore(store, atomFamilyToken, key)
|
|
64
65
|
return transform.toJson(get(newToken))
|
|
65
66
|
},
|
|
66
67
|
set:
|
|
@@ -80,14 +81,13 @@ export function selectJsonFamily<
|
|
|
80
81
|
throw new Error(`No molecule found for key "${stringKey}"`)
|
|
81
82
|
}
|
|
82
83
|
set(
|
|
83
|
-
initFamilyMemberInStore(atomFamilyToken, key
|
|
84
|
+
initFamilyMemberInStore(store, atomFamilyToken, key),
|
|
84
85
|
transform.fromJson(newValue),
|
|
85
86
|
)
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
89
|
},
|
|
89
90
|
},
|
|
90
|
-
store,
|
|
91
91
|
[`mutable`, `json`],
|
|
92
92
|
)
|
|
93
93
|
const atomFamily = withdraw(atomFamilyToken, store)
|
|
@@ -95,7 +95,7 @@ export function selectJsonFamily<
|
|
|
95
95
|
`store=${store.config.name}::json-selector-family`,
|
|
96
96
|
(event) => {
|
|
97
97
|
if (event.token.family) {
|
|
98
|
-
seekInStore(jsonFamily, parseJson(event.token.family.subKey) as K
|
|
98
|
+
seekInStore(store, jsonFamily, parseJson(event.token.family.subKey) as K)
|
|
99
99
|
}
|
|
100
100
|
},
|
|
101
101
|
)
|
package/json/src/select-json.ts
CHANGED
|
@@ -9,14 +9,11 @@ export const selectJson = <T, J extends Json.Serializable>(
|
|
|
9
9
|
transform: JsonInterface<T, J>,
|
|
10
10
|
store: Store = IMPLICIT.STORE,
|
|
11
11
|
): AtomIO.WritableSelectorToken<J> => {
|
|
12
|
-
return createStandaloneSelector(
|
|
13
|
-
{
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
set
|
|
17
|
-
set(atom, transform.fromJson(newValue))
|
|
18
|
-
},
|
|
12
|
+
return createStandaloneSelector(store, {
|
|
13
|
+
key: `${atom.key}:JSON`,
|
|
14
|
+
get: ({ get }) => transform.toJson(get(atom)),
|
|
15
|
+
set: ({ set }, newValue) => {
|
|
16
|
+
set(atom, transform.fromJson(newValue))
|
|
19
17
|
},
|
|
20
|
-
|
|
21
|
-
)
|
|
18
|
+
})
|
|
22
19
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "atom.io",
|
|
3
|
-
"version": "0.27.
|
|
3
|
+
"version": "0.27.5",
|
|
4
4
|
"description": "Composable and testable reactive data library.",
|
|
5
5
|
"homepage": "https://atom.io.fyi",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"drizzle-kit": "0.24.0",
|
|
68
68
|
"drizzle-orm": "0.33.0",
|
|
69
69
|
"eslint": "9.9.0",
|
|
70
|
-
"framer-motion": "11.3.
|
|
70
|
+
"framer-motion": "11.3.28",
|
|
71
71
|
"happy-dom": "14.12.3",
|
|
72
72
|
"http-proxy": "1.18.1",
|
|
73
73
|
"npmlog": "7.0.1",
|
|
@@ -75,14 +75,14 @@
|
|
|
75
75
|
"preact": "10.23.2",
|
|
76
76
|
"react": "18.3.1",
|
|
77
77
|
"react-dom": "18.3.1",
|
|
78
|
-
"react-router-dom": "6.26.
|
|
78
|
+
"react-router-dom": "6.26.1",
|
|
79
79
|
"socket.io": "4.7.5",
|
|
80
80
|
"socket.io-client": "4.7.5",
|
|
81
81
|
"tmp": "0.2.3",
|
|
82
82
|
"tsup": "8.2.4",
|
|
83
83
|
"tsx": "4.17.0",
|
|
84
84
|
"typescript": "5.5.4",
|
|
85
|
-
"vite": "5.4.
|
|
85
|
+
"vite": "5.4.1",
|
|
86
86
|
"vite-tsconfig-paths": "5.0.1",
|
|
87
87
|
"vitest": "2.0.5"
|
|
88
88
|
},
|
package/react/dist/index.js
CHANGED
|
@@ -12,13 +12,13 @@ function parseStateOverloads(store, ...rest) {
|
|
|
12
12
|
const family = rest[0];
|
|
13
13
|
const key = rest[1];
|
|
14
14
|
if (store.config.lifespan === `immortal`) {
|
|
15
|
-
const maybeToken = seekInStore(family, key
|
|
15
|
+
const maybeToken = seekInStore(store, family, key);
|
|
16
16
|
if (!maybeToken) {
|
|
17
17
|
throw new NotFoundError(family, key, store);
|
|
18
18
|
}
|
|
19
19
|
token = maybeToken;
|
|
20
20
|
} else {
|
|
21
|
-
token = findInStore(family, key
|
|
21
|
+
token = findInStore(store, family, key);
|
|
22
22
|
}
|
|
23
23
|
} else {
|
|
24
24
|
token = rest[0];
|
|
@@ -33,7 +33,7 @@ function useI(...params) {
|
|
|
33
33
|
const setter = React5.useRef(null);
|
|
34
34
|
if (setter.current === null) {
|
|
35
35
|
setter.current = (next) => {
|
|
36
|
-
setIntoStore(token, next
|
|
36
|
+
setIntoStore(store, token, next);
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
39
|
return setter.current;
|
|
@@ -44,16 +44,16 @@ function useO(...params) {
|
|
|
44
44
|
const id = React5.useId();
|
|
45
45
|
return React5.useSyncExternalStore(
|
|
46
46
|
(dispatch) => subscribeToState(token, dispatch, `use-o:${id}`, store),
|
|
47
|
-
() => getFromStore(
|
|
48
|
-
() => getFromStore(
|
|
47
|
+
() => getFromStore(store, token),
|
|
48
|
+
() => getFromStore(store, token)
|
|
49
49
|
);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
// react/src/use-json.ts
|
|
53
53
|
function useJSON(token, key) {
|
|
54
54
|
const store = React5.useContext(StoreContext);
|
|
55
|
-
const stateToken = token.type === `mutable_atom_family` ? findInStore(token, key
|
|
56
|
-
const jsonToken = getJsonToken(
|
|
55
|
+
const stateToken = token.type === `mutable_atom_family` ? findInStore(store, token, key) : token;
|
|
56
|
+
const jsonToken = getJsonToken(store, stateToken);
|
|
57
57
|
return useO(jsonToken);
|
|
58
58
|
}
|
|
59
59
|
function useTL(token) {
|
|
@@ -28,13 +28,13 @@ export function parseStateOverloads<T, K extends Canonical>(
|
|
|
28
28
|
const key = rest[1]
|
|
29
29
|
|
|
30
30
|
if (store.config.lifespan === `immortal`) {
|
|
31
|
-
const maybeToken = seekInStore(family, key
|
|
31
|
+
const maybeToken = seekInStore(store, family, key)
|
|
32
32
|
if (!maybeToken) {
|
|
33
33
|
throw new NotFoundError(family, key, store)
|
|
34
34
|
}
|
|
35
35
|
token = maybeToken
|
|
36
36
|
} else {
|
|
37
|
-
token = findInStore(family, key
|
|
37
|
+
token = findInStore(store, family, key)
|
|
38
38
|
}
|
|
39
39
|
} else {
|
|
40
40
|
token = rest[0]
|
package/react/src/use-i.ts
CHANGED
package/react/src/use-json.ts
CHANGED
|
@@ -31,8 +31,8 @@ export function useJSON<
|
|
|
31
31
|
const store = React.useContext(StoreContext)
|
|
32
32
|
const stateToken: ReadableToken<any> =
|
|
33
33
|
token.type === `mutable_atom_family`
|
|
34
|
-
? findInStore(token, key as Key
|
|
34
|
+
? findInStore(store, token, key as Key)
|
|
35
35
|
: token
|
|
36
|
-
const jsonToken = getJsonToken(
|
|
36
|
+
const jsonToken = getJsonToken(store, stateToken)
|
|
37
37
|
return useO(jsonToken)
|
|
38
38
|
}
|
package/react/src/use-o.ts
CHANGED
|
@@ -21,7 +21,7 @@ export function useO<T, K extends Canonical>(
|
|
|
21
21
|
const id = React.useId()
|
|
22
22
|
return React.useSyncExternalStore<T>(
|
|
23
23
|
(dispatch) => subscribeToState(token, dispatch, `use-o:${id}`, store),
|
|
24
|
-
() => getFromStore(
|
|
25
|
-
() => getFromStore(
|
|
24
|
+
() => getFromStore(store, token),
|
|
25
|
+
() => getFromStore(store, token),
|
|
26
26
|
)
|
|
27
27
|
}
|
|
@@ -8,7 +8,7 @@ import { optimisticUpdateQueue as optimisticUpdateQueue$1, confirmedUpdateQueue
|
|
|
8
8
|
|
|
9
9
|
function pullAtom(token, socket, store) {
|
|
10
10
|
const setServedValue = (data) => {
|
|
11
|
-
setIntoStore(token, data
|
|
11
|
+
setIntoStore(store, token, data);
|
|
12
12
|
};
|
|
13
13
|
socket.on(`serve:${token.key}`, setServedValue);
|
|
14
14
|
socket.emit(`sub:${token.key}`);
|
|
@@ -26,7 +26,7 @@ function pullAtomFamilyMember(token, socket, store) {
|
|
|
26
26
|
const { key: familyKey, subKey: serializedSubKey } = token.family;
|
|
27
27
|
const subKey = parseJson(serializedSubKey);
|
|
28
28
|
socket?.on(`serve:${token.key}`, (data) => {
|
|
29
|
-
setIntoStore(token, data
|
|
29
|
+
setIntoStore(store, token, data);
|
|
30
30
|
});
|
|
31
31
|
socket?.emit(`sub:${familyKey}`, subKey);
|
|
32
32
|
return () => {
|
|
@@ -35,15 +35,15 @@ function pullAtomFamilyMember(token, socket, store) {
|
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
function pullMutableAtom(token, socket, store) {
|
|
38
|
-
const jsonToken = getJsonToken(
|
|
38
|
+
const jsonToken = getJsonToken(store, token);
|
|
39
39
|
const updateToken = getUpdateToken(token);
|
|
40
40
|
socket.on(`init:${token.key}`, (data) => {
|
|
41
|
-
setIntoStore(jsonToken, data
|
|
41
|
+
setIntoStore(store, jsonToken, data);
|
|
42
42
|
});
|
|
43
43
|
socket.on(
|
|
44
44
|
`next:${token.key}`,
|
|
45
45
|
(data) => {
|
|
46
|
-
setIntoStore(updateToken, data
|
|
46
|
+
setIntoStore(store, updateToken, data);
|
|
47
47
|
}
|
|
48
48
|
);
|
|
49
49
|
socket.emit(`sub:${token.key}`);
|
|
@@ -62,14 +62,14 @@ 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(
|
|
66
|
-
setIntoStore(jsonToken, data
|
|
65
|
+
const jsonToken = getJsonToken(store, token);
|
|
66
|
+
setIntoStore(store, jsonToken, data);
|
|
67
67
|
});
|
|
68
68
|
socket.on(
|
|
69
69
|
`next:${token.key}`,
|
|
70
70
|
(data) => {
|
|
71
71
|
const trackerToken = getUpdateToken(token);
|
|
72
|
-
setIntoStore(trackerToken, data
|
|
72
|
+
setIntoStore(store, trackerToken, data);
|
|
73
73
|
}
|
|
74
74
|
);
|
|
75
75
|
socket.emit(`sub:${familyKey}`, subKey);
|
|
@@ -195,8 +195,8 @@ function serverAction(token, socket, store) {
|
|
|
195
195
|
}
|
|
196
196
|
function syncContinuity(continuity, socket, store) {
|
|
197
197
|
const continuityKey = continuity.key;
|
|
198
|
-
const optimisticUpdates = getFromStore(optimisticUpdateQueue$1
|
|
199
|
-
const confirmedUpdates = getFromStore(confirmedUpdateQueue$1
|
|
198
|
+
const optimisticUpdates = getFromStore(store, optimisticUpdateQueue$1);
|
|
199
|
+
const confirmedUpdates = getFromStore(store, confirmedUpdateQueue$1);
|
|
200
200
|
const initializeContinuity = (epoch, payload) => {
|
|
201
201
|
socket.off(`continuity-init:${continuityKey}`, initializeContinuity);
|
|
202
202
|
let i = 0;
|
|
@@ -208,9 +208,9 @@ function syncContinuity(continuity, socket, store) {
|
|
|
208
208
|
} else {
|
|
209
209
|
v = x;
|
|
210
210
|
if (`type` in k && k.type === `mutable_atom`) {
|
|
211
|
-
k = getJsonToken(
|
|
211
|
+
k = getJsonToken(store, k);
|
|
212
212
|
}
|
|
213
|
-
setIntoStore(k, v
|
|
213
|
+
setIntoStore(store, k, v);
|
|
214
214
|
}
|
|
215
215
|
i++;
|
|
216
216
|
}
|
|
@@ -226,14 +226,10 @@ function syncContinuity(continuity, socket, store) {
|
|
|
226
226
|
continuityKey,
|
|
227
227
|
`reconciling updates`
|
|
228
228
|
);
|
|
229
|
-
setIntoStore(
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
return queue;
|
|
234
|
-
},
|
|
235
|
-
store
|
|
236
|
-
);
|
|
229
|
+
setIntoStore(store, optimisticUpdateQueue$1, (queue) => {
|
|
230
|
+
queue.shift();
|
|
231
|
+
return queue;
|
|
232
|
+
});
|
|
237
233
|
if (optimisticUpdate.id === confirmedUpdate.id) {
|
|
238
234
|
const clientResult = JSON.stringify(optimisticUpdate.updates);
|
|
239
235
|
const serverResult = JSON.stringify(confirmedUpdate.updates);
|
|
@@ -356,15 +352,11 @@ function syncContinuity(continuity, socket, store) {
|
|
|
356
352
|
`pushing confirmed update to queue`,
|
|
357
353
|
confirmed
|
|
358
354
|
);
|
|
359
|
-
setIntoStore(
|
|
360
|
-
|
|
361
|
-
(
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
return queue;
|
|
365
|
-
},
|
|
366
|
-
store
|
|
367
|
-
);
|
|
355
|
+
setIntoStore(store, confirmedUpdateQueue$1, (queue) => {
|
|
356
|
+
queue.push(confirmed);
|
|
357
|
+
queue.sort((a, b) => a.epoch - b.epoch);
|
|
358
|
+
return queue;
|
|
359
|
+
});
|
|
368
360
|
}
|
|
369
361
|
}
|
|
370
362
|
} else {
|
|
@@ -414,15 +406,11 @@ function syncContinuity(continuity, socket, store) {
|
|
|
414
406
|
continuityKey,
|
|
415
407
|
`pushing confirmed update #${confirmed.epoch} to queue`
|
|
416
408
|
);
|
|
417
|
-
setIntoStore(
|
|
418
|
-
|
|
419
|
-
(
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
return queue;
|
|
423
|
-
},
|
|
424
|
-
store
|
|
425
|
-
);
|
|
409
|
+
setIntoStore(store, confirmedUpdateQueue$1, (queue) => {
|
|
410
|
+
queue.push(confirmed);
|
|
411
|
+
queue.sort((a, b) => a.epoch - b.epoch);
|
|
412
|
+
return queue;
|
|
413
|
+
});
|
|
426
414
|
}
|
|
427
415
|
}
|
|
428
416
|
}
|
|
@@ -450,15 +438,11 @@ function syncContinuity(continuity, socket, store) {
|
|
|
450
438
|
continuityKey,
|
|
451
439
|
`enqueuing new optimistic update`
|
|
452
440
|
);
|
|
453
|
-
setIntoStore(
|
|
454
|
-
|
|
455
|
-
(
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
return queue;
|
|
459
|
-
},
|
|
460
|
-
store
|
|
461
|
-
);
|
|
441
|
+
setIntoStore(store, optimisticUpdateQueue$1, (queue) => {
|
|
442
|
+
queue.push(clientUpdate);
|
|
443
|
+
queue.sort((a, b) => a.epoch - b.epoch);
|
|
444
|
+
return queue;
|
|
445
|
+
});
|
|
462
446
|
} else {
|
|
463
447
|
store.logger.info(
|
|
464
448
|
`\u{1F91E}`,
|
|
@@ -466,14 +450,10 @@ function syncContinuity(continuity, socket, store) {
|
|
|
466
450
|
continuityKey,
|
|
467
451
|
`replacing existing optimistic update at index ${optimisticUpdateIndex}`
|
|
468
452
|
);
|
|
469
|
-
setIntoStore(
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
return queue;
|
|
474
|
-
},
|
|
475
|
-
store
|
|
476
|
-
);
|
|
453
|
+
setIntoStore(store, optimisticUpdateQueue$1, (queue) => {
|
|
454
|
+
queue[optimisticUpdateIndex] = clientUpdate;
|
|
455
|
+
return queue;
|
|
456
|
+
});
|
|
477
457
|
}
|
|
478
458
|
socket.emit(`tx-run:${continuityKey}`, {
|
|
479
459
|
id: clientUpdate.id,
|
|
@@ -16,7 +16,7 @@ export function pullAtomFamilyMember<J extends Json.Serializable>(
|
|
|
16
16
|
const { key: familyKey, subKey: serializedSubKey } = token.family
|
|
17
17
|
const subKey = parseJson(serializedSubKey)
|
|
18
18
|
socket?.on(`serve:${token.key}`, (data: J) => {
|
|
19
|
-
setIntoStore(token, data
|
|
19
|
+
setIntoStore(store, token, data)
|
|
20
20
|
})
|
|
21
21
|
socket?.emit(`sub:${familyKey}`, subKey)
|
|
22
22
|
return () => {
|
|
@@ -9,7 +9,7 @@ export function pullAtom<J extends Json.Serializable>(
|
|
|
9
9
|
store: Store,
|
|
10
10
|
): () => void {
|
|
11
11
|
const setServedValue = (data: J) => {
|
|
12
|
-
setIntoStore(token, data
|
|
12
|
+
setIntoStore(store, token, data)
|
|
13
13
|
}
|
|
14
14
|
socket.on(`serve:${token.key}`, setServedValue)
|
|
15
15
|
socket.emit(`sub:${token.key}`)
|
|
@@ -20,14 +20,14 @@ 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(
|
|
24
|
-
setIntoStore(jsonToken, data
|
|
23
|
+
const jsonToken = getJsonToken(store, token)
|
|
24
|
+
setIntoStore(store, jsonToken, data)
|
|
25
25
|
})
|
|
26
26
|
socket.on(
|
|
27
27
|
`next:${token.key}`,
|
|
28
28
|
(data: T extends Transceiver<infer Signal> ? Signal : never) => {
|
|
29
29
|
const trackerToken = getUpdateToken(token)
|
|
30
|
-
setIntoStore(trackerToken, data
|
|
30
|
+
setIntoStore(store, trackerToken, data)
|
|
31
31
|
},
|
|
32
32
|
)
|
|
33
33
|
socket.emit(`sub:${familyKey}`, subKey)
|
|
@@ -12,15 +12,15 @@ export function pullMutableAtom<
|
|
|
12
12
|
socket: Socket,
|
|
13
13
|
store: Store,
|
|
14
14
|
): () => void {
|
|
15
|
-
const jsonToken = getJsonToken(
|
|
15
|
+
const jsonToken = getJsonToken(store, token)
|
|
16
16
|
const updateToken = getUpdateToken(token)
|
|
17
17
|
socket.on(`init:${token.key}`, (data: J) => {
|
|
18
|
-
setIntoStore(jsonToken, data
|
|
18
|
+
setIntoStore(store, jsonToken, data)
|
|
19
19
|
})
|
|
20
20
|
socket.on(
|
|
21
21
|
`next:${token.key}`,
|
|
22
22
|
(data: T extends Transceiver<infer Update> ? Update : never) => {
|
|
23
|
-
setIntoStore(updateToken, data
|
|
23
|
+
setIntoStore(store, updateToken, data)
|
|
24
24
|
},
|
|
25
25
|
)
|
|
26
26
|
socket.emit(`sub:${token.key}`)
|