atom.io 0.24.7 → 0.24.8
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/internal/dist/index.cjs +21 -14
- package/internal/dist/index.d.ts +3 -3
- package/internal/dist/index.js +21 -14
- package/internal/src/selector/create-readonly-selector.ts +7 -2
- package/internal/src/selector/create-writable-selector.ts +3 -1
- package/internal/src/selector/register-selector.ts +2 -1
- package/internal/src/selector/trace-selector-atoms.ts +6 -8
- package/internal/src/selector/update-selector-atoms.ts +3 -1
- package/package.json +2 -2
package/internal/dist/index.cjs
CHANGED
|
@@ -792,21 +792,18 @@ var getSelectorDependencyKeys = (key, store) => {
|
|
|
792
792
|
};
|
|
793
793
|
|
|
794
794
|
// internal/src/selector/trace-selector-atoms.ts
|
|
795
|
-
var traceSelectorAtoms = (
|
|
795
|
+
var traceSelectorAtoms = (directDependencyKey, covered, store) => {
|
|
796
796
|
const rootKeys = [];
|
|
797
797
|
const indirectDependencyKeys = getSelectorDependencyKeys(
|
|
798
798
|
directDependencyKey,
|
|
799
799
|
store
|
|
800
800
|
);
|
|
801
|
-
let depth = 0;
|
|
802
801
|
while (indirectDependencyKeys.length > 0) {
|
|
803
802
|
const indirectDependencyKey = indirectDependencyKeys.shift();
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
throw new Error(
|
|
807
|
-
`Maximum selector dependency depth exceeded (> 99999) in selector "${selectorKey}". This is likely due to a circular dependency.`
|
|
808
|
-
);
|
|
803
|
+
if (covered.has(indirectDependencyKey)) {
|
|
804
|
+
continue;
|
|
809
805
|
}
|
|
806
|
+
covered.add(indirectDependencyKey);
|
|
810
807
|
if (!isAtomKey(indirectDependencyKey, store)) {
|
|
811
808
|
indirectDependencyKeys.push(
|
|
812
809
|
...getSelectorDependencyKeys(indirectDependencyKey, store)
|
|
@@ -820,13 +817,14 @@ var traceSelectorAtoms = (selectorKey, directDependencyKey, store) => {
|
|
|
820
817
|
var traceAllSelectorAtoms = (selector, store) => {
|
|
821
818
|
const selectorKey = selector.key;
|
|
822
819
|
const directDependencyKeys = getSelectorDependencyKeys(selectorKey, store);
|
|
820
|
+
const covered = /* @__PURE__ */ new Set();
|
|
823
821
|
return directDependencyKeys.flatMap(
|
|
824
|
-
(depKey) => isAtomKey(depKey, store) ? depKey : traceSelectorAtoms(
|
|
822
|
+
(depKey) => isAtomKey(depKey, store) ? depKey : traceSelectorAtoms(depKey, covered, store)
|
|
825
823
|
);
|
|
826
824
|
};
|
|
827
825
|
|
|
828
826
|
// internal/src/selector/update-selector-atoms.ts
|
|
829
|
-
var updateSelectorAtoms = (selectorKey, dependency, store) => {
|
|
827
|
+
var updateSelectorAtoms = (selectorKey, dependency, covered, store) => {
|
|
830
828
|
const target = newest(store);
|
|
831
829
|
if (dependency.type === `atom` || dependency.type === `mutable_atom`) {
|
|
832
830
|
target.selectorAtoms.set({
|
|
@@ -840,7 +838,7 @@ var updateSelectorAtoms = (selectorKey, dependency, store) => {
|
|
|
840
838
|
`discovers root atom "${dependency.key}"`
|
|
841
839
|
);
|
|
842
840
|
} else {
|
|
843
|
-
const rootKeys = traceSelectorAtoms(
|
|
841
|
+
const rootKeys = traceSelectorAtoms(dependency.key, covered, store);
|
|
844
842
|
store.logger.info(
|
|
845
843
|
`\u{1F50D}`,
|
|
846
844
|
`selector`,
|
|
@@ -854,10 +852,11 @@ var updateSelectorAtoms = (selectorKey, dependency, store) => {
|
|
|
854
852
|
});
|
|
855
853
|
}
|
|
856
854
|
}
|
|
855
|
+
covered.add(dependency.key);
|
|
857
856
|
};
|
|
858
857
|
|
|
859
858
|
// internal/src/selector/register-selector.ts
|
|
860
|
-
var registerSelector = (selectorKey, store) => ({
|
|
859
|
+
var registerSelector = (selectorKey, covered, store) => ({
|
|
861
860
|
get: (dependency) => {
|
|
862
861
|
const target = newest(store);
|
|
863
862
|
if (dependency.type === `molecule`) {
|
|
@@ -882,7 +881,7 @@ var registerSelector = (selectorKey, store) => ({
|
|
|
882
881
|
source: dependency.key
|
|
883
882
|
}
|
|
884
883
|
);
|
|
885
|
-
updateSelectorAtoms(selectorKey, dependency, store);
|
|
884
|
+
updateSelectorAtoms(selectorKey, dependency, covered, store);
|
|
886
885
|
return dependencyValue;
|
|
887
886
|
},
|
|
888
887
|
set: (WritableToken, newValue) => {
|
|
@@ -899,10 +898,16 @@ var registerSelector = (selectorKey, store) => ({
|
|
|
899
898
|
var createReadonlySelector = (options, family, store) => {
|
|
900
899
|
const target = newest(store);
|
|
901
900
|
const subject = new Subject();
|
|
902
|
-
const
|
|
901
|
+
const covered = /* @__PURE__ */ new Set();
|
|
902
|
+
const { get, find, seek, json } = registerSelector(
|
|
903
|
+
options.key,
|
|
904
|
+
covered,
|
|
905
|
+
target
|
|
906
|
+
);
|
|
903
907
|
const getSelf = () => {
|
|
904
908
|
const value = options.get({ get, find, seek, json });
|
|
905
909
|
cacheValue(options.key, value, subject, newest(store));
|
|
910
|
+
covered.clear();
|
|
906
911
|
return value;
|
|
907
912
|
};
|
|
908
913
|
const readonlySelector = __spreadValues(__spreadProps(__spreadValues({}, options), {
|
|
@@ -934,12 +939,14 @@ var createReadonlySelector = (options, family, store) => {
|
|
|
934
939
|
var createWritableSelector = (options, family, store) => {
|
|
935
940
|
const target = newest(store);
|
|
936
941
|
const subject = new Subject();
|
|
937
|
-
const
|
|
942
|
+
const covered = /* @__PURE__ */ new Set();
|
|
943
|
+
const transactors = registerSelector(options.key, covered, target);
|
|
938
944
|
const { find, get, seek, json } = transactors;
|
|
939
945
|
const readonlyTransactors = { find, get, seek, json };
|
|
940
946
|
const getSelf = (innerTarget = newest(store)) => {
|
|
941
947
|
const value = options.get(readonlyTransactors);
|
|
942
948
|
cacheValue(options.key, value, subject, innerTarget);
|
|
949
|
+
covered.clear();
|
|
943
950
|
return value;
|
|
944
951
|
};
|
|
945
952
|
const setSelf = (next) => {
|
package/internal/dist/index.d.ts
CHANGED
|
@@ -523,12 +523,12 @@ declare function disposeSelector(selectorToken: ReadonlySelectorToken<unknown> |
|
|
|
523
523
|
|
|
524
524
|
declare const getSelectorDependencyKeys: (key: string, store: Store) => (AtomKey<unknown> | ReadonlySelectorKey<unknown> | SelectorKey<unknown>)[];
|
|
525
525
|
|
|
526
|
-
declare const registerSelector: (selectorKey: string, store: Store) => Transactors;
|
|
526
|
+
declare const registerSelector: (selectorKey: string, covered: Set<string>, store: Store) => Transactors;
|
|
527
527
|
|
|
528
|
-
declare const traceSelectorAtoms: (
|
|
528
|
+
declare const traceSelectorAtoms: (directDependencyKey: StateKey<unknown>, covered: Set<string>, store: Store) => AtomKey<unknown>[];
|
|
529
529
|
declare const traceAllSelectorAtoms: (selector: Selector<any>, store: Store) => AtomKey<unknown>[];
|
|
530
530
|
|
|
531
|
-
declare const updateSelectorAtoms: (selectorKey: string, dependency: ReadonlySelectorToken<unknown> | WritableToken<unknown>, store: Store) => void;
|
|
531
|
+
declare const updateSelectorAtoms: (selectorKey: string, dependency: ReadonlySelectorToken<unknown> | WritableToken<unknown>, covered: Set<string>, store: Store) => void;
|
|
532
532
|
|
|
533
533
|
type Modify<T> = (thing: T) => T;
|
|
534
534
|
declare const become: <T>(nextVersionOfThing: Modify<T> | T) => (originalThing: T) => T;
|
package/internal/dist/index.js
CHANGED
|
@@ -517,21 +517,18 @@ var getSelectorDependencyKeys = (key, store) => {
|
|
|
517
517
|
};
|
|
518
518
|
|
|
519
519
|
// internal/src/selector/trace-selector-atoms.ts
|
|
520
|
-
var traceSelectorAtoms = (
|
|
520
|
+
var traceSelectorAtoms = (directDependencyKey, covered, store) => {
|
|
521
521
|
const rootKeys = [];
|
|
522
522
|
const indirectDependencyKeys = getSelectorDependencyKeys(
|
|
523
523
|
directDependencyKey,
|
|
524
524
|
store
|
|
525
525
|
);
|
|
526
|
-
let depth = 0;
|
|
527
526
|
while (indirectDependencyKeys.length > 0) {
|
|
528
527
|
const indirectDependencyKey = indirectDependencyKeys.shift();
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
throw new Error(
|
|
532
|
-
`Maximum selector dependency depth exceeded (> 99999) in selector "${selectorKey}". This is likely due to a circular dependency.`
|
|
533
|
-
);
|
|
528
|
+
if (covered.has(indirectDependencyKey)) {
|
|
529
|
+
continue;
|
|
534
530
|
}
|
|
531
|
+
covered.add(indirectDependencyKey);
|
|
535
532
|
if (!isAtomKey(indirectDependencyKey, store)) {
|
|
536
533
|
indirectDependencyKeys.push(
|
|
537
534
|
...getSelectorDependencyKeys(indirectDependencyKey, store)
|
|
@@ -545,13 +542,14 @@ var traceSelectorAtoms = (selectorKey, directDependencyKey, store) => {
|
|
|
545
542
|
var traceAllSelectorAtoms = (selector, store) => {
|
|
546
543
|
const selectorKey = selector.key;
|
|
547
544
|
const directDependencyKeys = getSelectorDependencyKeys(selectorKey, store);
|
|
545
|
+
const covered = /* @__PURE__ */ new Set();
|
|
548
546
|
return directDependencyKeys.flatMap(
|
|
549
|
-
(depKey) => isAtomKey(depKey, store) ? depKey : traceSelectorAtoms(
|
|
547
|
+
(depKey) => isAtomKey(depKey, store) ? depKey : traceSelectorAtoms(depKey, covered, store)
|
|
550
548
|
);
|
|
551
549
|
};
|
|
552
550
|
|
|
553
551
|
// internal/src/selector/update-selector-atoms.ts
|
|
554
|
-
var updateSelectorAtoms = (selectorKey, dependency, store) => {
|
|
552
|
+
var updateSelectorAtoms = (selectorKey, dependency, covered, store) => {
|
|
555
553
|
const target = newest(store);
|
|
556
554
|
if (dependency.type === `atom` || dependency.type === `mutable_atom`) {
|
|
557
555
|
target.selectorAtoms.set({
|
|
@@ -565,7 +563,7 @@ var updateSelectorAtoms = (selectorKey, dependency, store) => {
|
|
|
565
563
|
`discovers root atom "${dependency.key}"`
|
|
566
564
|
);
|
|
567
565
|
} else {
|
|
568
|
-
const rootKeys = traceSelectorAtoms(
|
|
566
|
+
const rootKeys = traceSelectorAtoms(dependency.key, covered, store);
|
|
569
567
|
store.logger.info(
|
|
570
568
|
`\u{1F50D}`,
|
|
571
569
|
`selector`,
|
|
@@ -579,10 +577,11 @@ var updateSelectorAtoms = (selectorKey, dependency, store) => {
|
|
|
579
577
|
});
|
|
580
578
|
}
|
|
581
579
|
}
|
|
580
|
+
covered.add(dependency.key);
|
|
582
581
|
};
|
|
583
582
|
|
|
584
583
|
// internal/src/selector/register-selector.ts
|
|
585
|
-
var registerSelector = (selectorKey, store) => ({
|
|
584
|
+
var registerSelector = (selectorKey, covered, store) => ({
|
|
586
585
|
get: (dependency) => {
|
|
587
586
|
const target = newest(store);
|
|
588
587
|
if (dependency.type === `molecule`) {
|
|
@@ -607,7 +606,7 @@ var registerSelector = (selectorKey, store) => ({
|
|
|
607
606
|
source: dependency.key
|
|
608
607
|
}
|
|
609
608
|
);
|
|
610
|
-
updateSelectorAtoms(selectorKey, dependency, store);
|
|
609
|
+
updateSelectorAtoms(selectorKey, dependency, covered, store);
|
|
611
610
|
return dependencyValue;
|
|
612
611
|
},
|
|
613
612
|
set: (WritableToken, newValue) => {
|
|
@@ -624,10 +623,16 @@ var registerSelector = (selectorKey, store) => ({
|
|
|
624
623
|
var createReadonlySelector = (options, family, store) => {
|
|
625
624
|
const target = newest(store);
|
|
626
625
|
const subject = new Subject();
|
|
627
|
-
const
|
|
626
|
+
const covered = /* @__PURE__ */ new Set();
|
|
627
|
+
const { get, find, seek, json } = registerSelector(
|
|
628
|
+
options.key,
|
|
629
|
+
covered,
|
|
630
|
+
target
|
|
631
|
+
);
|
|
628
632
|
const getSelf = () => {
|
|
629
633
|
const value = options.get({ get, find, seek, json });
|
|
630
634
|
cacheValue(options.key, value, subject, newest(store));
|
|
635
|
+
covered.clear();
|
|
631
636
|
return value;
|
|
632
637
|
};
|
|
633
638
|
const readonlySelector = __spreadValues(__spreadProps(__spreadValues({}, options), {
|
|
@@ -659,12 +664,14 @@ var createReadonlySelector = (options, family, store) => {
|
|
|
659
664
|
var createWritableSelector = (options, family, store) => {
|
|
660
665
|
const target = newest(store);
|
|
661
666
|
const subject = new Subject();
|
|
662
|
-
const
|
|
667
|
+
const covered = /* @__PURE__ */ new Set();
|
|
668
|
+
const transactors = registerSelector(options.key, covered, target);
|
|
663
669
|
const { find, get, seek, json } = transactors;
|
|
664
670
|
const readonlyTransactors = { find, get, seek, json };
|
|
665
671
|
const getSelf = (innerTarget = newest(store)) => {
|
|
666
672
|
const value = options.get(readonlyTransactors);
|
|
667
673
|
cacheValue(options.key, value, subject, innerTarget);
|
|
674
|
+
covered.clear();
|
|
668
675
|
return value;
|
|
669
676
|
};
|
|
670
677
|
const setSelf = (next) => {
|
|
@@ -18,11 +18,16 @@ export const createReadonlySelector = <T>(
|
|
|
18
18
|
): ReadonlySelectorToken<T> => {
|
|
19
19
|
const target = newest(store)
|
|
20
20
|
const subject = new Subject<{ newValue: T; oldValue: T }>()
|
|
21
|
-
|
|
22
|
-
const { get, find, seek, json } = registerSelector(
|
|
21
|
+
const covered = new Set<string>()
|
|
22
|
+
const { get, find, seek, json } = registerSelector(
|
|
23
|
+
options.key,
|
|
24
|
+
covered,
|
|
25
|
+
target,
|
|
26
|
+
)
|
|
23
27
|
const getSelf = () => {
|
|
24
28
|
const value = options.get({ get, find, seek, json })
|
|
25
29
|
cacheValue(options.key, value, subject, newest(store))
|
|
30
|
+
covered.clear()
|
|
26
31
|
return value
|
|
27
32
|
}
|
|
28
33
|
|
|
@@ -21,13 +21,15 @@ export const createWritableSelector = <T>(
|
|
|
21
21
|
): WritableSelectorToken<T> => {
|
|
22
22
|
const target = newest(store)
|
|
23
23
|
const subject = new Subject<{ newValue: T; oldValue: T }>()
|
|
24
|
-
const
|
|
24
|
+
const covered = new Set<string>()
|
|
25
|
+
const transactors = registerSelector(options.key, covered, target)
|
|
25
26
|
const { find, get, seek, json } = transactors
|
|
26
27
|
const readonlyTransactors = { find, get, seek, json }
|
|
27
28
|
|
|
28
29
|
const getSelf = (innerTarget = newest(store)): T => {
|
|
29
30
|
const value = options.get(readonlyTransactors)
|
|
30
31
|
cacheValue(options.key, value, subject, innerTarget)
|
|
32
|
+
covered.clear()
|
|
31
33
|
return value
|
|
32
34
|
}
|
|
33
35
|
|
|
@@ -19,6 +19,7 @@ import { updateSelectorAtoms } from "./update-selector-atoms"
|
|
|
19
19
|
|
|
20
20
|
export const registerSelector = (
|
|
21
21
|
selectorKey: string,
|
|
22
|
+
covered: Set<string>,
|
|
22
23
|
store: Store,
|
|
23
24
|
): Transactors => ({
|
|
24
25
|
get: (dependency: MoleculeToken<MoleculeConstructor> | ReadableToken<any>) => {
|
|
@@ -49,7 +50,7 @@ export const registerSelector = (
|
|
|
49
50
|
source: dependency.key,
|
|
50
51
|
},
|
|
51
52
|
)
|
|
52
|
-
updateSelectorAtoms(selectorKey, dependency, store)
|
|
53
|
+
updateSelectorAtoms(selectorKey, dependency, covered, store)
|
|
53
54
|
return dependencyValue
|
|
54
55
|
},
|
|
55
56
|
set: (WritableToken, newValue) => {
|
|
@@ -4,8 +4,8 @@ import { isAtomKey } from "../keys"
|
|
|
4
4
|
import { getSelectorDependencyKeys } from "./get-selector-dependency-keys"
|
|
5
5
|
|
|
6
6
|
export const traceSelectorAtoms = (
|
|
7
|
-
selectorKey: string,
|
|
8
7
|
directDependencyKey: StateKey<unknown>,
|
|
8
|
+
covered: Set<string>,
|
|
9
9
|
store: Store,
|
|
10
10
|
): AtomKey<unknown>[] => {
|
|
11
11
|
const rootKeys: AtomKey<unknown>[] = []
|
|
@@ -14,16 +14,13 @@ export const traceSelectorAtoms = (
|
|
|
14
14
|
directDependencyKey,
|
|
15
15
|
store,
|
|
16
16
|
)
|
|
17
|
-
let depth = 0
|
|
18
17
|
while (indirectDependencyKeys.length > 0) {
|
|
19
18
|
// biome-ignore lint/style/noNonNullAssertion: just checked length ^^^
|
|
20
19
|
const indirectDependencyKey = indirectDependencyKeys.shift()!
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
throw new Error(
|
|
24
|
-
`Maximum selector dependency depth exceeded (> 99999) in selector "${selectorKey}". This is likely due to a circular dependency.`,
|
|
25
|
-
)
|
|
20
|
+
if (covered.has(indirectDependencyKey)) {
|
|
21
|
+
continue
|
|
26
22
|
}
|
|
23
|
+
covered.add(indirectDependencyKey)
|
|
27
24
|
|
|
28
25
|
if (!isAtomKey(indirectDependencyKey, store)) {
|
|
29
26
|
indirectDependencyKeys.push(
|
|
@@ -43,9 +40,10 @@ export const traceAllSelectorAtoms = (
|
|
|
43
40
|
): AtomKey<unknown>[] => {
|
|
44
41
|
const selectorKey = selector.key
|
|
45
42
|
const directDependencyKeys = getSelectorDependencyKeys(selectorKey, store)
|
|
43
|
+
const covered = new Set<string>()
|
|
46
44
|
return directDependencyKeys.flatMap((depKey) =>
|
|
47
45
|
isAtomKey(depKey, store)
|
|
48
46
|
? depKey
|
|
49
|
-
: traceSelectorAtoms(
|
|
47
|
+
: traceSelectorAtoms(depKey, covered, store),
|
|
50
48
|
)
|
|
51
49
|
}
|
|
@@ -7,6 +7,7 @@ import { traceSelectorAtoms } from "./trace-selector-atoms"
|
|
|
7
7
|
export const updateSelectorAtoms = (
|
|
8
8
|
selectorKey: string,
|
|
9
9
|
dependency: ReadonlySelectorToken<unknown> | WritableToken<unknown>,
|
|
10
|
+
covered: Set<string>,
|
|
10
11
|
store: Store,
|
|
11
12
|
): void => {
|
|
12
13
|
const target = newest(store)
|
|
@@ -22,7 +23,7 @@ export const updateSelectorAtoms = (
|
|
|
22
23
|
`discovers root atom "${dependency.key}"`,
|
|
23
24
|
)
|
|
24
25
|
} else {
|
|
25
|
-
const rootKeys = traceSelectorAtoms(
|
|
26
|
+
const rootKeys = traceSelectorAtoms(dependency.key, covered, store)
|
|
26
27
|
store.logger.info(
|
|
27
28
|
`🔍`,
|
|
28
29
|
`selector`,
|
|
@@ -38,4 +39,5 @@ export const updateSelectorAtoms = (
|
|
|
38
39
|
})
|
|
39
40
|
}
|
|
40
41
|
}
|
|
42
|
+
covered.add(dependency.key)
|
|
41
43
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "atom.io",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.8",
|
|
4
4
|
"description": "Composable and testable reactive data library.",
|
|
5
5
|
"homepage": "https://atom.io.fyi",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"drizzle-orm": "0.31.2",
|
|
66
66
|
"eslint": "npm:eslint@8.57.0",
|
|
67
67
|
"eslint-v9": "npm:eslint@9.5.0",
|
|
68
|
-
"framer-motion": "11.2.
|
|
68
|
+
"framer-motion": "11.2.12",
|
|
69
69
|
"happy-dom": "14.12.3",
|
|
70
70
|
"http-proxy": "1.18.1",
|
|
71
71
|
"npmlog": "7.0.1",
|