atom.io 0.36.1 → 0.36.3
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/dist/internal/index.d.ts +15 -11
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +148 -165
- package/dist/internal/index.js.map +1 -1
- package/dist/main/index.d.ts +2 -8
- package/dist/main/index.d.ts.map +1 -1
- package/package.json +13 -13
- package/src/internal/caching.ts +23 -26
- package/src/internal/get-state/read-or-compute-value.ts +4 -8
- package/src/internal/join/create-join.ts +3 -2
- package/src/internal/selector/create-readonly-held-selector.ts +1 -1
- package/src/internal/selector/create-readonly-pure-selector.ts +1 -1
- package/src/internal/selector/create-writable-held-selector.ts +2 -3
- package/src/internal/selector/create-writable-pure-selector.ts +3 -3
- package/src/internal/set-state/evict-downstream.ts +17 -15
- package/src/internal/set-state/index.ts +1 -0
- package/src/internal/set-state/reset-in-store.ts +6 -50
- package/src/internal/set-state/set-atom.ts +4 -4
- package/src/internal/set-state/set-into-store.ts +24 -9
- package/src/internal/subscribe/subscribe-in-store.ts +7 -7
- package/src/internal/subscribe/subscribe-to-timeline.ts +2 -2
- package/src/main/tokens.ts +3 -8
package/dist/internal/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Join as Join$1, arbitrary as arbitrary$1, subscribeToState as subscribeToState$1, subscribeToTimeline as subscribeToTimeline$1, subscribeToTransaction as subscribeToTransaction$1 } from "atom.io/internal";
|
|
2
1
|
import { parseJson, stringifyJson } from "atom.io/json";
|
|
3
2
|
import { Anarchy, AtomIOLogger } from "atom.io";
|
|
4
3
|
import { SetRTX } from "atom.io/transceivers/set-rtx";
|
|
@@ -383,21 +382,6 @@ const recallState = (store, state) => {
|
|
|
383
382
|
return target.valueMap.get(state.key);
|
|
384
383
|
};
|
|
385
384
|
|
|
386
|
-
//#endregion
|
|
387
|
-
//#region src/internal/subscribe/subscribe-in-store.ts
|
|
388
|
-
function subscribeInStore(store, token, handleUpdate, key = arbitrary$1()) {
|
|
389
|
-
switch (token.type) {
|
|
390
|
-
case `atom`:
|
|
391
|
-
case `mutable_atom`:
|
|
392
|
-
case `readonly_pure_selector`:
|
|
393
|
-
case `readonly_held_selector`:
|
|
394
|
-
case `writable_pure_selector`:
|
|
395
|
-
case `writable_held_selector`: return subscribeToState$1(store, token, key, handleUpdate);
|
|
396
|
-
case `transaction`: return subscribeToTransaction$1(store, token, key, handleUpdate);
|
|
397
|
-
case `timeline`: return subscribeToTimeline$1(store, token, key, handleUpdate);
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
|
|
401
385
|
//#endregion
|
|
402
386
|
//#region src/internal/future.ts
|
|
403
387
|
/**
|
|
@@ -502,32 +486,35 @@ const markDone = (store, key) => {
|
|
|
502
486
|
|
|
503
487
|
//#endregion
|
|
504
488
|
//#region src/internal/set-state/evict-downstream.ts
|
|
505
|
-
function
|
|
489
|
+
function evictDownstreamFromAtom(store, atom) {
|
|
506
490
|
const target = newest(store);
|
|
507
|
-
const
|
|
508
|
-
target.
|
|
491
|
+
const { key, type } = atom;
|
|
492
|
+
const downstreamKeys = target.selectorAtoms.getRelatedKeys(key);
|
|
493
|
+
target.logger.info(`🧹`, type, key, downstreamKeys ? `evicting ${downstreamKeys.size} states downstream:` : `no downstream states`, downstreamKeys ?? `to evict`);
|
|
509
494
|
if (downstreamKeys) {
|
|
510
|
-
if (target.operation.open) target.logger.info(`🧹`,
|
|
511
|
-
for (const
|
|
512
|
-
if (isDone(target,
|
|
513
|
-
evictCachedValue(target,
|
|
514
|
-
markDone(target,
|
|
495
|
+
if (target.operation.open) target.logger.info(`🧹`, type, key, `[ ${[...target.operation.done].join(`, `)} ] already done`);
|
|
496
|
+
for (const downstreamKey of downstreamKeys) {
|
|
497
|
+
if (isDone(target, downstreamKey)) continue;
|
|
498
|
+
evictCachedValue(target, downstreamKey);
|
|
499
|
+
markDone(target, downstreamKey);
|
|
515
500
|
}
|
|
516
501
|
}
|
|
517
502
|
}
|
|
518
|
-
function
|
|
503
|
+
function evictDownstreamFromSelector(store, selectorKey) {
|
|
519
504
|
const target = newest(store);
|
|
520
|
-
const relationEntries = target.selectorGraph.getRelationEntries({ upstreamSelectorKey:
|
|
505
|
+
const relationEntries = target.selectorGraph.getRelationEntries({ upstreamSelectorKey: selectorKey }).filter(([_, { source }]) => source === selectorKey);
|
|
521
506
|
for (const [downstreamSelectorKey] of relationEntries) {
|
|
522
507
|
if (isDone(target, downstreamSelectorKey)) continue;
|
|
523
508
|
evictCachedValue(target, downstreamSelectorKey);
|
|
524
509
|
markDone(target, downstreamSelectorKey);
|
|
510
|
+
evictDownstreamFromSelector(store, downstreamSelectorKey);
|
|
525
511
|
}
|
|
526
512
|
}
|
|
527
513
|
|
|
528
514
|
//#endregion
|
|
529
515
|
//#region src/internal/caching.ts
|
|
530
|
-
function writeToCache(target,
|
|
516
|
+
function writeToCache(target, state, value) {
|
|
517
|
+
const { key, subject, type } = state;
|
|
531
518
|
const currentValue = target.valueMap.get(key);
|
|
532
519
|
if (currentValue instanceof Future && !currentValue.done) {
|
|
533
520
|
const future = currentValue;
|
|
@@ -544,20 +531,19 @@ function writeToCache(target, key, value, subject) {
|
|
|
544
531
|
future.then(function handleResolvedFuture(resolved) {
|
|
545
532
|
const current = target.valueMap.get(key);
|
|
546
533
|
if (current === future) {
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
closeOperation(target);
|
|
559
|
-
}
|
|
534
|
+
openOperation(target, state);
|
|
535
|
+
writeToCache(target, state, resolved);
|
|
536
|
+
switch (type) {
|
|
537
|
+
case `atom`:
|
|
538
|
+
case `mutable_atom`:
|
|
539
|
+
evictDownstreamFromAtom(target, state);
|
|
540
|
+
break;
|
|
541
|
+
case `readonly_pure_selector`:
|
|
542
|
+
case `writable_pure_selector`:
|
|
543
|
+
evictDownstreamFromSelector(target, key);
|
|
544
|
+
break;
|
|
560
545
|
}
|
|
546
|
+
closeOperation(target);
|
|
561
547
|
subject.next({
|
|
562
548
|
newValue: resolved,
|
|
563
549
|
oldValue: future
|
|
@@ -611,45 +597,31 @@ function evictCachedValue(target, key) {
|
|
|
611
597
|
//#region src/internal/get-state/read-or-compute-value.ts
|
|
612
598
|
function readOrComputeValue(target, state, mut) {
|
|
613
599
|
if (target.valueMap.has(state.key)) return readFromCache(target, state, mut);
|
|
600
|
+
const { key } = state;
|
|
614
601
|
switch (state.type) {
|
|
615
602
|
case `readonly_held_selector`:
|
|
616
603
|
case `readonly_pure_selector`:
|
|
617
604
|
case `writable_held_selector`:
|
|
618
605
|
case `writable_pure_selector`:
|
|
619
|
-
target.logger.info(`🧮`, state.type,
|
|
606
|
+
target.logger.info(`🧮`, state.type, key, `computing value`);
|
|
620
607
|
return state.get();
|
|
621
608
|
case `atom`: {
|
|
622
609
|
let def;
|
|
623
610
|
if (state.default instanceof Function) def = state.default();
|
|
624
611
|
else def = state.default;
|
|
625
|
-
const cachedValue = writeToCache(target, state
|
|
612
|
+
const cachedValue = writeToCache(target, state, def);
|
|
626
613
|
target.logger.info(`💁`, `atom`, state.key, `could not find cached value; using default`, def);
|
|
627
614
|
return cachedValue;
|
|
628
615
|
}
|
|
629
616
|
case `mutable_atom`: {
|
|
630
617
|
const instance = new state.class();
|
|
631
|
-
const cachedValue = writeToCache(target, state
|
|
618
|
+
const cachedValue = writeToCache(target, state, instance);
|
|
632
619
|
target.logger.info(`💁`, `mutable_atom`, state.key, `could not find cached value; using default`, instance);
|
|
633
620
|
return cachedValue;
|
|
634
621
|
}
|
|
635
622
|
}
|
|
636
623
|
}
|
|
637
624
|
|
|
638
|
-
//#endregion
|
|
639
|
-
//#region src/internal/subscribe/subscribe-to-root-atoms.ts
|
|
640
|
-
const subscribeToRootDependency = (target, selector, atom) => {
|
|
641
|
-
return atom.subject.subscribe(`${selector.type}:${selector.key}`, (atomChange) => {
|
|
642
|
-
target.logger.info(`📢`, selector.type, selector.key, `root`, atom.key, `went`, atomChange.oldValue, `->`, atomChange.newValue);
|
|
643
|
-
const oldValue = recallState(target, selector);
|
|
644
|
-
const newValue = readOrComputeValue(target, selector);
|
|
645
|
-
target.logger.info(`✨`, selector.type, selector.key, `went`, oldValue, `->`, newValue);
|
|
646
|
-
selector.subject.next({
|
|
647
|
-
newValue,
|
|
648
|
-
oldValue
|
|
649
|
-
});
|
|
650
|
-
});
|
|
651
|
-
};
|
|
652
|
-
|
|
653
625
|
//#endregion
|
|
654
626
|
//#region src/internal/set-state/become.ts
|
|
655
627
|
const become = (nextVersionOfThing) => (originalThing) => nextVersionOfThing instanceof Function ? nextVersionOfThing(originalThing) : nextVersionOfThing;
|
|
@@ -684,9 +656,9 @@ const setAtom = (target, atom, next) => {
|
|
|
684
656
|
const oldValue = readOrComputeValue(target, atom, `mut`);
|
|
685
657
|
let newValue = become(next)(oldValue);
|
|
686
658
|
target.logger.info(`📝`, `atom`, atom.key, `set to`, newValue);
|
|
687
|
-
newValue = writeToCache(target, atom
|
|
659
|
+
newValue = writeToCache(target, atom, newValue);
|
|
688
660
|
markDone(target, atom.key);
|
|
689
|
-
|
|
661
|
+
evictDownstreamFromAtom(target, atom);
|
|
690
662
|
const update = {
|
|
691
663
|
oldValue,
|
|
692
664
|
newValue
|
|
@@ -711,7 +683,7 @@ const setAtom = (target, atom, next) => {
|
|
|
711
683
|
const mutable = target.atoms.get(key);
|
|
712
684
|
const transceiver = readOrComputeValue(target, mutable, `mut`);
|
|
713
685
|
const accepted = transceiver.do(update.newValue) === null;
|
|
714
|
-
if (accepted === true)
|
|
686
|
+
if (accepted === true) evictDownstreamFromAtom(target, mutable);
|
|
715
687
|
}
|
|
716
688
|
};
|
|
717
689
|
|
|
@@ -754,44 +726,6 @@ function getFamilyOfToken(store, token) {
|
|
|
754
726
|
}
|
|
755
727
|
}
|
|
756
728
|
|
|
757
|
-
//#endregion
|
|
758
|
-
//#region src/internal/set-state/reset-in-store.ts
|
|
759
|
-
function resetInStore(store, ...params) {
|
|
760
|
-
let token;
|
|
761
|
-
let family;
|
|
762
|
-
let key;
|
|
763
|
-
if (params.length === 1) {
|
|
764
|
-
token = params[0];
|
|
765
|
-
family = getFamilyOfToken(store, token) ?? null;
|
|
766
|
-
if (family) {
|
|
767
|
-
key = token.family ? parseJson(token.family.subKey) : null;
|
|
768
|
-
token = findInStore(store, family, key);
|
|
769
|
-
}
|
|
770
|
-
} else {
|
|
771
|
-
family = params[0];
|
|
772
|
-
key = params[1];
|
|
773
|
-
token = findInStore(store, family, key);
|
|
774
|
-
}
|
|
775
|
-
if (`counterfeit` in token && `family` in token) {
|
|
776
|
-
const subKey = token.family.subKey;
|
|
777
|
-
const disposal = store.disposalTraces.buffer.find((item) => item?.key === subKey);
|
|
778
|
-
store.logger.error(`❌`, token.type, token.key, `could not be reset because it was not found in the store "${store.config.name}".`, disposal ? `This state was previously disposed:\n${disposal.trace}` : `No previous disposal trace was found.`);
|
|
779
|
-
return;
|
|
780
|
-
}
|
|
781
|
-
const rejectionTime = openOperation(store, token);
|
|
782
|
-
if (rejectionTime) {
|
|
783
|
-
const unsubscribe = store.on.operationClose.subscribe(`waiting to reset "${token.key}" at T-${rejectionTime}`, () => {
|
|
784
|
-
unsubscribe();
|
|
785
|
-
store.logger.info(`🟢`, token.type, token.key, `resuming deferred resetState from T-${rejectionTime}`);
|
|
786
|
-
resetInStore(store, token);
|
|
787
|
-
});
|
|
788
|
-
return;
|
|
789
|
-
}
|
|
790
|
-
const state = withdraw(store, token);
|
|
791
|
-
resetAtomOrSelector(store, state);
|
|
792
|
-
closeOperation(store);
|
|
793
|
-
}
|
|
794
|
-
|
|
795
729
|
//#endregion
|
|
796
730
|
//#region src/internal/set-state/set-atom-or-selector.ts
|
|
797
731
|
const setAtomOrSelector = (store, state, value) => {
|
|
@@ -828,26 +762,45 @@ function setIntoStore(store, ...params) {
|
|
|
828
762
|
value = params[2];
|
|
829
763
|
token = findInStore(store, family, key);
|
|
830
764
|
}
|
|
765
|
+
const action = value === RESET_STATE ? `reset` : `set`;
|
|
831
766
|
if (`counterfeit` in token && `family` in token) {
|
|
832
767
|
const subKey = token.family.subKey;
|
|
833
768
|
const disposal = store.disposalTraces.buffer.find((item) => item?.key === subKey);
|
|
834
|
-
store.logger.error(`❌`, token.type, token.key, `could not be
|
|
769
|
+
store.logger.error(`❌`, token.type, token.key, `could not be`, action, `because it was not found in the store "${store.config.name}".`, disposal ? `This state was previously disposed:\n${disposal.trace}` : `No previous disposal trace was found.`);
|
|
835
770
|
return;
|
|
836
771
|
}
|
|
837
772
|
const rejectionTime = openOperation(store, token);
|
|
838
773
|
if (rejectionTime) {
|
|
839
|
-
const unsubscribe = store.on.operationClose.subscribe(`waiting to
|
|
774
|
+
const unsubscribe = store.on.operationClose.subscribe(`waiting to ${action} "${token.key}" at T-${rejectionTime}`, function waitUntilOperationCloseToSetState() {
|
|
840
775
|
unsubscribe();
|
|
841
|
-
store.logger.info(`🟢`, token.type, token.key, `resuming deferred
|
|
776
|
+
store.logger.info(`🟢`, token.type, token.key, `resuming deferred`, action, `from T-${rejectionTime}`);
|
|
842
777
|
setIntoStore(store, token, value);
|
|
843
778
|
});
|
|
844
779
|
return;
|
|
845
780
|
}
|
|
846
781
|
const state = withdraw(store, token);
|
|
847
|
-
|
|
782
|
+
if (value === RESET_STATE) resetAtomOrSelector(store, state);
|
|
783
|
+
else setAtomOrSelector(store, state, value);
|
|
848
784
|
closeOperation(store);
|
|
849
785
|
}
|
|
850
786
|
|
|
787
|
+
//#endregion
|
|
788
|
+
//#region src/internal/set-state/reset-in-store.ts
|
|
789
|
+
const RESET_STATE = Symbol(`RESET`);
|
|
790
|
+
function resetInStore(store, ...params) {
|
|
791
|
+
let token;
|
|
792
|
+
let family;
|
|
793
|
+
let key;
|
|
794
|
+
if (params.length === 1) {
|
|
795
|
+
token = params[0];
|
|
796
|
+
setIntoStore(store, token, RESET_STATE);
|
|
797
|
+
} else {
|
|
798
|
+
family = params[0];
|
|
799
|
+
key = params[1];
|
|
800
|
+
setIntoStore(store, family, key, RESET_STATE);
|
|
801
|
+
}
|
|
802
|
+
}
|
|
803
|
+
|
|
851
804
|
//#endregion
|
|
852
805
|
//#region src/internal/keys.ts
|
|
853
806
|
const isAtomKey = (store, key) => newest(store).atoms.has(key);
|
|
@@ -961,7 +914,7 @@ const createReadonlyHeldSelector = (store, options, family) => {
|
|
|
961
914
|
find,
|
|
962
915
|
json
|
|
963
916
|
}, constant);
|
|
964
|
-
writeToCache(newest(store),
|
|
917
|
+
writeToCache(newest(store), readonlySelector, constant);
|
|
965
918
|
covered.clear();
|
|
966
919
|
return constant;
|
|
967
920
|
};
|
|
@@ -1002,7 +955,7 @@ const createReadonlyPureSelector = (store, options, family) => {
|
|
|
1002
955
|
find,
|
|
1003
956
|
json
|
|
1004
957
|
});
|
|
1005
|
-
const cached = writeToCache(innerTarget,
|
|
958
|
+
const cached = writeToCache(innerTarget, readonlySelector, value);
|
|
1006
959
|
store.logger.info(`✨`, type, key, `=`, cached);
|
|
1007
960
|
covered.clear();
|
|
1008
961
|
return cached;
|
|
@@ -1580,7 +1533,7 @@ const createWritableHeldSelector = (store, options, family) => {
|
|
|
1580
1533
|
for (const [downstreamSelectorKey, { source }] of upstreamStates) if (source !== key) innerTarget.selectorGraph.delete(downstreamSelectorKey, key);
|
|
1581
1534
|
innerTarget.selectorAtoms.delete(key);
|
|
1582
1535
|
getFn(getterToolkit, constant);
|
|
1583
|
-
writeToCache(innerTarget,
|
|
1536
|
+
writeToCache(innerTarget, mySelector, constant);
|
|
1584
1537
|
store.logger.info(`✨`, type, key, `=`, constant);
|
|
1585
1538
|
covered.clear();
|
|
1586
1539
|
return constant;
|
|
@@ -1590,7 +1543,7 @@ const createWritableHeldSelector = (store, options, family) => {
|
|
|
1590
1543
|
const oldValue = getSelf(options.get, innerTarget);
|
|
1591
1544
|
const newValue = become(next)(oldValue);
|
|
1592
1545
|
store.logger.info(`📝`, type, key, `set (`, oldValue, `->`, newValue, `)`);
|
|
1593
|
-
writeToCache(innerTarget,
|
|
1546
|
+
writeToCache(innerTarget, mySelector, newValue);
|
|
1594
1547
|
markDone(innerTarget, key);
|
|
1595
1548
|
if (isRootStore(innerTarget)) subject.next({
|
|
1596
1549
|
newValue,
|
|
@@ -1636,17 +1589,17 @@ const createWritablePureSelector = (store, options, family) => {
|
|
|
1636
1589
|
for (const [downstreamSelectorKey, { source }] of upstreamStates) if (source !== key) innerTarget.selectorGraph.delete(downstreamSelectorKey, key);
|
|
1637
1590
|
innerTarget.selectorAtoms.delete(key);
|
|
1638
1591
|
const value = getFn(getterToolkit);
|
|
1639
|
-
const cached = writeToCache(innerTarget,
|
|
1592
|
+
const cached = writeToCache(innerTarget, mySelector, value);
|
|
1640
1593
|
store.logger.info(`✨`, type, key, `=`, cached);
|
|
1641
1594
|
covered.clear();
|
|
1642
|
-
return
|
|
1595
|
+
return cached;
|
|
1643
1596
|
};
|
|
1644
1597
|
const setSelf = (next) => {
|
|
1645
1598
|
const innerTarget = newest(store);
|
|
1646
1599
|
const oldValue = getSelf(options.get, innerTarget);
|
|
1647
1600
|
const newValue = become(next)(oldValue);
|
|
1648
1601
|
store.logger.info(`📝`, type, key, `set (`, oldValue, `->`, newValue, `)`);
|
|
1649
|
-
writeToCache(innerTarget,
|
|
1602
|
+
writeToCache(innerTarget, mySelector, newValue);
|
|
1650
1603
|
markDone(innerTarget, options.key);
|
|
1651
1604
|
if (isRootStore(innerTarget)) subject.next({
|
|
1652
1605
|
newValue,
|
|
@@ -2153,6 +2106,21 @@ function getFromStore(store, ...params) {
|
|
|
2153
2106
|
return readOrComputeValue(store, withdraw(store, token));
|
|
2154
2107
|
}
|
|
2155
2108
|
|
|
2109
|
+
//#endregion
|
|
2110
|
+
//#region src/internal/subscribe/subscribe-to-root-atoms.ts
|
|
2111
|
+
const subscribeToRootDependency = (target, selector, atom) => {
|
|
2112
|
+
return atom.subject.subscribe(`${selector.type}:${selector.key}`, (atomChange) => {
|
|
2113
|
+
target.logger.info(`📢`, selector.type, selector.key, `root`, atom.key, `went`, atomChange.oldValue, `->`, atomChange.newValue);
|
|
2114
|
+
const oldValue = recallState(target, selector);
|
|
2115
|
+
const newValue = readOrComputeValue(target, selector);
|
|
2116
|
+
target.logger.info(`✨`, selector.type, selector.key, `went`, oldValue, `->`, newValue);
|
|
2117
|
+
selector.subject.next({
|
|
2118
|
+
newValue,
|
|
2119
|
+
oldValue
|
|
2120
|
+
});
|
|
2121
|
+
});
|
|
2122
|
+
};
|
|
2123
|
+
|
|
2156
2124
|
//#endregion
|
|
2157
2125
|
//#region src/internal/subscribe/subscribe-to-state.ts
|
|
2158
2126
|
function subscribeToState(store, token, key, handleUpdate) {
|
|
@@ -2195,6 +2163,46 @@ function subscribeToState(store, token, key, handleUpdate) {
|
|
|
2195
2163
|
return unsubscribe;
|
|
2196
2164
|
}
|
|
2197
2165
|
|
|
2166
|
+
//#endregion
|
|
2167
|
+
//#region src/internal/store/withdraw.ts
|
|
2168
|
+
function withdraw(store, token) {
|
|
2169
|
+
let withdrawn;
|
|
2170
|
+
let target = store;
|
|
2171
|
+
while (target !== null) {
|
|
2172
|
+
switch (token.type) {
|
|
2173
|
+
case `atom`:
|
|
2174
|
+
case `mutable_atom`:
|
|
2175
|
+
withdrawn = target.atoms.get(token.key);
|
|
2176
|
+
break;
|
|
2177
|
+
case `writable_pure_selector`:
|
|
2178
|
+
case `writable_held_selector`:
|
|
2179
|
+
withdrawn = target.writableSelectors.get(token.key);
|
|
2180
|
+
break;
|
|
2181
|
+
case `readonly_pure_selector`:
|
|
2182
|
+
case `readonly_held_selector`:
|
|
2183
|
+
withdrawn = target.readonlySelectors.get(token.key);
|
|
2184
|
+
break;
|
|
2185
|
+
case `atom_family`:
|
|
2186
|
+
case `mutable_atom_family`:
|
|
2187
|
+
case `writable_pure_selector_family`:
|
|
2188
|
+
case `readonly_pure_selector_family`:
|
|
2189
|
+
case `writable_held_selector_family`:
|
|
2190
|
+
case `readonly_held_selector_family`:
|
|
2191
|
+
withdrawn = target.families.get(token.key);
|
|
2192
|
+
break;
|
|
2193
|
+
case `timeline`:
|
|
2194
|
+
withdrawn = target.timelines.get(token.key);
|
|
2195
|
+
break;
|
|
2196
|
+
case `transaction`:
|
|
2197
|
+
withdrawn = target.transactions.get(token.key);
|
|
2198
|
+
break;
|
|
2199
|
+
}
|
|
2200
|
+
if (withdrawn) return withdrawn;
|
|
2201
|
+
target = target.child;
|
|
2202
|
+
}
|
|
2203
|
+
throw new NotFoundError(token, store);
|
|
2204
|
+
}
|
|
2205
|
+
|
|
2198
2206
|
//#endregion
|
|
2199
2207
|
//#region src/internal/subscribe/subscribe-to-timeline.ts
|
|
2200
2208
|
const subscribeToTimeline = (store, token, key, handleUpdate) => {
|
|
@@ -2219,6 +2227,21 @@ const subscribeToTransaction = (store, token, key, handleUpdate) => {
|
|
|
2219
2227
|
};
|
|
2220
2228
|
};
|
|
2221
2229
|
|
|
2230
|
+
//#endregion
|
|
2231
|
+
//#region src/internal/subscribe/subscribe-in-store.ts
|
|
2232
|
+
function subscribeInStore(store, token, handleUpdate, key = arbitrary()) {
|
|
2233
|
+
switch (token.type) {
|
|
2234
|
+
case `atom`:
|
|
2235
|
+
case `mutable_atom`:
|
|
2236
|
+
case `readonly_pure_selector`:
|
|
2237
|
+
case `readonly_held_selector`:
|
|
2238
|
+
case `writable_pure_selector`:
|
|
2239
|
+
case `writable_held_selector`: return subscribeToState(store, token, key, handleUpdate);
|
|
2240
|
+
case `transaction`: return subscribeToTransaction(store, token, key, handleUpdate);
|
|
2241
|
+
case `timeline`: return subscribeToTimeline(store, token, key, handleUpdate);
|
|
2242
|
+
}
|
|
2243
|
+
}
|
|
2244
|
+
|
|
2222
2245
|
//#endregion
|
|
2223
2246
|
//#region src/internal/mutable/tracker.ts
|
|
2224
2247
|
/**
|
|
@@ -2640,46 +2663,6 @@ const clearStore = (store) => {
|
|
|
2640
2663
|
store.config = config;
|
|
2641
2664
|
};
|
|
2642
2665
|
|
|
2643
|
-
//#endregion
|
|
2644
|
-
//#region src/internal/store/withdraw.ts
|
|
2645
|
-
function withdraw(store, token) {
|
|
2646
|
-
let withdrawn;
|
|
2647
|
-
let target = store;
|
|
2648
|
-
while (target !== null) {
|
|
2649
|
-
switch (token.type) {
|
|
2650
|
-
case `atom`:
|
|
2651
|
-
case `mutable_atom`:
|
|
2652
|
-
withdrawn = target.atoms.get(token.key);
|
|
2653
|
-
break;
|
|
2654
|
-
case `writable_pure_selector`:
|
|
2655
|
-
case `writable_held_selector`:
|
|
2656
|
-
withdrawn = target.writableSelectors.get(token.key);
|
|
2657
|
-
break;
|
|
2658
|
-
case `readonly_pure_selector`:
|
|
2659
|
-
case `readonly_held_selector`:
|
|
2660
|
-
withdrawn = target.readonlySelectors.get(token.key);
|
|
2661
|
-
break;
|
|
2662
|
-
case `atom_family`:
|
|
2663
|
-
case `mutable_atom_family`:
|
|
2664
|
-
case `writable_pure_selector_family`:
|
|
2665
|
-
case `readonly_pure_selector_family`:
|
|
2666
|
-
case `writable_held_selector_family`:
|
|
2667
|
-
case `readonly_held_selector_family`:
|
|
2668
|
-
withdrawn = target.families.get(token.key);
|
|
2669
|
-
break;
|
|
2670
|
-
case `timeline`:
|
|
2671
|
-
withdrawn = target.timelines.get(token.key);
|
|
2672
|
-
break;
|
|
2673
|
-
case `transaction`:
|
|
2674
|
-
withdrawn = target.transactions.get(token.key);
|
|
2675
|
-
break;
|
|
2676
|
-
}
|
|
2677
|
-
if (withdrawn) return withdrawn;
|
|
2678
|
-
target = target.child;
|
|
2679
|
-
}
|
|
2680
|
-
throw new NotFoundError(token, store);
|
|
2681
|
-
}
|
|
2682
|
-
|
|
2683
2666
|
//#endregion
|
|
2684
2667
|
//#region src/internal/atom/create-regular-atom.ts
|
|
2685
2668
|
function createRegularAtom(store, options, family, internalRoles) {
|
|
@@ -2800,20 +2783,6 @@ function installIntoStore(tokens, target, source) {
|
|
|
2800
2783
|
}
|
|
2801
2784
|
}
|
|
2802
2785
|
|
|
2803
|
-
//#endregion
|
|
2804
|
-
//#region src/internal/join/create-join.ts
|
|
2805
|
-
function createJoin(store, options, defaultContent) {
|
|
2806
|
-
store.joins.set(options.key, new Join$1(options, defaultContent, store));
|
|
2807
|
-
const token = {
|
|
2808
|
-
key: options.key,
|
|
2809
|
-
type: `join`,
|
|
2810
|
-
a: options.between[0],
|
|
2811
|
-
b: options.between[1],
|
|
2812
|
-
cardinality: options.cardinality
|
|
2813
|
-
};
|
|
2814
|
-
return token;
|
|
2815
|
-
}
|
|
2816
|
-
|
|
2817
2786
|
//#endregion
|
|
2818
2787
|
//#region src/internal/join/join-internal.ts
|
|
2819
2788
|
var Join = class {
|
|
@@ -3117,6 +3086,20 @@ var Join = class {
|
|
|
3117
3086
|
}
|
|
3118
3087
|
};
|
|
3119
3088
|
|
|
3089
|
+
//#endregion
|
|
3090
|
+
//#region src/internal/join/create-join.ts
|
|
3091
|
+
function createJoin(store, options, defaultContent) {
|
|
3092
|
+
store.joins.set(options.key, new Join(options, defaultContent, store));
|
|
3093
|
+
const token = {
|
|
3094
|
+
key: options.key,
|
|
3095
|
+
type: `join`,
|
|
3096
|
+
a: options.between[0],
|
|
3097
|
+
b: options.between[1],
|
|
3098
|
+
cardinality: options.cardinality
|
|
3099
|
+
};
|
|
3100
|
+
return token;
|
|
3101
|
+
}
|
|
3102
|
+
|
|
3120
3103
|
//#endregion
|
|
3121
3104
|
//#region src/internal/join/get-join.ts
|
|
3122
3105
|
function getJoin(token, store) {
|
|
@@ -3547,5 +3530,5 @@ const timeTravel = (store, action, token) => {
|
|
|
3547
3530
|
};
|
|
3548
3531
|
|
|
3549
3532
|
//#endregion
|
|
3550
|
-
export { CircularBuffer, FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, Future, IMPLICIT, INTERNAL_ROLES, Join, Junction, LazyMap, NotFoundError, StatefulSubject, Store, Subject, TRANSACTION_PHASES, Tracker, abortTransaction, actUponStore, allocateIntoStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, capitalize, claimWithinStore, clearStore, closeOperation, counterfeit, createJoin, createMutableAtom, createMutableAtomFamily, createReadonlyHeldSelector, createReadonlyPureSelector, createReadonlyPureSelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneSelector, createTimeline, createTransaction, createWritableHeldSelector, createWritablePureSelector, createWritablePureSelectorFamily, deallocateFromStore, deposit, disposeAtom, disposeFromStore, disposeSelector, editRelationsInStore, evictCachedValue, findInStore, findRelationsInStore, fuseWithinStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getInternalRelationsFromStore, getJoin, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getTrace, getUpdateFamily, getUpdateToken, hasRole, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestMoleculeTransferEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, installIntoStore, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isReservedIntrospectionKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeRootMoleculeInStore, markDone, newest, openOperation, prettyPrintTokenType, readFromCache, readOrComputeValue, recallState, registerSelector, resetAtomOrSelector, resetInStore, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootDependency, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceRootSelectorAtoms, updateSelectorAtoms, withdraw, writeToCache };
|
|
3533
|
+
export { CircularBuffer, FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, Future, IMPLICIT, INTERNAL_ROLES, Join, Junction, LazyMap, NotFoundError, RESET_STATE, StatefulSubject, Store, Subject, TRANSACTION_PHASES, Tracker, abortTransaction, actUponStore, allocateIntoStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, capitalize, claimWithinStore, clearStore, closeOperation, counterfeit, createJoin, createMutableAtom, createMutableAtomFamily, createReadonlyHeldSelector, createReadonlyPureSelector, createReadonlyPureSelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneSelector, createTimeline, createTransaction, createWritableHeldSelector, createWritablePureSelector, createWritablePureSelectorFamily, deallocateFromStore, deposit, disposeAtom, disposeFromStore, disposeSelector, editRelationsInStore, evictCachedValue, evictDownstreamFromAtom, evictDownstreamFromSelector, findInStore, findRelationsInStore, fuseWithinStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getInternalRelationsFromStore, getJoin, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getTrace, getUpdateFamily, getUpdateToken, hasRole, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestMoleculeTransferEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, installIntoStore, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isReservedIntrospectionKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeRootMoleculeInStore, markDone, newest, openOperation, prettyPrintTokenType, readFromCache, readOrComputeValue, recallState, registerSelector, resetAtomOrSelector, resetInStore, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootDependency, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceRootSelectorAtoms, updateSelectorAtoms, withdraw, writeToCache };
|
|
3551
3534
|
//# sourceMappingURL=index.js.map
|