@plitzi/nexus 0.31.2 → 0.32.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/CHANGELOG.md +12 -0
- package/README.md +30 -5
- package/dist/advanced/index.d.ts +7 -0
- package/dist/advanced/index.mjs +16 -0
- package/dist/async/createAsync.mjs +8 -1
- package/dist/createStore/createStore.d.ts +4 -45
- package/dist/createStore/createStore.mjs +58 -36
- package/dist/createStore/helpers/PathTrie.d.ts +2 -0
- package/dist/createStore/helpers/PathTrie.mjs +55 -20
- package/dist/createStore/helpers/createChainReads.d.ts +1 -1
- package/dist/createStore/helpers/createChainReads.mjs +18 -19
- package/dist/createStore/helpers/createSetState.mjs +24 -33
- package/dist/createStore/hooks/shared.d.ts +1 -2
- package/dist/createStore/hooks/shared.mjs +7 -18
- package/dist/createStore/hooks/useStore.d.ts +4 -49
- package/dist/createStore/hooks/useStore.mjs +19 -27
- package/dist/createStore/hooks/useStoreGetter.d.ts +2 -5
- package/dist/createStore/hooks/useStoreGetter.mjs +19 -22
- package/dist/createStore/hooks/useStoreSetter.mjs +2 -4
- package/dist/derived/createDerived.d.ts +1 -1
- package/dist/derived/createDerived.mjs +12 -9
- package/dist/entities/createEntityStore.d.ts +38 -0
- package/dist/entities/createEntityStore.mjs +102 -0
- package/dist/entities/index.d.ts +2 -0
- package/dist/entities/index.mjs +2 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.mjs +23 -22
- package/dist/middleware/historyMiddleware.d.ts +3 -3
- package/dist/middleware/historyMiddleware.mjs +35 -30
- package/dist/middleware/index.d.ts +1 -1
- package/dist/middleware/isDisabled.d.ts +2 -0
- package/dist/middleware/isDisabled.mjs +4 -0
- package/dist/middleware/loggerMiddleware.d.ts +2 -2
- package/dist/middleware/loggerMiddleware.mjs +14 -15
- package/dist/middleware/persistMiddleware.d.ts +7 -5
- package/dist/middleware/persistMiddleware.mjs +56 -28
- package/dist/middleware/reduxDevToolsMiddleware.d.ts +2 -2
- package/dist/middleware/reduxDevToolsMiddleware.mjs +26 -21
- package/dist/types/StoreTypes.d.ts +49 -21
- package/package.json +17 -1
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import
|
|
2
|
-
import t from "
|
|
3
|
-
import n from "../helpers/
|
|
1
|
+
import e from "../helpers/getByPath.mjs";
|
|
2
|
+
import { isDisabled as t } from "./isDisabled.mjs";
|
|
3
|
+
import { isPlainObject as n } from "../createStore/helpers/deepMerge.mjs";
|
|
4
|
+
import r from "../helpers/isPathAffected.mjs";
|
|
4
5
|
//#region src/middleware/historyMiddleware.ts
|
|
5
|
-
var
|
|
6
|
-
if (!Object.is(
|
|
7
|
-
if (
|
|
6
|
+
var i = (e, t, r = 12) => {
|
|
7
|
+
if (!Object.is(e, t)) {
|
|
8
|
+
if (r <= 0 || !n(e) || !n(t)) return {
|
|
8
9
|
path: "",
|
|
9
|
-
value:
|
|
10
|
+
value: t
|
|
10
11
|
};
|
|
11
|
-
for (let
|
|
12
|
-
if (Object.is(
|
|
13
|
-
let a =
|
|
12
|
+
for (let n of new Set([...Object.keys(e), ...Object.keys(t)])) {
|
|
13
|
+
if (Object.is(e[n], t[n])) continue;
|
|
14
|
+
let a = i(e[n], t[n], r - 1);
|
|
14
15
|
if (a) return {
|
|
15
|
-
path: a.path ? `${
|
|
16
|
+
path: a.path ? `${n}.${a.path}` : n,
|
|
16
17
|
value: a.value
|
|
17
18
|
};
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
21
|
};
|
|
21
|
-
function
|
|
22
|
-
let a =
|
|
23
|
-
state:
|
|
22
|
+
function a(t, n = {}) {
|
|
23
|
+
let a = n.limit ?? 100, o = n.path, s = n.shouldRecord, c = [{
|
|
24
|
+
state: t.getState(),
|
|
24
25
|
timestamp: Date.now()
|
|
25
26
|
}], l = 0, u = !1, d = () => ({
|
|
26
27
|
entries: c,
|
|
@@ -29,12 +30,12 @@ function i(e, i = {}) {
|
|
|
29
30
|
canRedo: l < c.length - 1
|
|
30
31
|
}), f = d(), p = /* @__PURE__ */ new Set(), m = () => {
|
|
31
32
|
f = d(), p.forEach((e) => e());
|
|
32
|
-
}, h = ({ path:
|
|
33
|
-
if (u || s && !s(
|
|
34
|
-
let d = l < c.length - 1 ? c.slice(0, l + 1) : c, f = d[d.length - 1].state, p =
|
|
33
|
+
}, h = ({ path: n }) => {
|
|
34
|
+
if (u || s && !s(n) || o && n !== void 0 && !r(n, o)) return;
|
|
35
|
+
let d = l < c.length - 1 ? c.slice(0, l + 1) : c, f = d[d.length - 1].state, p = t.getState(), h = n ?? o, g, _ = n ?? o;
|
|
35
36
|
if (_) try {
|
|
36
|
-
let
|
|
37
|
-
|
|
37
|
+
let t = i(e(f, _), e(p, _));
|
|
38
|
+
t && (h = t.path ? `${_}.${t.path}` : _, g = t.value);
|
|
38
39
|
} catch {}
|
|
39
40
|
let v = [...d, {
|
|
40
41
|
path: h,
|
|
@@ -47,9 +48,9 @@ function i(e, i = {}) {
|
|
|
47
48
|
if (n < 0 || n >= c.length || n === l) return;
|
|
48
49
|
let r = c[n].state;
|
|
49
50
|
if (u = !0, o) {
|
|
50
|
-
let n =
|
|
51
|
-
|
|
52
|
-
} else
|
|
51
|
+
let n = e(r, o);
|
|
52
|
+
t.setState(o, () => n);
|
|
53
|
+
} else t.setState(void 0, () => r);
|
|
53
54
|
u = !1, l = n, m();
|
|
54
55
|
};
|
|
55
56
|
return {
|
|
@@ -61,7 +62,7 @@ function i(e, i = {}) {
|
|
|
61
62
|
travelTo: g,
|
|
62
63
|
clear: () => {
|
|
63
64
|
c = [{
|
|
64
|
-
state:
|
|
65
|
+
state: t.getState(),
|
|
65
66
|
timestamp: Date.now()
|
|
66
67
|
}], l = 0, m();
|
|
67
68
|
}
|
|
@@ -69,13 +70,17 @@ function i(e, i = {}) {
|
|
|
69
70
|
record: h
|
|
70
71
|
};
|
|
71
72
|
}
|
|
72
|
-
var
|
|
73
|
-
function
|
|
74
|
-
return
|
|
73
|
+
var o = /* @__PURE__ */ new WeakMap();
|
|
74
|
+
function s(e) {
|
|
75
|
+
return o.get(e);
|
|
75
76
|
}
|
|
76
|
-
var
|
|
77
|
-
let
|
|
78
|
-
return
|
|
77
|
+
var c = (e) => {
|
|
78
|
+
let n = e?.enabled;
|
|
79
|
+
return (r) => {
|
|
80
|
+
if (t(n, r.getState())) return;
|
|
81
|
+
let { handle: i, record: s } = a(r, e);
|
|
82
|
+
return o.set(r, i), { onChange: s };
|
|
83
|
+
};
|
|
79
84
|
};
|
|
80
85
|
//#endregion
|
|
81
|
-
export {
|
|
86
|
+
export { s as getStoreHistory, c as historyMiddleware };
|
|
@@ -4,5 +4,5 @@ export { historyMiddleware } from './historyMiddleware';
|
|
|
4
4
|
export { reduxDevToolsMiddleware } from './reduxDevToolsMiddleware';
|
|
5
5
|
export { cascade } from './cascade';
|
|
6
6
|
export type { LoggerOptions } from './loggerMiddleware';
|
|
7
|
-
export type { PersistOptions, PersistStorage } from './persistMiddleware';
|
|
7
|
+
export type { PersistOptions, PersistStorage, PersistTarget, PersistTargetOption } from './persistMiddleware';
|
|
8
8
|
export type { ReduxDevToolsOptions } from './reduxDevToolsMiddleware';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { StoreChange, StoreError, StoreMiddleware } from '../types';
|
|
2
|
-
export type LoggerOptions<TState extends object> = {
|
|
1
|
+
import { MiddlewareOptions, StoreChange, StoreError, StoreMiddleware } from '../types';
|
|
2
|
+
export type LoggerOptions<TState extends object> = MiddlewareOptions<TState> & {
|
|
3
3
|
filter?: (change: StoreChange<TState>) => boolean;
|
|
4
4
|
sink?: (change: StoreChange<TState>) => void;
|
|
5
5
|
errorSink?: (failure: StoreError<TState>) => void;
|
|
@@ -1,20 +1,19 @@
|
|
|
1
|
+
import { isDisabled as e } from "./isDisabled.mjs";
|
|
1
2
|
//#region src/middleware/loggerMiddleware.ts
|
|
2
|
-
var
|
|
3
|
+
var t = (e) => {
|
|
3
4
|
console.log("[store]", e.path ?? "(root)", e.next);
|
|
4
|
-
},
|
|
5
|
+
}, n = (e) => {
|
|
5
6
|
console.error("[store]", `${e.phase} error at`, e.path ?? "(root)", e.error);
|
|
6
|
-
},
|
|
7
|
-
let { filter:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
onError: a
|
|
17
|
-
});
|
|
7
|
+
}, r = (r = {}) => {
|
|
8
|
+
let { filter: i, sink: a = t, errorSink: o = n, enabled: s } = typeof r == "function" ? { sink: r } : r;
|
|
9
|
+
return (t) => {
|
|
10
|
+
if (!e(s, t.getState())) return {
|
|
11
|
+
onChange: (e) => {
|
|
12
|
+
(!i || i(e)) && a(e);
|
|
13
|
+
},
|
|
14
|
+
onError: o
|
|
15
|
+
};
|
|
16
|
+
};
|
|
18
17
|
};
|
|
19
18
|
//#endregion
|
|
20
|
-
export {
|
|
19
|
+
export { r as loggerMiddleware };
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import { StoreMiddleware } from '../types';
|
|
1
|
+
import { MiddlewareOptions, PathOf, StoreMiddleware } from '../types';
|
|
2
2
|
export type PersistStorage = {
|
|
3
3
|
getItem: (key: string) => string | null;
|
|
4
4
|
setItem: (key: string, value: string) => void;
|
|
5
5
|
removeItem: (key: string) => void;
|
|
6
6
|
};
|
|
7
|
-
export type
|
|
7
|
+
export type PersistTarget = PersistStorage | 'local' | 'session';
|
|
8
|
+
export type PersistTargetOption<TState extends object> = PersistTarget | ((state: TState) => PersistTarget | false);
|
|
9
|
+
export type PersistOptions<TState extends object> = MiddlewareOptions<TState> & {
|
|
8
10
|
key: string;
|
|
9
|
-
storage?:
|
|
11
|
+
storage?: PersistTargetOption<TState>;
|
|
12
|
+
paths?: ReadonlyArray<PathOf<TState>>;
|
|
10
13
|
partialize?: (state: TState) => Partial<TState>;
|
|
11
14
|
version?: number;
|
|
12
|
-
migrate?: (persisted: unknown, version: number) =>
|
|
15
|
+
migrate?: (persisted: unknown, version: number) => unknown;
|
|
13
16
|
merge?: (persisted: Partial<TState>, current: TState) => Partial<TState>;
|
|
14
|
-
debounce?: number;
|
|
15
17
|
};
|
|
16
18
|
export declare const persistMiddleware: <TState extends object>(options: PersistOptions<TState>) => StoreMiddleware<TState>;
|
|
@@ -1,40 +1,68 @@
|
|
|
1
|
+
import e from "../helpers/getByPath.mjs";
|
|
2
|
+
import { isDisabled as t } from "./isDisabled.mjs";
|
|
3
|
+
import n from "../helpers/isPathAffected.mjs";
|
|
1
4
|
//#region src/middleware/persistMiddleware.ts
|
|
2
|
-
var e = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
var r = (e = "local") => {
|
|
6
|
+
if (typeof e != "string") return e;
|
|
7
|
+
try {
|
|
8
|
+
return e === "session" ? globalThis.sessionStorage : globalThis.localStorage;
|
|
9
|
+
} catch {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
}, i = (i) => {
|
|
13
|
+
let { key: o, storage: s, paths: c, partialize: l, version: u = 0, migrate: d, merge: f, enabled: p } = i, m = typeof s == "function" ? s : void 0, h = typeof s == "function" ? void 0 : r(s);
|
|
14
|
+
if (!m && !h) return () => void 0;
|
|
15
|
+
let g = (e) => {
|
|
16
|
+
if (!m) return h;
|
|
17
|
+
let t = m(e);
|
|
18
|
+
return t ? r(t) : void 0;
|
|
19
|
+
}, _ = (t) => {
|
|
20
|
+
if (c) {
|
|
21
|
+
let n = {};
|
|
22
|
+
for (let r of c) n[r] = e(t, r);
|
|
23
|
+
return n;
|
|
24
|
+
}
|
|
25
|
+
return l ? l(t) : t;
|
|
26
|
+
}, v = (e) => {
|
|
27
|
+
let t = e.getState(), n = g(t);
|
|
28
|
+
if (!n) return;
|
|
29
|
+
let r = {
|
|
30
|
+
version: u,
|
|
31
|
+
state: _(t)
|
|
11
32
|
};
|
|
12
|
-
|
|
13
|
-
};
|
|
33
|
+
n.setItem(o, JSON.stringify(r));
|
|
34
|
+
}, y = (e) => !c || c.some((t) => n(e, t));
|
|
14
35
|
return (e) => {
|
|
15
|
-
|
|
36
|
+
if (t(p, e.getState())) return;
|
|
37
|
+
let n = !1, r = () => {
|
|
38
|
+
if (n) return;
|
|
39
|
+
let t = g(e.getState());
|
|
40
|
+
t && (n = !0, a(e, o, t, u, c, d, f));
|
|
41
|
+
};
|
|
16
42
|
return {
|
|
17
|
-
hydrate:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
onChange: () => {
|
|
21
|
-
if (l <= 0) {
|
|
22
|
-
u(e);
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
clearTimeout(t), t = setTimeout(() => u(e), l);
|
|
43
|
+
hydrate: r,
|
|
44
|
+
onChange: (t) => {
|
|
45
|
+
r(), y(t.path) && v(e);
|
|
26
46
|
}
|
|
27
47
|
};
|
|
28
48
|
};
|
|
29
49
|
};
|
|
30
|
-
function
|
|
31
|
-
let
|
|
32
|
-
if (
|
|
33
|
-
let t = JSON.parse(
|
|
34
|
-
|
|
50
|
+
function a(e, t, n, r, i, a, o) {
|
|
51
|
+
let s = n?.getItem(t);
|
|
52
|
+
if (s) try {
|
|
53
|
+
let t = JSON.parse(s), n = t.version !== r && a ? a(t.state, t.version) : t.state;
|
|
54
|
+
if (i) {
|
|
55
|
+
let t = n;
|
|
56
|
+
e.batch(() => {
|
|
57
|
+
for (let n of i) n in t && e.setState(n, t[n]);
|
|
58
|
+
});
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
let c = n;
|
|
62
|
+
e.setState(void 0, o ? o(c, e.getState()) : c);
|
|
35
63
|
} catch {
|
|
36
|
-
n
|
|
64
|
+
n?.removeItem(t);
|
|
37
65
|
}
|
|
38
66
|
}
|
|
39
67
|
//#endregion
|
|
40
|
-
export {
|
|
68
|
+
export { i as persistMiddleware };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { StoreChange, StoreMiddleware } from '../types';
|
|
2
|
-
export type ReduxDevToolsOptions<TState extends object> = {
|
|
1
|
+
import { MiddlewareOptions, StoreChange, StoreMiddleware } from '../types';
|
|
2
|
+
export type ReduxDevToolsOptions<TState extends object> = MiddlewareOptions<TState> & {
|
|
3
3
|
name?: string;
|
|
4
4
|
action?: (change: StoreChange<TState>) => string;
|
|
5
5
|
};
|
|
@@ -1,26 +1,31 @@
|
|
|
1
|
+
import { isDisabled as e } from "./isDisabled.mjs";
|
|
1
2
|
//#region src/middleware/reduxDevToolsMiddleware.ts
|
|
2
|
-
var
|
|
3
|
+
var t = () => {
|
|
3
4
|
if (!(typeof window > "u")) return window.__REDUX_DEVTOOLS_EXTENSION__;
|
|
4
|
-
},
|
|
5
|
-
let r =
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
let
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
5
|
+
}, n = (n = {}) => {
|
|
6
|
+
let { enabled: r } = n;
|
|
7
|
+
return (i) => {
|
|
8
|
+
if (e(r, i.getState())) return;
|
|
9
|
+
let a = t();
|
|
10
|
+
if (!a) return;
|
|
11
|
+
let { name: o = "nexus", action: s } = n, c = a.connect({ name: o });
|
|
12
|
+
c.init(i.getState());
|
|
13
|
+
let l = !1;
|
|
14
|
+
return c.subscribe((e) => {
|
|
15
|
+
if (e.type !== "DISPATCH" || e.state === void 0) return;
|
|
16
|
+
let t = e.payload?.type;
|
|
17
|
+
if (!(t !== "JUMP_TO_STATE" && t !== "JUMP_TO_ACTION" && t !== "ROLLBACK")) {
|
|
18
|
+
l = !0;
|
|
19
|
+
try {
|
|
20
|
+
i.setState(void 0, JSON.parse(e.state));
|
|
21
|
+
} finally {
|
|
22
|
+
l = !1;
|
|
23
|
+
}
|
|
19
24
|
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
25
|
+
}), { onChange: (e) => {
|
|
26
|
+
l || c.send({ type: s ? s(e) : e.path ?? "SET_STATE" }, i.getState());
|
|
27
|
+
} };
|
|
28
|
+
};
|
|
24
29
|
};
|
|
25
30
|
//#endregion
|
|
26
|
-
export {
|
|
31
|
+
export { n as reduxDevToolsMiddleware };
|
|
@@ -2,17 +2,13 @@ import { default as PathTrie } from '../createStore/helpers/PathTrie';
|
|
|
2
2
|
import { default as Subscribers } from '../createStore/helpers/Subscribers';
|
|
3
3
|
export type Path = string;
|
|
4
4
|
export type Primitive = string | number | boolean | null | undefined | symbol | bigint;
|
|
5
|
-
export type PathOf<T, Seen = never> = T extends Primitive ? never : T extends Seen ? never : {
|
|
6
|
-
[K in keyof T & string]-?: T[K] extends Primitive ? K : T[K] extends Array<infer U> ? K | `${K}.${number}` | `${K}.${number}.${PathOf<U, Seen | T>}` : K | `${K}.${PathOf<T[K]
|
|
5
|
+
export type PathOf<T, Seen = never> = T extends Primitive ? never : T extends Seen ? never : [string] extends [keyof T & string] ? string : {
|
|
6
|
+
[K in keyof T & string]-?: T[K] extends Primitive ? K : NonNullable<T[K]> extends Array<infer U> ? K | `${K}.${number}` | `${K}.${number}.${PathOf<U, Seen | T>}` : K | `${K}.${PathOf<NonNullable<T[K]>, Seen | T>}`;
|
|
7
7
|
}[keyof T & string];
|
|
8
8
|
export type PathValue<T, P> = T extends undefined ? undefined : P extends `${infer K}.${infer Rest}` ? K extends keyof NonNullable<T> ? NonNullable<T>[K] extends Array<infer U> ? Rest extends `${number}.${infer R}` ? PathValue<U, R> : Rest extends `${number}` ? U : never : PathValue<NonNullable<T>[K], Rest> : never : P extends keyof NonNullable<T> ? NonNullable<T>[P] : never;
|
|
9
9
|
export type PathSetter<TState extends object, P extends PathOf<TState>> = (value: PathValue<TState, P> | ((prev: PathValue<TState, P>) => PathValue<TState, P>)) => void;
|
|
10
|
-
export type
|
|
11
|
-
|
|
12
|
-
};
|
|
13
|
-
type NumericIndex<I> = I extends `${infer N extends number}` ? N : I extends number ? I : never;
|
|
14
|
-
export type PathValues<TState extends object, Paths extends ReadonlyArray<PathOf<TState>>, DefaultValue = __NoDefault> = {
|
|
15
|
-
[I in keyof Paths]: Paths[I] extends PathOf<TState> ? [DefaultValue] extends [__NoDefault] ? PathValue<TState, Paths[I]> : DefaultValue extends readonly any[] ? NumericIndex<I> extends infer NI ? NI extends keyof DefaultValue ? DefaultValue[NI] extends undefined ? PathValue<TState, Paths[I]> | undefined : NonNullable<PathValue<TState, Paths[I]>> | DefaultValue[NI] : PathValue<TState, Paths[I]> : never : NonNullable<PathValue<TState, Paths[I]>> | DefaultValue : never;
|
|
10
|
+
export type PathValues<TState extends object, Paths extends ReadonlyArray<PathOf<TState>>> = {
|
|
11
|
+
[I in keyof Paths]: Paths[I] extends PathOf<TState> ? PathValue<TState, Paths[I]> : never;
|
|
16
12
|
};
|
|
17
13
|
export type PathSetters<TState extends object, Paths extends ReadonlyArray<PathOf<TState>>> = {
|
|
18
14
|
[I in keyof Paths]: Paths[I] extends PathOf<TState> ? PathSetter<TState, Paths[I]> : never;
|
|
@@ -54,17 +50,55 @@ export type StoreMiddlewareHandlers<T> = {
|
|
|
54
50
|
hydrate?: (api: StoreApi<T>) => void;
|
|
55
51
|
};
|
|
56
52
|
export type StoreMiddleware<T extends object> = (api: StoreApi<T>) => StoreMiddlewareHandlers<T> | void;
|
|
53
|
+
export type MiddlewareOptions<T extends object> = {
|
|
54
|
+
enabled?: boolean | ((state: T) => boolean);
|
|
55
|
+
};
|
|
57
56
|
export type Listener = (changedPath?: Path) => void;
|
|
58
57
|
export type SetState<T> = {
|
|
59
58
|
(path: undefined, value: T | ((prev: T) => T), canPropagate?: boolean): void;
|
|
60
59
|
<P extends PathOf<T>>(path: P, value: PathValue<T, P> | ((prev: PathValue<T, P>) => PathValue<T, P>), canPropagate?: boolean): void;
|
|
61
60
|
};
|
|
62
61
|
export type GetState<T> = () => T;
|
|
62
|
+
export type BoundStore<TBase> = {
|
|
63
|
+
getState: {
|
|
64
|
+
(): TBase | undefined;
|
|
65
|
+
<D>(defaultValue: D): NonNullable<TBase> | D;
|
|
66
|
+
};
|
|
67
|
+
getPath: TBase extends object ? {
|
|
68
|
+
<SubP extends PathOf<TBase>>(subPath: SubP): PathValue<TBase, SubP> | undefined;
|
|
69
|
+
<SubP extends PathOf<TBase>, D>(subPath: SubP, defaultValue: D): NonNullable<PathValue<TBase, SubP>> | D;
|
|
70
|
+
} : {
|
|
71
|
+
(): TBase | undefined;
|
|
72
|
+
<D>(defaultValue: D): NonNullable<TBase> | D;
|
|
73
|
+
};
|
|
74
|
+
setState: SetFromBaseFn<TBase>;
|
|
75
|
+
subscribe: (listener: Listener) => () => void;
|
|
76
|
+
subscribePath: TBase extends object ? <SubP extends PathOf<TBase>>(subPath: SubP, listener: Listener) => () => void : (listener: Listener) => () => void;
|
|
77
|
+
get: TBase extends object ? {
|
|
78
|
+
(): TBase | undefined;
|
|
79
|
+
<SubP extends PathOf<TBase>>(subPath: SubP): PathValue<TBase, SubP> | undefined;
|
|
80
|
+
} : () => TBase | undefined;
|
|
81
|
+
set: SetFromBaseFn<TBase>;
|
|
82
|
+
watch: TBase extends object ? {
|
|
83
|
+
(listener: Listener): () => void;
|
|
84
|
+
<SubP extends PathOf<TBase>>(subPath: SubP, listener: Listener): () => void;
|
|
85
|
+
} : (listener: Listener) => () => void;
|
|
86
|
+
};
|
|
63
87
|
export type StoreApi<T> = {
|
|
64
88
|
id?: string;
|
|
65
89
|
getState: GetState<T>;
|
|
66
90
|
getPath: <P extends PathOf<T>>(path: P) => PathValue<T, P> | undefined;
|
|
67
91
|
setState: SetState<T>;
|
|
92
|
+
get: {
|
|
93
|
+
(): T;
|
|
94
|
+
<P extends PathOf<T>>(path: P): PathValue<T, P> | undefined;
|
|
95
|
+
};
|
|
96
|
+
set: SetState<T>;
|
|
97
|
+
watch: {
|
|
98
|
+
(listener: Listener): () => void;
|
|
99
|
+
<P extends PathOf<T>>(path: P, listener: Listener): () => void;
|
|
100
|
+
};
|
|
101
|
+
withBase: <P extends PathOf<T>>(basePath: P) => BoundStore<NonNullable<PathValue<T, P>>>;
|
|
68
102
|
batch: <R>(fn: () => R) => R;
|
|
69
103
|
subscribe: (listener: Listener) => () => void;
|
|
70
104
|
subscribePath: <P extends PathOf<T>>(path: P, listener: Listener) => () => void;
|
|
@@ -80,6 +114,7 @@ export type StoreApiInternal<T> = StoreApi<T> & {
|
|
|
80
114
|
changeListeners: Subscribers<ChangeListener<T>>;
|
|
81
115
|
interceptors: WriteInterceptor<T>[];
|
|
82
116
|
errorHandlers: StoreErrorHandler<T>[];
|
|
117
|
+
invalidateListeners: Subscribers<() => void>;
|
|
83
118
|
getMergeCount?: () => number;
|
|
84
119
|
};
|
|
85
120
|
export type PathOrFn<TState extends object> = PathOf<TState> | ((state: TState) => PathOf<TState>);
|
|
@@ -91,15 +126,16 @@ export type PathOrFnSetter<TState extends object, Entry> = Entry extends PathOf<
|
|
|
91
126
|
export type PathOrFnSetters<TState extends object, Entries extends ReadonlyArray<PathOrFn<TState>>> = {
|
|
92
127
|
[I in keyof Entries]: PathOrFnSetter<TState, Entries[I]>;
|
|
93
128
|
};
|
|
94
|
-
export type MultiPathReturn<TState extends object, Paths extends ReadonlyArray<PathOf<TState
|
|
129
|
+
export type MultiPathReturn<TState extends object, Paths extends ReadonlyArray<PathOf<TState>>> = [
|
|
130
|
+
PathValues<TState, Paths>,
|
|
131
|
+
...PathSetters<TState, Paths>
|
|
132
|
+
];
|
|
95
133
|
export type UseStoreReturn<TState extends object, TArg> = TArg extends PathOf<TState> ? [PathValue<TState, TArg>, PathSetter<TState, TArg>] : TArg extends (state: TState) => unknown ? [unknown, (value: unknown) => void] : [TState, StoreApi<TState>['setState']];
|
|
96
134
|
export type UseStoreOptions<T, TState extends object = object> = StoreHookReactiveOptions<T, TState> & {
|
|
97
|
-
defaultValue?: NonNullable<T>;
|
|
98
135
|
transformer?: (value: T) => unknown;
|
|
99
136
|
};
|
|
100
|
-
export type UseStoreMultiOptions<TState extends object, Paths extends ReadonlyArray<PathOf<TState
|
|
137
|
+
export type UseStoreMultiOptions<TState extends object, Paths extends ReadonlyArray<PathOf<TState>>> = Omit<StoreHookReactiveOptions<never, TState>, 'equalityFn'> & {
|
|
101
138
|
equalityFn?: (a: PathValues<TState, Paths>, b: PathValues<TState, Paths>) => boolean;
|
|
102
|
-
defaultValue?: TDefaultValue;
|
|
103
139
|
transformer?: (values: PathValues<TState, Paths>) => unknown;
|
|
104
140
|
};
|
|
105
141
|
export type UseStoreSyncOptions<T, TState extends object = object> = StoreHookReactiveOptions<T, TState> & {
|
|
@@ -120,19 +156,11 @@ export type GetValueFromBaseFn<TBase> = TBase extends object ? {
|
|
|
120
156
|
<SubP extends PathOf<TBase>, D>(path: SubP, defaultValue: D): NonNullable<PathValue<TBase, SubP>> | D;
|
|
121
157
|
<D>(path: undefined, defaultValue: D): NonNullable<TBase> | D;
|
|
122
158
|
} : () => TBase;
|
|
123
|
-
export type GetValueFromBaseWithDefaultFn<TBase, D> = TBase extends object ? {
|
|
124
|
-
(): NonNullable<TBase> | D;
|
|
125
|
-
<SubP extends PathOf<NonNullable<TBase>>>(path: SubP): PathValue<NonNullable<TBase>, SubP>;
|
|
126
|
-
<SubP extends PathOf<NonNullable<TBase>>, D2>(path: SubP, defaultValue: D2): NonNullable<PathValue<NonNullable<TBase>, SubP>> | D2;
|
|
127
|
-
<D2>(path: undefined, defaultValue: D2): NonNullable<TBase> | D2;
|
|
128
|
-
} : () => NonNullable<TBase> | D;
|
|
129
159
|
type EntryGetter<TState extends object, Entry> = Entry extends PathOf<TState> ? GetValueFromBaseFn<PathValue<TState, Entry>> : Entry extends (state: TState) => infer R ? R extends object ? GetValueFromBaseFn<R> : () => R : never;
|
|
130
160
|
export type GetterTuple<TState extends object, Entries extends ReadonlyArray<PathOf<TState> | ((state: TState) => unknown)>> = {
|
|
131
161
|
[K in keyof Entries]: EntryGetter<TState, Entries[K]>;
|
|
132
162
|
};
|
|
133
|
-
export type UseStoreGetterOptions<TState extends object = object
|
|
134
|
-
defaultValue?: D;
|
|
135
|
-
};
|
|
163
|
+
export type UseStoreGetterOptions<TState extends object = object> = StoreHookBaseOptions<TState>;
|
|
136
164
|
export type SetStateFn<TState extends object> = {
|
|
137
165
|
(path: undefined, value: TState | ((prev: TState) => TState)): void;
|
|
138
166
|
<P extends PathOf<TState>>(path: P, value: PathValue<TState, P> | ((prev: PathValue<TState, P>) => PathValue<TState, P>)): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plitzi/nexus",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -47,6 +47,14 @@
|
|
|
47
47
|
"types": "./dist/StoreProvider.d.ts",
|
|
48
48
|
"import": "./dist/StoreProvider.mjs"
|
|
49
49
|
},
|
|
50
|
+
"./advanced": {
|
|
51
|
+
"types": "./dist/advanced/index.d.ts",
|
|
52
|
+
"import": "./dist/advanced/index.mjs"
|
|
53
|
+
},
|
|
54
|
+
"./advanced/index": {
|
|
55
|
+
"types": "./dist/advanced/index.d.ts",
|
|
56
|
+
"import": "./dist/advanced/index.mjs"
|
|
57
|
+
},
|
|
50
58
|
"./async": {
|
|
51
59
|
"types": "./dist/async/index.d.ts",
|
|
52
60
|
"import": "./dist/async/index.mjs"
|
|
@@ -159,6 +167,10 @@
|
|
|
159
167
|
"types": "./dist/entities/createEntityAdapter.d.ts",
|
|
160
168
|
"import": "./dist/entities/createEntityAdapter.mjs"
|
|
161
169
|
},
|
|
170
|
+
"./entities/createEntityStore": {
|
|
171
|
+
"types": "./dist/entities/createEntityStore.d.ts",
|
|
172
|
+
"import": "./dist/entities/createEntityStore.mjs"
|
|
173
|
+
},
|
|
162
174
|
"./entities/index": {
|
|
163
175
|
"types": "./dist/entities/index.d.ts",
|
|
164
176
|
"import": "./dist/entities/index.mjs"
|
|
@@ -223,6 +235,10 @@
|
|
|
223
235
|
"types": "./dist/middleware/index.d.ts",
|
|
224
236
|
"import": "./dist/middleware/index.mjs"
|
|
225
237
|
},
|
|
238
|
+
"./middleware/isDisabled": {
|
|
239
|
+
"types": "./dist/middleware/isDisabled.d.ts",
|
|
240
|
+
"import": "./dist/middleware/isDisabled.mjs"
|
|
241
|
+
},
|
|
226
242
|
"./middleware/loggerMiddleware": {
|
|
227
243
|
"types": "./dist/middleware/loggerMiddleware.d.ts",
|
|
228
244
|
"import": "./dist/middleware/loggerMiddleware.mjs"
|