@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.
Files changed (79) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +211 -27
  3. package/dist/advanced/index.d.ts +5 -0
  4. package/dist/advanced/index.mjs +10 -0
  5. package/dist/async/index.d.ts +0 -2
  6. package/dist/async/index.mjs +1 -3
  7. package/dist/createStore/createStore.d.ts +3 -43
  8. package/dist/createStore/createStore.mjs +85 -100
  9. package/dist/createStore/helpers/PathTrie.mjs +14 -14
  10. package/dist/createStore/helpers/createChainReads.d.ts +1 -1
  11. package/dist/createStore/helpers/createChainReads.mjs +22 -13
  12. package/dist/createStore/helpers/createSetState.mjs +11 -9
  13. package/dist/createStore/helpers/forwardParentChanges.mjs +16 -13
  14. package/dist/createStore/index.mjs +3 -3
  15. package/dist/derived/index.d.ts +0 -1
  16. package/dist/derived/index.mjs +1 -2
  17. package/dist/entities/createEntityStore.d.ts +0 -3
  18. package/dist/entities/createEntityStore.mjs +71 -78
  19. package/dist/env.d.ts +4 -0
  20. package/dist/env.mjs +3 -0
  21. package/dist/history/index.d.ts +0 -2
  22. package/dist/history/index.mjs +1 -2
  23. package/dist/index.d.ts +23 -15
  24. package/dist/index.mjs +14 -22
  25. package/dist/middleware/historyMiddleware.mjs +26 -26
  26. package/dist/middleware/persistMiddleware.mjs +11 -11
  27. package/dist/middleware/recorderMiddleware.d.ts +21 -0
  28. package/dist/middleware/recorderMiddleware.mjs +33 -0
  29. package/dist/{StoreContext.d.ts → react/StoreContext.d.ts} +1 -1
  30. package/dist/{StoreContext.mjs → react/StoreContext.mjs} +1 -1
  31. package/dist/{StoreProvider.d.ts → react/StoreProvider.d.ts} +4 -2
  32. package/dist/react/StoreProvider.mjs +62 -0
  33. package/dist/react/createStoreHook.d.ts +44 -0
  34. package/dist/react/createStoreHook.mjs +27 -0
  35. package/dist/{createStore → react}/hooks/shared.mjs +2 -2
  36. package/dist/{async → react}/hooks/useAsync.d.ts +1 -1
  37. package/dist/{async → react}/hooks/useAsync.mjs +1 -1
  38. package/dist/{async → react}/hooks/useAsyncValue.d.ts +1 -1
  39. package/dist/{async → react}/hooks/useAsyncValue.mjs +1 -1
  40. package/dist/{derived → react}/hooks/useDerived.d.ts +1 -1
  41. package/dist/{derived → react}/hooks/useDerived.mjs +1 -1
  42. package/dist/react/hooks/useEntity.d.ts +10 -0
  43. package/dist/react/hooks/useEntity.mjs +23 -0
  44. package/dist/{createStore → react}/hooks/useStore.mjs +2 -2
  45. package/dist/{createStore → react}/hooks/useStoreById.mjs +2 -2
  46. package/dist/{createStore → react}/hooks/useStoreGetter.mjs +1 -1
  47. package/dist/react/hooks/useStoreHistory.mjs +29 -0
  48. package/dist/{createStore → react}/hooks/useStoreSetter.mjs +1 -1
  49. package/dist/{createStore → react}/hooks/useStoreSync.mjs +2 -2
  50. package/dist/react/index.d.ts +17 -0
  51. package/dist/react/index.mjs +16 -0
  52. package/dist/{helpers → react}/useIsomorphicLayoutEffect.mjs +1 -1
  53. package/dist/types/StoreTypes.d.ts +21 -0
  54. package/dist/vue/index.d.ts +8 -0
  55. package/dist/vue/index.mjs +7 -0
  56. package/dist/vue/injection.d.ts +3 -0
  57. package/dist/vue/injection.mjs +13 -0
  58. package/dist/vue/useAsync.d.ts +3 -0
  59. package/dist/vue/useAsync.mjs +10 -0
  60. package/dist/vue/useDerived.d.ts +3 -0
  61. package/dist/vue/useDerived.mjs +10 -0
  62. package/dist/vue/useEntity.d.ts +11 -0
  63. package/dist/vue/useEntity.mjs +29 -0
  64. package/dist/vue/useStore.d.ts +13 -0
  65. package/dist/vue/useStore.mjs +31 -0
  66. package/dist/vue/useStoreHistory.d.ts +12 -0
  67. package/dist/vue/useStoreHistory.mjs +33 -0
  68. package/logo.svg +77 -22
  69. package/package.json +133 -56
  70. package/dist/StoreProvider.mjs +0 -57
  71. package/dist/history/hooks/useStoreHistory.mjs +0 -24
  72. /package/dist/{createStore → react}/hooks/shared.d.ts +0 -0
  73. /package/dist/{createStore → react}/hooks/useStore.d.ts +0 -0
  74. /package/dist/{createStore → react}/hooks/useStoreById.d.ts +0 -0
  75. /package/dist/{createStore → react}/hooks/useStoreGetter.d.ts +0 -0
  76. /package/dist/{history → react}/hooks/useStoreHistory.d.ts +0 -0
  77. /package/dist/{createStore → react}/hooks/useStoreSetter.d.ts +0 -0
  78. /package/dist/{createStore → react}/hooks/useStoreSync.d.ts +0 -0
  79. /package/dist/{helpers → react}/useIsomorphicLayoutEffect.d.ts +0 -0
