@plitzi/nexus 0.32.0 → 0.32.2
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 +39 -0
- package/README.md +211 -27
- package/dist/advanced/index.d.ts +5 -0
- package/dist/advanced/index.mjs +10 -0
- package/dist/async/index.d.ts +0 -2
- package/dist/async/index.mjs +1 -3
- package/dist/createStore/createStore.d.ts +3 -43
- package/dist/createStore/createStore.mjs +85 -100
- package/dist/createStore/helpers/PathTrie.mjs +14 -14
- package/dist/createStore/helpers/createChainReads.d.ts +1 -1
- package/dist/createStore/helpers/createChainReads.mjs +22 -13
- package/dist/createStore/helpers/createSetState.mjs +11 -9
- package/dist/createStore/helpers/forwardParentChanges.mjs +16 -13
- package/dist/createStore/index.mjs +3 -3
- package/dist/derived/index.d.ts +0 -1
- package/dist/derived/index.mjs +1 -2
- package/dist/entities/createEntityStore.d.ts +0 -3
- package/dist/entities/createEntityStore.mjs +71 -78
- package/dist/env.d.ts +4 -0
- package/dist/env.mjs +3 -0
- package/dist/history/index.d.ts +0 -2
- package/dist/history/index.mjs +1 -2
- package/dist/index.d.ts +23 -15
- package/dist/index.mjs +14 -22
- package/dist/middleware/historyMiddleware.mjs +26 -26
- package/dist/middleware/persistMiddleware.mjs +11 -11
- package/dist/middleware/recorderMiddleware.d.ts +21 -0
- package/dist/middleware/recorderMiddleware.mjs +33 -0
- package/dist/{StoreContext.d.ts → react/StoreContext.d.ts} +1 -1
- package/dist/{StoreContext.mjs → react/StoreContext.mjs} +1 -1
- package/dist/{StoreProvider.d.ts → react/StoreProvider.d.ts} +4 -2
- package/dist/react/StoreProvider.mjs +62 -0
- package/dist/react/createStoreHook.d.ts +44 -0
- package/dist/react/createStoreHook.mjs +27 -0
- package/dist/{createStore → react}/hooks/shared.mjs +2 -2
- package/dist/{async → react}/hooks/useAsync.d.ts +1 -1
- package/dist/{async → react}/hooks/useAsync.mjs +1 -1
- package/dist/{async → react}/hooks/useAsyncValue.d.ts +1 -1
- package/dist/{async → react}/hooks/useAsyncValue.mjs +1 -1
- package/dist/{derived → react}/hooks/useDerived.d.ts +1 -1
- package/dist/{derived → react}/hooks/useDerived.mjs +1 -1
- package/dist/react/hooks/useEntity.d.ts +10 -0
- package/dist/react/hooks/useEntity.mjs +23 -0
- package/dist/{createStore → react}/hooks/useStore.mjs +2 -2
- package/dist/{createStore → react}/hooks/useStoreById.mjs +2 -2
- package/dist/{createStore → react}/hooks/useStoreGetter.mjs +1 -1
- package/dist/react/hooks/useStoreHistory.mjs +29 -0
- package/dist/{createStore → react}/hooks/useStoreSetter.mjs +1 -1
- package/dist/{createStore → react}/hooks/useStoreSync.mjs +2 -2
- package/dist/react/index.d.ts +17 -0
- package/dist/react/index.mjs +16 -0
- package/dist/{helpers → react}/useIsomorphicLayoutEffect.mjs +1 -1
- package/dist/types/StoreTypes.d.ts +21 -0
- package/dist/vue/index.d.ts +8 -0
- package/dist/vue/index.mjs +7 -0
- package/dist/vue/injection.d.ts +3 -0
- package/dist/vue/injection.mjs +13 -0
- package/dist/vue/useAsync.d.ts +3 -0
- package/dist/vue/useAsync.mjs +10 -0
- package/dist/vue/useDerived.d.ts +3 -0
- package/dist/vue/useDerived.mjs +10 -0
- package/dist/vue/useEntity.d.ts +11 -0
- package/dist/vue/useEntity.mjs +29 -0
- package/dist/vue/useStore.d.ts +13 -0
- package/dist/vue/useStore.mjs +31 -0
- package/dist/vue/useStoreHistory.d.ts +12 -0
- package/dist/vue/useStoreHistory.mjs +33 -0
- package/logo.svg +77 -22
- package/package.json +133 -56
- package/dist/StoreProvider.mjs +0 -57
- package/dist/history/hooks/useStoreHistory.mjs +0 -24
- /package/dist/{createStore → react}/hooks/shared.d.ts +0 -0
- /package/dist/{createStore → react}/hooks/useStore.d.ts +0 -0
- /package/dist/{createStore → react}/hooks/useStoreById.d.ts +0 -0
- /package/dist/{createStore → react}/hooks/useStoreGetter.d.ts +0 -0
- /package/dist/{history → react}/hooks/useStoreHistory.d.ts +0 -0
- /package/dist/{createStore → react}/hooks/useStoreSetter.d.ts +0 -0
- /package/dist/{createStore → react}/hooks/useStoreSync.d.ts +0 -0
- /package/dist/{helpers → react}/useIsomorphicLayoutEffect.d.ts +0 -0
|
@@ -1,122 +1,107 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import "./helpers/
|
|
7
|
-
import
|
|
8
|
-
import o from "./hooks/useStoreGetter.mjs";
|
|
9
|
-
import s from "./hooks/useStoreSetter.mjs";
|
|
10
|
-
import c from "./hooks/useStoreSync.mjs";
|
|
1
|
+
import e from "./helpers/Subscribers.mjs";
|
|
2
|
+
import { isDev as t, isTest as n } from "../env.mjs";
|
|
3
|
+
import { createChainReads as r } from "./helpers/createChainReads.mjs";
|
|
4
|
+
import { createSetState as i } from "./helpers/createSetState.mjs";
|
|
5
|
+
import { forwardParentChanges as a } from "./helpers/forwardParentChanges.mjs";
|
|
6
|
+
import o from "./helpers/PathTrie.mjs";
|
|
7
|
+
import { createScopeClaims as s } from "./helpers/scopeCollisions.mjs";
|
|
11
8
|
//#region src/createStore/createStore.ts
|
|
12
|
-
var
|
|
13
|
-
function
|
|
14
|
-
let
|
|
15
|
-
|
|
16
|
-
},
|
|
17
|
-
|
|
18
|
-
let y = (e, t, n) => {
|
|
19
|
-
if (g.length === 0) throw e;
|
|
9
|
+
var c = 0;
|
|
10
|
+
function l(l, u) {
|
|
11
|
+
let d = {}, f, p = new e(), m = new e(), h = new o(), g = new e(), _ = () => {
|
|
12
|
+
g.length !== 0 && g.forEach((e) => e());
|
|
13
|
+
}, v = [], y = [], b = [], x = u?.parent, S = ++c, C = (e, t, n) => {
|
|
14
|
+
if (y.length === 0) throw e;
|
|
20
15
|
let r = {
|
|
21
16
|
error: e,
|
|
22
17
|
phase: t,
|
|
23
18
|
path: n
|
|
24
19
|
};
|
|
25
|
-
for (let e = 0, t =
|
|
26
|
-
},
|
|
27
|
-
|
|
28
|
-
},
|
|
29
|
-
|
|
30
|
-
let { setState:
|
|
31
|
-
getOwnState:
|
|
32
|
-
getOwnSnapshot:
|
|
20
|
+
for (let e = 0, t = y.length; e < t; e++) y[e](r);
|
|
21
|
+
}, w = () => d, T = () => f ??= { ...d }, { getState: E, getPath: D, invalidate: O, resetCache: k, getMergeCount: A } = r(w, T, x, u?.exclusive), j = () => {
|
|
22
|
+
O(), _();
|
|
23
|
+
}, M, N, P = !1;
|
|
24
|
+
x && (k(), N = x.subscribeInvalidate?.(j));
|
|
25
|
+
let { setState: F, batch: I } = i({
|
|
26
|
+
getOwnState: w,
|
|
27
|
+
getOwnSnapshot: T,
|
|
33
28
|
setOwnState: (e) => {
|
|
34
|
-
|
|
29
|
+
d = e, f = void 0, O();
|
|
35
30
|
},
|
|
36
31
|
mutateOwnKey: (e, t) => {
|
|
37
|
-
|
|
32
|
+
d[e] = t, O(), f = void 0;
|
|
38
33
|
},
|
|
39
|
-
parent:
|
|
40
|
-
listeners:
|
|
41
|
-
pathListeners:
|
|
42
|
-
changeListeners:
|
|
43
|
-
interceptors:
|
|
44
|
-
reportError:
|
|
45
|
-
invalidateDescendants:
|
|
46
|
-
onDelegateToParent: void 0
|
|
47
|
-
}),
|
|
48
|
-
|
|
49
|
-
},
|
|
50
|
-
|
|
51
|
-
},
|
|
52
|
-
|
|
53
|
-
},
|
|
54
|
-
e(),
|
|
55
|
-
}),
|
|
56
|
-
let t =
|
|
57
|
-
return
|
|
34
|
+
parent: x,
|
|
35
|
+
listeners: p,
|
|
36
|
+
pathListeners: h,
|
|
37
|
+
changeListeners: m,
|
|
38
|
+
interceptors: v,
|
|
39
|
+
reportError: C,
|
|
40
|
+
invalidateDescendants: _,
|
|
41
|
+
onDelegateToParent: t && x ? (e) => x.scopeClaims?.claimDelegatedWrite(e, S) : void 0
|
|
42
|
+
}), L = () => p.length > 0 || h.size > 0 || m.length > 0, R = () => {
|
|
43
|
+
M || !x || (O(), k(), M = a(x, p, h, m, E, C, O), m.length > 0 && M.seedBaseline());
|
|
44
|
+
}, z = () => {
|
|
45
|
+
M && (M.unsubscribe(), M = void 0, k());
|
|
46
|
+
}, B = () => {
|
|
47
|
+
x && (!P && L() ? R() : z());
|
|
48
|
+
}, V = (e) => (B(), () => {
|
|
49
|
+
e(), B();
|
|
50
|
+
}), H = (e) => V(p.add(e)), U = (e, t) => V(h.add(e, t)), W = (e) => {
|
|
51
|
+
let t = V(m.add(e));
|
|
52
|
+
return M?.seedBaseline(), t;
|
|
58
53
|
};
|
|
59
|
-
|
|
60
|
-
let
|
|
61
|
-
id:
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
54
|
+
d = typeof l == "function" ? l(F, E) : l;
|
|
55
|
+
let G = {
|
|
56
|
+
id: u?.id,
|
|
57
|
+
scopePath: u?.scopePath,
|
|
58
|
+
getState: E,
|
|
59
|
+
getPath: D,
|
|
60
|
+
setState: F,
|
|
61
|
+
get: ((e) => e === void 0 ? E() : D(e)),
|
|
62
|
+
set: F,
|
|
63
|
+
watch: ((e, t) => typeof e == "function" ? H(e) : U(e, t)),
|
|
64
|
+
withBase: (e) => {
|
|
65
|
+
let t = (t, n) => F(t === void 0 ? e : `${e}.${t}`, n);
|
|
66
|
+
return {
|
|
67
|
+
getState: (t) => {
|
|
68
|
+
let n = D(e);
|
|
69
|
+
return n === void 0 && t !== void 0 ? t : n;
|
|
70
|
+
},
|
|
71
|
+
getPath: (t, n) => {
|
|
72
|
+
let r = D(`${e}.${t}`);
|
|
73
|
+
return r === void 0 && n !== void 0 ? n : r;
|
|
74
|
+
},
|
|
75
|
+
setState: t,
|
|
76
|
+
subscribe: (t) => U(e, t),
|
|
77
|
+
subscribePath: (t, n) => U(`${e}.${t}`, n),
|
|
78
|
+
get: (t) => D(t === void 0 ? e : `${e}.${t}`),
|
|
79
|
+
set: t,
|
|
80
|
+
watch: (t, n) => typeof t == "function" ? U(e, t) : U(`${e}.${t}`, n)
|
|
81
|
+
};
|
|
82
|
+
},
|
|
83
|
+
batch: I,
|
|
84
|
+
subscribe: H,
|
|
85
|
+
subscribePath: U,
|
|
86
|
+
subscribeChange: W,
|
|
82
87
|
destroy: () => {
|
|
83
|
-
|
|
88
|
+
P = !0, z(), p.clear(), h.clear(), m.clear(), g.clear(), N?.();
|
|
84
89
|
},
|
|
85
90
|
reconnect: () => {
|
|
86
|
-
|
|
91
|
+
P = !1, x && (N?.(), N = x.subscribeInvalidate?.(j)), B();
|
|
87
92
|
},
|
|
88
|
-
subscribeInvalidate: (e) =>
|
|
93
|
+
subscribeInvalidate: (e) => g.add(e),
|
|
89
94
|
hydrate: () => {
|
|
90
|
-
for (let e of
|
|
95
|
+
for (let e of b) e();
|
|
91
96
|
}
|
|
92
97
|
};
|
|
93
|
-
if (
|
|
94
|
-
let t = e(
|
|
95
|
-
t?.beforeChange &&
|
|
98
|
+
if (u?.middlewares) for (let e of u.middlewares) {
|
|
99
|
+
let t = e(G);
|
|
100
|
+
t?.beforeChange && v.push(t.beforeChange), t?.onChange && W(t.onChange), t?.onError && y.push(t.onError);
|
|
96
101
|
let n = t?.hydrate;
|
|
97
|
-
n && (
|
|
102
|
+
n && (u.deferHydrate ? b.push(() => n(G)) : n(G));
|
|
98
103
|
}
|
|
99
|
-
return
|
|
104
|
+
return t && (G.scopeClaims = s()), n && (G.listeners = p, G.pathListeners = h, G.changeListeners = m, G.interceptors = v, G.errorHandlers = y, G.invalidateListeners = g, G.getMergeCount = A), G;
|
|
100
105
|
}
|
|
101
|
-
var d = () => {
|
|
102
|
-
function e(e, t) {
|
|
103
|
-
return a(e, t);
|
|
104
|
-
}
|
|
105
|
-
function t(e, t, n) {
|
|
106
|
-
c(e, t, n);
|
|
107
|
-
}
|
|
108
|
-
function n(e, t) {
|
|
109
|
-
return o(e, t);
|
|
110
|
-
}
|
|
111
|
-
function r(e, t) {
|
|
112
|
-
return s(e, t);
|
|
113
|
-
}
|
|
114
|
-
return {
|
|
115
|
-
useStore: e,
|
|
116
|
-
useStoreSync: t,
|
|
117
|
-
useStoreGetter: n,
|
|
118
|
-
useStoreSetter: r
|
|
119
|
-
};
|
|
120
|
-
};
|
|
121
106
|
//#endregion
|
|
122
|
-
export {
|
|
107
|
+
export { l as default };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import e from "
|
|
2
|
-
import t from "
|
|
1
|
+
import e from "./Subscribers.mjs";
|
|
2
|
+
import t from "../../helpers/parsePath.mjs";
|
|
3
3
|
//#region src/createStore/helpers/PathTrie.ts
|
|
4
4
|
var n = class {
|
|
5
5
|
subscribers = null;
|
|
@@ -10,16 +10,16 @@ var n = class {
|
|
|
10
10
|
root = new n();
|
|
11
11
|
size = 0;
|
|
12
12
|
add(r, i) {
|
|
13
|
-
let a =
|
|
13
|
+
let a = t(r), o = this.direct.get(r);
|
|
14
14
|
if (!o) {
|
|
15
|
-
o = new
|
|
16
|
-
let
|
|
17
|
-
for (let
|
|
18
|
-
|
|
19
|
-
let r =
|
|
20
|
-
r || (r = new n(),
|
|
15
|
+
o = new e(), this.direct.set(r, o);
|
|
16
|
+
let t = this.root;
|
|
17
|
+
for (let e of a) {
|
|
18
|
+
t.children ||= /* @__PURE__ */ new Map();
|
|
19
|
+
let r = t.children.get(e);
|
|
20
|
+
r || (r = new n(), t.children.set(e, r)), t = r;
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
t.subscribers = o, this.size++;
|
|
23
23
|
let i = "";
|
|
24
24
|
for (let e = 0; e < a.length - 1; e++) {
|
|
25
25
|
i = i ? `${i}.${a[e]}` : a[e];
|
|
@@ -59,16 +59,16 @@ var n = class {
|
|
|
59
59
|
getDescendants(e) {
|
|
60
60
|
return this.descendants.get(e);
|
|
61
61
|
}
|
|
62
|
-
forEachAffected(
|
|
62
|
+
forEachAffected(e, n, r) {
|
|
63
63
|
let i = (e) => {
|
|
64
64
|
e && e.forEach(n, r);
|
|
65
65
|
};
|
|
66
|
-
if (typeof
|
|
66
|
+
if (typeof e != "string") {
|
|
67
67
|
this.direct.forEach(i);
|
|
68
68
|
return;
|
|
69
69
|
}
|
|
70
|
-
let a = e
|
|
71
|
-
this.walkAncestors(a, i), this.descendants.get(
|
|
70
|
+
let a = t(e);
|
|
71
|
+
this.walkAncestors(a, i), this.descendants.get(e)?.forEach((e) => i(this.direct.get(e)));
|
|
72
72
|
}
|
|
73
73
|
clear() {
|
|
74
74
|
this.direct.clear(), this.descendants.clear(), this.root.children = null, this.root.subscribers = null, this.size = 0;
|
|
@@ -7,4 +7,4 @@ export type ChainReads<TState extends object> = {
|
|
|
7
7
|
resetCache: () => void;
|
|
8
8
|
getMergeCount: () => number;
|
|
9
9
|
};
|
|
10
|
-
export declare function createChainReads<TState extends object>(getOwnState: () => TState, getOwnSnapshot: () => TState, parent: StoreApi<TState> | undefined): ChainReads<TState>;
|
|
10
|
+
export declare function createChainReads<TState extends object>(getOwnState: () => TState, getOwnSnapshot: () => TState, parent: StoreApi<TState> | undefined, exclusive?: ReadonlyArray<string>): ChainReads<TState>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { deepMerge as e, isPlainObject as t } from "./deepMerge.mjs";
|
|
2
2
|
import n from "../../helpers/getByPath.mjs";
|
|
3
3
|
//#region src/createStore/helpers/createChainReads.ts
|
|
4
|
-
function r(r, i, a) {
|
|
4
|
+
function r(r, i, a, o) {
|
|
5
5
|
if (!a) return {
|
|
6
6
|
getState: i,
|
|
7
7
|
getPath: (e) => n(r(), e),
|
|
@@ -9,27 +9,36 @@ function r(r, i, a) {
|
|
|
9
9
|
resetCache: () => {},
|
|
10
10
|
getMergeCount: () => 0
|
|
11
11
|
};
|
|
12
|
-
let
|
|
12
|
+
let s = a, c = o && o.length > 0 ? new Set(o) : void 0, l = !0, u = !1, d, f = 0, p = /* @__PURE__ */ new Map(), m = () => {
|
|
13
|
+
f++;
|
|
14
|
+
let t = i(), n = e(s.getState(), t);
|
|
15
|
+
if (c) for (let e of c) t[e] !== void 0 && (n[e] = t[e]);
|
|
16
|
+
return n;
|
|
17
|
+
}, h = () => ((l || d === void 0) && (d = m(), l = !1), d), g = (e) => {
|
|
18
|
+
if (c) {
|
|
19
|
+
let t = e.indexOf("."), i = t === -1 ? e : e.slice(0, t);
|
|
20
|
+
if (c.has(i) && r()[i] !== void 0) return n(r(), e);
|
|
21
|
+
}
|
|
13
22
|
let i = n(r(), e);
|
|
14
|
-
if (i === void 0) return
|
|
15
|
-
let a =
|
|
16
|
-
return a === void 0 || !t(i) || !t(a) ? i : n(
|
|
23
|
+
if (i === void 0) return s.getPath(e);
|
|
24
|
+
let a = s.getPath(e);
|
|
25
|
+
return a === void 0 || !t(i) || !t(a) ? i : n(h(), e);
|
|
17
26
|
};
|
|
18
27
|
return {
|
|
19
|
-
getState:
|
|
28
|
+
getState: h,
|
|
20
29
|
getPath: (e) => {
|
|
21
|
-
if (
|
|
22
|
-
else if (
|
|
23
|
-
let t =
|
|
24
|
-
return
|
|
30
|
+
if (u) p.clear(), u = !1;
|
|
31
|
+
else if (p.has(e)) return p.get(e);
|
|
32
|
+
let t = g(e);
|
|
33
|
+
return p.set(e, t), t;
|
|
25
34
|
},
|
|
26
35
|
invalidate: () => {
|
|
27
|
-
|
|
36
|
+
l = !0, u = !0;
|
|
28
37
|
},
|
|
29
38
|
resetCache: () => {
|
|
30
|
-
|
|
39
|
+
p.clear(), d = void 0, l = !0, u = !1;
|
|
31
40
|
},
|
|
32
|
-
getMergeCount: () =>
|
|
41
|
+
getMergeCount: () => f
|
|
33
42
|
};
|
|
34
43
|
}
|
|
35
44
|
//#endregion
|
|
@@ -65,15 +65,17 @@ function u(u) {
|
|
|
65
65
|
t !== o && b(t, "notify", void 0);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
}, O = (e,
|
|
69
|
-
let
|
|
68
|
+
}, O = (e, n, r) => {
|
|
69
|
+
let i = {
|
|
70
70
|
path: e,
|
|
71
|
-
prev:
|
|
72
|
-
next:
|
|
73
|
-
|
|
71
|
+
prev: n,
|
|
72
|
+
next: r,
|
|
73
|
+
prevValue: e === void 0 ? n : t(n, e),
|
|
74
|
+
nextValue: e === void 0 ? r : t(r, e)
|
|
75
|
+
}, { items: a } = v;
|
|
74
76
|
v.begin();
|
|
75
77
|
try {
|
|
76
|
-
let t = s(
|
|
78
|
+
let t = s(a, i, a.length);
|
|
77
79
|
t !== o && b(t, "onChange", e);
|
|
78
80
|
} finally {
|
|
79
81
|
v.end();
|
|
@@ -139,9 +141,9 @@ function u(u) {
|
|
|
139
141
|
}
|
|
140
142
|
let b = e(i), w;
|
|
141
143
|
if (y.length > 0) {
|
|
142
|
-
let e = t(u, i), n =
|
|
143
|
-
if (
|
|
144
|
-
w = r(u, i, b,
|
|
144
|
+
let e = t(u, i), n = typeof o == "function" ? o(e) : o, s = C(i, n, e);
|
|
145
|
+
if (s === a) return;
|
|
146
|
+
w = r(u, i, b, s, !1);
|
|
145
147
|
} else w = r(u, i, b, o, typeof o == "function");
|
|
146
148
|
if (w === n) return;
|
|
147
149
|
let T = w;
|
|
@@ -1,23 +1,26 @@
|
|
|
1
|
+
import e from "../../helpers/getByPath.mjs";
|
|
1
2
|
//#region src/createStore/helpers/forwardParentChanges.ts
|
|
2
|
-
function
|
|
3
|
-
let
|
|
3
|
+
function t(t, n, r, i, a, o, s) {
|
|
4
|
+
let c;
|
|
4
5
|
return {
|
|
5
|
-
unsubscribe:
|
|
6
|
-
|
|
7
|
-
let
|
|
8
|
-
if (
|
|
9
|
-
let
|
|
10
|
-
path:
|
|
11
|
-
prev:
|
|
12
|
-
next:
|
|
6
|
+
unsubscribe: t.subscribe((t) => {
|
|
7
|
+
s();
|
|
8
|
+
let l = t;
|
|
9
|
+
if (n.forEach((e) => e(t), (e) => o(e, "notify", l)), r.size > 0 && r.forEachAffected(t, (e) => e(t), (e) => o(e, "notify", l)), i.length > 0) {
|
|
10
|
+
let t = a(), n = c ?? t, r = {
|
|
11
|
+
path: l,
|
|
12
|
+
prev: n,
|
|
13
|
+
next: t,
|
|
14
|
+
prevValue: l === void 0 ? n : e(n, l),
|
|
15
|
+
nextValue: l === void 0 ? t : e(t, l)
|
|
13
16
|
};
|
|
14
|
-
|
|
17
|
+
c = t, i.forEach((e) => e(r), (e) => o(e, "onChange", l));
|
|
15
18
|
}
|
|
16
19
|
}),
|
|
17
20
|
seedBaseline: () => {
|
|
18
|
-
|
|
21
|
+
c ??= a();
|
|
19
22
|
}
|
|
20
23
|
};
|
|
21
24
|
}
|
|
22
25
|
//#endregion
|
|
23
|
-
export {
|
|
26
|
+
export { t as forwardParentChanges };
|
package/dist/derived/index.d.ts
CHANGED
package/dist/derived/index.mjs
CHANGED
|
@@ -30,9 +30,6 @@ export type EntityStore<T> = {
|
|
|
30
30
|
subscribeOne: (id: EntityId, listener: EntityChangeListener) => () => void;
|
|
31
31
|
subscribeIds: (listener: EntityChangeListener) => () => void;
|
|
32
32
|
subscribeAll: (listener: EntityChangeListener) => () => void;
|
|
33
|
-
useOne: (id: EntityId) => T | undefined;
|
|
34
|
-
useIds: () => string[];
|
|
35
|
-
useAll: () => T[];
|
|
36
33
|
destroy: () => void;
|
|
37
34
|
};
|
|
38
35
|
export declare function createEntityStore<T>(initialEntities?: readonly T[], options?: EntityStoreOptions<T>): EntityStore<T>;
|
|
@@ -1,102 +1,95 @@
|
|
|
1
1
|
import e from "../createStore/helpers/Subscribers.mjs";
|
|
2
|
-
import { useCallback as t, useSyncExternalStore as n } from "react";
|
|
3
2
|
//#region src/entities/createEntityStore.ts
|
|
4
|
-
function
|
|
5
|
-
let
|
|
6
|
-
for (let e of
|
|
7
|
-
let
|
|
3
|
+
function t(t = [], n = {}) {
|
|
4
|
+
let r = n.selectId ?? ((e) => e.id), i = n.sortComparer, a = (e) => String(r(e)), o = /* @__PURE__ */ new Map();
|
|
5
|
+
for (let e of t) o.set(a(e), e);
|
|
6
|
+
let s = /* @__PURE__ */ new Map(), c = new e(), l = new e(), u, d, f = 0, p = /* @__PURE__ */ new Set(), m = !1, h = !1, g = (e) => {
|
|
8
7
|
e && e.length > 0 && e.forEach((e) => e());
|
|
9
|
-
},
|
|
10
|
-
if (t && (
|
|
11
|
-
|
|
8
|
+
}, _ = (e, t) => {
|
|
9
|
+
if (t && (u = void 0), d = void 0, f > 0) {
|
|
10
|
+
p.add(e), m ||= t, h = !0;
|
|
12
11
|
return;
|
|
13
12
|
}
|
|
14
|
-
|
|
15
|
-
},
|
|
16
|
-
let e = [...
|
|
17
|
-
|
|
18
|
-
for (let t of e)
|
|
19
|
-
t &&
|
|
20
|
-
},
|
|
21
|
-
|
|
13
|
+
g(s.get(e)), t && g(c), g(l);
|
|
14
|
+
}, v = () => {
|
|
15
|
+
let e = [...p], t = m, n = h;
|
|
16
|
+
p.clear(), m = !1, h = !1;
|
|
17
|
+
for (let t of e) g(s.get(t));
|
|
18
|
+
t && g(c), n && g(l);
|
|
19
|
+
}, y = (e) => {
|
|
20
|
+
f++;
|
|
22
21
|
try {
|
|
23
22
|
e();
|
|
24
23
|
} finally {
|
|
25
|
-
|
|
24
|
+
f--, f === 0 && h && v();
|
|
26
25
|
}
|
|
27
|
-
},
|
|
28
|
-
let r =
|
|
29
|
-
if (t && !
|
|
30
|
-
let
|
|
26
|
+
}, b = (e, t, n) => {
|
|
27
|
+
let r = a(e), i = o.get(r), s = i === void 0;
|
|
28
|
+
if (t && !s) return;
|
|
29
|
+
let c = n && !s ? {
|
|
31
30
|
...i,
|
|
32
31
|
...e
|
|
33
32
|
} : e;
|
|
34
|
-
|
|
33
|
+
c !== i && (o.set(r, c), _(r, s));
|
|
34
|
+
}, x = (e) => {
|
|
35
|
+
b(e, !1, !1);
|
|
36
|
+
}, S = (e) => {
|
|
37
|
+
b(e, !0, !1);
|
|
35
38
|
}, C = (e) => {
|
|
36
|
-
|
|
37
|
-
}, w = (e) => {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
S(e, !1, !0);
|
|
41
|
-
}, E = (e, t) => {
|
|
42
|
-
let n = String(e), r = c.get(n);
|
|
43
|
-
r !== void 0 && (c.set(n, {
|
|
39
|
+
b(e, !1, !0);
|
|
40
|
+
}, w = (e, t) => {
|
|
41
|
+
let n = String(e), r = o.get(n);
|
|
42
|
+
r !== void 0 && (o.set(n, {
|
|
44
43
|
...r,
|
|
45
44
|
...t
|
|
46
|
-
}),
|
|
47
|
-
},
|
|
45
|
+
}), _(n, !1));
|
|
46
|
+
}, T = (e) => {
|
|
48
47
|
let t = String(e);
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
if (p === void 0) {
|
|
52
|
-
let e = [...c.values()];
|
|
53
|
-
p = o ? e.sort(o) : e;
|
|
54
|
-
}
|
|
55
|
-
return p;
|
|
56
|
-
}, j = (t, n) => {
|
|
57
|
-
let r = String(t), i = l.get(r);
|
|
58
|
-
i || (i = new e(), l.set(r, i));
|
|
59
|
-
let a = i, o = a.add(n);
|
|
60
|
-
return () => {
|
|
61
|
-
o(), a.length === 0 && l.get(r) === a && l.delete(r);
|
|
62
|
-
};
|
|
63
|
-
}, M = (e) => u.add(e), N = (e) => d.add(e);
|
|
48
|
+
o.has(t) && (o.delete(t), _(t, !0));
|
|
49
|
+
};
|
|
64
50
|
return {
|
|
65
|
-
selectId:
|
|
66
|
-
getOne:
|
|
67
|
-
getIds:
|
|
68
|
-
getAll:
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
51
|
+
selectId: r,
|
|
52
|
+
getOne: (e) => o.get(String(e)),
|
|
53
|
+
getIds: () => u ??= [...o.keys()],
|
|
54
|
+
getAll: () => {
|
|
55
|
+
if (d === void 0) {
|
|
56
|
+
let e = [...o.values()];
|
|
57
|
+
d = i ? e.sort(i) : e;
|
|
58
|
+
}
|
|
59
|
+
return d;
|
|
60
|
+
},
|
|
61
|
+
has: (e) => o.has(String(e)),
|
|
62
|
+
size: () => o.size,
|
|
63
|
+
setOne: x,
|
|
64
|
+
setMany: (e) => y(() => e.forEach(x)),
|
|
65
|
+
setAll: (e) => y(() => {
|
|
66
|
+
for (let e of [...o.keys()]) T(e);
|
|
67
|
+
e.forEach(x);
|
|
76
68
|
}),
|
|
77
|
-
addOne:
|
|
78
|
-
addMany: (e) =>
|
|
79
|
-
upsertOne:
|
|
80
|
-
upsertMany: (e) =>
|
|
81
|
-
updateOne:
|
|
82
|
-
updateMany: (e) =>
|
|
83
|
-
removeOne:
|
|
84
|
-
removeMany: (e) =>
|
|
85
|
-
removeAll: () =>
|
|
86
|
-
batch:
|
|
87
|
-
subscribeOne:
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
69
|
+
addOne: S,
|
|
70
|
+
addMany: (e) => y(() => e.forEach(S)),
|
|
71
|
+
upsertOne: C,
|
|
72
|
+
upsertMany: (e) => y(() => e.forEach(C)),
|
|
73
|
+
updateOne: w,
|
|
74
|
+
updateMany: (e) => y(() => e.forEach(({ id: e, changes: t }) => w(e, t))),
|
|
75
|
+
removeOne: T,
|
|
76
|
+
removeMany: (e) => y(() => e.forEach(T)),
|
|
77
|
+
removeAll: () => y(() => [...o.keys()].forEach(T)),
|
|
78
|
+
batch: y,
|
|
79
|
+
subscribeOne: (t, n) => {
|
|
80
|
+
let r = String(t), i = s.get(r);
|
|
81
|
+
i || (i = new e(), s.set(r, i));
|
|
82
|
+
let a = i, o = a.add(n);
|
|
83
|
+
return () => {
|
|
84
|
+
o(), a.length === 0 && s.get(r) === a && s.delete(r);
|
|
85
|
+
};
|
|
93
86
|
},
|
|
94
|
-
|
|
95
|
-
|
|
87
|
+
subscribeIds: (e) => c.add(e),
|
|
88
|
+
subscribeAll: (e) => l.add(e),
|
|
96
89
|
destroy: () => {
|
|
97
|
-
|
|
90
|
+
o.clear(), s.clear(), c.clear(), l.clear(), u = void 0, d = void 0;
|
|
98
91
|
}
|
|
99
92
|
};
|
|
100
93
|
}
|
|
101
94
|
//#endregion
|
|
102
|
-
export {
|
|
95
|
+
export { t as createEntityStore };
|
package/dist/env.d.ts
ADDED
package/dist/env.mjs
ADDED
package/dist/history/index.d.ts
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
1
|
export { getStoreHistory } from '../middleware/historyMiddleware';
|
|
2
|
-
export { useStoreHistory } from './hooks/useStoreHistory';
|
|
3
2
|
export type { HistoryEntry, HistorySnapshot, StoreHistory, StoreHistoryOptions } from '../middleware/historyMiddleware';
|
|
4
|
-
export type { UseStoreHistoryReturn } from './hooks/useStoreHistory';
|
package/dist/history/index.mjs
CHANGED