atom.io 0.30.7 → 0.31.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.d.ts +20 -18
- package/data/dist/index.js +104 -172
- package/data/src/join.ts +138 -210
- package/dist/{chunk-UDHCFTYT.js → chunk-Y5MBNTVU.js} +582 -762
- package/dist/index.d.ts +254 -173
- package/dist/index.js +91 -14
- package/ephemeral/dist/index.d.ts +35 -25
- package/ephemeral/src/find-state.ts +35 -25
- package/eslint-plugin/dist/index.d.ts +22 -3
- package/eslint-plugin/dist/index.js +7 -7
- package/immortal/dist/index.d.ts +1 -2
- package/immortal/dist/index.js +0 -3
- package/immortal/src/seek-state.ts +2 -14
- package/internal/dist/index.d.ts +57 -88
- package/internal/dist/index.js +1 -2
- package/internal/src/atom/dispose-atom.ts +31 -15
- package/internal/src/families/dispose-from-store.ts +15 -44
- package/internal/src/families/find-in-store.ts +9 -7
- package/internal/src/families/init-family-member.ts +1 -1
- package/internal/src/families/seek-in-store.ts +2 -14
- package/internal/src/get-state/get-from-store.ts +13 -79
- package/internal/src/get-trace.ts +7 -0
- package/internal/src/index.ts +17 -8
- package/internal/src/ingest-updates/ingest-creation-disposal.ts +65 -73
- package/internal/src/ingest-updates/ingest-transaction-update.ts +4 -0
- package/internal/src/install-into-store.ts +48 -0
- package/internal/src/junction.ts +52 -12
- package/internal/src/lineage.ts +0 -7
- package/internal/src/molecule.ts +306 -0
- package/internal/src/mutable/transceiver.ts +5 -5
- package/internal/src/not-found-error.ts +8 -30
- package/internal/src/pretty-print.ts +1 -16
- package/internal/src/selector/dispose-selector.ts +3 -5
- package/internal/src/selector/register-selector.ts +3 -34
- package/internal/src/set-state/set-into-store.ts +3 -2
- package/internal/src/store/counterfeit.ts +11 -25
- package/internal/src/store/deposit.ts +10 -42
- package/internal/src/store/store.ts +51 -12
- package/internal/src/store/withdraw.ts +18 -60
- package/internal/src/timeline/create-timeline.ts +133 -237
- package/internal/src/timeline/time-travel.ts +1 -8
- package/internal/src/transaction/build-transaction.ts +10 -5
- package/internal/src/transaction/index.ts +1 -1
- package/internal/src/utility-types.ts +2 -0
- package/introspection/dist/index.d.ts +2 -3
- package/introspection/dist/index.js +9 -9
- package/introspection/src/refinery.ts +1 -3
- package/json/dist/index.js +8 -40
- package/json/src/index.ts +2 -0
- package/json/src/select-json-family.ts +7 -44
- package/package.json +33 -28
- package/react/dist/index.js +2 -10
- package/react/src/parse-state-overloads.ts +3 -11
- package/react-devtools/dist/index.js +13 -13
- package/react-devtools/src/Updates.tsx +2 -0
- package/realtime-client/dist/index.d.ts +20 -12
- package/realtime-client/dist/index.js +241 -244
- package/realtime-client/src/continuity/index.ts +3 -0
- package/realtime-client/src/continuity/register-and-attempt-confirmed-update.ts +231 -0
- package/realtime-client/src/continuity/use-conceal-state.ts +11 -0
- package/realtime-client/src/continuity/use-reveal-state.ts +19 -0
- package/realtime-client/src/index.ts +1 -0
- package/realtime-client/src/sync-continuity.ts +18 -262
- package/realtime-react/dist/index.js +2 -2
- package/realtime-server/dist/index.d.ts +1 -1
- package/realtime-server/dist/index.js +2 -2
- package/realtime-server/src/index.ts +1 -1
- package/realtime-server/src/ipc-sockets/child-socket.ts +0 -1
- package/realtime-server/src/realtime-server-stores/server-room-external-actions.ts +1 -1
- package/realtime-testing/dist/index.js +5 -7
- package/realtime-testing/src/setup-realtime-test.tsx +5 -6
- package/src/atom.ts +53 -29
- package/src/dispose-state.ts +17 -23
- package/src/get-state.ts +19 -21
- package/src/index.ts +73 -3
- package/src/realm.ts +169 -0
- package/src/selector.ts +20 -0
- package/src/set-state.ts +16 -8
- package/src/silo.ts +9 -14
- package/src/timeline.ts +2 -3
- package/src/transaction.ts +25 -38
- package/transceivers/set-rtx/dist/index.js +4 -1
- package/transceivers/set-rtx/src/set-rtx.ts +4 -1
- package/dist/chunk-ADMEAXYU.js +0 -167
- package/internal/src/molecule/create-molecule-family.ts +0 -30
- package/internal/src/molecule/dispose-molecule.ts +0 -79
- package/internal/src/molecule/grow-molecule-in-store.ts +0 -95
- package/internal/src/molecule/index.ts +0 -5
- package/internal/src/molecule/make-molecule-in-store.ts +0 -191
- package/internal/src/molecule/molecule-internal.ts +0 -52
- package/src/allocate.ts +0 -277
- package/src/molecule.ts +0 -138
package/internal/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { Json, Canonical, JsonInterface } from 'atom.io/json';
|
|
1
|
+
import { MutableAtomFamilyToken, MutableAtomToken, RegularAtomFamilyToken, RegularAtomToken, AtomFamilyToken, AtomToken, WritableSelectorFamilyToken, WritableSelectorToken, ReadonlySelectorFamilyToken, ReadonlySelectorToken, SelectorFamilyToken, SelectorToken, WritableFamilyToken, WritableToken, ReadableFamilyToken, ReadableToken, TransactionToken, TransactionUpdate, TransactionOptions, ActorToolkit, TimelineManageable, TimelineToken, AtomIOToken, Hierarchy, Vassal, Above, Claim, CompoundFrom, CompoundTypedKey, SingularTypedKey, StateUpdate, TokenType, FamilyMetadata, StateCreation, StateDisposal, MoleculeCreation, MoleculeDisposal, TimelineUpdate, TimelineOptions, AtomIOLogger, Logger, MutableAtomOptions, MutableAtomFamilyOptions, RegularAtomOptions, RegularAtomFamilyOptions, ReadonlySelectorFamilyOptions, WritableSelectorFamilyOptions, KeyedStateUpdate, MoleculeTransfer, ReadonlySelectorOptions, WritableSelectorOptions, SetterToolkit, UpdateHandler, TransactionUpdateHandler } from 'atom.io';
|
|
2
|
+
import { Json, Canonical, stringified, JsonInterface } from 'atom.io/json';
|
|
4
3
|
import { Join } from 'atom.io/data';
|
|
5
|
-
import { Refinement } from 'atom.io/introspection';
|
|
6
4
|
import { Store as Store$1, Func as Func$1 } from 'atom.io/internal';
|
|
7
5
|
|
|
8
6
|
declare class CircularBuffer<T> {
|
|
@@ -31,7 +29,21 @@ declare function counterfeit<T, K extends Canonical, Key extends K>(token: Reado
|
|
|
31
29
|
declare function counterfeit<T, K extends Canonical, Key extends K>(token: SelectorFamilyToken<T, K>, key: Key): SelectorToken<T>;
|
|
32
30
|
declare function counterfeit<T, K extends Canonical, Key extends K>(token: WritableFamilyToken<T, K>, key: Key): WritableToken<T>;
|
|
33
31
|
declare function counterfeit<T, K extends Canonical, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T>;
|
|
34
|
-
|
|
32
|
+
|
|
33
|
+
type Func = (...parameters: any[]) => any;
|
|
34
|
+
type Flat<R extends {
|
|
35
|
+
[K in PropertyKey]: any;
|
|
36
|
+
}> = {
|
|
37
|
+
[K in keyof R]: R[K];
|
|
38
|
+
};
|
|
39
|
+
type Count<N extends number, A extends any[] = []> = [
|
|
40
|
+
...A,
|
|
41
|
+
any
|
|
42
|
+
][`length`] extends N ? A[`length`] : A[`length`] | Count<N, [...A, any]>;
|
|
43
|
+
type Each<E extends any[]> = {
|
|
44
|
+
[P in Count<E[`length`]>]: E[P];
|
|
45
|
+
};
|
|
46
|
+
type Refinement<A, B extends A> = (a: A) => a is B;
|
|
35
47
|
|
|
36
48
|
type JunctionEntriesBase<AType extends string, BType extends string, Content extends Json.Object | null> = {
|
|
37
49
|
readonly relations: ([AType, BType[]] | [BType, AType[]])[];
|
|
@@ -128,20 +140,6 @@ declare class Junction<const ASide extends string, const AType extends string, c
|
|
|
128
140
|
has(b: BType, a?: AType): boolean;
|
|
129
141
|
}
|
|
130
142
|
|
|
131
|
-
type Func = (...parameters: any[]) => any;
|
|
132
|
-
type Flat<R extends {
|
|
133
|
-
[K in PropertyKey]: any;
|
|
134
|
-
}> = {
|
|
135
|
-
[K in keyof R]: R[K];
|
|
136
|
-
};
|
|
137
|
-
type Count<N extends number, A extends any[] = []> = [
|
|
138
|
-
...A,
|
|
139
|
-
any
|
|
140
|
-
][`length`] extends N ? A[`length`] : A[`length`] | Count<N, [...A, any]>;
|
|
141
|
-
type Each<E extends any[]> = {
|
|
142
|
-
[P in Count<E[`length`]>]: E[P];
|
|
143
|
-
};
|
|
144
|
-
|
|
145
143
|
declare const abortTransaction: (store: Store) => void;
|
|
146
144
|
|
|
147
145
|
declare function actUponStore<F extends Func>(token: TransactionToken<F>, id: string, store: Store): (...parameters: Parameters<F>) => ReturnType<F>;
|
|
@@ -222,49 +220,26 @@ declare function deposit<T>(state: ReadonlySelectorFamily<T, any>): ReadonlySele
|
|
|
222
220
|
declare function deposit<T>(state: SelectorFamily<T, any>): SelectorFamilyToken<T, any>;
|
|
223
221
|
declare function deposit<T>(state: WritableFamily<T, any>): WritableFamilyToken<T, any>;
|
|
224
222
|
declare function deposit<T>(state: ReadableFamily<T, any>): ReadableFamilyToken<T, any>;
|
|
225
|
-
declare function deposit<M extends MoleculeConstructor>(state: MoleculeFamily<M>): MoleculeFamilyToken<M>;
|
|
226
|
-
declare function deposit<M extends MoleculeConstructor>(state: Molecule<M>): MoleculeToken<M>;
|
|
227
223
|
declare function deposit<T extends Func>(state: Transaction<T>): TransactionToken<T>;
|
|
228
|
-
declare function deposit(state:
|
|
229
|
-
declare function deposit(
|
|
224
|
+
declare function deposit<M extends TimelineManageable>(state: Timeline<M>): TimelineToken<M>;
|
|
225
|
+
declare function deposit(resource: AtomIOInternalResource): AtomIOToken;
|
|
230
226
|
|
|
231
227
|
interface Lineage {
|
|
232
228
|
parent: typeof this | null;
|
|
233
229
|
child: typeof this | null;
|
|
234
230
|
}
|
|
235
231
|
declare function newest<T extends Lineage>(scion: T): T;
|
|
236
|
-
declare function eldest<T extends Lineage>(scion: T): T;
|
|
237
|
-
|
|
238
|
-
declare function createMoleculeFamily<M extends MoleculeConstructor>(store: Store, options: MoleculeFamilyOptions<M>): MoleculeFamilyToken<M>;
|
|
239
|
-
|
|
240
|
-
declare function disposeMolecule<M extends MoleculeConstructor>(token: MoleculeToken<M>, store: Store): void;
|
|
241
|
-
|
|
242
|
-
declare class Molecule<M extends MoleculeConstructor> implements MoleculeToken<M> {
|
|
243
|
-
readonly key: MoleculeKey<M>;
|
|
244
|
-
readonly type = "molecule";
|
|
245
|
-
stringKey: string;
|
|
246
|
-
family?: MoleculeFamilyToken<M>;
|
|
247
|
-
_dependsOn: `all` | `any`;
|
|
248
|
-
get dependsOn(): `all` | `any`;
|
|
249
|
-
readonly subject: Subject<StateCreation<any> | StateDisposal<any>>;
|
|
250
|
-
tokens: Map<string, ReadableToken<any>>;
|
|
251
|
-
above: Map<string, Molecule<any>>;
|
|
252
|
-
below: Map<string, Molecule<any>>;
|
|
253
|
-
joins: Map<string, Join<any, any, any, any, any, any>>;
|
|
254
|
-
instance: InstanceType<M>;
|
|
255
|
-
constructor(ctx: Molecule<any>[] | undefined, key: MoleculeKey<M>, family?: MoleculeFamilyToken<M>);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
declare function growMoleculeInStore<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(molecule: Molecule<any>, family: MutableAtomFamilyToken<T, J, K>, store: Store): MutableAtomToken<T, J>;
|
|
259
|
-
declare function growMoleculeInStore<T, K extends Canonical>(molecule: Molecule<any>, family: RegularAtomFamilyToken<T, K>, store: Store): RegularAtomToken<T>;
|
|
260
|
-
declare function growMoleculeInStore<T, K extends Canonical>(molecule: Molecule<any>, family: AtomFamilyToken<T, K>, store: Store): AtomToken<T>;
|
|
261
|
-
declare function growMoleculeInStore<T, K extends Canonical>(molecule: Molecule<any>, family: WritableSelectorFamilyToken<T, K>, store: Store): WritableSelectorToken<T>;
|
|
262
|
-
declare function growMoleculeInStore<T, K extends Canonical>(molecule: Molecule<any>, family: ReadonlySelectorFamilyToken<T, K>, store: Store): ReadonlySelectorToken<T>;
|
|
263
|
-
declare function growMoleculeInStore<T, K extends Canonical>(molecule: Molecule<any>, family: SelectorFamilyToken<T, K>, store: Store): SelectorToken<T>;
|
|
264
|
-
declare function growMoleculeInStore<T, K extends Canonical>(molecule: Molecule<any>, family: WritableFamilyToken<T, K>, store: Store): WritableToken<T>;
|
|
265
|
-
declare function growMoleculeInStore<T, K extends Canonical>(molecule: Molecule<any>, family: ReadableFamilyToken<T, K>, store: Store): ReadableToken<T>;
|
|
266
232
|
|
|
267
|
-
|
|
233
|
+
type Molecule<K extends Canonical> = {
|
|
234
|
+
readonly key: K;
|
|
235
|
+
readonly stringKey: stringified<K>;
|
|
236
|
+
readonly dependsOn: `all` | `any`;
|
|
237
|
+
};
|
|
238
|
+
declare function makeRootMoleculeInStore<S extends string>(key: S, store?: Store): S;
|
|
239
|
+
declare function allocateIntoStore<H extends Hierarchy, V extends Vassal<H>, A extends Above<V, H>>(store: Store, provenance: A, key: V, dependsOn?: `all` | `any`): Claim<V>;
|
|
240
|
+
declare function fuseWithinStore<H extends Hierarchy, C extends CompoundFrom<H>, T extends C extends CompoundTypedKey<infer t, any, any> ? t : never, A extends C extends CompoundTypedKey<any, infer a, any> ? a : never, B extends C extends CompoundTypedKey<any, any, infer b> ? b : never>(store: Store, type: T, sideA: SingularTypedKey<A>, sideB: SingularTypedKey<B>): Claim<CompoundTypedKey<T, A, B>>;
|
|
241
|
+
declare function deallocateFromStore<H extends Hierarchy, V extends Vassal<H>>(store: Store, claim: Claim<V>): void;
|
|
242
|
+
declare function claimWithinStore<H extends Hierarchy, V extends Exclude<Vassal<H>, CompoundTypedKey>, A extends Above<V, H>>(store: Store, newProvenance: A, claim: Claim<V>, exclusive?: `exclusive`): Claim<V>;
|
|
268
243
|
|
|
269
244
|
type OperationProgress = {
|
|
270
245
|
open: false;
|
|
@@ -303,7 +278,7 @@ type TimelineStateCreation<T extends ReadableToken<any>> = Flat<StateCreation<T>
|
|
|
303
278
|
type TimelineStateDisposal<T extends ReadableToken<any>> = Flat<StateDisposal<T> & {
|
|
304
279
|
timestamp: number;
|
|
305
280
|
}>;
|
|
306
|
-
type TimelineMoleculeCreation
|
|
281
|
+
type TimelineMoleculeCreation = Flat<MoleculeCreation & {
|
|
307
282
|
timestamp: number;
|
|
308
283
|
}>;
|
|
309
284
|
type TimelineMoleculeDisposal = Flat<MoleculeDisposal & {
|
|
@@ -340,7 +315,8 @@ declare class Store implements Lineage {
|
|
|
340
315
|
source: string;
|
|
341
316
|
}>;
|
|
342
317
|
trackers: Map<string, Tracker<Transceiver<any>>>;
|
|
343
|
-
families: Map<string, MutableAtomFamily<any, any, any> |
|
|
318
|
+
families: Map<string, MutableAtomFamily<any, any, any> | RegularAtomFamily<any, any> | ReadonlySelectorFamily<any, any> | WritableSelectorFamily<any, any>>;
|
|
319
|
+
joins: Map<string, Join<any, any, any, any, any, any, `T$--content==${any}::${string}++${any}::${string}`>>;
|
|
344
320
|
transactions: Map<string, Transaction<Func>>;
|
|
345
321
|
transactionMeta: TransactionEpoch | TransactionProgress<Func>;
|
|
346
322
|
timelines: Map<string, Timeline<any>>;
|
|
@@ -351,13 +327,12 @@ declare class Store implements Lineage {
|
|
|
351
327
|
key: string;
|
|
352
328
|
trace: string;
|
|
353
329
|
}>;
|
|
354
|
-
molecules: Map<string, Molecule<
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
moleculeInProgress: string | null;
|
|
330
|
+
molecules: Map<string, Molecule<Canonical>>;
|
|
331
|
+
moleculeJoins: Junction<"moleculeKey", stringified<Canonical>, "joinKey", string, null>;
|
|
332
|
+
moleculeGraph: Junction<"upstreamMoleculeKey", stringified<Canonical> | "root", "downstreamMoleculeKey", stringified<Canonical>, {
|
|
333
|
+
source: stringified<Canonical>;
|
|
334
|
+
}>;
|
|
335
|
+
moleculeData: Junction<"moleculeKey", stringified<Canonical>, "stateFamilyKey", string, null>;
|
|
361
336
|
miscResources: Map<string, Disposable>;
|
|
362
337
|
on: {
|
|
363
338
|
atomCreation: Subject<AtomToken<unknown>>;
|
|
@@ -368,9 +343,8 @@ declare class Store implements Lineage {
|
|
|
368
343
|
transactionCreation: Subject<TransactionToken<Func>>;
|
|
369
344
|
transactionApplying: StatefulSubject<TransactionProgress<Func> | null>;
|
|
370
345
|
operationClose: Subject<OperationProgress>;
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
moleculeDisposal: Subject<MoleculeToken<any> | MoleculeDisposalModern>;
|
|
346
|
+
moleculeCreation: Subject<MoleculeCreation>;
|
|
347
|
+
moleculeDisposal: Subject<MoleculeDisposal>;
|
|
374
348
|
};
|
|
375
349
|
operation: OperationProgress;
|
|
376
350
|
config: {
|
|
@@ -386,7 +360,6 @@ declare const IMPLICIT: {
|
|
|
386
360
|
};
|
|
387
361
|
declare const clearStore: (store: Store) => void;
|
|
388
362
|
|
|
389
|
-
type Withdrawable = Atom<any> | AtomFamily<any, any> | Molecule<any> | MoleculeFamily<any> | MutableAtom<any, any> | MutableAtomFamily<any, any, any> | ReadableFamily<any, any> | ReadableState<any> | ReadonlySelector<any> | ReadonlySelectorFamily<any, any> | RegularAtom<any> | RegularAtomFamily<any, any> | Selector<any> | SelectorFamily<any, any> | Timeline<any> | Transaction<any> | WritableFamily<any, any> | WritableSelector<any> | WritableSelectorFamily<any, any> | WritableState<any>;
|
|
390
363
|
declare function withdraw<T>(token: RegularAtomToken<T>, store: Store): RegularAtom<T>;
|
|
391
364
|
declare function withdraw<T extends Transceiver<any>>(token: MutableAtomToken<T, any>, store: Store): MutableAtom<T, any>;
|
|
392
365
|
declare function withdraw<T>(token: AtomToken<T>, store: Store): Atom<T>;
|
|
@@ -403,18 +376,18 @@ declare function withdraw<T, K extends Canonical>(token: WritableSelectorFamilyT
|
|
|
403
376
|
declare function withdraw<T, K extends Canonical>(token: SelectorFamilyToken<T, K>, store: Store): SelectorFamily<T, any>;
|
|
404
377
|
declare function withdraw<T, K extends Canonical>(token: ReadableFamilyToken<T, K>, store: Store): ReadableFamily<T, any>;
|
|
405
378
|
declare function withdraw<T, K extends Canonical>(token: WritableFamilyToken<T, K>, store: Store): WritableFamily<T, any>;
|
|
406
|
-
declare function withdraw<M extends MoleculeConstructor>(token: MoleculeToken<M>, store: Store): Molecule<M>;
|
|
407
|
-
declare function withdraw<M extends MoleculeConstructor>(token: MoleculeFamilyToken<M>, store: Store): MoleculeFamily<M>;
|
|
408
379
|
declare function withdraw<T extends Func>(token: TransactionToken<T>, store: Store): Transaction<T extends Func ? T : never>;
|
|
409
380
|
declare function withdraw<T>(token: TimelineToken<T>, store: Store): Timeline<T extends TimelineManageable ? T : never>;
|
|
410
|
-
declare function withdraw<T
|
|
381
|
+
declare function withdraw<T>(token: WritableToken<T>, store: Store): WritableState<T>;
|
|
382
|
+
declare function withdraw<T>(token: ReadableToken<T>, store: Store): ReadableState<T>;
|
|
383
|
+
declare function withdraw(token: AtomIOToken, store: Store): AtomIOInternalResource;
|
|
411
384
|
|
|
412
|
-
interface Transceiver<
|
|
413
|
-
do: (update:
|
|
414
|
-
undo: (update:
|
|
415
|
-
subscribe: (key: string, fn: (update:
|
|
385
|
+
interface Transceiver<S extends Json.Serializable> {
|
|
386
|
+
do: (update: S) => number | `OUT_OF_RANGE` | null;
|
|
387
|
+
undo: (update: S) => void;
|
|
388
|
+
subscribe: (key: string, fn: (update: S) => void) => () => void;
|
|
416
389
|
cacheUpdateNumber: number;
|
|
417
|
-
getUpdateNumber: (update:
|
|
390
|
+
getUpdateNumber: (update: S) => number;
|
|
418
391
|
}
|
|
419
392
|
declare function isTransceiver(value: unknown): value is Transceiver<Json.Serializable>;
|
|
420
393
|
type TransceiverMode = `playback` | `record` | `transaction`;
|
|
@@ -505,9 +478,8 @@ declare function createRegularAtomFamily<T, K extends Canonical>(store: Store, o
|
|
|
505
478
|
declare function createSelectorFamily<T, K extends Canonical>(store: Store, options: WritableSelectorFamilyOptions<T, K>): WritableSelectorFamilyToken<T, K>;
|
|
506
479
|
declare function createSelectorFamily<T, K extends Canonical>(store: Store, options: ReadonlySelectorFamilyOptions<T, K>): ReadonlySelectorFamilyToken<T, K>;
|
|
507
480
|
|
|
508
|
-
declare function disposeFromStore(store: Store, token:
|
|
481
|
+
declare function disposeFromStore(store: Store, token: ReadableToken<any>): void;
|
|
509
482
|
declare function disposeFromStore<K extends Canonical>(store: Store, token: ReadableFamilyToken<any, K>, key: K): void;
|
|
510
|
-
declare function disposeFromStore<M extends MoleculeConstructor>(store: Store, token: MoleculeFamilyToken<M>, key: MoleculeKey<M>): void;
|
|
511
483
|
|
|
512
484
|
declare function findInStore<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J, K>;
|
|
513
485
|
declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T, K>;
|
|
@@ -535,7 +507,6 @@ declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store
|
|
|
535
507
|
declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: SelectorFamilyToken<T, K>, key: Key): SelectorToken<T, K> | undefined;
|
|
536
508
|
declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritableFamilyToken<T, K>, key: Key): WritableToken<T, K> | undefined;
|
|
537
509
|
declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T, K> | undefined;
|
|
538
|
-
declare function seekInStore<M extends MoleculeConstructor>(store: Store, token: MoleculeFamilyToken<M>, key: MoleculeKey<M>): MoleculeKey<M> | undefined;
|
|
539
510
|
|
|
540
511
|
type EnvironmentData = {
|
|
541
512
|
store: Store;
|
|
@@ -543,20 +514,19 @@ type EnvironmentData = {
|
|
|
543
514
|
declare function getEnvironmentData(store: Store): EnvironmentData;
|
|
544
515
|
|
|
545
516
|
declare function getFromStore<T>(store: Store, token: ReadableToken<T>): T;
|
|
546
|
-
declare function getFromStore<M extends MoleculeConstructor>(store: Store, token: MoleculeToken<M>): InstanceType<M>;
|
|
547
517
|
declare function getFromStore<T, K extends Canonical>(store: Store, token: ReadableFamilyToken<T, K>, key: K): T;
|
|
548
|
-
declare function getFromStore<M extends MoleculeConstructor>(store: Store, token: MoleculeFamilyToken<M>, key: MoleculeKey<M>): InstanceType<M>;
|
|
549
|
-
declare function getFromStore(store: Store, token: MoleculeToken<any> | ReadableToken<any>): any;
|
|
550
|
-
declare function getFromStore(store: Store, token: MoleculeFamilyToken<any> | ReadableFamilyToken<any, any>, key: Canonical): any;
|
|
551
518
|
|
|
552
519
|
declare const readOrComputeValue: <T>(state: ReadableState<T>, target: Store) => T;
|
|
553
520
|
|
|
521
|
+
declare function getTrace(error: Error): string;
|
|
522
|
+
|
|
554
523
|
declare function ingestAtomUpdate(applying: `newValue` | `oldValue`, atomUpdate: KeyedStateUpdate<any>, store: Store): void;
|
|
555
524
|
|
|
556
525
|
declare function ingestCreationEvent(update: StateCreation<any>, applying: `newValue` | `oldValue`, store: Store): void;
|
|
557
526
|
declare function ingestDisposalEvent(update: StateDisposal<ReadableToken<any>>, applying: `newValue` | `oldValue`, store: Store): void;
|
|
558
|
-
declare function ingestMoleculeCreationEvent(update: MoleculeCreation
|
|
527
|
+
declare function ingestMoleculeCreationEvent(update: MoleculeCreation, applying: `newValue` | `oldValue`, store: Store): void;
|
|
559
528
|
declare function ingestMoleculeDisposalEvent(update: MoleculeDisposal, applying: `newValue` | `oldValue`, store: Store): void;
|
|
529
|
+
declare function ingestMoleculeTransferEvent(update: MoleculeTransfer, applying: `newValue` | `oldValue`, store: Store): void;
|
|
560
530
|
|
|
561
531
|
declare function ingestSelectorUpdate(applying: `newValue` | `oldValue`, selectorUpdate: TimelineSelectorUpdate<any>, store: Store): void;
|
|
562
532
|
|
|
@@ -591,14 +561,12 @@ declare class LazyMap<K, V> extends Map<K, V> {
|
|
|
591
561
|
delete(key: K): boolean;
|
|
592
562
|
}
|
|
593
563
|
|
|
594
|
-
type AtomIOToken = MoleculeFamilyToken<any> | MoleculeToken<any> | ReadableFamilyToken<any, any> | ReadableToken<any> | TimelineToken<any> | TransactionToken<any>;
|
|
595
|
-
declare function prettyPrintTokenType(token: AtomIOToken): string;
|
|
596
|
-
|
|
597
564
|
declare class NotFoundError extends Error {
|
|
598
565
|
constructor(token: AtomIOToken, store: Store);
|
|
599
|
-
constructor(familyToken: AtomIOToken, key: Json.Serializable, store: Store);
|
|
600
566
|
}
|
|
601
567
|
|
|
568
|
+
declare function prettyPrintTokenType(token: AtomIOToken): string;
|
|
569
|
+
|
|
602
570
|
declare const createReadonlySelector: <T>(store: Store, options: ReadonlySelectorOptions<T>, family: FamilyMetadata | undefined) => ReadonlySelectorToken<T>;
|
|
603
571
|
|
|
604
572
|
declare function createStandaloneSelector<T>(store: Store, options: WritableSelectorOptions<T>): WritableSelectorToken<T>;
|
|
@@ -700,5 +668,6 @@ type ReadonlySelectorFamily<T, K extends Canonical> = ReadonlySelectorFamilyToke
|
|
|
700
668
|
type SelectorFamily<T, K extends Canonical> = ReadonlySelectorFamily<T, K> | WritableSelectorFamily<T, K>;
|
|
701
669
|
type WritableFamily<T, K extends Canonical> = AtomFamily<T, K> | WritableSelectorFamily<T, K>;
|
|
702
670
|
type ReadableFamily<T, K extends Canonical> = AtomFamily<T, K> | SelectorFamily<T, K>;
|
|
671
|
+
type AtomIOInternalResource = ReadableFamily<any, any> | ReadableState<any> | Timeline<any> | Transaction<any>;
|
|
703
672
|
|
|
704
|
-
export { type Atom, type AtomFamily, type
|
|
673
|
+
export { type Atom, type AtomFamily, type AtomIOInternalResource, type AtomIOState, type AtomKey, type BaseExternalStoreConfiguration, type ChildStore, CircularBuffer, type Count, type Each, type Empty, type EnvironmentData, type ExternalStoreConfiguration, type ExternalStoreWithContentConfiguration, FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, type Flat, type Func, Future, IMPLICIT, Junction, type JunctionAdvancedConfiguration, type JunctionEntries, type JunctionEntriesBase, type JunctionJSON, type JunctionSchema, type JunctionSchemaBase, LazyMap, type Lineage, type Modify, type Molecule, type MutableAtom, type MutableAtomFamily, NotFoundError, type OperationProgress, type ReadableFamily, type ReadableState, type ReadonlySelector, type ReadonlySelectorFamily, type ReadonlySelectorKey, type Refinement, type RegularAtom, type RegularAtomFamily, type RootStore, type Selector, type SelectorFamily, type SelectorKey, type Signal, type StateKey, StatefulSubject, Store, Subject, TRANSACTION_PHASES, type Timeline, type TimelineAtomUpdate, type TimelineMoleculeCreation, type TimelineMoleculeDisposal, type TimelineSelectorUpdate, type TimelineStateCreation, type TimelineStateDisposal, type TimelineTransactionUpdate, Tracker, type Transaction, type TransactionEpoch, type TransactionPhase, type TransactionProgress, type Transceiver, type TransceiverMode, type WritableFamily, type WritableSelector, type WritableSelectorFamily, type WritableState, abortTransaction, actUponStore, allocateIntoStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, claimWithinStore, clearStore, closeOperation, counterfeit, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deallocateFromStore, deposit, disposeAtom, disposeFromStore, disposeSelector, evictCachedValue, findInStore, fuseWithinStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getTrace, getUpdateFamily, getUpdateToken, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestMoleculeTransferEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, isAtomDefault, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeRootMoleculeInStore, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, prettyPrintTokenType, readCachedValue, readOrComputeValue, recallState, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw };
|
package/internal/dist/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export { CircularBuffer, FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, Future, IMPLICIT, Junction, LazyMap,
|
|
2
|
-
import '../../dist/chunk-ADMEAXYU.js';
|
|
1
|
+
export { CircularBuffer, FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, Future, IMPLICIT, Junction, LazyMap, NotFoundError, StatefulSubject, Store, Subject, TRANSACTION_PHASES, Tracker, abortTransaction, actUponStore, allocateIntoStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, claimWithinStore, clearStore, closeOperation, counterfeit, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deallocateFromStore, deposit, disposeAtom, disposeFromStore, disposeSelector, evictCachedValue, findInStore, fuseWithinStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getTrace, getUpdateFamily, getUpdateToken, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestMoleculeTransferEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, isAtomDefault, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeRootMoleculeInStore, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, prettyPrintTokenType, readCachedValue, readOrComputeValue, recallState, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw } from '../../dist/chunk-Y5MBNTVU.js';
|
|
3
2
|
import '../../dist/chunk-XWL6SNVU.js';
|
|
@@ -1,28 +1,39 @@
|
|
|
1
|
-
import type { AtomToken } from "atom.io"
|
|
1
|
+
import type { AtomDisposal, AtomToken } from "atom.io"
|
|
2
2
|
|
|
3
3
|
import type { Store } from ".."
|
|
4
4
|
import { getUpdateToken, isChildStore, newest, withdraw } from ".."
|
|
5
5
|
|
|
6
6
|
export function disposeAtom(atomToken: AtomToken<unknown>, store: Store): void {
|
|
7
7
|
const target = newest(store)
|
|
8
|
-
const { key } = atomToken
|
|
8
|
+
const { key, family } = atomToken
|
|
9
9
|
const atom = withdraw(atomToken, target)
|
|
10
|
-
if (!
|
|
10
|
+
if (!family) {
|
|
11
11
|
store.logger.error(`❌`, `atom`, key, `Standalone atoms cannot be disposed.`)
|
|
12
12
|
} else {
|
|
13
13
|
atom.cleanup?.()
|
|
14
14
|
const lastValue = store.valueMap.get(atom.key)
|
|
15
|
-
const
|
|
16
|
-
|
|
15
|
+
const atomFamily = withdraw({ key: family.key, type: `atom_family` }, store)
|
|
16
|
+
|
|
17
|
+
const disposal: AtomDisposal<AtomToken<unknown>> = {
|
|
17
18
|
type: `state_disposal`,
|
|
19
|
+
subType: `atom`,
|
|
18
20
|
token: atomToken,
|
|
19
21
|
value: lastValue,
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
const molecule = target.molecules.get(atom.family.subKey)
|
|
23
|
-
if (molecule) {
|
|
24
|
-
molecule.tokens.delete(key)
|
|
25
22
|
}
|
|
23
|
+
|
|
24
|
+
atomFamily.subject.next(disposal)
|
|
25
|
+
|
|
26
|
+
const isChild = isChildStore(target)
|
|
27
|
+
// let molecule = target.molecules.get(family.subKey)
|
|
28
|
+
// if (molecule && isChild) {
|
|
29
|
+
// const parentMolecule = target.parent.molecules.get(family.subKey)
|
|
30
|
+
// if (parentMolecule === molecule) {
|
|
31
|
+
// molecule = parentMolecule.copy()
|
|
32
|
+
// target.molecules.set(family.subKey, molecule)
|
|
33
|
+
// }
|
|
34
|
+
// }
|
|
35
|
+
// molecule?.tokens.delete(family.key)
|
|
36
|
+
|
|
26
37
|
target.atoms.delete(key)
|
|
27
38
|
target.valueMap.delete(key)
|
|
28
39
|
target.selectorAtoms.delete(key)
|
|
@@ -35,11 +46,16 @@ export function disposeAtom(atomToken: AtomToken<unknown>, store: Store): void {
|
|
|
35
46
|
store.trackers.delete(key)
|
|
36
47
|
}
|
|
37
48
|
store.logger.info(`🔥`, `atom`, key, `deleted`)
|
|
38
|
-
if (
|
|
39
|
-
target.transactionMeta.update.updates.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
if (isChild && target.transactionMeta.phase === `building`) {
|
|
50
|
+
const mostRecentUpdate = target.transactionMeta.update.updates.at(-1)
|
|
51
|
+
const wasMoleculeDisposal = mostRecentUpdate?.type === `molecule_disposal`
|
|
52
|
+
const updateAlreadyCaptured =
|
|
53
|
+
wasMoleculeDisposal &&
|
|
54
|
+
mostRecentUpdate.values.some(([k]) => k === atom.family?.key)
|
|
55
|
+
|
|
56
|
+
if (!updateAlreadyCaptured) {
|
|
57
|
+
target.transactionMeta.update.updates.push(disposal)
|
|
58
|
+
}
|
|
43
59
|
} else {
|
|
44
60
|
store.on.atomDisposal.next(atomToken)
|
|
45
61
|
}
|
|
@@ -1,24 +1,13 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
MoleculeConstructor,
|
|
3
|
-
MoleculeFamilyToken,
|
|
4
|
-
MoleculeKey,
|
|
5
|
-
MoleculeToken,
|
|
6
|
-
ReadableFamilyToken,
|
|
7
|
-
ReadableToken,
|
|
8
|
-
} from "atom.io"
|
|
1
|
+
import type { ReadableFamilyToken, ReadableToken } from "atom.io"
|
|
9
2
|
import type { Canonical } from "atom.io/json"
|
|
10
3
|
|
|
11
4
|
import { disposeAtom } from "../atom"
|
|
12
|
-
import {
|
|
5
|
+
import { getTrace } from "../get-trace"
|
|
13
6
|
import { disposeSelector } from "../selector"
|
|
14
|
-
import {
|
|
7
|
+
import { type Store, withdraw } from "../store"
|
|
15
8
|
import { findInStore } from "./find-in-store"
|
|
16
|
-
import { seekInStore } from "./seek-in-store"
|
|
17
9
|
|
|
18
|
-
export function disposeFromStore(
|
|
19
|
-
store: Store,
|
|
20
|
-
token: MoleculeToken<any> | ReadableToken<any>,
|
|
21
|
-
): void
|
|
10
|
+
export function disposeFromStore(store: Store, token: ReadableToken<any>): void
|
|
22
11
|
|
|
23
12
|
export function disposeFromStore<K extends Canonical>(
|
|
24
13
|
store: Store,
|
|
@@ -26,47 +15,35 @@ export function disposeFromStore<K extends Canonical>(
|
|
|
26
15
|
key: K,
|
|
27
16
|
): void
|
|
28
17
|
|
|
29
|
-
export function disposeFromStore<M extends MoleculeConstructor>(
|
|
30
|
-
store: Store,
|
|
31
|
-
token: MoleculeFamilyToken<M>,
|
|
32
|
-
key: MoleculeKey<M>,
|
|
33
|
-
): void
|
|
34
|
-
|
|
35
18
|
export function disposeFromStore(
|
|
36
19
|
store: Store,
|
|
37
20
|
...params:
|
|
38
|
-
| [token: MoleculeFamilyToken<any>, key: MoleculeKey<any>]
|
|
39
|
-
| [token: MoleculeToken<any> | ReadableToken<any>]
|
|
40
21
|
| [token: ReadableFamilyToken<any, any>, key: Canonical]
|
|
22
|
+
| [token: ReadableToken<any>]
|
|
41
23
|
): void {
|
|
42
|
-
let token:
|
|
43
|
-
let fullKey: string
|
|
24
|
+
let token: ReadableToken<any>
|
|
44
25
|
if (params.length === 1) {
|
|
45
26
|
token = params[0]
|
|
46
|
-
fullKey = token.key
|
|
47
27
|
} else {
|
|
48
28
|
const family = params[0]
|
|
49
29
|
const key = params[1]
|
|
50
|
-
const maybeToken =
|
|
51
|
-
family.type === `molecule_family`
|
|
52
|
-
? (seekInStore(store, family, key) ?? counterfeit(family, key))
|
|
53
|
-
: findInStore(store, family, key)
|
|
30
|
+
const maybeToken = findInStore(store, family, key)
|
|
54
31
|
token = maybeToken
|
|
55
32
|
}
|
|
56
33
|
try {
|
|
57
34
|
withdraw(token, store)
|
|
58
35
|
} catch (thrown) {
|
|
59
|
-
const disposal = store.disposalTraces.buffer.find(
|
|
60
|
-
|
|
61
|
-
)
|
|
36
|
+
// const disposal = store.disposalTraces.buffer.find(
|
|
37
|
+
// (item) => item?.key === token.key,
|
|
38
|
+
// )
|
|
62
39
|
store.logger.error(
|
|
63
40
|
`❌`,
|
|
64
41
|
token.type,
|
|
65
42
|
token.key,
|
|
66
43
|
`could not be disposed because it was not found in the store "${store.config.name}".`,
|
|
67
|
-
disposal
|
|
68
|
-
|
|
69
|
-
|
|
44
|
+
// disposal
|
|
45
|
+
// ? `\n This state was most recently disposed\n${disposal.trace}`
|
|
46
|
+
// : `No previous disposal trace was found.`,
|
|
70
47
|
)
|
|
71
48
|
return
|
|
72
49
|
}
|
|
@@ -79,14 +56,8 @@ export function disposeFromStore(
|
|
|
79
56
|
case `readonly_selector`:
|
|
80
57
|
disposeSelector(token, store)
|
|
81
58
|
break
|
|
82
|
-
case `molecule`:
|
|
83
|
-
disposeMolecule(token, store)
|
|
84
|
-
break
|
|
85
59
|
}
|
|
86
60
|
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
const trace = stack?.split(`\n`)?.slice(3)?.join(`\n`)
|
|
90
|
-
store.disposalTraces.add({ key: token.key, trace })
|
|
91
|
-
}
|
|
61
|
+
// const trace = getTrace(new Error())
|
|
62
|
+
// store.disposalTraces.add({ key: token.key, trace })
|
|
92
63
|
}
|
|
@@ -18,7 +18,7 @@ import type {
|
|
|
18
18
|
} from "atom.io"
|
|
19
19
|
import { type Canonical, type Json, stringifyJson } from "atom.io/json"
|
|
20
20
|
|
|
21
|
-
import {
|
|
21
|
+
import { newest } from "../lineage"
|
|
22
22
|
import type { Transceiver } from "../mutable"
|
|
23
23
|
import { counterfeit, type Store } from "../store"
|
|
24
24
|
import { initFamilyMemberInStore } from "./init-family-member"
|
|
@@ -80,17 +80,15 @@ export function findInStore<T, K extends Canonical, Key extends K>(
|
|
|
80
80
|
export function findInStore(
|
|
81
81
|
store: Store,
|
|
82
82
|
token: ReadableFamilyToken<any, any>,
|
|
83
|
-
key:
|
|
83
|
+
key: Canonical,
|
|
84
84
|
): ReadableToken<any> {
|
|
85
85
|
let state = seekInStore(store, token, key)
|
|
86
86
|
if (state) {
|
|
87
87
|
return state
|
|
88
88
|
}
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
if (store.config.lifespan === `immortal`) {
|
|
89
|
+
const stringKey = stringifyJson(key)
|
|
90
|
+
const molecule = store.molecules.get(stringKey)
|
|
91
|
+
if (!molecule && store.config.lifespan === `immortal`) {
|
|
94
92
|
const fakeToken = counterfeit(token, key)
|
|
95
93
|
store.logger.error(
|
|
96
94
|
`❌`,
|
|
@@ -101,5 +99,9 @@ export function findInStore(
|
|
|
101
99
|
return fakeToken
|
|
102
100
|
}
|
|
103
101
|
state = initFamilyMemberInStore(store, token, key)
|
|
102
|
+
if (molecule) {
|
|
103
|
+
const target = newest(store)
|
|
104
|
+
target.moleculeData.set(stringKey, token.key)
|
|
105
|
+
}
|
|
104
106
|
return state
|
|
105
107
|
}
|
|
@@ -88,7 +88,7 @@ export function initFamilyMemberInStore(
|
|
|
88
88
|
}
|
|
89
89
|
const state = family(key)
|
|
90
90
|
const target = newest(store)
|
|
91
|
-
if (state.family
|
|
91
|
+
if (state.family) {
|
|
92
92
|
if (isRootStore(target)) {
|
|
93
93
|
switch (state.type) {
|
|
94
94
|
case `atom`:
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
AtomFamilyToken,
|
|
3
3
|
AtomToken,
|
|
4
|
-
MoleculeConstructor,
|
|
5
|
-
MoleculeFamilyToken,
|
|
6
|
-
MoleculeKey,
|
|
7
|
-
MoleculeToken,
|
|
8
4
|
MutableAtomFamilyToken,
|
|
9
5
|
MutableAtomToken,
|
|
10
6
|
ReadableFamilyToken,
|
|
@@ -81,17 +77,11 @@ export function seekInStore<T, K extends Canonical, Key extends K>(
|
|
|
81
77
|
key: Key,
|
|
82
78
|
): ReadableToken<T, K> | undefined
|
|
83
79
|
|
|
84
|
-
export function seekInStore<M extends MoleculeConstructor>(
|
|
85
|
-
store: Store,
|
|
86
|
-
token: MoleculeFamilyToken<M>,
|
|
87
|
-
key: MoleculeKey<M>,
|
|
88
|
-
): MoleculeKey<M> | undefined
|
|
89
|
-
|
|
90
80
|
export function seekInStore(
|
|
91
81
|
store: Store,
|
|
92
|
-
token:
|
|
82
|
+
token: ReadableFamilyToken<any, any>,
|
|
93
83
|
key: Canonical,
|
|
94
|
-
):
|
|
84
|
+
): ReadableToken<any> | undefined {
|
|
95
85
|
const subKey = stringifyJson(key)
|
|
96
86
|
const fullKey = `${token.key}(${subKey})`
|
|
97
87
|
const target = newest(store)
|
|
@@ -107,8 +97,6 @@ export function seekInStore(
|
|
|
107
97
|
case `readonly_selector_family`:
|
|
108
98
|
state = target.readonlySelectors.get(fullKey)
|
|
109
99
|
break
|
|
110
|
-
case `molecule_family`:
|
|
111
|
-
state = target.molecules.get(stringifyJson(key))
|
|
112
100
|
}
|
|
113
101
|
if (state) {
|
|
114
102
|
return deposit(state)
|