@yakocloud/state-vocab 3.0.7 → 3.0.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/dist/state-vocab.cjs.js +3 -3
- package/dist/state-vocab.es.js +60 -56
- package/package.json +1 -1
package/dist/state-vocab.cjs.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("react");function z(e,n,t){if(!n)return e;const i=n.split(".");let o=e;for(const c of i)if(o!==null&&typeof o=="object"&&c in o)o=o[c];else return t;return o===void 0?t:o}function
|
|
2
|
-
`),t=[],i=[];for(const o of n){const c=o.match(/^(\s*)"([^"]+)"(\s*:\s*)(.+)$/);if(c){const[,
|
|
3
|
-
`),...i,e)}const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("react");function z(e,n,t){if(!n)return e;const i=n.split(".");let o=e;for(const c of i)if(o!==null&&typeof o=="object"&&c in o)o=o[c];else return t;return o===void 0?t:o}function F(e,n,t){const i=n.replace(/\[(\d+)\]/g,".$1").split(".");let o=e;for(let c=0;c<i.length-1;c++){const a=i[c],s=i[c+1];(o[a]===void 0||o[a]===null)&&(o[a]=/^\d+$/.test(s)?[]:{}),o=o[a]}return o[i[i.length-1]]=t,e}function J(e,n=0){let t;return function(...i){t!==void 0&&clearTimeout(t),t=setTimeout(()=>{t=void 0,e.apply(this,i)},n)}}function K(e,n,t=[]){return S.useMemo(()=>J(e,n),t)}function N(e){const n=JSON.stringify(e,null,2).split(`
|
|
2
|
+
`),t=[],i=[];for(const o of n){const c=o.match(/^(\s*)"([^"]+)"(\s*:\s*)(.+)$/);if(c){const[,a,s,p,b]=c;t.push(`${a}%c"${s}"%c${p}%c${b}`),i.push("color: #9cdcfe; font-weight: bold","color: #cccccc","color: #ce9178")}else t.push(`%c${o}`),i.push("color: #cccccc")}console.log(t.join(`
|
|
3
|
+
`),...i,e)}const j=e=>typeof e=="function",H=e=>typeof e=="function",V=e=>typeof e<"u",A=e=>H(e)?e():e;class M{#e;#t;constructor(){this.#e={},this.#t=new Set}subscribe(n){return this.#t.add(n),()=>this.#t.delete(n)}getClientSnapshot(){return this.#e}getServerSnapshot(){return this.#e}get(n){return z(this.#e,n)}set(n,t){const i=z(this.#e,n),o=j(t)?t(i):t,c={...this.#e};F(c,n,o),this.#e=c,this.#t.forEach(a=>a())}}const O=Symbol.for("request-state-vocab-storage");let _;if(typeof window>"u"){const e=globalThis;e[O]??=new AsyncLocalStorage,_=e[O]}const G=()=>{const e=_.getStore();if(!e)throw new Error(`${M.name} must be initialized for this request`);return e};let C=null;const Q=()=>(C||(C=new M),C);function U(e){return _.run(new M,e)}const X=()=>typeof window>"u"?G():Q(),q=Symbol("state-def"),k=Symbol("state-path"),R=Symbol("state-verbose"),x=Symbol("state-verbose-path"),L=Symbol("state-ssr"),D=typeof window>"u",Y=D?S.useEffect:S.useLayoutEffect;function Z(e={}){return{[q]:!0,[k]:"",[R]:!1,[x]:"",[L]:!1,useState(n){const t=D?void 0:A(e.storage),i=A(e.defaultValue),o=e.bidirectional;n??={};const c=A(n.defaultValue)??i,a=n.bidirectional??o,s=this[k],p=this[R],b=this[x],T=this[L],u=X(),l=e.serialize??JSON.stringify,g=e.deserialize??JSON.parse,d=(r,h,P)=>{const w=h.getItem(r);w===null?V(P)&&h.setItem(r,l(P)):u.set(r,g(w))},f=K(n.onSet??(()=>{}),n.delayedSet,[]),y=S.useRef(void 0),$=S.useRef(!1);if(!$.current){$.current=!0;let r=u.get(s);V(r)||(r=c,V(r)&&u.set(s,r)),!T&&t&&d(s,t,r)}const E=S.useSyncExternalStore(u.subscribe.bind(u),u.getClientSnapshot.bind(u),u.getServerSnapshot.bind(u));if(p)if(b){const r=z(E,b);r&&N(r)}else N(E);const m=z(E,s,c);y.current=m,Y(()=>{!T||!t||d(s,t,m)},[]);const v=S.useEffectEvent(r=>{if(r.key!==s)return;const h=r.newValue,w=(h===null?null:g(h))??c;V(w)&&(u.set(s,w),f(w,y.current))});S.useEffect(()=>{if(a)return window.addEventListener("storage",v),()=>window.removeEventListener("storage",v)},[a]);const I=S.useCallback(r=>{const h=j(r)?r(y.current):r;u.set(s,h),f(h,y.current),t&&t.setItem(s,l(h))},[s,t,f]),B=S.useCallback(()=>{const r=c;if(!V(r)){t?.removeItem(s);return}u.set(s,r),f(r,y.current),t&&t.setItem(s,l(r))},[s,c,t,f]);return[m,I,B]},toString(){return this[k]}}}function W(e,n){const{path:t="",verbose:i,verbosePath:o,ssr:c,cache:a}=n;let s=a.proxy.get(e);s||(s=new Map,a.proxy.set(e,s));const p=s.get(t);if(p)return p;const b=new Proxy(e,{get(T,u){const l=T[u],g=t?`${t}.${String(u)}`:String(u);if(l&&typeof l=="object"&&q in l){const d=l;let f=a.leaf.get(d);f||(f=new Map,a.leaf.set(d,f));const y=f.get(g);if(y)return y;const $=Reflect.ownKeys(d).filter(v=>typeof d[v]=="function"),E=Object.fromEntries($.map(v=>[v,(...I)=>d[v].call({...d,[k]:g,[R]:i,[x]:o,[L]:c},...I)])),m={...d,...E};return f.set(g,m),m}return l&&typeof l=="object"?W(l,{...n,path:g}):l}});return s.set(t,b),b}function ee(e,n){return W(e,{...n,verbosePath:n?.verbosePath??"",cache:{proxy:new WeakMap,leaf:new WeakMap}})}exports.defineState=Z;exports.runWithStateVocab=U;exports.setupStorage=ee;
|
package/dist/state-vocab.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useMemo as
|
|
1
|
+
import { useMemo as W, useRef as M, useSyncExternalStore as H, useEffect as j, useLayoutEffect as G, useEffectEvent as Q, useCallback as N } from "react";
|
|
2
2
|
function z(e, n, t) {
|
|
3
3
|
if (!n)
|
|
4
4
|
return e;
|
|
@@ -11,16 +11,16 @@ function z(e, n, t) {
|
|
|
11
11
|
return t;
|
|
12
12
|
return o === void 0 ? t : o;
|
|
13
13
|
}
|
|
14
|
-
function
|
|
14
|
+
function U(e, n, t) {
|
|
15
15
|
const i = n.replace(/\[(\d+)\]/g, ".$1").split(".");
|
|
16
16
|
let o = e;
|
|
17
17
|
for (let c = 0; c < i.length - 1; c++) {
|
|
18
|
-
const
|
|
19
|
-
(o[
|
|
18
|
+
const a = i[c], s = i[c + 1];
|
|
19
|
+
(o[a] === void 0 || o[a] === null) && (o[a] = /^\d+$/.test(s) ? [] : {}), o = o[a];
|
|
20
20
|
}
|
|
21
21
|
return o[i[i.length - 1]] = t, e;
|
|
22
22
|
}
|
|
23
|
-
function
|
|
23
|
+
function X(e, n = 0) {
|
|
24
24
|
let t;
|
|
25
25
|
return function(...i) {
|
|
26
26
|
t !== void 0 && clearTimeout(t), t = setTimeout(() => {
|
|
@@ -28,9 +28,9 @@ function U(e, n = 0) {
|
|
|
28
28
|
}, n);
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
|
-
function
|
|
32
|
-
return
|
|
33
|
-
() =>
|
|
31
|
+
function Y(e, n, t = []) {
|
|
32
|
+
return W(
|
|
33
|
+
() => X(e, n),
|
|
34
34
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35
35
|
t
|
|
36
36
|
);
|
|
@@ -41,8 +41,8 @@ function D(e) {
|
|
|
41
41
|
for (const o of n) {
|
|
42
42
|
const c = o.match(/^(\s*)"([^"]+)"(\s*:\s*)(.+)$/);
|
|
43
43
|
if (c) {
|
|
44
|
-
const [,
|
|
45
|
-
t.push(`${
|
|
44
|
+
const [, a, s, v, y] = c;
|
|
45
|
+
t.push(`${a}%c"${s}"%c${v}%c${y}`), i.push(
|
|
46
46
|
"color: #9cdcfe; font-weight: bold",
|
|
47
47
|
"color: #cccccc",
|
|
48
48
|
"color: #ce9178"
|
|
@@ -53,7 +53,7 @@ function D(e) {
|
|
|
53
53
|
console.log(t.join(`
|
|
54
54
|
`), ...i, e);
|
|
55
55
|
}
|
|
56
|
-
const
|
|
56
|
+
const q = (e) => typeof e == "function", Z = (e) => typeof e == "function", E = (e) => typeof e < "u", x = (e) => Z(e) ? e() : e;
|
|
57
57
|
class L {
|
|
58
58
|
#e;
|
|
59
59
|
#t;
|
|
@@ -73,25 +73,29 @@ class L {
|
|
|
73
73
|
return z(this.#e, n);
|
|
74
74
|
}
|
|
75
75
|
set(n, t) {
|
|
76
|
-
const i = z(this.#e, n), o =
|
|
77
|
-
|
|
76
|
+
const i = z(this.#e, n), o = q(t) ? t(i) : t, c = { ...this.#e };
|
|
77
|
+
U(c, n, o), this.#e = c, this.#t.forEach((a) => a());
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
+
const O = Symbol.for("request-state-vocab-storage");
|
|
80
81
|
let _;
|
|
81
|
-
typeof window > "u"
|
|
82
|
-
const
|
|
82
|
+
if (typeof window > "u") {
|
|
83
|
+
const e = globalThis;
|
|
84
|
+
e[O] ??= new AsyncLocalStorage(), _ = e[O];
|
|
85
|
+
}
|
|
86
|
+
const ee = () => {
|
|
83
87
|
const e = _.getStore();
|
|
84
88
|
if (!e)
|
|
85
89
|
throw new Error(`${L.name} must be initialized for this request`);
|
|
86
90
|
return e;
|
|
87
91
|
};
|
|
88
92
|
let A = null;
|
|
89
|
-
const
|
|
90
|
-
function
|
|
93
|
+
const te = () => (A || (A = new L()), A);
|
|
94
|
+
function oe(e) {
|
|
91
95
|
return _.run(new L(), e);
|
|
92
96
|
}
|
|
93
|
-
const
|
|
94
|
-
function
|
|
97
|
+
const ne = () => typeof window > "u" ? ee() : te(), B = Symbol("state-def"), $ = Symbol("state-path"), P = Symbol("state-verbose"), C = Symbol("state-verbose-path"), R = Symbol("state-ssr"), F = typeof window > "u", se = F ? j : G;
|
|
98
|
+
function ce(e = {}) {
|
|
95
99
|
return {
|
|
96
100
|
[B]: !0,
|
|
97
101
|
// marks this object as a leaf in the router tree
|
|
@@ -106,10 +110,10 @@ function oe(e = {}) {
|
|
|
106
110
|
useState(n) {
|
|
107
111
|
const t = F ? void 0 : x(e.storage), i = x(e.defaultValue), o = e.bidirectional;
|
|
108
112
|
n ??= {};
|
|
109
|
-
const c = x(n.defaultValue) ?? i,
|
|
113
|
+
const c = x(n.defaultValue) ?? i, a = n.bidirectional ?? o, s = this[$], v = this[P], y = this[C], V = this[R], l = ne(), u = e.serialize ?? JSON.stringify, b = e.deserialize ?? JSON.parse, d = (r, h, k) => {
|
|
110
114
|
const m = h.getItem(r);
|
|
111
|
-
m === null ? E(k) && h.setItem(r,
|
|
112
|
-
}, f =
|
|
115
|
+
m === null ? E(k) && h.setItem(r, u(k)) : l.set(r, b(m));
|
|
116
|
+
}, f = Y(
|
|
113
117
|
n.onSet ?? (() => {
|
|
114
118
|
}),
|
|
115
119
|
n.delayedSet,
|
|
@@ -132,34 +136,34 @@ function oe(e = {}) {
|
|
|
132
136
|
} else
|
|
133
137
|
D(w);
|
|
134
138
|
const p = z(w, s, c);
|
|
135
|
-
S.current = p,
|
|
139
|
+
S.current = p, se(() => {
|
|
136
140
|
!V || !t || d(s, t, p);
|
|
137
141
|
}, []);
|
|
138
|
-
const
|
|
142
|
+
const g = Q((r) => {
|
|
139
143
|
if (r.key !== s)
|
|
140
144
|
return;
|
|
141
|
-
const h = r.newValue, m = (h === null ? null :
|
|
145
|
+
const h = r.newValue, m = (h === null ? null : b(h)) ?? c;
|
|
142
146
|
E(m) && (l.set(s, m), f(m, S.current));
|
|
143
147
|
});
|
|
144
|
-
|
|
145
|
-
if (
|
|
146
|
-
return window.addEventListener("storage",
|
|
147
|
-
}, [
|
|
148
|
+
j(() => {
|
|
149
|
+
if (a)
|
|
150
|
+
return window.addEventListener("storage", g), () => window.removeEventListener("storage", g);
|
|
151
|
+
}, [a]);
|
|
148
152
|
const I = N((r) => {
|
|
149
|
-
const h =
|
|
150
|
-
l.set(s, h), f(h, S.current), t && t.setItem(s,
|
|
151
|
-
}, [s, t, f]),
|
|
153
|
+
const h = q(r) ? r(S.current) : r;
|
|
154
|
+
l.set(s, h), f(h, S.current), t && t.setItem(s, u(h));
|
|
155
|
+
}, [s, t, f]), K = N(() => {
|
|
152
156
|
const r = c;
|
|
153
157
|
if (!E(r)) {
|
|
154
158
|
t?.removeItem(s);
|
|
155
159
|
return;
|
|
156
160
|
}
|
|
157
|
-
l.set(s, r), f(r, S.current), t && t.setItem(s,
|
|
161
|
+
l.set(s, r), f(r, S.current), t && t.setItem(s, u(r));
|
|
158
162
|
}, [s, c, t, f]);
|
|
159
163
|
return [
|
|
160
164
|
p,
|
|
161
165
|
I,
|
|
162
|
-
|
|
166
|
+
K
|
|
163
167
|
];
|
|
164
168
|
},
|
|
165
169
|
/** Returns the fully qualified job name (dot-separated path). */
|
|
@@ -174,32 +178,32 @@ function J(e, n) {
|
|
|
174
178
|
verbose: i,
|
|
175
179
|
verbosePath: o,
|
|
176
180
|
ssr: c,
|
|
177
|
-
cache:
|
|
181
|
+
cache: a
|
|
178
182
|
} = n;
|
|
179
|
-
let s =
|
|
180
|
-
s || (s = /* @__PURE__ */ new Map(),
|
|
183
|
+
let s = a.proxy.get(e);
|
|
184
|
+
s || (s = /* @__PURE__ */ new Map(), a.proxy.set(e, s));
|
|
181
185
|
const v = s.get(t);
|
|
182
186
|
if (v)
|
|
183
187
|
return v;
|
|
184
188
|
const y = new Proxy(e, {
|
|
185
189
|
get(V, l) {
|
|
186
|
-
const
|
|
187
|
-
if (
|
|
188
|
-
const d =
|
|
189
|
-
let f =
|
|
190
|
-
f || (f = /* @__PURE__ */ new Map(),
|
|
191
|
-
const S = f.get(
|
|
190
|
+
const u = V[l], b = t ? `${t}.${String(l)}` : String(l);
|
|
191
|
+
if (u && typeof u == "object" && B in u) {
|
|
192
|
+
const d = u;
|
|
193
|
+
let f = a.leaf.get(d);
|
|
194
|
+
f || (f = /* @__PURE__ */ new Map(), a.leaf.set(d, f));
|
|
195
|
+
const S = f.get(b);
|
|
192
196
|
if (S)
|
|
193
197
|
return S;
|
|
194
198
|
const T = Reflect.ownKeys(d).filter(
|
|
195
|
-
(
|
|
199
|
+
(g) => typeof d[g] == "function"
|
|
196
200
|
), w = Object.fromEntries(
|
|
197
|
-
T.map((
|
|
198
|
-
|
|
199
|
-
(...I) => d[
|
|
201
|
+
T.map((g) => [
|
|
202
|
+
g,
|
|
203
|
+
(...I) => d[g].call(
|
|
200
204
|
{
|
|
201
205
|
...d,
|
|
202
|
-
[$]:
|
|
206
|
+
[$]: b,
|
|
203
207
|
[P]: i,
|
|
204
208
|
[C]: o,
|
|
205
209
|
[R]: c
|
|
@@ -208,17 +212,17 @@ function J(e, n) {
|
|
|
208
212
|
)
|
|
209
213
|
])
|
|
210
214
|
), p = { ...d, ...w };
|
|
211
|
-
return f.set(
|
|
215
|
+
return f.set(b, p), p;
|
|
212
216
|
}
|
|
213
|
-
return
|
|
217
|
+
return u && typeof u == "object" ? J(u, {
|
|
214
218
|
...n,
|
|
215
|
-
path:
|
|
216
|
-
}) :
|
|
219
|
+
path: b
|
|
220
|
+
}) : u;
|
|
217
221
|
}
|
|
218
222
|
});
|
|
219
223
|
return s.set(t, y), y;
|
|
220
224
|
}
|
|
221
|
-
function
|
|
225
|
+
function ie(e, n) {
|
|
222
226
|
return J(e, {
|
|
223
227
|
...n,
|
|
224
228
|
verbosePath: n?.verbosePath ?? "",
|
|
@@ -229,7 +233,7 @@ function ce(e, n) {
|
|
|
229
233
|
});
|
|
230
234
|
}
|
|
231
235
|
export {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
236
|
+
ce as defineState,
|
|
237
|
+
oe as runWithStateVocab,
|
|
238
|
+
ie as setupStorage
|
|
235
239
|
};
|