@@ -1,122 +1,107 @@
1
- import { createChainReads as e } from "./helpers/createChainReads.mjs";
2
- import { createSetState as t } from "./helpers/createSetState.mjs";
3
- import { forwardParentChanges as n } from "./helpers/forwardParentChanges.mjs";
4
- import r from "./helpers/Subscribers.mjs";
5
- import i from "./helpers/PathTrie.mjs";
6
- import "./helpers/scopeCollisions.mjs";
7
- import a from "./hooks/useStore.mjs";
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 l = 0;
13
- function u(a, o) {
14
- let s = {}, c, u = new r(), d = new r(), f = new i(), p = new r(), m = () => {
15
- p.length !== 0 && p.forEach((e) => e());
16
- }, h = [], g = [], _ = [], v = o?.parent;
17
- ++l;
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 = g.length; e < t; e++) g[e](r);
26
- }, b = () => s, x = () => c ??= { ...s }, { getState: S, getPath: C, invalidate: w, resetCache: T, getMergeCount: E } = e(b, x, v), D = () => {
27
- w(), m();
28
- }, O, k, A = !1;
29
- v && (T(), k = v.subscribeInvalidate?.(D));
30
- let { setState: j, batch: M } = t({
31
- getOwnState: b,
32
- getOwnSnapshot: x,
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
- s = e, c = void 0, w();
29
+ d = e, f = void 0, O();
35
30
  },
36
31
  mutateOwnKey: (e, t) => {
37
- s[e] = t, w(), c = void 0;
32
+ d[e] = t, O(), f = void 0;
38
33
  },
39
- parent: v,
40
- listeners: u,
41
- pathListeners: f,
42
- changeListeners: d,
43
- interceptors: h,
44
- reportError: y,
45
- invalidateDescendants: m,
46
- onDelegateToParent: void 0
47
- }), N = () => u.length > 0 || f.size > 0 || d.length > 0, P = () => {
48
- O || !v || (w(), T(), O = n(v, u, f, d, S, y, w), d.length > 0 && O.seedBaseline());
49
- }, F = () => {
50
- O && (O.unsubscribe(), O = void 0, T());
51
- }, I = () => {
52
- v && (!A && N() ? P() : F());
53
- }, L = (e) => (I(), () => {
54
- e(), I();
55
- }), R = (e) => L(u.add(e)), z = (e, t) => L(f.add(e, t)), B = (e) => {
56
- let t = L(d.add(e));
57
- return O?.seedBaseline(), t;
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
- s = typeof a == "function" ? a(j, S) : a;
60
- let V = {
61
- id: o?.id,
62
- getState: S,
63
- getPath: C,
64
- setState: j,
65
- withBase: (e) => ({
66
- getState: (t) => {
67
- let n = C(e);
68
- return n === void 0 && t !== void 0 ? t : n;
69
- },
70
- getPath: (t, n) => {
71
- let r = C(`${e}.${t}`);
72
- return r === void 0 && n !== void 0 ? n : r;
73
- },
74
- setState: (t, n) => j(t === void 0 ? e : `${e}.${t}`, n),
75
- subscribe: (t) => z(e, t),
76
- subscribePath: (t, n) => z(`${e}.${t}`, n)
77
- }),
78
- batch: M,
79
- subscribe: R,
80
- subscribePath: z,
81
- subscribeChange: B,
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
- A = !0, F(), u.clear(), f.clear(), d.clear(), p.clear(), k?.();
88
+ P = !0, z(), p.clear(), h.clear(), m.clear(), g.clear(), N?.();
84
89
  },
85
90
  reconnect: () => {
86
- A = !1, v && (k?.(), k = v.subscribeInvalidate?.(D)), I();
91
+ P = !1, x && (N?.(), N = x.subscribeInvalidate?.(j)), B();
87
92
  },
88
- subscribeInvalidate: (e) => p.add(e),
93
+ subscribeInvalidate: (e) => g.add(e),
89
94
  hydrate: () => {
90
- for (let e of _) e();
95
+ for (let e of b) e();
91
96
  }
92
97
  };
