atom.io 0.27.4 → 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-JRENM6KL.js → chunk-6ABWLAGY.js} +177 -151
- package/dist/index.d.ts +3 -3
- 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 +80 -62
- 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 +20 -9
- package/internal/src/families/create-regular-atom-family.ts +15 -6
- package/internal/src/families/create-selector-family.ts +5 -5
- package/internal/src/families/create-writable-selector-family.ts +20 -10
- package/internal/src/families/dispose-from-store.ts +11 -14
- 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 -10
- package/internal/src/get-state/get-from-store.ts +32 -18
- 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 +2 -2
- package/internal/src/selector/register-selector.ts +9 -9
- package/internal/src/set-state/set-into-store.ts +8 -16
- package/internal/src/store/deposit.ts +53 -13
- package/internal/src/store/store.ts +1 -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 +6 -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 +1 -1
- 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/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
|
@@ -68,19 +68,19 @@ export const buildTransaction = (
|
|
|
68
68
|
},
|
|
69
69
|
toolkit: {
|
|
70
70
|
get: ((...ps: Parameters<typeof getState>) =>
|
|
71
|
-
getFromStore(...ps
|
|
71
|
+
getFromStore(child, ...ps)) as typeof getState,
|
|
72
72
|
set: ((...ps: Parameters<typeof setState>) => {
|
|
73
|
-
setIntoStore(...ps
|
|
73
|
+
setIntoStore(child, ...ps)
|
|
74
74
|
}) as typeof setState,
|
|
75
75
|
run: (token, identifier = arbitrary()) =>
|
|
76
76
|
actUponStore(token, identifier, child),
|
|
77
|
-
find: ((token, k) => findInStore(token, k
|
|
78
|
-
seek: ((token, k) => seekInStore(token, k
|
|
79
|
-
json: (token) => getJsonToken(
|
|
77
|
+
find: ((token, k) => findInStore(child, token, k)) as typeof findState,
|
|
78
|
+
seek: ((token, k) => seekInStore(child, token, k)) as typeof seekState,
|
|
79
|
+
json: (token) => getJsonToken(child, token),
|
|
80
80
|
make: (context, family, k, ...args) =>
|
|
81
81
|
makeMoleculeInStore(child, context, family, k, ...args),
|
|
82
82
|
dispose: ((...ps: Parameters<typeof disposeState>) => {
|
|
83
|
-
disposeFromStore(...ps
|
|
83
|
+
disposeFromStore(child, ...ps)
|
|
84
84
|
}) as typeof disposeState,
|
|
85
85
|
env: () => getEnvironmentData(child),
|
|
86
86
|
},
|
|
@@ -5,6 +5,7 @@ import { getState } from 'atom.io';
|
|
|
5
5
|
|
|
6
6
|
var attachAtomIndex = (store = IMPLICIT.STORE) => {
|
|
7
7
|
const atomTokenIndexState__INTERNAL = createRegularAtom(
|
|
8
|
+
store,
|
|
8
9
|
{
|
|
9
10
|
key: `\u{1F441}\u200D\u{1F5E8} Atom Token Index (Internal)`,
|
|
10
11
|
default: () => {
|
|
@@ -73,19 +74,16 @@ var attachAtomIndex = (store = IMPLICIT.STORE) => {
|
|
|
73
74
|
}
|
|
74
75
|
]
|
|
75
76
|
},
|
|
76
|
-
void 0
|
|
77
|
-
store
|
|
78
|
-
);
|
|
79
|
-
return createStandaloneSelector(
|
|
80
|
-
{
|
|
81
|
-
key: `\u{1F441}\u200D\u{1F5E8} Atom Token Index`,
|
|
82
|
-
get: ({ get }) => get(atomTokenIndexState__INTERNAL)
|
|
83
|
-
},
|
|
84
|
-
store
|
|
77
|
+
void 0
|
|
85
78
|
);
|
|
79
|
+
return createStandaloneSelector(store, {
|
|
80
|
+
key: `\u{1F441}\u200D\u{1F5E8} Atom Token Index`,
|
|
81
|
+
get: ({ get }) => get(atomTokenIndexState__INTERNAL)
|
|
82
|
+
});
|
|
86
83
|
};
|
|
87
84
|
var attachSelectorIndex = (store = IMPLICIT.STORE) => {
|
|
88
85
|
const readonlySelectorTokenIndexState__INTERNAL = createRegularAtom(
|
|
86
|
+
store,
|
|
89
87
|
{
|
|
90
88
|
key: `\u{1F441}\u200D\u{1F5E8} Selector Token Index (Internal)`,
|
|
91
89
|
default: () => {
|
|
@@ -162,56 +160,50 @@ var attachSelectorIndex = (store = IMPLICIT.STORE) => {
|
|
|
162
160
|
}
|
|
163
161
|
]
|
|
164
162
|
},
|
|
165
|
-
void 0
|
|
166
|
-
store
|
|
167
|
-
);
|
|
168
|
-
return createStandaloneSelector(
|
|
169
|
-
{
|
|
170
|
-
key: `\u{1F441}\u200D\u{1F5E8} Selector Token Index`,
|
|
171
|
-
get: ({ get }) => get(readonlySelectorTokenIndexState__INTERNAL)
|
|
172
|
-
},
|
|
173
|
-
IMPLICIT.STORE
|
|
163
|
+
void 0
|
|
174
164
|
);
|
|
165
|
+
return createStandaloneSelector(IMPLICIT.STORE, {
|
|
166
|
+
key: `\u{1F441}\u200D\u{1F5E8} Selector Token Index`,
|
|
167
|
+
get: ({ get }) => get(readonlySelectorTokenIndexState__INTERNAL)
|
|
168
|
+
});
|
|
175
169
|
};
|
|
176
170
|
var attachTimelineFamily = (store = IMPLICIT.STORE) => {
|
|
177
|
-
const findTimelineLogState__INTERNAL = createRegularAtomFamily(
|
|
178
|
-
{
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
install: () => {
|
|
189
|
-
},
|
|
190
|
-
subject: new Subject(),
|
|
191
|
-
subscriptions: /* @__PURE__ */ new Map()
|
|
171
|
+
const findTimelineLogState__INTERNAL = createRegularAtomFamily(store, {
|
|
172
|
+
key: `\u{1F441}\u200D\u{1F5E8} Timeline Update Log (Internal)`,
|
|
173
|
+
default: (key) => store.timelines.get(key) ?? {
|
|
174
|
+
type: `timeline`,
|
|
175
|
+
key: ``,
|
|
176
|
+
at: 0,
|
|
177
|
+
timeTraveling: null,
|
|
178
|
+
history: [],
|
|
179
|
+
selectorTime: null,
|
|
180
|
+
transactionKey: null,
|
|
181
|
+
install: () => {
|
|
192
182
|
},
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
const tl = store.timelines.get(key);
|
|
196
|
-
tl?.subject.subscribe(`introspection`, (_) => {
|
|
197
|
-
setSelf({ ...tl });
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
]
|
|
183
|
+
subject: new Subject(),
|
|
184
|
+
subscriptions: /* @__PURE__ */ new Map()
|
|
201
185
|
},
|
|
202
|
-
|
|
203
|
-
|
|
186
|
+
effects: (key) => [
|
|
187
|
+
({ setSelf }) => {
|
|
188
|
+
const tl = store.timelines.get(key);
|
|
189
|
+
tl?.subject.subscribe(`introspection`, (_) => {
|
|
190
|
+
setSelf({ ...tl });
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
]
|
|
194
|
+
});
|
|
204
195
|
const findTimelineLogState = createSelectorFamily(
|
|
196
|
+
store,
|
|
205
197
|
{
|
|
206
198
|
key: `\u{1F441}\u200D\u{1F5E8} Timeline Update Log`,
|
|
207
199
|
get: (key) => ({ get }) => get(findTimelineLogState__INTERNAL, key)
|
|
208
|
-
}
|
|
209
|
-
store
|
|
200
|
+
}
|
|
210
201
|
);
|
|
211
202
|
return findTimelineLogState;
|
|
212
203
|
};
|
|
213
204
|
var attachTimelineIndex = (store = IMPLICIT.STORE) => {
|
|
214
205
|
const timelineTokenIndexState__INTERNAL = createRegularAtom(
|
|
206
|
+
store,
|
|
215
207
|
{
|
|
216
208
|
key: `\u{1F441}\u200D\u{1F5E8} Timeline Token Index (Internal)`,
|
|
217
209
|
default: () => [...store.timelines].map(([key]) => {
|
|
@@ -228,20 +220,17 @@ var attachTimelineIndex = (store = IMPLICIT.STORE) => {
|
|
|
228
220
|
}
|
|
229
221
|
]
|
|
230
222
|
},
|
|
231
|
-
void 0
|
|
232
|
-
store
|
|
233
|
-
);
|
|
234
|
-
const timelineTokenIndex = createStandaloneSelector(
|
|
235
|
-
{
|
|
236
|
-
key: `\u{1F441}\u200D\u{1F5E8} Timeline Token Index`,
|
|
237
|
-
get: ({ get }) => get(timelineTokenIndexState__INTERNAL)
|
|
238
|
-
},
|
|
239
|
-
store
|
|
223
|
+
void 0
|
|
240
224
|
);
|
|
225
|
+
const timelineTokenIndex = createStandaloneSelector(store, {
|
|
226
|
+
key: `\u{1F441}\u200D\u{1F5E8} Timeline Token Index`,
|
|
227
|
+
get: ({ get }) => get(timelineTokenIndexState__INTERNAL)
|
|
228
|
+
});
|
|
241
229
|
return timelineTokenIndex;
|
|
242
230
|
};
|
|
243
231
|
var attachTransactionIndex = (store = IMPLICIT.STORE) => {
|
|
244
232
|
const transactionTokenIndexState__INTERNAL = createRegularAtom(
|
|
233
|
+
store,
|
|
245
234
|
{
|
|
246
235
|
key: `\u{1F441}\u200D\u{1F5E8} Transaction Token Index (Internal)`,
|
|
247
236
|
default: () => [...store.transactions].map(([key]) => {
|
|
@@ -258,43 +247,33 @@ var attachTransactionIndex = (store = IMPLICIT.STORE) => {
|
|
|
258
247
|
}
|
|
259
248
|
]
|
|
260
249
|
},
|
|
261
|
-
void 0
|
|
262
|
-
store
|
|
263
|
-
);
|
|
264
|
-
const transactionTokenIndex = createStandaloneSelector(
|
|
265
|
-
{
|
|
266
|
-
key: `\u{1F441}\u200D\u{1F5E8} Transaction Token Index`,
|
|
267
|
-
get: ({ get }) => get(transactionTokenIndexState__INTERNAL)
|
|
268
|
-
},
|
|
269
|
-
store
|
|
250
|
+
void 0
|
|
270
251
|
);
|
|
252
|
+
const transactionTokenIndex = createStandaloneSelector(store, {
|
|
253
|
+
key: `\u{1F441}\u200D\u{1F5E8} Transaction Token Index`,
|
|
254
|
+
get: ({ get }) => get(transactionTokenIndexState__INTERNAL)
|
|
255
|
+
});
|
|
271
256
|
return transactionTokenIndex;
|
|
272
257
|
};
|
|
273
258
|
var attachTransactionLogs = (store = IMPLICIT.STORE) => {
|
|
274
|
-
const transactionUpdateLogAtoms = createRegularAtomFamily(
|
|
275
|
-
{
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
{
|
|
293
|
-
key: `\u{1F441}\u200D\u{1F5E8} Transaction Update Log`,
|
|
294
|
-
get: (key) => ({ get }) => get(transactionUpdateLogAtoms, key)
|
|
295
|
-
},
|
|
296
|
-
store
|
|
297
|
-
);
|
|
259
|
+
const transactionUpdateLogAtoms = createRegularAtomFamily(store, {
|
|
260
|
+
key: `\u{1F441}\u200D\u{1F5E8} Transaction Update Log (Internal)`,
|
|
261
|
+
default: () => [],
|
|
262
|
+
effects: (key) => [
|
|
263
|
+
({ setSelf }) => {
|
|
264
|
+
const tx = store.transactions.get(key);
|
|
265
|
+
tx?.subject.subscribe(`introspection`, (transactionUpdate) => {
|
|
266
|
+
if (transactionUpdate.key === key) {
|
|
267
|
+
setSelf((state) => [...state, transactionUpdate]);
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
]
|
|
272
|
+
});
|
|
273
|
+
const findTransactionUpdateLogState = createSelectorFamily(store, {
|
|
274
|
+
key: `\u{1F441}\u200D\u{1F5E8} Transaction Update Log`,
|
|
275
|
+
get: (key) => ({ get }) => get(transactionUpdateLogAtoms, key)
|
|
276
|
+
});
|
|
298
277
|
return findTransactionUpdateLogState;
|
|
299
278
|
};
|
|
300
279
|
|
|
@@ -15,6 +15,7 @@ export const attachAtomIndex = (
|
|
|
15
15
|
store: Store = IMPLICIT.STORE,
|
|
16
16
|
): ReadonlySelectorToken<AtomTokenIndex> => {
|
|
17
17
|
const atomTokenIndexState__INTERNAL = createRegularAtom<AtomTokenIndex>(
|
|
18
|
+
store,
|
|
18
19
|
{
|
|
19
20
|
key: `👁🗨 Atom Token Index (Internal)`,
|
|
20
21
|
default: () => {
|
|
@@ -88,13 +89,9 @@ export const attachAtomIndex = (
|
|
|
88
89
|
],
|
|
89
90
|
},
|
|
90
91
|
undefined,
|
|
91
|
-
store,
|
|
92
|
-
)
|
|
93
|
-
return createStandaloneSelector(
|
|
94
|
-
{
|
|
95
|
-
key: `👁🗨 Atom Token Index`,
|
|
96
|
-
get: ({ get }) => get(atomTokenIndexState__INTERNAL),
|
|
97
|
-
},
|
|
98
|
-
store,
|
|
99
92
|
)
|
|
93
|
+
return createStandaloneSelector(store, {
|
|
94
|
+
key: `👁🗨 Atom Token Index`,
|
|
95
|
+
get: ({ get }) => get(atomTokenIndexState__INTERNAL),
|
|
96
|
+
})
|
|
100
97
|
}
|
|
@@ -16,6 +16,8 @@ export const attachSelectorIndex = (
|
|
|
16
16
|
): ReadonlySelectorToken<SelectorTokenIndex> => {
|
|
17
17
|
const readonlySelectorTokenIndexState__INTERNAL =
|
|
18
18
|
createRegularAtom<SelectorTokenIndex>(
|
|
19
|
+
store,
|
|
20
|
+
|
|
19
21
|
{
|
|
20
22
|
key: `👁🗨 Selector Token Index (Internal)`,
|
|
21
23
|
default: () => {
|
|
@@ -98,13 +100,9 @@ export const attachSelectorIndex = (
|
|
|
98
100
|
],
|
|
99
101
|
},
|
|
100
102
|
undefined,
|
|
101
|
-
store,
|
|
102
103
|
)
|
|
103
|
-
return createStandaloneSelector(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
},
|
|
108
|
-
IMPLICIT.STORE,
|
|
109
|
-
)
|
|
104
|
+
return createStandaloneSelector(IMPLICIT.STORE, {
|
|
105
|
+
key: `👁🗨 Selector Token Index`,
|
|
106
|
+
get: ({ get }) => get(readonlySelectorTokenIndexState__INTERNAL),
|
|
107
|
+
})
|
|
110
108
|
}
|
|
@@ -13,34 +13,32 @@ export const attachTimelineFamily = (
|
|
|
13
13
|
const findTimelineLogState__INTERNAL = createRegularAtomFamily<
|
|
14
14
|
Timeline<any>,
|
|
15
15
|
string
|
|
16
|
-
>(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
},
|
|
41
|
-
store,
|
|
42
|
-
)
|
|
16
|
+
>(store, {
|
|
17
|
+
key: `👁🗨 Timeline Update Log (Internal)`,
|
|
18
|
+
default: (key) =>
|
|
19
|
+
store.timelines.get(key) ?? {
|
|
20
|
+
type: `timeline`,
|
|
21
|
+
key: ``,
|
|
22
|
+
at: 0,
|
|
23
|
+
timeTraveling: null,
|
|
24
|
+
history: [],
|
|
25
|
+
selectorTime: null,
|
|
26
|
+
transactionKey: null,
|
|
27
|
+
install: () => {},
|
|
28
|
+
subject: new Subject(),
|
|
29
|
+
subscriptions: new Map(),
|
|
30
|
+
},
|
|
31
|
+
effects: (key) => [
|
|
32
|
+
({ setSelf }) => {
|
|
33
|
+
const tl = store.timelines.get(key)
|
|
34
|
+
tl?.subject.subscribe(`introspection`, (_) => {
|
|
35
|
+
setSelf({ ...tl })
|
|
36
|
+
})
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
})
|
|
43
40
|
const findTimelineLogState = createSelectorFamily<Timeline<any>, string>(
|
|
41
|
+
store,
|
|
44
42
|
{
|
|
45
43
|
key: `👁🗨 Timeline Update Log`,
|
|
46
44
|
get:
|
|
@@ -48,7 +46,6 @@ export const attachTimelineFamily = (
|
|
|
48
46
|
({ get }) =>
|
|
49
47
|
get(findTimelineLogState__INTERNAL, key),
|
|
50
48
|
},
|
|
51
|
-
store,
|
|
52
49
|
)
|
|
53
50
|
return findTimelineLogState
|
|
54
51
|
}
|
|
@@ -12,6 +12,7 @@ export const attachTimelineIndex = (
|
|
|
12
12
|
const timelineTokenIndexState__INTERNAL = createRegularAtom<
|
|
13
13
|
TimelineToken<any>[]
|
|
14
14
|
>(
|
|
15
|
+
store,
|
|
15
16
|
{
|
|
16
17
|
key: `👁🗨 Timeline Token Index (Internal)`,
|
|
17
18
|
default: () =>
|
|
@@ -30,14 +31,10 @@ export const attachTimelineIndex = (
|
|
|
30
31
|
],
|
|
31
32
|
},
|
|
32
33
|
undefined,
|
|
33
|
-
store,
|
|
34
|
-
)
|
|
35
|
-
const timelineTokenIndex = createStandaloneSelector(
|
|
36
|
-
{
|
|
37
|
-
key: `👁🗨 Timeline Token Index`,
|
|
38
|
-
get: ({ get }) => get(timelineTokenIndexState__INTERNAL),
|
|
39
|
-
},
|
|
40
|
-
store,
|
|
41
34
|
)
|
|
35
|
+
const timelineTokenIndex = createStandaloneSelector(store, {
|
|
36
|
+
key: `👁🗨 Timeline Token Index`,
|
|
37
|
+
get: ({ get }) => get(timelineTokenIndexState__INTERNAL),
|
|
38
|
+
})
|
|
42
39
|
return timelineTokenIndex
|
|
43
40
|
}
|
|
@@ -12,6 +12,7 @@ export const attachTransactionIndex = (
|
|
|
12
12
|
const transactionTokenIndexState__INTERNAL = createRegularAtom<
|
|
13
13
|
TransactionToken<Func>[]
|
|
14
14
|
>(
|
|
15
|
+
store,
|
|
15
16
|
{
|
|
16
17
|
key: `👁🗨 Transaction Token Index (Internal)`,
|
|
17
18
|
default: () =>
|
|
@@ -30,14 +31,10 @@ export const attachTransactionIndex = (
|
|
|
30
31
|
],
|
|
31
32
|
},
|
|
32
33
|
undefined,
|
|
33
|
-
store,
|
|
34
|
-
)
|
|
35
|
-
const transactionTokenIndex = createStandaloneSelector(
|
|
36
|
-
{
|
|
37
|
-
key: `👁🗨 Transaction Token Index`,
|
|
38
|
-
get: ({ get }) => get(transactionTokenIndexState__INTERNAL),
|
|
39
|
-
},
|
|
40
|
-
store,
|
|
41
34
|
)
|
|
35
|
+
const transactionTokenIndex = createStandaloneSelector(store, {
|
|
36
|
+
key: `👁🗨 Transaction Token Index`,
|
|
37
|
+
get: ({ get }) => get(transactionTokenIndexState__INTERNAL),
|
|
38
|
+
})
|
|
42
39
|
return transactionTokenIndex
|
|
43
40
|
}
|
|
@@ -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
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) {
|