valdres 0.2.0-alpha.31 → 0.2.0-alpha.33
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/index.js +54 -24
- package/dist/types/index.d.ts +1 -0
- package/dist/types/src/atom.d.ts +1 -1
- package/dist/types/src/atomFamily.d.ts +2 -8
- package/dist/types/src/globalStore.d.ts +4 -0
- package/dist/types/src/lib/createAtomFamily.d.ts +4 -0
- package/dist/types/src/lib/createGlobalAtomFamily.d.ts +5 -0
- package/dist/types/src/types/Atom.d.ts +1 -1
- package/dist/types/src/types/AtomFamily.d.ts +1 -1
- package/dist/types/src/types/AtomFamilyDefaultValue.d.ts +5 -0
- package/dist/types/src/types/AtomOptions.d.ts +1 -1
- package/dist/types/src/types/Selector.d.ts +1 -1
- package/dist/types/src/types/SelectorOptions.d.ts +1 -1
- package/package.json +2 -2
- package/dist/types/src/lib/globalStore.d.ts +0 -1
package/dist/index.js
CHANGED
|
@@ -611,15 +611,18 @@ var store = (id) => {
|
|
|
611
611
|
return storeFromStoreData(data);
|
|
612
612
|
};
|
|
613
613
|
// package.json
|
|
614
|
-
var version = "0.2.0-alpha.
|
|
614
|
+
var version = "0.2.0-alpha.32";
|
|
615
615
|
|
|
616
|
-
// src/
|
|
616
|
+
// src/globalStore.ts
|
|
617
617
|
if (globalThis.__valdres__) {
|
|
618
618
|
throw new Error(`Error! An instance of valdres is already loaded`);
|
|
619
619
|
} else {
|
|
620
620
|
globalThis.__valdres__ = version;
|
|
621
621
|
}
|
|
622
|
-
var globalStore = store("global")
|
|
622
|
+
var globalStore = Object.assign(store("valdres-global-store"), {
|
|
623
|
+
atoms: new Map,
|
|
624
|
+
atomFamilies: new Map
|
|
625
|
+
});
|
|
623
626
|
|
|
624
627
|
// src/lib/globalAtom.ts
|
|
625
628
|
var globalAtom = (defaultValue, options) => {
|
|
@@ -670,7 +673,7 @@ var globalAtom = (defaultValue, options) => {
|
|
|
670
673
|
equal: equal2,
|
|
671
674
|
...options,
|
|
672
675
|
defaultValue,
|
|
673
|
-
|
|
676
|
+
name: options?.name,
|
|
674
677
|
onInit,
|
|
675
678
|
onSet,
|
|
676
679
|
setSelf,
|
|
@@ -696,7 +699,7 @@ function atom(defaultValue, options) {
|
|
|
696
699
|
...options
|
|
697
700
|
};
|
|
698
701
|
}
|
|
699
|
-
// src/
|
|
702
|
+
// src/lib/createAtomFamily.ts
|
|
700
703
|
import equal5 from "fast-deep-equal/es6";
|
|
701
704
|
|
|
702
705
|
// src/lib/atomFamilyAtom.ts
|
|
@@ -772,13 +775,13 @@ var selector = (get, options) => {
|
|
|
772
775
|
return { equal: equal4, ...options, get };
|
|
773
776
|
};
|
|
774
777
|
|
|
775
|
-
// src/
|
|
778
|
+
// src/lib/createAtomFamily.ts
|
|
776
779
|
var createOptions = (options = {}, family, familyKey, keyStringified) => {
|
|
777
|
-
if (options.
|
|
780
|
+
if (options.name) {
|
|
778
781
|
return {
|
|
779
782
|
equal: equal5,
|
|
780
783
|
...options,
|
|
781
|
-
|
|
784
|
+
name: options?.name + "_" + keyStringified,
|
|
782
785
|
family,
|
|
783
786
|
familyKey
|
|
784
787
|
};
|
|
@@ -793,25 +796,48 @@ var handleDefaultValue = (defaultValue, key) => {
|
|
|
793
796
|
return () => defaultValue(key);
|
|
794
797
|
return defaultValue;
|
|
795
798
|
};
|
|
796
|
-
|
|
799
|
+
var createAtomFamily = (defaultValue, options) => {
|
|
797
800
|
const map = new Map;
|
|
798
|
-
const
|
|
801
|
+
const keysAtom = atom(new Set);
|
|
802
|
+
const atomFamily = Object.assign((key) => {
|
|
799
803
|
const keyStringified = stableStringify(key);
|
|
800
804
|
if (map.has(keyStringified)) {
|
|
801
805
|
return map.get(keyStringified);
|
|
802
806
|
}
|
|
803
|
-
const familyAtom = atomFamilyAtom(handleDefaultValue(defaultValue, key), createOptions(options,
|
|
807
|
+
const familyAtom = atomFamilyAtom(handleDefaultValue(defaultValue, key), createOptions(options, atomFamily, Object.freeze(key), keyStringified));
|
|
804
808
|
map.set(keyStringified, familyAtom);
|
|
805
809
|
return familyAtom;
|
|
806
|
-
}
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
if (options?.
|
|
813
|
-
|
|
814
|
-
|
|
810
|
+
}, {
|
|
811
|
+
__valdresAtomFamilyMap: map,
|
|
812
|
+
release: (key) => map.delete(key),
|
|
813
|
+
__keysAtom: keysAtom,
|
|
814
|
+
__keysSelector: selector((get) => Array.from(get(keysAtom)))
|
|
815
|
+
});
|
|
816
|
+
if (options?.name)
|
|
817
|
+
Object.defineProperty(atomFamily, "name", {
|
|
818
|
+
value: options.name,
|
|
819
|
+
writable: false
|
|
820
|
+
});
|
|
821
|
+
return atomFamily;
|
|
822
|
+
};
|
|
823
|
+
|
|
824
|
+
// src/lib/createGlobalAtomFamily.ts
|
|
825
|
+
var createGlobalAtomFamily = (defaultValue, options) => {
|
|
826
|
+
if (!options.name)
|
|
827
|
+
throw new Error(`Missing name for global atomFamiliy`);
|
|
828
|
+
if (globalStore.atomFamilies.has(options.name)) {
|
|
829
|
+
return globalStore.atomFamilies.get(options.name);
|
|
830
|
+
}
|
|
831
|
+
const family = createAtomFamily(defaultValue, options);
|
|
832
|
+
globalStore.atomFamilies.set(options.name, family);
|
|
833
|
+
return family;
|
|
834
|
+
};
|
|
835
|
+
|
|
836
|
+
// src/atomFamily.ts
|
|
837
|
+
function atomFamily(defaultValue, options) {
|
|
838
|
+
if (options?.global)
|
|
839
|
+
return createGlobalAtomFamily(defaultValue, options);
|
|
840
|
+
return createAtomFamily(defaultValue, options);
|
|
815
841
|
}
|
|
816
842
|
// src/createStoreWithSelectorSet.ts
|
|
817
843
|
var setSelector = (selector2, values, store2) => {
|
|
@@ -833,11 +859,11 @@ var createStoreWithSelectorSet = (id) => {
|
|
|
833
859
|
// src/selectorFamily.ts
|
|
834
860
|
import equal6 from "fast-deep-equal/es6";
|
|
835
861
|
var createOptions2 = (options = {}, family, familyKey, keyStringified) => {
|
|
836
|
-
if (options.
|
|
862
|
+
if (options.name) {
|
|
837
863
|
return {
|
|
838
864
|
equal: equal6,
|
|
839
865
|
...options,
|
|
840
|
-
|
|
866
|
+
name: options?.name + "_" + keyStringified,
|
|
841
867
|
family,
|
|
842
868
|
familyKey
|
|
843
869
|
};
|
|
@@ -856,8 +882,11 @@ var selectorFamily = (get, options) => {
|
|
|
856
882
|
return newSelector;
|
|
857
883
|
};
|
|
858
884
|
selectorFamily2.__valdresSelectorFamilyMap = map;
|
|
859
|
-
if (options?.
|
|
860
|
-
selectorFamily2
|
|
885
|
+
if (options?.name)
|
|
886
|
+
Object.defineProperty(selectorFamily2, "name", {
|
|
887
|
+
value: options.name,
|
|
888
|
+
writable: false
|
|
889
|
+
});
|
|
861
890
|
return selectorFamily2;
|
|
862
891
|
};
|
|
863
892
|
// src/utils/isFamilySelector.ts
|
|
@@ -875,6 +904,7 @@ export {
|
|
|
875
904
|
isFamily,
|
|
876
905
|
isAtomFamily,
|
|
877
906
|
isAtom,
|
|
907
|
+
globalStore,
|
|
878
908
|
createStoreWithSelectorSet,
|
|
879
909
|
atomFamily,
|
|
880
910
|
atom
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { atom } from "./src/atom";
|
|
2
2
|
export { atomFamily } from "./src/atomFamily";
|
|
3
3
|
export { createStoreWithSelectorSet } from "./src/createStoreWithSelectorSet";
|
|
4
|
+
export { globalStore } from "./src/globalStore";
|
|
4
5
|
export { selector } from "./src/selector";
|
|
5
6
|
export { selectorFamily } from "./src/selectorFamily";
|
|
6
7
|
export { store } from "./src/store";
|
package/dist/types/src/atom.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import type { GlobalAtom } from "./types/GlobalAtom";
|
|
|
7
7
|
*
|
|
8
8
|
* @example
|
|
9
9
|
*
|
|
10
|
-
* const user = atom<string>("Default Value", {
|
|
10
|
+
* const user = atom<string>("Default Value", { name: "userAtom"})
|
|
11
11
|
*
|
|
12
12
|
*/
|
|
13
13
|
export declare function atom<V>(defaultValue: AtomDefaultValue<V>, options: AtomOptions<V> & {
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import type { AtomFamily } from "./types/AtomFamily";
|
|
2
1
|
import type { AtomOptions } from "./types/AtomOptions";
|
|
3
2
|
import type { FamilyKey } from "./types/FamilyKey";
|
|
4
|
-
import type {
|
|
5
|
-
|
|
6
|
-
type DefaultValueCallback<Key, Value> = (arg: Key) => Value | Promise<Value>;
|
|
7
|
-
type AtomFamilyDefaultValue<Key, Value> = undefined | Value | DefaultValueCallback<Key, Value> | Selector<Value> | SelectorFamily<Key, Value>;
|
|
8
|
-
/** [Docs Reference](https://valdres.dev/valdres/api/atomFamily) */
|
|
9
|
-
export declare function atomFamily<Key = FamilyKey, Value = unknown>(defaultValue?: AtomFamilyDefaultValue<Key, Value>, options?: AtomOptions<Value>): AtomFamily<Key, Value>;
|
|
10
|
-
export {};
|
|
3
|
+
import type { AtomFamilyDefaultValue } from "./types/AtomFamilyDefaultValue";
|
|
4
|
+
export declare function atomFamily<Key = FamilyKey, Value = unknown>(defaultValue?: AtomFamilyDefaultValue<Key, Value>, options?: AtomOptions<Value>): import("..").AtomFamily<Key, Value>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AtomFamily } from "../types/AtomFamily";
|
|
2
|
+
import type { AtomOptions } from "../types/AtomOptions";
|
|
3
|
+
import type { AtomFamilyDefaultValue } from "../types/AtomFamilyDefaultValue";
|
|
4
|
+
export declare const createAtomFamily: <Key, Value>(defaultValue: AtomFamilyDefaultValue<Key, Value>, options?: AtomOptions<Value>) => AtomFamily<Key, Value>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AtomOptions } from "../types/AtomOptions";
|
|
2
|
+
import type { FamilyKey } from "../types/FamilyKey";
|
|
3
|
+
import type { AtomFamilyDefaultValue } from "../types/AtomFamilyDefaultValue";
|
|
4
|
+
import type { AtomFamily } from "../types/AtomFamily";
|
|
5
|
+
export declare const createGlobalAtomFamily: <Key = FamilyKey, Value = unknown>(defaultValue: AtomFamilyDefaultValue<Key, Value>, options: AtomOptions<Value>) => AtomFamily<Key, Value>;
|
|
@@ -5,7 +5,7 @@ import type { EqualFunc } from "./EqualFunc";
|
|
|
5
5
|
export type Atom<Value = unknown> = {
|
|
6
6
|
equal: EqualFunc<Value>;
|
|
7
7
|
defaultValue?: AtomDefaultValue<Value>;
|
|
8
|
-
|
|
8
|
+
name?: string;
|
|
9
9
|
onInit?: AtomOnInit<Value>;
|
|
10
10
|
onSet?: AtomOnSet<Value>;
|
|
11
11
|
onMount?: () => void | (() => void);
|
|
@@ -5,7 +5,7 @@ import type { Selector } from "./Selector";
|
|
|
5
5
|
export type AtomFamily<Key = FamilyKey, Value = unknown> = {
|
|
6
6
|
(key: Key): AtomFamilyAtom<Key, Value>;
|
|
7
7
|
release: (key: Key) => void;
|
|
8
|
-
|
|
8
|
+
name?: string;
|
|
9
9
|
__valdresAtomFamilyMap: Map<Key, AtomFamilyAtom<Key, Value>>;
|
|
10
10
|
__keysAtom: Atom<Set<Key>>;
|
|
11
11
|
__keysSelector: Selector<Key[]>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Selector } from "./Selector";
|
|
2
|
+
import type { SelectorFamily } from "./SelectorFamily";
|
|
3
|
+
type DefaultValueCallback<Key, Value> = (arg: Key) => Value | Promise<Value>;
|
|
4
|
+
export type AtomFamilyDefaultValue<Key, Value> = undefined | Value | DefaultValueCallback<Key, Value> | Selector<Value> | SelectorFamily<Key, Value>;
|
|
5
|
+
export {};
|
|
@@ -3,7 +3,7 @@ import type { EqualFunc } from "./EqualFunc";
|
|
|
3
3
|
import type { StoreData } from "./StoreData";
|
|
4
4
|
export type AtomOptions<Value = unknown> = {
|
|
5
5
|
global?: boolean;
|
|
6
|
-
|
|
6
|
+
name?: string;
|
|
7
7
|
onInit?: (setSelf: (value: Value) => void, store: StoreData) => (() => void) | void;
|
|
8
8
|
onSet?: AtomOnSet<Value>;
|
|
9
9
|
onMount?: () => () => void;
|
|
@@ -4,7 +4,7 @@ import type { SelectorFamily } from "./SelectorFamily";
|
|
|
4
4
|
export type Selector<Value = unknown, FamilyKey = undefined> = {
|
|
5
5
|
get: (get: GetValue, storeId: string) => Value;
|
|
6
6
|
equal: EqualFunc<Value>;
|
|
7
|
-
|
|
7
|
+
name?: string;
|
|
8
8
|
family?: SelectorFamily<FamilyKey, Value>;
|
|
9
9
|
familyKey?: FamilyKey;
|
|
10
10
|
onMount?: () => void | (() => void);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "valdres",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.33",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Eigil Sagafos"
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
"access": "public",
|
|
40
40
|
"registry": "https://registry.npmjs.org/"
|
|
41
41
|
},
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "f448900ed90c983933b76789b8345d2c9e929627"
|
|
43
43
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const globalStore: import("../..").Store;
|