93
- if (o?.middlewares) for (let e of o.middlewares) {
94
- let t = e(V);
95
- t?.beforeChange && h.push(t.beforeChange), t?.onChange && B(t.onChange), t?.onError && g.push(t.onError);
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 && (o.deferHydrate ? _.push(() => n(V)) : n(V));
102
+ n && (u.deferHydrate ? b.push(() => n(G)) : n(G));
98
103
  }
99
- return V;
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 { d as createStoreHook, u as default };
107
+ export { l as default };
@@ -1,5 +1,5 @@
1
- import e from "../../helpers/parsePath.mjs";
2
- import t from "./Subscribers.mjs";
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 = e(r), o = this.direct.get(r);
13
+ let a = t(r), o = this.direct.get(r);
14
14
  if (!o) {
15
- o = new t(), this.direct.set(r, o);
16
- let e = this.root;
17
- for (let t of a) {
18
- e.children ||= /* @__PURE__ */ new Map();
19
- let r = e.children.get(t);
20
- r || (r = new n(), e.children.set(t, r)), e = r;
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
- e.subscribers = o, this.size++;
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(t, n, r) {
62
+ forEachAffected(e, n, r) {
63
63
  let i = (e) => {
64
64
  e && e.forEach(n, r);
65
65
  };
66
- if (typeof t != "string") {
66
+ if (typeof e != "string") {
67
67
  this.direct.forEach(i);
68
68
  return;
69
69
  }
70
- let a = e(t);
71
- this.walkAncestors(a, i), this.descendants.get(t)?.forEach((e) => i(this.direct.get(e)));
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 o = a, s = !0, c = !1, l, u = 0, d = /* @__PURE__ */ new Map(), f = () => (u++, e(o.getState(), i())), p = () => ((s || l === void 0) && (l = f(), s = !1), l), m = (e) => {
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 o.getPath(e);
15
- let a = o.getPath(e);
16
- return a === void 0 || !t(i) || !t(a) ? i : n(p(), e);
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: p,
28
+ getState: h,
20
29
  getPath: (e) => {
21
- if (c) d.clear(), c = !1;
22
- else if (d.has(e)) return d.get(e);
23
- let t = m(e);
24
- return d.set(e, t), t;
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
- s = !0, c = !0;
36
+ l = !0, u = !0;
28
37
  },
29
38
  resetCache: () => {
30
- d.clear(), l = void 0, s = !0, c = !1;
39
+ p.clear(), d = void 0, l = !0, u = !1;
31
40
  },
32
- getMergeCount: () => u
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, t, n) => {
69
- let r = {
68
+ }, O = (e, n, r) => {
69
+ let i = {
70
70
  path: e,
71
- prev: t,
72
- next: n
73
- }, { items: i } = v;
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(i, r, i.length);
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 = C(i, typeof o == "function" ? o(e) : o, e);
143
- if (n === a) return;
144
- w = r(u, i, b, n, !1);
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 e(e, t, n, r, i, a, o) {
3
- let s;
3
+ function t(t, n, r, i, a, o, s) {
4
+ let c;
4
5
  return {
5
- unsubscribe: e.subscribe((e) => {
6
- o();
7
- let c = e;
8
- if (t.forEach((t) => t(e), (e) => a(e, "notify", c)), n.size > 0 && n.forEachAffected(e, (t) => t(e), (e) => a(e, "notify", c)), r.length > 0) {
9
- let e = i(), t = {
10
- path: c,
11
- prev: s ?? e,
12
- next: e
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
- s = e, r.forEach((e) => e(t), (e) => a(e, "onChange", c));
17
+ c = t, i.forEach((e) => e(r), (e) => o(e, "onChange", l));
15
18
  }
16
19
  }),
17
20
  seedBaseline: () => {
18
- s ??= i();
21
+ c ??= a();
19
22
  }
20
23
  };
21
24
  }
22
25
  //#endregion
23
- export { e as forwardParentChanges };
26
+ export { t as forwardParentChanges };
@@ -1,5 +1,5 @@
1
- import e, { createStoreHook as t } from "./createStore.mjs";
1
+ import e from "./createStore.mjs";
2
2
  //#region src/createStore/index.ts
3
- var n = e;
3
+ var t = e;
4
4
  //#endregion
5
- export { t as createStoreHook, n as default };
5
+ export { t as default };
@@ -1,3 +1,2 @@
1
1
  export { createDerived } from './createDerived';
2
- export { useDerived } from './hooks/useDerived';
3
2
  export type { Derived, DerivedOptions } from './createDerived';
@@ -1,3 +1,2 @@
1
1
  import { createDerived as e } from "./createDerived.mjs";
2
- import { useDerived as t } from "./hooks/useDerived.mjs";
3
- export { e as createDerived, t as useDerived };
2
+ export { e as createDerived };
@@ -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 r(r = [], i = {}) {
5
- let a = i.selectId ?? ((e) => e.id), o = i.sortComparer, s = (e) => String(a(e)), c = /* @__PURE__ */ new Map();
6
- for (let e of r) c.set(s(e), e);
7
- let l = /* @__PURE__ */ new Map(), u = new e(), d = new e(), f, p, m = 0, h = /* @__PURE__ */ new Set(), g = !1, _ = !1, v = (e) => {
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
- }, y = (e, t) => {
10
- if (t && (f = void 0), p = void 0, m > 0) {
11
- h.add(e), g ||= t, _ = !0;
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
- v(l.get(e)), t && v(u), v(d);
15
- }, b = () => {
16
- let e = [...h], t = g, n = _;
17
- h.clear(), g = !1, _ = !1;
18
- for (let t of e) v(l.get(t));
19
- t && v(u), n && v(d);
20
- }, x = (e) => {
21
- m++;
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
- m--, m === 0 && _ && b();
24
+ f--, f === 0 && h && v();
26
25
  }
27
- }, S = (e, t, n) => {
28
- let r = s(e), i = c.get(r), a = i === void 0;
29
- if (t && !a) return;
30
- let o = n && !a ? {
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
- o !== i && (c.set(r, o), y(r, a));
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
- S(e, !1, !1);
37
- }, w = (e) => {
38
- S(e, !0, !1);
39
- }, T = (e) => {
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
- }), y(n, !1));
47
- }, D = (e) => {
45
+ }), _(n, !1));
46
+ }, T = (e) => {
48
47
  let t = String(e);
49
- c.has(t) && (c.delete(t), y(t, !0));
50
- }, O = (e) => c.get(String(e)), k = () => f ??= [...c.keys()], A = () => {
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: a,
66
- getOne: O,
67
- getIds: k,
68
- getAll: A,
69
- has: (e) => c.has(String(e)),
70
- size: () => c.size,
71
- setOne: C,
72
- setMany: (e) => x(() => e.forEach(C)),
73
- setAll: (e) => x(() => {
74
- for (let e of [...c.keys()]) D(e);
75
- e.forEach(C);
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: w,
78
- addMany: (e) => x(() => e.forEach(w)),
79
- upsertOne: T,
80
- upsertMany: (e) => x(() => e.forEach(T)),
81
- updateOne: E,
82
- updateMany: (e) => x(() => e.forEach(({ id: e, changes: t }) => E(e, t))),
83
- removeOne: D,
84
- removeMany: (e) => x(() => e.forEach(D)),
85
- removeAll: () => x(() => [...c.keys()].forEach(D)),
86
- batch: x,
87
- subscribeOne: j,
88
- subscribeIds: M,
89
- subscribeAll: N,
90
- useOne: (e) => {
91
- let r = String(e), i = t((e) => j(r, e), [r]), a = t(() => c.get(r), [r]);
92
- return n(i, a, a);
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
- useIds: () => n(M, k, k),
95
- useAll: () => n(N, A, A),
87
+ subscribeIds: (e) => c.add(e),
88
+ subscribeAll: (e) => l.add(e),
96
89
  destroy: () => {
97
- c.clear(), l.clear(), u.clear(), d.clear(), f = void 0, p = void 0;
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 { r as createEntityStore };
95
+ export { t as createEntityStore };
package/dist/env.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export declare const MODE: string;
2
+ export declare const isProd: boolean;
3
+ export declare const isDev: boolean;
4
+ export declare const isTest: boolean;
package/dist/env.mjs ADDED
@@ -0,0 +1,3 @@
1
+ var e = typeof process < "u" && process.env.NODE_ENV ? process.env.NODE_ENV : "production", t = e === "production", n = !t, r = e === "test";
2
+ //#endregion
3
+ export { e as MODE, n as isDev, t as isProd, r as isTest };
@@ -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';
@@ -1,3 +1,2 @@
1
1
  import { getStoreHistory as e } from "../middleware/historyMiddleware.mjs";
2
- import { useStoreHistory as t } from "./hooks/useStoreHistory.mjs";
3
- export { e as getStoreHistory, t as useStoreHistory };
2
+ export { e as getStoreHistory };