atom.io 0.15.6 → 0.16.1
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 +49 -37
- package/data/dist/index.cjs.map +1 -1
- package/data/dist/index.d.ts +6 -6
- package/data/dist/index.js +50 -38
- package/data/dist/index.js.map +1 -1
- package/data/src/dict.ts +6 -7
- package/data/src/join.ts +52 -38
- package/data/src/struct-family.ts +2 -2
- package/data/src/struct.ts +4 -5
- package/dist/index.cjs +12 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +67 -60
- package/dist/index.js +13 -6
- package/dist/index.js.map +1 -1
- package/internal/dist/index.cjs +911 -888
- package/internal/dist/index.cjs.map +1 -1
- package/internal/dist/index.d.ts +157 -162
- package/internal/dist/index.js +486 -462
- package/internal/dist/index.js.map +1 -1
- package/internal/src/atom/create-regular-atom.ts +9 -12
- package/internal/src/atom/create-standalone-atom.ts +33 -0
- package/internal/src/atom/delete-atom.ts +5 -2
- package/internal/src/atom/index.ts +1 -16
- package/internal/src/atom/is-default.ts +0 -1
- package/internal/src/caching.ts +6 -3
- package/internal/src/families/create-atom-family.ts +11 -7
- package/internal/src/families/create-readonly-selector-family.ts +4 -3
- package/internal/src/families/create-regular-atom-family.ts +12 -27
- package/internal/src/families/create-selector-family.ts +13 -49
- package/internal/src/families/create-writable-selector-family.ts +51 -0
- package/internal/src/index.ts +44 -3
- package/internal/src/lineage.ts +0 -7
- package/internal/src/mutable/create-mutable-atom-family.ts +61 -15
- package/internal/src/mutable/create-mutable-atom.ts +70 -25
- package/internal/src/mutable/get-json-family.ts +4 -5
- package/internal/src/mutable/get-json-token.ts +6 -3
- package/internal/src/mutable/get-update-token.ts +3 -3
- package/internal/src/mutable/index.ts +1 -7
- package/internal/src/mutable/is-mutable.ts +6 -7
- package/internal/src/mutable/tracker-family.ts +4 -4
- package/internal/src/mutable/tracker.ts +6 -6
- package/internal/src/read-or-compute-value.ts +6 -3
- package/internal/src/selector/create-readonly-selector.ts +4 -5
- package/internal/src/selector/create-standalone-selector.ts +32 -0
- package/internal/src/selector/{create-read-write-selector.ts → create-writable-selector.ts} +13 -10
- package/internal/src/selector/delete-selector.ts +2 -2
- package/internal/src/selector/index.ts +3 -1
- package/internal/src/selector/trace-selector-atoms.ts +3 -2
- package/internal/src/selector/update-selector-atoms.ts +1 -1
- package/internal/src/set-state/copy-mutable-if-needed.ts +5 -8
- package/internal/src/set-state/copy-mutable-in-transaction.ts +4 -36
- package/internal/src/set-state/emit-update.ts +2 -3
- package/internal/src/set-state/evict-downstream.ts +1 -1
- package/internal/src/set-state/set-atom-or-selector.ts +3 -3
- package/internal/src/set-state/set-atom.ts +1 -2
- package/internal/src/set-state/stow-update.ts +1 -1
- package/internal/src/store/deposit.ts +25 -13
- package/internal/src/store/store.ts +20 -21
- package/internal/src/store/withdraw-new-family-member.ts +16 -9
- package/internal/src/store/withdraw.ts +43 -19
- package/internal/src/subscribe/recall-state.ts +2 -6
- package/internal/src/subscribe/subscribe-to-root-atoms.ts +39 -41
- package/internal/src/subscribe/subscribe-to-state.ts +3 -1
- package/internal/src/timeline/add-atom-to-timeline.ts +5 -5
- package/internal/src/timeline/create-timeline.ts +19 -22
- package/introspection/dist/index.cjs +4 -8
- package/introspection/dist/index.cjs.map +1 -1
- package/introspection/dist/index.d.ts +5 -5
- package/introspection/dist/index.js +5 -9
- package/introspection/dist/index.js.map +1 -1
- package/introspection/src/attach-atom-index.ts +4 -5
- package/introspection/src/attach-selector-index.ts +4 -5
- package/introspection/src/attach-timeline-index.ts +6 -3
- package/introspection/src/attach-transaction-index.ts +6 -3
- package/introspection/src/index.ts +9 -5
- package/json/dist/index.cjs +3 -4
- package/json/dist/index.cjs.map +1 -1
- package/json/dist/index.d.ts +4 -3
- package/json/dist/index.js +4 -5
- package/json/dist/index.js.map +1 -1
- package/json/src/select-json-family.ts +24 -4
- package/json/src/select-json.ts +3 -4
- package/package.json +11 -11
- package/react-devtools/dist/index.cjs +0 -2
- package/react-devtools/dist/index.cjs.map +1 -1
- package/react-devtools/dist/index.d.ts +9 -9
- package/react-devtools/dist/index.js +0 -2
- package/react-devtools/dist/index.js.map +1 -1
- package/react-devtools/src/StateIndex.tsx +18 -10
- package/react-devtools/src/TimelineIndex.tsx +6 -2
- package/react-devtools/src/TransactionIndex.tsx +2 -2
- package/realtime-client/dist/index.cjs +27 -13
- package/realtime-client/dist/index.cjs.map +1 -1
- package/realtime-client/dist/index.d.ts +6 -4
- package/realtime-client/dist/index.js +20 -7
- package/realtime-client/dist/index.js.map +1 -1
- package/realtime-client/src/index.ts +4 -3
- package/realtime-client/src/server-action.ts +2 -55
- package/realtime-client/src/sync-server-action.ts +75 -0
- package/realtime-react/dist/index.cjs +22 -13
- package/realtime-react/dist/index.cjs.map +1 -1
- package/realtime-react/dist/index.d.ts +3 -1
- package/realtime-react/dist/index.js +20 -12
- package/realtime-react/dist/index.js.map +1 -1
- package/realtime-react/src/index.ts +1 -0
- package/realtime-react/src/use-server-action.ts +2 -4
- package/realtime-react/src/use-sync-server-action.ts +19 -0
- package/realtime-server/dist/index.cjs +83 -81
- package/realtime-server/dist/index.cjs.map +1 -1
- package/realtime-server/dist/index.d.ts +8 -8
- package/realtime-server/dist/index.js +58 -56
- package/realtime-server/dist/index.js.map +1 -1
- package/realtime-server/src/index.ts +15 -1
- package/realtime-server/src/{hook-composition/receive-transaction.ts → realtime-action-receiver.ts} +6 -2
- package/realtime-server/src/{hook-composition/sync-transaction.ts → realtime-action-synchronizer.ts} +10 -43
- package/realtime-server/src/{hook-composition/expose-family.ts → realtime-family-provider.ts} +9 -23
- package/realtime-server/src/{hook-composition/expose-mutable-family.ts → realtime-mutable-family-provider.ts} +4 -4
- package/realtime-server/src/{hook-composition/expose-mutable.ts → realtime-mutable-provider.ts} +4 -5
- package/realtime-server/src/realtime-server-store.ts +39 -0
- package/realtime-server/src/{hook-composition/expose-single.ts → realtime-state-provider.ts} +7 -8
- package/realtime-server/src/{hook-composition/receive-state.ts → realtime-state-receiver.ts} +7 -4
- package/src/atom.ts +39 -24
- package/src/find-state.ts +20 -19
- package/src/index.ts +41 -28
- package/src/logger.ts +1 -0
- package/src/selector.ts +31 -16
- package/src/silo.ts +45 -6
- package/src/subscribe.ts +1 -0
- package/src/validators.ts +35 -25
- package/transceivers/set-rtx/dist/index.cjs +2 -2
- package/transceivers/set-rtx/dist/index.cjs.map +1 -1
- package/transceivers/set-rtx/dist/index.js +2 -2
- package/transceivers/set-rtx/dist/index.js.map +1 -1
- package/transceivers/set-rtx/src/set-rtx.ts +2 -2
- package/internal/src/atom/create-atom.ts +0 -21
- package/internal/src/mutable/get-update-family.ts +0 -23
- package/internal/src/selector/create-selector.ts +0 -65
- package/realtime-server/src/hook-composition/index.ts +0 -15
- /package/realtime-client/src/{pull.ts → pull-state.ts} +0 -0
- /package/realtime-client/src/{push.ts → push-state.ts} +0 -0
- /package/realtime-client/src/{realtime-state.ts → realtime-client-store.ts} +0 -0
package/internal/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Json } from 'atom.io/json';
|
|
1
|
+
import { ƒn as _n, TransactionUpdate, TransactionOptions, TransactionToken, TransactorsWithRunAndEnv, RegularAtomToken, MutableAtomToken, WritableSelectorToken, ReadonlySelectorToken, WritableToken, ReadableToken, TimelineManageable, StateUpdate, TokenType, FamilyMetadata, TimelineUpdate, TimelineOptions, TimelineToken, AtomToken, WritableSelectorFamily, MutableAtomFamily, RegularAtomFamily, ReadonlySelectorFamily, AtomIOLogger, Logger, SelectorToken, MutableAtomOptions, MutableAtomFamilyOptions, AtomFamily, RegularAtomOptions, RegularAtomFamilyOptions, ReadonlySelectorFamilyOptions, WritableSelectorFamilyOptions, KeyedStateUpdate, ReadonlySelectorOptions, WritableSelectorOptions, Transactors, UpdateHandler, TransactionUpdateHandler } from 'atom.io';
|
|
2
|
+
import { Json, JsonInterface } from 'atom.io/json';
|
|
3
3
|
import { Store as Store$1 } from 'atom.io/internal';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
declare const abortTransaction: (store: Store) => void;
|
|
6
|
+
|
|
7
|
+
declare const applyTransaction: <ƒ extends _n>(output: ReturnType<ƒ>, store: Store) => void;
|
|
8
|
+
|
|
9
|
+
declare const buildTransaction: (key: string, params: any[], store: Store, id?: string) => void;
|
|
9
10
|
|
|
10
11
|
declare class Subject<T> {
|
|
11
12
|
Subscriber: (value: T) => void;
|
|
@@ -20,67 +21,6 @@ declare class StatefulSubject<T> extends Subject<T> {
|
|
|
20
21
|
next(value: T): void;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
type Selector<T> = {
|
|
24
|
-
key: string;
|
|
25
|
-
type: `selector`;
|
|
26
|
-
family?: FamilyMetadata$1;
|
|
27
|
-
install: (store: Store) => void;
|
|
28
|
-
subject: Subject<{
|
|
29
|
-
newValue: T;
|
|
30
|
-
oldValue: T;
|
|
31
|
-
}>;
|
|
32
|
-
get: () => T;
|
|
33
|
-
set: (newValue: T | ((oldValue: T) => T)) => void;
|
|
34
|
-
};
|
|
35
|
-
type ReadonlySelector<T> = {
|
|
36
|
-
key: string;
|
|
37
|
-
type: `readonly_selector`;
|
|
38
|
-
family?: FamilyMetadata$1;
|
|
39
|
-
install: (store: Store) => void;
|
|
40
|
-
subject: Subject<{
|
|
41
|
-
newValue: T;
|
|
42
|
-
oldValue: T;
|
|
43
|
-
}>;
|
|
44
|
-
get: () => T;
|
|
45
|
-
};
|
|
46
|
-
declare function createSelector<T>(options: SelectorOptions<T>, family: FamilyMetadata$1 | undefined, store: Store): SelectorToken<T>;
|
|
47
|
-
declare function createSelector<T>(options: ReadonlySelectorOptions<T>, family: FamilyMetadata$1 | undefined, store: Store): ReadonlySelectorToken<T>;
|
|
48
|
-
|
|
49
|
-
declare function deleteSelector(selectorToken: ReadonlySelectorToken<unknown> | SelectorToken<unknown>, store: Store): void;
|
|
50
|
-
|
|
51
|
-
type AtomKey<T> = string & {
|
|
52
|
-
__atomKey?: never;
|
|
53
|
-
__brand?: T;
|
|
54
|
-
};
|
|
55
|
-
type SelectorKey<T> = string & {
|
|
56
|
-
__selectorKey?: never;
|
|
57
|
-
__brand?: T;
|
|
58
|
-
};
|
|
59
|
-
type ReadonlySelectorKey<T> = string & {
|
|
60
|
-
__readonlySelectorKey?: never;
|
|
61
|
-
__brand?: T;
|
|
62
|
-
};
|
|
63
|
-
declare const isAtomKey: (key: string, store: Store) => key is AtomKey<unknown>;
|
|
64
|
-
declare const isSelectorKey: (key: string, store: Store) => key is SelectorKey<unknown>;
|
|
65
|
-
declare const isReadonlySelectorKey: (key: string, store: Store) => key is ReadonlySelectorKey<unknown>;
|
|
66
|
-
type StateKey<T> = AtomKey<T> | ReadonlySelectorKey<T> | SelectorKey<T>;
|
|
67
|
-
declare const isStateKey: (key: string, store: Store) => key is StateKey<unknown>;
|
|
68
|
-
|
|
69
|
-
declare const getSelectorDependencyKeys: (key: string, store: Store) => (AtomKey<unknown> | ReadonlySelectorKey<unknown> | SelectorKey<unknown>)[];
|
|
70
|
-
|
|
71
|
-
declare const registerSelector: (selectorKey: string, store: Store) => Transactors;
|
|
72
|
-
|
|
73
|
-
declare const traceSelectorAtoms: (selectorKey: string, directDependencyKey: StateKey<unknown>, store: Store) => AtomKey<unknown>[];
|
|
74
|
-
declare const traceAllSelectorAtoms: (selectorKey: string, store: Store) => AtomKey<unknown>[];
|
|
75
|
-
|
|
76
|
-
declare const updateSelectorAtoms: (selectorKey: string, dependency: ReadonlySelectorToken<unknown> | WritableToken<unknown>, store: Store) => void;
|
|
77
|
-
|
|
78
|
-
declare const abortTransaction: (store: Store) => void;
|
|
79
|
-
|
|
80
|
-
declare const applyTransaction: <ƒ extends _n>(output: ReturnType<ƒ>, store: Store) => void;
|
|
81
|
-
|
|
82
|
-
declare const buildTransaction: (key: string, params: any[], store: Store, id?: string) => void;
|
|
83
|
-
|
|
84
24
|
type Transaction<ƒ extends _n> = {
|
|
85
25
|
key: string;
|
|
86
26
|
type: `transaction`;
|
|
@@ -99,12 +39,13 @@ type TransactionMeta<ƒ extends _n> = {
|
|
|
99
39
|
transactors: TransactorsWithRunAndEnv;
|
|
100
40
|
};
|
|
101
41
|
|
|
102
|
-
declare function deposit<T>(state:
|
|
103
|
-
declare function deposit<T
|
|
104
|
-
declare function deposit<T>(state:
|
|
42
|
+
declare function deposit<T>(state: RegularAtom<T>): RegularAtomToken<T>;
|
|
43
|
+
declare function deposit<T extends Transceiver<any>>(state: MutableAtom<T, any>): MutableAtomToken<T, any>;
|
|
44
|
+
declare function deposit<T>(state: WritableSelector<T>): WritableSelectorToken<T>;
|
|
105
45
|
declare function deposit<T>(state: ReadonlySelector<T>): ReadonlySelectorToken<T>;
|
|
46
|
+
declare function deposit<T>(state: WritableState<T>): WritableToken<T>;
|
|
106
47
|
declare function deposit<T>(state: Transaction<T extends _n ? T : never>): TransactionToken<T>;
|
|
107
|
-
declare function deposit<T>(state:
|
|
48
|
+
declare function deposit<T>(state: ReadableState<T>): ReadableToken<T>;
|
|
108
49
|
|
|
109
50
|
type primitive = boolean | number | string | null;
|
|
110
51
|
|
|
@@ -185,59 +126,6 @@ interface Lineage {
|
|
|
185
126
|
child: typeof this | null;
|
|
186
127
|
}
|
|
187
128
|
declare function newest<T extends Lineage>(scion: T): T;
|
|
188
|
-
declare function eldest<T extends Lineage>(scion: T): T;
|
|
189
|
-
|
|
190
|
-
interface Transceiver<Signal extends Json.Serializable> {
|
|
191
|
-
do: (update: Signal) => void;
|
|
192
|
-
undo: (update: Signal) => void;
|
|
193
|
-
subscribe: (key: string, fn: (update: Signal) => void) => () => void;
|
|
194
|
-
cacheUpdateNumber: number;
|
|
195
|
-
getUpdateNumber: (update: Signal) => number;
|
|
196
|
-
}
|
|
197
|
-
declare function isTransceiver(value: unknown): value is Transceiver<Json.Serializable>;
|
|
198
|
-
type TransceiverMode = `playback` | `record` | `transaction`;
|
|
199
|
-
type Signal<TVR extends Transceiver<any>> = TVR extends Transceiver<infer Signal> ? Signal : never;
|
|
200
|
-
|
|
201
|
-
declare function createMutableAtom<Core extends Transceiver<any>, SerializableCore extends Json.Serializable>(options: MutableAtomOptions<Core, SerializableCore>, family: FamilyMetadata$1 | undefined, store: Store): MutableAtomToken<Core, SerializableCore>;
|
|
202
|
-
|
|
203
|
-
declare function createMutableAtomFamily<Core extends Transceiver<any>, SerializableCore extends Json.Serializable, Key extends string>(options: MutableAtomFamilyOptions<Core, SerializableCore, Key>, store: Store): MutableAtomFamily<Core, SerializableCore, Key>;
|
|
204
|
-
|
|
205
|
-
declare const getJsonFamily: <Core extends Transceiver<Json.Serializable>, SerializableCore extends Json.Serializable, Key extends string>(mutableAtomFamily: MutableAtomFamily<Core, SerializableCore, Key>, store: Store) => SelectorFamily<SerializableCore, Key>;
|
|
206
|
-
|
|
207
|
-
declare const getJsonToken: <Core extends Transceiver<any>, SerializableCore extends Json.Serializable>(mutableAtomToken: MutableAtomToken<Core, SerializableCore>) => SelectorToken<SerializableCore>;
|
|
208
|
-
|
|
209
|
-
declare const getUpdateToken: <Core extends Transceiver<any>, SerializableCore extends Json.Serializable>(mutableAtomToken: MutableAtomToken<Core, SerializableCore>) => AtomToken<Signal<Core>>;
|
|
210
|
-
|
|
211
|
-
declare const getUpdateFamily: <Core extends Transceiver<Json.Serializable>, SerializableCore extends Json.Serializable, Key extends string>(mutableAtomFamily: MutableAtomFamily<Core, SerializableCore, Key>, store: Store) => AtomFamily<Signal<Core> | null, Key>;
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* @internal Give the tracker a transceiver state and a store, and it will
|
|
215
|
-
* subscribe to the transceiver's inner value. When the inner value changes,
|
|
216
|
-
* the tracker will update its own state to reflect the change.
|
|
217
|
-
*/
|
|
218
|
-
declare class Tracker<Mutable extends Transceiver<any>> {
|
|
219
|
-
private Update;
|
|
220
|
-
private initializeState;
|
|
221
|
-
private unsubscribeFromInnerValue;
|
|
222
|
-
private unsubscribeFromState;
|
|
223
|
-
private observeCore;
|
|
224
|
-
private updateCore;
|
|
225
|
-
mutableState: MutableAtomToken<Mutable, Json.Serializable>;
|
|
226
|
-
latestUpdateState: AtomToken<typeof this.Update | null>;
|
|
227
|
-
dispose: () => void;
|
|
228
|
-
constructor(mutableState: MutableAtomToken<Mutable, Json.Serializable>, store: Store);
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
declare class FamilyTracker<Core extends Transceiver<any>, FamilyMemberKey extends Json.Serializable> {
|
|
232
|
-
private readonly Update;
|
|
233
|
-
readonly findLatestUpdateState: AtomFamily<typeof this.Update | null, FamilyMemberKey>;
|
|
234
|
-
readonly findMutableState: AtomFamily<Core, FamilyMemberKey>;
|
|
235
|
-
constructor(findMutableState: AtomFamily<Core, FamilyMemberKey>, store: Store);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
interface MutableAtom<T> extends Atom<T> {
|
|
239
|
-
mutable: true;
|
|
240
|
-
}
|
|
241
129
|
|
|
242
130
|
type OperationProgress = {
|
|
243
131
|
open: false;
|
|
@@ -257,7 +145,7 @@ type TimelineAtomUpdate<ManagedAtom extends TimelineManageable> = StateUpdate<To
|
|
|
257
145
|
key: string;
|
|
258
146
|
type: `atom_update`;
|
|
259
147
|
timestamp: number;
|
|
260
|
-
family?: FamilyMetadata
|
|
148
|
+
family?: FamilyMetadata;
|
|
261
149
|
};
|
|
262
150
|
type TimelineSelectorUpdate<ManagedAtom extends TimelineManageable> = {
|
|
263
151
|
key: string;
|
|
@@ -292,11 +180,11 @@ declare class Store implements Lineage {
|
|
|
292
180
|
parent: Store | null;
|
|
293
181
|
child: Store | null;
|
|
294
182
|
valueMap: Map<string, any>;
|
|
295
|
-
atoms: Map<string, Atom<any
|
|
296
|
-
selectors: Map<string,
|
|
183
|
+
atoms: Map<string, Atom<any>>;
|
|
184
|
+
selectors: Map<string, WritableSelector<any>>;
|
|
297
185
|
readonlySelectors: Map<string, ReadonlySelector<any>>;
|
|
298
186
|
trackers: Map<string, Tracker<Transceiver<any>>>;
|
|
299
|
-
families: Map<string,
|
|
187
|
+
families: Map<string, WritableSelectorFamily<any, any> | MutableAtomFamily<any, any, any> | RegularAtomFamily<any, any> | ReadonlySelectorFamily<any, any>>;
|
|
300
188
|
timelines: Map<string, Timeline<any>>;
|
|
301
189
|
transactions: Map<string, Transaction<_n>>;
|
|
302
190
|
atomsThatAreDefault: Set<string>;
|
|
@@ -307,7 +195,7 @@ declare class Store implements Lineage {
|
|
|
307
195
|
}>;
|
|
308
196
|
on: {
|
|
309
197
|
atomCreation: Subject<AtomToken<unknown>>;
|
|
310
|
-
selectorCreation: Subject<ReadonlySelectorToken<unknown> |
|
|
198
|
+
selectorCreation: Subject<ReadonlySelectorToken<unknown> | WritableSelectorToken<unknown>>;
|
|
311
199
|
transactionCreation: Subject<TransactionToken<_n>>;
|
|
312
200
|
timelineCreation: Subject<TimelineToken<unknown>>;
|
|
313
201
|
transactionApplying: StatefulSubject<TransactionMeta<_n> | null>;
|
|
@@ -328,44 +216,84 @@ declare const IMPLICIT: {
|
|
|
328
216
|
};
|
|
329
217
|
declare const clearStore: (store: Store) => void;
|
|
330
218
|
|
|
219
|
+
type Withdrawable = ReadableState<any> | Timeline<any> | Transaction<any>;
|
|
220
|
+
declare function withdraw<T>(token: RegularAtomToken<T>, store: Store): RegularAtom<T> | undefined;
|
|
221
|
+
declare function withdraw<T extends Transceiver<any>>(token: MutableAtomToken<T, any>, store: Store): MutableAtom<T, any> | undefined;
|
|
331
222
|
declare function withdraw<T>(token: AtomToken<T>, store: Store): Atom<T> | undefined;
|
|
332
|
-
declare function withdraw<T>(token:
|
|
333
|
-
declare function withdraw<T>(token: WritableToken<T>, store: Store): Atom<T> | Selector<T> | undefined;
|
|
223
|
+
declare function withdraw<T>(token: WritableSelectorToken<T>, store: Store): WritableSelector<T> | undefined;
|
|
334
224
|
declare function withdraw<T>(token: ReadonlySelectorToken<T>, store: Store): ReadonlySelector<T> | undefined;
|
|
225
|
+
declare function withdraw<T>(token: SelectorToken<T>, store: Store): Selector<T> | undefined;
|
|
226
|
+
declare function withdraw<T>(token: WritableToken<T>, store: Store): WritableState<T> | undefined;
|
|
227
|
+
declare function withdraw<T>(token: ReadableToken<T>, store: Store): ReadableState<T> | undefined;
|
|
335
228
|
declare function withdraw<T>(token: TransactionToken<T>, store: Store): Transaction<T extends _n ? T : never> | undefined;
|
|
336
|
-
declare function withdraw<T>(token: ReadableToken<T>, store: Store): StateNode<T> | undefined;
|
|
337
229
|
declare function withdraw<T>(token: TimelineToken<T>, store: Store): Timeline<T extends TimelineManageable ? T : never> | undefined;
|
|
338
230
|
|
|
339
|
-
declare function withdrawNewFamilyMember<T>(token:
|
|
340
|
-
declare function withdrawNewFamilyMember<T>(token:
|
|
231
|
+
declare function withdrawNewFamilyMember<T>(token: RegularAtomToken<T>, store: Store): Atom<T> | undefined;
|
|
232
|
+
declare function withdrawNewFamilyMember<T>(token: WritableSelectorToken<T>, store: Store): WritableSelector<T> | undefined;
|
|
341
233
|
declare function withdrawNewFamilyMember<T>(token: ReadonlySelectorToken<T>, store: Store): ReadonlySelector<T> | undefined;
|
|
342
|
-
declare function withdrawNewFamilyMember<T>(token: WritableToken<T>, store: Store):
|
|
343
|
-
declare function withdrawNewFamilyMember<T>(token: ReadableToken<T>, store: Store):
|
|
234
|
+
declare function withdrawNewFamilyMember<T>(token: WritableToken<T>, store: Store): WritableState<T> | undefined;
|
|
235
|
+
declare function withdrawNewFamilyMember<T>(token: ReadableToken<T>, store: Store): ReadableState<T> | undefined;
|
|
344
236
|
|
|
345
|
-
|
|
237
|
+
interface Transceiver<Signal extends Json.Serializable> {
|
|
238
|
+
do: (update: Signal) => void;
|
|
239
|
+
undo: (update: Signal) => void;
|
|
240
|
+
subscribe: (key: string, fn: (update: Signal) => void) => () => void;
|
|
241
|
+
cacheUpdateNumber: number;
|
|
242
|
+
getUpdateNumber: (update: Signal) => number;
|
|
243
|
+
}
|
|
244
|
+
declare function isTransceiver(value: unknown): value is Transceiver<Json.Serializable>;
|
|
245
|
+
type TransceiverMode = `playback` | `record` | `transaction`;
|
|
246
|
+
type Signal<TVR extends Transceiver<any>> = TVR extends Transceiver<infer Signal> ? Signal : never;
|
|
247
|
+
|
|
248
|
+
declare function createMutableAtom<T extends Transceiver<any>, J extends Json.Serializable>(options: MutableAtomOptions<T, J>, family: FamilyMetadata | undefined, store: Store): MutableAtomToken<T, J>;
|
|
249
|
+
|
|
250
|
+
declare function createMutableAtomFamily<T extends Transceiver<any>, J extends Json.Serializable, K extends string>(options: MutableAtomFamilyOptions<T, J, K>, store: Store): MutableAtomFamily<T, J, K>;
|
|
251
|
+
|
|
252
|
+
declare const getJsonFamily: <Core extends Transceiver<Json.Serializable>, SerializableCore extends Json.Serializable, Key extends string>(mutableAtomFamily: MutableAtomFamily<Core, SerializableCore, Key>, store: Store) => WritableSelectorFamily<SerializableCore, Key>;
|
|
346
253
|
|
|
347
|
-
declare
|
|
254
|
+
declare const getJsonToken: <Core extends Transceiver<any>, SerializableCore extends Json.Serializable>(mutableAtomToken: MutableAtomToken<Core, SerializableCore>) => WritableSelectorToken<SerializableCore>;
|
|
348
255
|
|
|
349
|
-
declare
|
|
256
|
+
declare const getUpdateToken: <Core extends Transceiver<any>, SerializableCore extends Json.Serializable>(mutableAtomToken: MutableAtomToken<Core, SerializableCore>) => RegularAtomToken<Signal<Core>>;
|
|
257
|
+
|
|
258
|
+
declare function isMutable(atom: Atom<any>): atom is MutableAtom<any, any>;
|
|
259
|
+
declare function isMutable(family: AtomFamily<any, any>): family is MutableAtomFamily<any, any, any>;
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* @internal Give the tracker a transceiver state and a store, and it will
|
|
263
|
+
* subscribe to the transceiver's inner value. When the inner value changes,
|
|
264
|
+
* the tracker will update its own state to reflect the change.
|
|
265
|
+
*/
|
|
266
|
+
declare class Tracker<Mutable extends Transceiver<any>> {
|
|
267
|
+
private Update;
|
|
268
|
+
private initializeState;
|
|
269
|
+
private unsubscribeFromInnerValue;
|
|
270
|
+
private unsubscribeFromState;
|
|
271
|
+
private observeCore;
|
|
272
|
+
private updateCore;
|
|
273
|
+
mutableState: MutableAtomToken<Mutable, Json.Serializable>;
|
|
274
|
+
latestUpdateState: RegularAtomToken<typeof this.Update | null>;
|
|
275
|
+
dispose: () => void;
|
|
276
|
+
constructor(mutableState: MutableAtomToken<Mutable, Json.Serializable>, store: Store);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
declare class FamilyTracker<Core extends Transceiver<any>, FamilyMemberKey extends Json.Serializable> {
|
|
280
|
+
private readonly Update;
|
|
281
|
+
readonly findLatestUpdateState: RegularAtomFamily<typeof this.Update | null, FamilyMemberKey>;
|
|
282
|
+
readonly findMutableState: MutableAtomFamily<Core, any, FamilyMemberKey>;
|
|
283
|
+
constructor(findMutableState: MutableAtomFamily<Core, any, FamilyMemberKey>, store: Store);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
declare function createStandaloneAtom<T>(options: RegularAtomOptions<T>, store: Store): RegularAtomToken<T>;
|
|
287
|
+
declare function createStandaloneAtom<T extends Transceiver<any>, J extends Json.Serializable>(options: MutableAtomOptions<T, J>, store: Store): MutableAtomToken<T, J>;
|
|
288
|
+
|
|
289
|
+
declare function createRegularAtom<T>(options: MutableAtomOptions<any, any> | RegularAtomOptions<T>, family: FamilyMetadata | undefined, store: Store): RegularAtomToken<T>;
|
|
290
|
+
|
|
291
|
+
declare function deleteAtom(atomToken: RegularAtomToken<unknown>, store: Store): void;
|
|
350
292
|
|
|
351
293
|
declare const isAtomDefault: (key: string, store: Store) => boolean;
|
|
352
294
|
declare const markAtomAsDefault: (key: string, store: Store) => void;
|
|
353
295
|
declare const markAtomAsNotDefault: (key: string, store: Store) => void;
|
|
354
296
|
|
|
355
|
-
type Atom<T> = {
|
|
356
|
-
key: string;
|
|
357
|
-
type: `atom`;
|
|
358
|
-
mutable?: boolean;
|
|
359
|
-
family?: FamilyMetadata;
|
|
360
|
-
install: (store: Store) => void;
|
|
361
|
-
subject: Subject<{
|
|
362
|
-
newValue: T;
|
|
363
|
-
oldValue: T;
|
|
364
|
-
}>;
|
|
365
|
-
default: T | (() => T);
|
|
366
|
-
cleanup?: () => void;
|
|
367
|
-
};
|
|
368
|
-
|
|
369
297
|
/**
|
|
370
298
|
* A Promise that can be canceled.
|
|
371
299
|
* @internal
|
|
@@ -383,17 +311,17 @@ declare class Future<T> extends Promise<T> {
|
|
|
383
311
|
|
|
384
312
|
declare function cacheValue<T>(key: string, value: T, subject: Subject<StateUpdate<unknown>>, store: Store): T;
|
|
385
313
|
declare function cacheValue<T extends Promise<any>>(key: string, value: T, subject: Subject<StateUpdate<unknown>>, store: Store): Future<T>;
|
|
386
|
-
declare const readCachedValue: <T>(token:
|
|
314
|
+
declare const readCachedValue: <T>(token: ReadableState<any>, target: Store) => T;
|
|
387
315
|
declare const evictCachedValue: (key: string, target: Store) => void;
|
|
388
316
|
|
|
389
317
|
declare function createAtomFamily<T extends Transceiver<any>, J extends Json.Serializable, K extends Json.Serializable>(options: MutableAtomFamilyOptions<T, J, K>, store: Store): MutableAtomFamily<T, J, K>;
|
|
390
|
-
declare function createAtomFamily<T, K extends Json.Serializable>(options:
|
|
318
|
+
declare function createAtomFamily<T, K extends Json.Serializable>(options: RegularAtomFamilyOptions<T, K>, store: Store): RegularAtomFamily<T, K>;
|
|
391
319
|
|
|
392
|
-
declare function createRegularAtomFamily<T, K extends Json.Serializable>(options:
|
|
320
|
+
declare function createRegularAtomFamily<T, K extends Json.Serializable>(options: RegularAtomFamilyOptions<T, K>, store: Store): RegularAtomFamily<T, K>;
|
|
393
321
|
|
|
394
322
|
declare function createReadonlySelectorFamily<T, K extends Json.Serializable>(options: ReadonlySelectorFamilyOptions<T, K>, store: Store): ReadonlySelectorFamily<T, K>;
|
|
395
323
|
|
|
396
|
-
declare function createSelectorFamily<T, K extends Json.Serializable>(options:
|
|
324
|
+
declare function createSelectorFamily<T, K extends Json.Serializable>(options: WritableSelectorFamilyOptions<T, K>, store: Store): WritableSelectorFamily<T, K>;
|
|
397
325
|
declare function createSelectorFamily<T, K extends Json.Serializable>(options: ReadonlySelectorFamilyOptions<T, K>, store: Store): ReadonlySelectorFamily<T, K>;
|
|
398
326
|
|
|
399
327
|
type EnvironmentData = {
|
|
@@ -408,6 +336,24 @@ declare function ingestSelectorUpdate(applying: `newValue` | `oldValue`, selecto
|
|
|
408
336
|
|
|
409
337
|
declare function ingestTransactionUpdate(applying: `newValue` | `oldValue`, transactionUpdate: TransactionUpdate<any>, store: Store): void;
|
|
410
338
|
|
|
339
|
+
type AtomKey<T> = string & {
|
|
340
|
+
__atomKey?: never;
|
|
341
|
+
__brand?: T;
|
|
342
|
+
};
|
|
343
|
+
type SelectorKey<T> = string & {
|
|
344
|
+
__selectorKey?: never;
|
|
345
|
+
__brand?: T;
|
|
346
|
+
};
|
|
347
|
+
type ReadonlySelectorKey<T> = string & {
|
|
348
|
+
__readonlySelectorKey?: never;
|
|
349
|
+
__brand?: T;
|
|
350
|
+
};
|
|
351
|
+
declare const isAtomKey: (key: string, store: Store) => key is AtomKey<unknown>;
|
|
352
|
+
declare const isSelectorKey: (key: string, store: Store) => key is SelectorKey<unknown>;
|
|
353
|
+
declare const isReadonlySelectorKey: (key: string, store: Store) => key is ReadonlySelectorKey<unknown>;
|
|
354
|
+
type StateKey<T> = AtomKey<T> | ReadonlySelectorKey<T> | SelectorKey<T>;
|
|
355
|
+
declare const isStateKey: (key: string, store: Store) => key is StateKey<unknown>;
|
|
356
|
+
|
|
411
357
|
declare class LazyMap<K, V> extends Map<K, V> {
|
|
412
358
|
protected readonly source: Map<K, V>;
|
|
413
359
|
deleted: Set<K>;
|
|
@@ -423,14 +369,32 @@ declare class NotFoundError extends Error {
|
|
|
423
369
|
constructor(token: ReadableToken<any>, store: Store);
|
|
424
370
|
}
|
|
425
371
|
|
|
426
|
-
declare const readOrComputeValue: <T>(state:
|
|
372
|
+
declare const readOrComputeValue: <T>(state: ReadableState<T>, target: Store) => T;
|
|
373
|
+
|
|
374
|
+
declare const createReadonlySelector: <T>(options: ReadonlySelectorOptions<T>, family: FamilyMetadata | undefined, store: Store) => ReadonlySelectorToken<T>;
|
|
375
|
+
|
|
376
|
+
declare function createStandaloneSelector<T>(options: WritableSelectorOptions<T>, store: Store): WritableSelectorToken<T>;
|
|
377
|
+
declare function createStandaloneSelector<T>(options: ReadonlySelectorOptions<T>, store: Store): ReadonlySelectorToken<T>;
|
|
378
|
+
|
|
379
|
+
declare const createWritableSelector: <T>(options: WritableSelectorOptions<T>, family: FamilyMetadata | undefined, store: Store) => WritableSelectorToken<T>;
|
|
380
|
+
|
|
381
|
+
declare function deleteSelector(selectorToken: ReadonlySelectorToken<unknown> | WritableSelectorToken<unknown>, store: Store): void;
|
|
382
|
+
|
|
383
|
+
declare const getSelectorDependencyKeys: (key: string, store: Store) => (AtomKey<unknown> | ReadonlySelectorKey<unknown> | SelectorKey<unknown>)[];
|
|
384
|
+
|
|
385
|
+
declare const registerSelector: (selectorKey: string, store: Store) => Transactors;
|
|
386
|
+
|
|
387
|
+
declare const traceSelectorAtoms: (selectorKey: string, directDependencyKey: StateKey<unknown>, store: Store) => AtomKey<unknown>[];
|
|
388
|
+
declare const traceAllSelectorAtoms: (selector: Selector<any>, store: Store) => AtomKey<unknown>[];
|
|
389
|
+
|
|
390
|
+
declare const updateSelectorAtoms: (selectorKey: string, dependency: ReadonlySelectorToken<unknown> | WritableToken<unknown>, store: Store) => void;
|
|
427
391
|
|
|
428
392
|
type Modify<T> = (thing: T) => T;
|
|
429
393
|
declare const become: <T>(nextVersionOfThing: T | Modify<T>) => (originalThing: T) => T;
|
|
430
394
|
|
|
431
|
-
declare const setAtomOrSelector: <T>(state:
|
|
395
|
+
declare const setAtomOrSelector: <T>(state: WritableState<T>, value: T | ((oldValue: T) => T), store: Store) => void;
|
|
432
396
|
|
|
433
|
-
declare const subscribeToRootAtoms: <T>(
|
|
397
|
+
declare const subscribeToRootAtoms: <T>(selector: Selector<T>, store: Store) => (() => void)[] | null;
|
|
434
398
|
|
|
435
399
|
declare function subscribeToState<T>(token: ReadableToken<T>, handleUpdate: UpdateHandler<T>, key: string, store: Store): () => void;
|
|
436
400
|
|
|
@@ -438,6 +402,37 @@ declare const subscribeToTimeline: <ManagedAtom extends TimelineManageable>(toke
|
|
|
438
402
|
|
|
439
403
|
declare const subscribeToTransaction: <ƒ extends _n>(token: TransactionToken<ƒ>, handleUpdate: TransactionUpdateHandler<ƒ>, key: string, store: Store$1) => (() => void);
|
|
440
404
|
|
|
441
|
-
type
|
|
405
|
+
type BaseStateData = {
|
|
406
|
+
key: string;
|
|
407
|
+
family?: FamilyMetadata;
|
|
408
|
+
install: (store: Store) => void;
|
|
409
|
+
subject: Subject<{
|
|
410
|
+
newValue: any;
|
|
411
|
+
oldValue: any;
|
|
412
|
+
}>;
|
|
413
|
+
};
|
|
414
|
+
type RegularAtom<T> = BaseStateData & {
|
|
415
|
+
type: `atom`;
|
|
416
|
+
default: T | (() => T);
|
|
417
|
+
cleanup?: () => void;
|
|
418
|
+
};
|
|
419
|
+
type MutableAtom<T extends Transceiver<any>, J extends Json.Serializable> = BaseStateData & JsonInterface<T, J> & {
|
|
420
|
+
type: `mutable_atom`;
|
|
421
|
+
default: T | (() => T);
|
|
422
|
+
cleanup?: () => void;
|
|
423
|
+
};
|
|
424
|
+
type Atom<T> = RegularAtom<T> | (T extends Transceiver<any> ? MutableAtom<T, any> : never);
|
|
425
|
+
type WritableSelector<T> = BaseStateData & {
|
|
426
|
+
type: `selector`;
|
|
427
|
+
get: () => T;
|
|
428
|
+
set: (newValue: T | ((oldValue: T) => T)) => void;
|
|
429
|
+
};
|
|
430
|
+
type ReadonlySelector<T> = BaseStateData & {
|
|
431
|
+
type: `readonly_selector`;
|
|
432
|
+
get: () => T;
|
|
433
|
+
};
|
|
434
|
+
type Selector<T> = ReadonlySelector<T> | WritableSelector<T>;
|
|
435
|
+
type WritableState<T> = Atom<T> | WritableSelector<T>;
|
|
436
|
+
type ReadableState<T> = Atom<T> | Selector<T>;
|
|
442
437
|
|
|
443
|
-
export { type Atom, type AtomKey, type EnvironmentData, FamilyTracker, Future, IMPLICIT, LazyMap, type Lineage, type Modify, type MutableAtom, NotFoundError, type OperationProgress, type ReadonlySelector, type ReadonlySelectorKey, type Selector, type SelectorKey, type Signal, type StateKey,
|
|
438
|
+
export { type Atom, type AtomKey, type BaseStateData, type EnvironmentData, FamilyTracker, Future, IMPLICIT, LazyMap, type Lineage, type Modify, type MutableAtom, NotFoundError, type OperationProgress, type ReadableState, type ReadonlySelector, type ReadonlySelectorKey, type RegularAtom, type Selector, type SelectorKey, type Signal, type StateKey, StatefulSubject, Store, Subject, TRANSACTION_PHASES, type Timeline, type TimelineAtomUpdate, type TimelineSelectorUpdate, type TimelineTransactionUpdate, Tracker, type Transaction, type TransactionMeta, type TransactionPhase, type Transceiver, type TransceiverMode, type Withdrawable, type WritableSelector, type WritableState, abortTransaction, addAtomToTimeline, applyTransaction, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deleteAtom, deleteSelector, deposit, evictCachedValue, getEnvironmentData, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateToken, ingestAtomUpdate, ingestSelectorUpdate, ingestTransactionUpdate, isAtomDefault, isAtomKey, isDone, isMutable, isReadonlySelectorKey, isSelectorKey, isStateKey, isTransceiver, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, readCachedValue, readOrComputeValue, registerSelector, setAtomOrSelector, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw, withdrawNewFamilyMember };
|