@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.
@@ -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 B(e,n,t){const i=n.replace(/\[(\d+)\]/g,".$1").split(".");let o=e;for(let c=0;c<i.length-1;c++){const u=i[c],s=i[c+1];(o[u]===void 0||o[u]===null)&&(o[u]=/^\d+$/.test(s)?[]:{}),o=o[u]}return o[i[i.length-1]]=t,e}function F(e,n=0){let t;return function(...i){t!==void 0&&clearTimeout(t),t=setTimeout(()=>{t=void 0,e.apply(this,i)},n)}}function J(e,n,t=[]){return S.useMemo(()=>F(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[,u,s,p,b]=c;t.push(`${u}%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 O=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=O(t)?t(i):t,c={...this.#e};B(c,n,o),this.#e=c,this.#t.forEach(u=>u())}}let _;typeof window>"u"&&(_=new AsyncLocalStorage);const K=()=>{const e=_.getStore();if(!e)throw new Error(`${M.name} must be initialized for this request`);return e};let C=null;const G=()=>(C||(C=new M),C);function Q(e){return _.run(new M,e)}const U=()=>typeof window>"u"?K():G(),j=Symbol("state-def"),k=Symbol("state-path"),R=Symbol("state-verbose"),x=Symbol("state-verbose-path"),L=Symbol("state-ssr"),D=typeof window>"u",X=D?S.useEffect:S.useLayoutEffect;function Y(e={}){return{[j]:!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,u=n.bidirectional??o,s=this[k],p=this[R],b=this[x],T=this[L],a=U(),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)):a.set(r,g(w))},f=J(n.onSet??(()=>{}),n.delayedSet,[]),y=S.useRef(void 0),$=S.useRef(!1);if(!$.current){$.current=!0;let r=a.get(s);V(r)||(r=c,V(r)&&a.set(s,r)),!T&&t&&d(s,t,r)}const E=S.useSyncExternalStore(a.subscribe.bind(a),a.getClientSnapshot.bind(a),a.getServerSnapshot.bind(a));if(p)if(b){const r=z(E,b);r&&N(r)}else N(E);const m=z(E,s,c);y.current=m,X(()=>{!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)&&(a.set(s,w),f(w,y.current))});S.useEffect(()=>{if(u)return window.addEventListener("storage",v),()=>window.removeEventListener("storage",v)},[u]);const I=S.useCallback(r=>{const h=O(r)?r(y.current):r;a.set(s,h),f(h,y.current),t&&t.setItem(s,l(h))},[s,t,f]),q=S.useCallback(()=>{const r=c;if(!V(r)){t?.removeItem(s);return}a.set(s,r),f(r,y.current),t&&t.setItem(s,l(r))},[s,c,t,f]);return[m,I,q]},toString(){return this[k]}}}function W(e,n){const{path:t="",verbose:i,verbosePath:o,ssr:c,cache:u}=n;let s=u.proxy.get(e);s||(s=new Map,u.proxy.set(e,s));const p=s.get(t);if(p)return p;const b=new Proxy(e,{get(T,a){const l=T[a],g=t?`${t}.${String(a)}`:String(a);if(l&&typeof l=="object"&&j in l){const d=l;let f=u.leaf.get(d);f||(f=new Map,u.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 Z(e,n){return W(e,{...n,verbosePath:n?.verbosePath??"",cache:{proxy:new WeakMap,leaf:new WeakMap}})}exports.defineState=Y;exports.runWithStateVocab=Q;exports.setupStorage=Z;
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;
@@ -1,4 +1,4 @@
1
- import { useMemo as q, useRef as M, useSyncExternalStore as H, useEffect as O, useLayoutEffect as K, useEffectEvent as G, useCallback as N } from "react";
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 Q(e, n, t) {
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 u = i[c], s = i[c + 1];
19
- (o[u] === void 0 || o[u] === null) && (o[u] = /^\d+$/.test(s) ? [] : {}), o = o[u];
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 U(e, n = 0) {
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 X(e, n, t = []) {
32
- return q(
33
- () => U(e, n),
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 [, u, s, v, y] = c;
45
- t.push(`${u}%c"${s}"%c${v}%c${y}`), i.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 j = (e) => typeof e == "function", Y = (e) => typeof e == "function", E = (e) => typeof e < "u", x = (e) => Y(e) ? e() : e;
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 = j(t) ? t(i) : t, c = { ...this.#e };
77
- Q(c, n, o), this.#e = c, this.#t.forEach((u) => u());
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" && (_ = new AsyncLocalStorage());
82
- const Z = () => {
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 ee = () => (A || (A = new L()), A);
90
- function re(e) {
93
+ const te = () => (A || (A = new L()), A);
94
+ function oe(e) {
91
95
  return _.run(new L(), e);
92
96
  }
93
- const te = () => typeof window > "u" ? Z() : ee(), B = Symbol("state-def"), $ = Symbol("state-path"), P = Symbol("state-verbose"), C = Symbol("state-verbose-path"), R = Symbol("state-ssr"), F = typeof window > "u", ne = F ? O : K;
94
- function oe(e = {}) {
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, u = n.bidirectional ?? o, s = this[$], v = this[P], y = this[C], V = this[R], l = te(), a = e.serialize ?? JSON.stringify, g = e.deserialize ?? JSON.parse, d = (r, h, k) => {
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, a(k)) : l.set(r, g(m));
112
- }, f = X(
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, ne(() => {
139
+ S.current = p, se(() => {
136
140
  !V || !t || d(s, t, p);
137
141
  }, []);
138
- const b = G((r) => {
142
+ const g = Q((r) => {
139
143
  if (r.key !== s)
140
144
  return;
141
- const h = r.newValue, m = (h === null ? null : g(h)) ?? c;
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
- O(() => {
145
- if (u)
146
- return window.addEventListener("storage", b), () => window.removeEventListener("storage", b);
147
- }, [u]);
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 = j(r) ? r(S.current) : r;
150
- l.set(s, h), f(h, S.current), t && t.setItem(s, a(h));
151
- }, [s, t, f]), W = N(() => {
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, a(r));
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
- W
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: u
181
+ cache: a
178
182
  } = n;
179
- let s = u.proxy.get(e);
180
- s || (s = /* @__PURE__ */ new Map(), u.proxy.set(e, s));
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 a = V[l], g = t ? `${t}.${String(l)}` : String(l);
187
- if (a && typeof a == "object" && B in a) {
188
- const d = a;
189
- let f = u.leaf.get(d);
190
- f || (f = /* @__PURE__ */ new Map(), u.leaf.set(d, f));
191
- const S = f.get(g);
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
- (b) => typeof d[b] == "function"
199
+ (g) => typeof d[g] == "function"
196
200
  ), w = Object.fromEntries(
197
- T.map((b) => [
198
- b,
199
- (...I) => d[b].call(
201
+ T.map((g) => [
202
+ g,
203
+ (...I) => d[g].call(
200
204
  {
201
205
  ...d,
202
- [$]: g,
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(g, p), p;
215
+ return f.set(b, p), p;
212
216
  }
213
- return a && typeof a == "object" ? J(a, {
217
+ return u && typeof u == "object" ? J(u, {
214
218
  ...n,
215
- path: g
216
- }) : a;
219
+ path: b
220
+ }) : u;
217
221
  }
218
222
  });
219
223
  return s.set(t, y), y;
220
224
  }
221
- function ce(e, n) {
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
- oe as defineState,
233
- re as runWithStateVocab,
234
- ce as setupStorage
236
+ ce as defineState,
237
+ oe as runWithStateVocab,
238
+ ie as setupStorage
235
239
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yakocloud/state-vocab",
3
- "version": "3.0.7",
3
+ "version": "3.0.8",
4
4
  "main": "dist/state-vocab.cjs.js",
5
5
  "module": "dist/state-vocab.es.js",
6
6
  "types": "dist/types/index.d.ts",