@biglogic/rgs 2.9.5 → 3.0.0
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/README.md +2 -7
- package/advanced.js +1 -1
- package/core/types.d.ts +18 -1
- package/core/utils.d.ts +2 -0
- package/examples/async-data-fetch/UserLoader.d.ts +1 -1
- package/examples/async-data-fetch/UserLoader.ts +3 -4
- package/examples/basic-counter/CounterStore.ts +2 -4
- package/examples/persistent-cart/CartStore.ts +5 -12
- package/examples/security-best-practices/SecurityStore.d.ts +4 -3
- package/examples/security-best-practices/SecurityStore.ts +3 -1
- package/examples/super-easy/EasyStore.d.ts +44 -0
- package/examples/super-easy/EasyStore.ts +61 -0
- package/examples/undo-redo-editor/EditorStore.d.ts +2 -2
- package/examples/undo-redo-editor/EditorStore.ts +6 -7
- package/index.d.ts +1 -0
- package/index.js +1 -1
- package/markdown/api.md +1 -1
- package/package.json +84 -81
- package/plugins/index.d.ts +2 -2
- package/plugins/official/cloud-sync.plugin.d.ts +3 -3
- package/plugins/official/immer.plugin.d.ts +1 -1
- package/plugins/official/indexeddb.plugin.d.ts +1 -1
- package/plugins/official/undo-redo.plugin.d.ts +2 -2
- package/rgs-highlighter-2.9.5.vsix +0 -0
package/README.md
CHANGED
|
@@ -125,10 +125,8 @@ const [user, setUser] = useStore('user')
|
|
|
125
125
|
|
|
126
126
|
## 📚 Quick Examples
|
|
127
127
|
|
|
128
|
-
### Persistence
|
|
129
|
-
|
|
130
128
|
```tsx
|
|
131
|
-
const store = gstate({ theme: 'dark' },
|
|
129
|
+
const store = gstate({ theme: 'dark' }, "my-app")
|
|
132
130
|
```
|
|
133
131
|
|
|
134
132
|
### Encryption
|
|
@@ -154,12 +152,9 @@ const store = gstate({ theme: 'light' })
|
|
|
154
152
|
store._addPlugin(syncPlugin({ channelName: 'my-app' }))
|
|
155
153
|
```
|
|
156
154
|
|
|
157
|
-
### Computed Values
|
|
158
|
-
|
|
159
155
|
```tsx
|
|
160
156
|
const store = gstate({ firstName: 'John', lastName: 'Doe' })
|
|
161
|
-
store.compute('fullName',
|
|
162
|
-
(s) => `${s.firstName} ${s.lastName}`)
|
|
157
|
+
store.compute('fullName', (get) => `${get('firstName')} ${get('lastName')}`)
|
|
163
158
|
|
|
164
159
|
const [fullName] = store('fullName') // "John Doe"
|
|
165
160
|
```
|
package/advanced.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Kt=Object.defineProperty;var vt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Bt=(e,t)=>{for(var r in t)Kt(e,r,{get:t[r],enumerable:!0})};var Wt=vt((Dr,$t)=>{"use strict";var ht=Object.defineProperty,Qt=Object.getOwnPropertyDescriptor,Zt=Object.getOwnPropertyNames,Yt=Object.prototype.hasOwnProperty,er=(e,t)=>{for(var r in t)ht(e,r,{get:t[r],enumerable:!0})},tr=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Zt(t))!Yt.call(e,s)&&s!==r&&ht(e,s,{get:()=>t[s],enumerable:!(n=Qt(t,s))||n.enumerable});return e},rr=e=>tr(ht({},"__esModule",{value:!0}),e),Rt={};er(Rt,{Immer:()=>Tt,applyPatches:()=>Mr,castDraft:()=>_r,castImmutable:()=>Pr,createDraft:()=>Ar,current:()=>Ut,enableArrayMethods:()=>mr,enableMapSet:()=>Sr,enablePatches:()=>yr,finishDraft:()=>xr,freeze:()=>Le,immerable:()=>se,isDraft:()=>K,isDraftable:()=>L,nothing:()=>Fe,original:()=>or,produce:()=>wr,produceWithPatches:()=>br,setAutoFreeze:()=>Er,setUseStrictIteration:()=>Cr,setUseStrictShallowCopy:()=>vr});$t.exports=rr(Rt);var Fe=Symbol.for("immer-nothing"),se=Symbol.for("immer-draftable"),A=Symbol.for("immer-state");function V(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var F=Object,re=F.getPrototypeOf,he="constructor",Ee="prototype",ut="configurable",je="enumerable",Ie="writable",ye="value",K=e=>!!e&&!!e[A];function L(e){return e?kt(e)||ve(e)||!!e[se]||!!e[he]?.[se]||Ce(e)||Me(e):!1}var nr=F[Ee][he].toString(),Mt=new WeakMap;function kt(e){if(!e||!ie(e))return!1;let t=re(e);if(t===null||t===F[Ee])return!0;let r=F.hasOwnProperty.call(t,he)&&t[he];if(r===Object)return!0;if(!te(r))return!1;let n=Mt.get(r);return n===void 0&&(n=Function.toString.call(r),Mt.set(r,n)),n===nr}function or(e){return K(e)||V(15,e),e[A].t}function ae(e,t,r=!0){ne(e)===0?(r?Reflect.ownKeys(e):F.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,s)=>t(s,n,e))}function ne(e){let t=e[A];return t?t.r:ve(e)?1:Ce(e)?2:Me(e)?3:0}var de=(e,t,r=ne(e))=>r===2?e.has(t):F[Ee].hasOwnProperty.call(e,t),Q=(e,t,r=ne(e))=>r===2?e.get(t):e[t],ze=(e,t,r,n=ne(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function sr(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var ve=Array.isArray,Ce=e=>e instanceof Map,Me=e=>e instanceof Set,ie=e=>typeof e=="object",te=e=>typeof e=="function",lt=e=>typeof e=="boolean";function ir(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Dt=e=>ie(e)?e?.[A]:null,j=e=>e.e||e.t,ar=e=>{let t=Dt(e);return t?t.e??t.t:e},yt=e=>e.s?e.e:e.t;function ft(e,t){if(Ce(e))return new Map(e);if(Me(e))return new Set(e);if(ve(e))return Array[Ee].slice.call(e);let r=kt(e);if(t===!0||t==="class_only"&&!r){let n=F.getOwnPropertyDescriptors(e);delete n[A];let s=Reflect.ownKeys(n);for(let c=0;c<s.length;c++){let g=s[c],b=n[g];b[Ie]===!1&&(b[Ie]=!0,b[ut]=!0),(b.get||b.set)&&(n[g]={[ut]:!0,[Ie]:!0,[je]:b[je],[ye]:e[g]})}return F.create(re(e),n)}else{let n=re(e);if(n!==null&&r)return{...e};let s=F.create(n);return F.assign(s,e)}}function Le(e,t=!1){return Je(e)||K(e)||!L(e)||(ne(e)>1&&F.defineProperties(e,{set:De,add:De,clear:De,delete:De}),F.freeze(e),t&&ae(e,(r,n)=>{Le(n,!0)},!1)),e}function lr(){V(2)}var De={[ye]:lr};function Je(e){return e===null||!ie(e)?!0:F.isFrozen(e)}var Se="MapSet",Ve="Patches",pt="ArrayMethods",Te={};function oe(e){let t=Te[e];return t||V(0,e),t}var At=e=>!!Te[e];function St(e,t){Te[e]||(Te[e]=t)}var me,Ue=()=>me,cr=(e,t)=>({o:[],i:e,l:t,F:!0,m:0,P:new Set,T:new Set,I:At(Se)?oe(Se):void 0,E:At(pt)?oe(pt):void 0});function xt(e,t){t&&(e.x=oe(Ve),e.y=[],e.d=[],e.C=t)}function dt(e){gt(e),e.o.forEach(ur),e.o=null}function gt(e){e===me&&(me=e.i)}var _t=e=>me=cr(me,e);function ur(e){let t=e[A];t.r===0||t.r===1?t.b():t.g=!0}function Pt(e,t){t.m=t.o.length;let r=t.o[0];if(e!==void 0&&e!==r){r[A].s&&(dt(t),V(4)),L(e)&&(e=Ot(t,e));let{x:n}=t;n&&n.M(r[A].t,e,t)}else e=Ot(t,r);return fr(t,e,!0),dt(t),t.y&&t.C(t.y,t.d),e!==Fe?e:void 0}function Ot(e,t){if(Je(t))return t;let r=t[A];if(!r)return $e(t,e.P,e);if(!Ke(r,e))return t;if(!r.s)return r.t;if(!r.u){let{f:n}=r;if(n)for(;n.length>0;)n.pop()(e);zt(r,e)}return r.e}function fr(e,t,r=!1){!e.i&&e.l.h&&e.F&&Le(t,r)}function It(e){e.u=!0,e.a.m--}var Ke=(e,t)=>e.a===t,pr=[];function jt(e,t,r,n){let s=j(e),c=e.r;if(n!==void 0&&Q(s,n,c)===t){ze(s,n,r,c);return}if(!e.D){let b=e.D=new Map;ae(s,(w,l)=>{if(K(l)){let f=b.get(l)||[];f.push(w),b.set(l,f)}})}let g=e.D.get(t)??pr;for(let b of g)ze(s,b,r,c)}function dr(e,t,r){e.f.push(function(n){let s=t;if(!s||!Ke(s,n))return;n.I?.fixSetContents(s);let c=yt(s);jt(e,s.c??s,c,r),zt(s,n)})}function zt(e,t){if(e.s&&!e.u&&(e.r===3||e.r===1&&e.R||(e.n?.size??0)>0)){let{x:r}=t;if(r){let n=r.getPath(e);n&&r.O(e,n,t)}It(e)}}function Ne(e,t,r){let{a:n}=e;if(K(r)){let s=r[A];Ke(s,n)&&s.f.push(function(){ge(e);let c=yt(s);jt(e,r,c,t)})}else L(r)&&e.f.push(function(){let s=j(e);e.r===3?s.has(r)&&$e(r,n.P,n):Q(s,t,e.r)===r&&n.o.length>1&&(e.n.get(t)??!1)===!0&&e.e&&$e(Q(e.e,t,e.r),n.P,n)})}function $e(e,t,r){return!r.l.h&&r.m<1||K(e)||t.has(e)||!L(e)||Je(e)||(t.add(e),ae(e,(n,s)=>{if(K(s)){let c=s[A];if(Ke(c,r)){let g=yt(c);ze(e,n,g,e.r),It(c)}}else L(s)&&$e(s,t,r)})),e}function gr(e,t){let r=ve(e),n={r:r?1:0,a:t?t.a:Ue(),s:!1,u:!1,n:void 0,i:t,t:e,c:null,e:null,b:null,S:!1,f:void 0},s=n,c=We;r&&(s=[n],c=we);let{revoke:g,proxy:b}=Proxy.revocable(s,c);return n.c=b,n.b=g,[b,n]}var We={get(e,t){if(t===A)return e;let r=e.a.E,n=e.r===1&&typeof t=="string";if(n&&r?.isArrayOperationMethod(t))return r.createMethodInterceptor(e,t);let s=j(e);if(!de(s,t,e.r))return hr(e,s,t);let c=s[t];if(e.u||!L(c)||n&&e.operationMethod&&r?.isMutatingArrayMethod(e.operationMethod)&&ir(t))return c;if(c===ct(e.t,t)){ge(e);let g=e.r===1?+t:t,b=be(e.a,c,e,g);return e.e[g]=b}return c},has(e,t){return t in j(e)},ownKeys(e){return Reflect.ownKeys(j(e))},set(e,t,r){let n=Vt(j(e),t);if(n?.set)return n.set.call(e.c,r),!0;if(!e.s){let s=ct(j(e),t),c=s?.[A];if(c&&c.t===r)return e.e[t]=r,e.n.set(t,!1),!0;if(sr(r,s)&&(r!==void 0||de(e.t,t,e.r)))return!0;ge(e),q(e)}return e.e[t]===r&&(r!==void 0||t in e.e)||Number.isNaN(r)&&Number.isNaN(e.e[t])||(e.e[t]=r,e.n.set(t,!0),Ne(e,t,r)),!0},deleteProperty(e,t){return ge(e),ct(e.t,t)!==void 0||t in e.t?(e.n.set(t,!1),q(e)):e.n.delete(t),e.e&&delete e.e[t],!0},getOwnPropertyDescriptor(e,t){let r=j(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[Ie]:!0,[ut]:e.r!==1||t!=="length",[je]:n[je],[ye]:r[t]}},defineProperty(){V(11)},getPrototypeOf(e){return re(e.t)},setPrototypeOf(){V(12)}},we={};for(let e in We){let t=We[e];we[e]=function(){let r=arguments;return r[0]=r[0][0],t.apply(this,r)}}we.deleteProperty=function(e,t){return we.set.call(this,e,t,void 0)};we.set=function(e,t,r){return We.set.call(this,e[0],t,r,e[0])};function ct(e,t){let r=e[A];return(r?j(r):e)[t]}function hr(e,t,r){let n=Vt(t,r);return n?ye in n?n[ye]:n.get?.call(e.c):void 0}function Vt(e,t){if(!(t in e))return;let r=re(e);for(;r;){let n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=re(r)}}function q(e){e.s||(e.s=!0,e.i&&q(e.i))}function ge(e){e.e||(e.n=new Map,e.e=ft(e.t,e.a.l.A))}var Tt=class{constructor(e){this.h=!0,this.A=!1,this._=!1,this.produce=(t,r,n)=>{if(te(t)&&!te(r)){let c=r;r=t;let g=this;return function(b=c,...w){return g.produce(b,l=>r.call(this,l,...w))}}te(r)||V(6),n!==void 0&&!te(n)&&V(7);let s;if(L(t)){let c=_t(this),g=be(c,t,void 0),b=!0;try{s=r(g),b=!1}finally{b?dt(c):gt(c)}return xt(c,n),Pt(s,c)}else if(!t||!ie(t)){if(s=r(t),s===void 0&&(s=t),s===Fe&&(s=void 0),this.h&&Le(s,!0),n){let c=[],g=[];oe(Ve).M(t,s,{y:c,d:g}),n(c,g)}return s}else V(1,t)},this.produceWithPatches=(t,r)=>{if(te(t))return(c,...g)=>this.produceWithPatches(c,b=>t(b,...g));let n,s;return[this.produce(t,r,(c,g)=>{n=c,s=g}),n,s]},lt(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),lt(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),lt(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){L(e)||V(8),K(e)&&(e=Ut(e));let t=_t(this),r=be(t,e,void 0);return r[A].S=!0,gt(t),r}finishDraft(e,t){let r=e&&e[A];(!r||!r.S)&&V(9);let{a:n}=r;return xt(n,t),Pt(void 0,n)}setAutoFreeze(e){this.h=e}setUseStrictShallowCopy(e){this.A=e}setUseStrictIteration(e){this._=e}shouldUseStrictIteration(){return this._}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){let s=t[r];if(s.path.length===0&&s.op==="replace"){e=s.value;break}}r>-1&&(t=t.slice(r+1));let n=oe(Ve).N;return K(e)?n(e,t):this.produce(e,s=>n(s,t))}};function be(e,t,r,n){let[s,c]=Ce(t)?oe(Se).w(t,r):Me(t)?oe(Se).V(t,r):gr(t,r);return(r?.a??Ue()).o.push(s),c.f=r?.f??[],c.p=n,r&&n!==void 0?dr(r,c,n):c.f.push(function(g){g.I?.fixSetContents(c);let{x:b}=g;c.s&&b&&b.O(c,[],g)}),s}function Ut(e){return K(e)||V(10,e),Nt(e)}function Nt(e){if(!L(e)||Je(e))return e;let t=e[A],r,n=!0;if(t){if(!t.s)return t.t;t.u=!0,r=ft(e,t.a.l.A),n=t.a.l.shouldUseStrictIteration()}else r=ft(e,!0);return ae(r,(s,c)=>{ze(r,s,Nt(c))},n),t&&(t.u=!1),r}function yr(){function e(p,E=[]){if(p.p!==void 0){let M=p.i.e??p.i.t,y=Dt(Q(M,p.p)),R=Q(M,p.p);if(R===void 0||R!==p.c&&R!==p.t&&R!==p.e||y!=null&&y.t!==p.t)return null;let k=p.i.r===3,v;if(k){let i=p.i;v=Array.from(i.o.keys()).indexOf(p.p)}else v=p.p;if(!(k&&M.size>v||de(M,v)))return null;E.push(v)}if(p.i)return e(p.i,E);E.reverse();try{t(p.e,E)}catch{return null}return E}function t(p,E){let M=p;for(let y=0;y<E.length-1;y++){let R=E[y];if(M=Q(M,R),!ie(M)||M===null)throw new Error(`Cannot resolve path at '${E.join("/")}'`)}return M}let r="replace",n="add",s="remove";function c(p,E,M){if(p.a.T.has(p))return;p.a.T.add(p);let{y,d:R}=M;switch(p.r){case 0:case 2:return b(p,E,y,R);case 1:return g(p,E,y,R);case 3:return w(p,E,y,R)}}function g(p,E,M,y){let{t:R,n:k}=p,v=p.e;v.length<R.length&&([R,v]=[v,R],[M,y]=[y,M]);let i=p.R===!0;for(let d=0;d<R.length;d++){let S=v[d],C=R[d];if((i||k?.get(d.toString()))&&S!==C){let P=S?.[A];if(P&&P.s)continue;let z=E.concat([d]);M.push({op:r,path:z,value:I(S)}),y.push({op:r,path:z,value:I(C)})}}for(let d=R.length;d<v.length;d++){let S=E.concat([d]);M.push({op:n,path:S,value:I(v[d])})}for(let d=v.length-1;R.length<=d;--d){let S=E.concat([d]);y.push({op:s,path:S})}}function b(p,E,M,y){let{t:R,e:k,r:v}=p;ae(p.n,(i,d)=>{let S=Q(R,i,v),C=Q(k,i,v),P=d?de(R,i)?r:n:s;if(S===C&&P===r)return;let z=E.concat(i);M.push(P===s?{op:P,path:z}:{op:P,path:z,value:I(C)}),y.push(P===n?{op:s,path:z}:P===s?{op:n,path:z,value:I(S)}:{op:r,path:z,value:I(S)})})}function w(p,E,M,y){let{t:R,e:k}=p,v=0;R.forEach(i=>{if(!k.has(i)){let d=E.concat([v]);M.push({op:s,path:d,value:i}),y.unshift({op:n,path:d,value:i})}v++}),v=0,k.forEach(i=>{if(!R.has(i)){let d=E.concat([v]);M.push({op:n,path:d,value:i}),y.unshift({op:s,path:d,value:i})}v++})}function l(p,E,M){let{y,d:R}=M;y.push({op:r,path:[],value:E===Fe?void 0:E}),R.push({op:r,path:[],value:p})}function f(p,E){return E.forEach(M=>{let{path:y,op:R}=M,k=p;for(let S=0;S<y.length-1;S++){let C=ne(k),P=y[S];typeof P!="string"&&typeof P!="number"&&(P=""+P),(C===0||C===1)&&(P==="__proto__"||P===he)&&V(19),te(k)&&P===Ee&&V(19),k=Q(k,P),ie(k)||V(18,y.join("/"))}let v=ne(k),i=_(M.value),d=y[y.length-1];switch(R){case r:switch(v){case 2:return k.set(d,i);case 3:V(16);default:return k[d]=i}case n:switch(v){case 1:return d==="-"?k.push(i):k.splice(d,0,i);case 2:return k.set(d,i);case 3:return k.add(i);default:return k[d]=i}case s:switch(v){case 1:return k.splice(d,1);case 2:return k.delete(d);case 3:return k.delete(M.value);default:return delete k[d]}default:V(17,R)}}),p}function _(p){if(!L(p))return p;if(ve(p))return p.map(_);if(Ce(p))return new Map(Array.from(p.entries()).map(([M,y])=>[M,_(y)]));if(Me(p))return new Set(Array.from(p).map(_));let E=Object.create(re(p));for(let M in p)E[M]=_(p[M]);return de(p,se)&&(E[se]=p[se]),E}function I(p){return K(p)?_(p):p}St(Ve,{N:f,O:c,M:l,getPath:e})}function Sr(){class e extends Map{constructor(l,f){super(),this[A]={r:2,i:f,a:f?f.a:Ue(),s:!1,u:!1,e:void 0,n:void 0,t:l,c:this,S:!1,g:!1,f:[]}}get size(){return j(this[A]).size}has(l){return j(this[A]).has(l)}set(l,f){let _=this[A];return g(_),(!j(_).has(l)||j(_).get(l)!==f)&&(r(_),q(_),_.n.set(l,!0),_.e.set(l,f),_.n.set(l,!0),Ne(_,l,f)),this}delete(l){if(!this.has(l))return!1;let f=this[A];return g(f),r(f),q(f),f.t.has(l)?f.n.set(l,!1):f.n.delete(l),f.e.delete(l),!0}clear(){let l=this[A];g(l),j(l).size&&(r(l),q(l),l.n=new Map,ae(l.t,f=>{l.n.set(f,!1)}),l.e.clear())}forEach(l,f){let _=this[A];j(_).forEach((I,p,E)=>{l.call(f,this.get(p),p,this)})}get(l){let f=this[A];g(f);let _=j(f).get(l);if(f.u||!L(_)||_!==f.t.get(l))return _;let I=be(f.a,_,f,l);return r(f),f.e.set(l,I),I}keys(){return j(this[A]).keys()}values(){let l=this.keys();return{[Symbol.iterator]:()=>this.values(),next:()=>{let f=l.next();return f.done?f:{done:!1,value:this.get(f.value)}}}}entries(){let l=this.keys();return{[Symbol.iterator]:()=>this.entries(),next:()=>{let f=l.next();if(f.done)return f;let _=this.get(f.value);return{done:!1,value:[f.value,_]}}}}[Symbol.iterator](){return this.entries()}}function t(w,l){let f=new e(w,l);return[f,f[A]]}function r(w){w.e||(w.n=new Map,w.e=new Map(w.t))}class n extends Set{constructor(l,f){super(),this[A]={r:3,i:f,a:f?f.a:Ue(),s:!1,u:!1,e:void 0,t:l,c:this,o:new Map,g:!1,S:!1,n:void 0,f:[]}}get size(){return j(this[A]).size}has(l){let f=this[A];return g(f),f.e?!!(f.e.has(l)||f.o.has(l)&&f.e.has(f.o.get(l))):f.t.has(l)}add(l){let f=this[A];return g(f),this.has(l)||(c(f),q(f),f.e.add(l),Ne(f,l,l)),this}delete(l){if(!this.has(l))return!1;let f=this[A];return g(f),c(f),q(f),f.e.delete(l)||(f.o.has(l)?f.e.delete(f.o.get(l)):!1)}clear(){let l=this[A];g(l),j(l).size&&(c(l),q(l),l.e.clear())}values(){let l=this[A];return g(l),c(l),l.e.values()}entries(){let l=this[A];return g(l),c(l),l.e.entries()}keys(){return this.values()}[Symbol.iterator](){return this.values()}forEach(l,f){let _=this.values(),I=_.next();for(;!I.done;)l.call(f,I.value,I.value,this),I=_.next()}}function s(w,l){let f=new n(w,l);return[f,f[A]]}function c(w){w.e||(w.e=new Set,w.t.forEach(l=>{if(L(l)){let f=be(w.a,l,w,l);w.o.set(l,f),w.e.add(f)}else w.e.add(l)}))}function g(w){w.g&&V(3,JSON.stringify(j(w)))}function b(w){if(w.r===3&&w.e){let l=new Set(w.e);w.e.clear(),l.forEach(f=>{w.e.add(ar(f))})}}St(Se,{w:t,V:s,fixSetContents:b})}function mr(){let e=new Set(["shift","unshift"]),t=new Set(["push","pop"]),r=new Set([...t,...e]),n=new Set(["reverse","sort"]),s=new Set([...r,...n,"splice"]),c=new Set(["find","findLast"]),g=new Set(["filter","slice","concat","flat",...c,"findIndex","findLastIndex","some","every","indexOf","lastIndexOf","includes","join","toString","toLocaleString"]);function b(i){return s.has(i)}function w(i){return g.has(i)}function l(i){return b(i)||w(i)}function f(i,d){i.operationMethod=d}function _(i){i.operationMethod=void 0}function I(i,d,S=!0){ge(i);let C=d();return q(i),S&&i.n.set("length",!0),C}function p(i){i.R=!0}function E(i,d){return i<0?Math.max(d+i,0):Math.min(i,d)}function M(i,d,S){for(let C=0;C<S.length;C++){let P=d+C;i.n.set(P,!0),Ne(i,P,S[C])}}function y(i,d,S){return I(i,()=>{let C=i.e.length,P=i.e[d](...S);return e.has(d)&&p(i),d==="push"&&S.length>0?M(i,C,S):d==="unshift"&&S.length>0&&M(i,0,S),r.has(d)?P:i.c})}function R(i,d,S){return I(i,()=>(i.e[d](...S),p(i),i.c),!1)}function k(i,d){return function(...S){let C=d;f(i,C);try{if(b(C)){if(r.has(C))return y(i,C,S);if(n.has(C))return R(i,C,S);if(C==="splice"){let P=I(i,()=>i.e.splice(...S));if(p(i),S.length>2){let z=E(S[0]??0,i.e.length);M(i,z,S.slice(2))}return P}}else return v(i,C,S)}finally{_(i)}}}function v(i,d,S){let C=j(i);if(d==="filter"){let P=S[0],z=[];for(let U=0;U<C.length;U++)P(C[U],U,C)&&z.push(i.c[U]);return z}if(c.has(d)){let P=S[0],z=d==="find",U=z?1:-1,B=z?0:C.length-1;for(let W=B;W>=0&&W<C.length;W+=U)if(P(C[W],W,C))return i.c[W];return}if(d==="slice"){let P=S[0]??0,z=S[1]??C.length,U=E(P,C.length),B=E(z,C.length),W=[];for(let Z=U;Z<B;Z++)W.push(i.c[Z]);return W}return C[d](...S)}St(pt,{createMethodInterceptor:k,isArrayOperationMethod:l,isMutatingArrayMethod:b})}var $=new Tt,wr=$.produce,br=$.produceWithPatches.bind($),Er=$.setAutoFreeze.bind($),vr=$.setUseStrictShallowCopy.bind($),Cr=$.setUseStrictIteration.bind($),Mr=$.applyPatches.bind($),Ar=$.createDraft.bind($),xr=$.finishDraft.bind($),_r=e=>e,Pr=e=>e});var Lt=vt((jr,Ft)=>{"use strict";Ft.exports=Wt()});var at={};Bt(at,{addAccessRule:()=>Re,decrypt:()=>Ye,deleteUserData:()=>it,encrypt:()=>Ze,exportKey:()=>Ht,exportUserData:()=>st,generateEncryptionKey:()=>Gt,getConsents:()=>ot,hasConsent:()=>rt,hasPermission:()=>pe,importKey:()=>qt,isAuditActive:()=>et,isCryptoAvailable:()=>Ct,logAudit:()=>fe,recordConsent:()=>ke,revokeConsent:()=>nt,sanitizeValue:()=>ue,setAuditLogger:()=>Xt,validateKey:()=>tt});var Ct=typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof crypto.subtle.generateKey=="function",Gt=async()=>{if(!Ct)throw new Error("Web Crypto API not available");let e=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),t=crypto.getRandomValues(new Uint8Array(12));return{key:e,iv:t}},Ht=async e=>{let t=await crypto.subtle.exportKey("raw",e.key);return{key:btoa(String.fromCharCode(...new Uint8Array(t))),iv:btoa(String.fromCharCode(...e.iv))}},qt=async(e,t)=>{let r=Uint8Array.from(atob(e),c=>c.charCodeAt(0)),n=Uint8Array.from(atob(t),c=>c.charCodeAt(0));return{key:await crypto.subtle.importKey("raw",r,{name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),iv:n}},Ze=async(e,t)=>{let r=new TextEncoder,n=r.encode(JSON.stringify(e)),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:t.iv},t.key,n),c=new Uint8Array(t.iv.length+s.byteLength);return c.set(t.iv),c.set(new Uint8Array(s),t.iv.length),btoa(String.fromCharCode(...c))},Ye=async(e,t)=>{let r=Uint8Array.from(atob(e),g=>g.charCodeAt(0)),n=r.slice(0,12),s=r.slice(12),c=await crypto.subtle.decrypt({name:"AES-GCM",iv:n},t.key,s);return JSON.parse(new TextDecoder().decode(c))},Oe=null,Xt=e=>{Oe=e},et=()=>Oe!==null,fe=e=>{Oe&&Oe(e)},Re=(e,t,r)=>{e.set(t instanceof RegExp?t.source:t,r)},pe=(e,t,r,n)=>{if(e.size===0)return!0;for(let[s,c]of e){let g;if(typeof s=="function")g=s(t,n);else try{g=new RegExp(s).test(t)}catch{continue}if(g)return c.includes(r)||c.includes("admin")}return!1},ue=e=>{if(typeof e=="string")return e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"[SEC-REMOVED]").replace(/javascript:/gi,"[SEC-REMOVED]").replace(/data:text\/html/gi,"[SEC-REMOVED]").replace(/vbscript:/gi,"[SEC-REMOVED]").replace(/on\w+\s*=/gi,"[SEC-REMOVED]=").replace(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi,"[SEC-REMOVED]").replace(/<object\b[^<]*(?:(?!<\/object>)<[^<]*)*<\/object>/gi,"[SEC-REMOVED]").replace(/<embed\b[^<]*(?:(?!<\/embed>)<[^<]*)*<\/embed>/gi,"[SEC-REMOVED]").replace(/<svg\b[^<]*(?:(?!<\/svg>)<[^<]*)*<\/svg>/gi,"[SEC-REMOVED]").replace(/<form\b[^<]*(?:(?!<\/form>)<[^<]*)*<\/form>/gi,"[SEC-REMOVED]").replace(/<base\b[^<]*(?:(?!<\/base>)<[^<]*)*<\/base>/gi,"[SEC-REMOVED]").replace(/<link\b[^<]*(?:(?!<\/link>)<[^<]*)*<\/link>/gi,"[SEC-REMOVED]").replace(/<meta\b[^<]*(?:(?!<\/meta>)<[^<]*)*<\/meta>/gi,"[SEC-REMOVED]").replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi,"[SEC-REMOVED]").replace(/&#[xX]?[0-9a-fA-F]+;?/g,"");if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.getPrototypeOf(e)===Object.prototype){let t={};for(let[r,n]of Object.entries(e))t[r]=ue(n);return t}return e}return Array.isArray(e)?e.map(t=>ue(t)):e},tt=e=>/^[a-zA-Z0-9_.-]+$/.test(e)&&e.length<=256,ke=(e,t,r,n)=>{let s={id:crypto.randomUUID(),purpose:r,granted:n,timestamp:Date.now()},c=e.get(t)||[];return c.push(s),e.set(t,c),fe({timestamp:Date.now(),action:"set",key:`consent:${r}`,userId:t,success:!0}),s},rt=(e,t,r)=>{let n=e.get(t);if(!n)return!1;for(let s=n.length-1;s>=0;s--){let c=n[s];if(c&&c.purpose===r)return c.granted}return!1},nt=(e,t,r)=>ke(e,t,r,!1),ot=(e,t)=>e.get(t)||[],st=(e,t)=>({userId:t,exportedAt:Date.now(),consents:e.get(t)||[]}),it=(e,t)=>{let r=e.get(t)?.length||0;return e.delete(t),{success:!0,deletedConsents:r}};var mt=null,Ae=null,Or=()=>{if(!mt)try{let e=Lt();mt=e.produce,Ae=e.freeze}catch(e){throw console.error("[gState] Immer not installed. Run: npm install immer"),e}},He={local:()=>typeof window<"u"?window.localStorage:null,session:()=>typeof window<"u"?window.sessionStorage:null,memory:()=>{let e=new Map;return{getItem:t=>e.get(t)||null,setItem:(t,r)=>e.set(t,r),removeItem:t=>e.delete(t),key:t=>Array.from(e.keys())[t]||null,get length(){return e.size}}}},Be=e=>{if(e===null||typeof e!="object")return e;if(typeof structuredClone=="function")try{return structuredClone(e)}catch{}let t=new WeakMap,r=n=>{if(n===null||typeof n!="object"||typeof n=="function")return n;if(t.has(n))return t.get(n);if(n instanceof Date)return new Date(n.getTime());if(n instanceof RegExp)return new RegExp(n.source,n.flags);if(n instanceof Map){let g=new Map;return t.set(n,g),n.forEach((b,w)=>g.set(r(w),r(b))),g}if(n instanceof Set){let g=new Set;return t.set(n,g),n.forEach(b=>g.add(r(b))),g}let s=Array.isArray(n)?[]:Object.create(Object.getPrototypeOf(n));t.set(n,s);let c=[...Object.keys(n),...Object.getOwnPropertySymbols(n)];for(let g of c)s[g]=r(n[g]);return s};return r(e)},Ge=(e,t)=>{if(e===t)return!0;if(e===null||t===null||typeof e!="object"||typeof t!="object")return e===t;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let s=0;s<e.length;s++)if(!Ge(e[s],t[s]))return!1;return!0}let r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;for(let s of r)if(!n.includes(s)||!Ge(e[s],t[s]))return!1;return!0},qe=e=>{let t=new Map,r=new Map,n=new Map,s=new Set,c=new Map,g=new Set,b=new Map,w=new Map,l=new Map,f=new Map,_=new Map,I=new Map,p=new Map,E=new Map,M=e?.namespace||"gstate",y=e?.silent??!1,R=e?.debounceTime??150,k=e?.version??0,v=e?.storage||He.local(),i=e?.onError,d=e?.maxObjectSize??5*1024*1024,S=e?.maxTotalSize??50*1024*1024,C=e?.encryptionKey??null,P=e?.validateInput??!0,z=e?.auditEnabled??!0,U=e?.userId,B=e?.immer??!0;B&&Or(),e?.accessRules&&e.accessRules.forEach(o=>Re(p,o.pattern,o.permissions));let W=!1,Z=!1,xe=!1,G=0,Xe=null,_e,Jt=new Promise(o=>{_e=o}),Qe=o=>{if(o==null)return 0;let a=0,u=[o],h=new WeakSet;for(;u.length>0;){let x=u.pop();if(typeof x=="boolean")a+=4;else if(typeof x=="number")a+=8;else if(typeof x=="string")a+=x.length*2;else if(typeof x=="object"&&x!==null){let m=x;if(h.has(m))continue;if(h.add(m),Array.isArray(m))for(let O=0;O<m.length;O++)u.push(m[O]);else for(let O of Object.keys(m))a+=O.length*2,u.push(m[O])}}return a},le=()=>`${M}_`,Y=(o,a)=>{f.forEach(u=>{if(u.hooks?.[o])try{u.hooks[o](a)}catch(h){let x=h instanceof Error?h:new Error(String(h));i?i(x,{operation:`plugin:${u.name}:${o}`,key:a.key}):y||console.error(`[gState] Plugin "${u.name}" error:`,h)}})},H=(o,a,u,h)=>{z&&et()&&fe&&fe({timestamp:Date.now(),action:o,key:a,userId:U,success:u,error:h})},ce=o=>{if(o&&(l.get(o)?.forEach(a=>wt(a)),b.get(o)?.forEach(a=>{try{a(N.get(o))}catch(u){let h=u instanceof Error?u:new Error(String(u));i?i(h,{operation:"watcher",key:o}):y||console.error(`[gState] Watcher error for "${o}":`,u)}}),c.get(o)?.forEach(a=>{try{a()}catch(u){let h=u instanceof Error?u:new Error(String(u));i?i(h,{operation:"keyListener",key:o}):y||console.error(`[gState] Listener error for "${o}":`,u)}})),W){Z=!0;return}s.forEach(a=>{try{a()}catch(u){let h=u instanceof Error?u:new Error(String(u));i?i(h,{operation:"listener"}):y||console.error("[gState] Global listener error:",u)}})},wt=o=>{let a=w.get(o),u=new Set;if(!a)return;let h=m=>(u.add(m),w.has(m)?w.get(m).lastValue:N.get(m)),x=a.selector(h);a.deps.forEach(m=>{if(!u.has(m)){let O=l.get(m);O&&(O.delete(o),O.size===0&&l.delete(m))}}),u.forEach(m=>{a.deps.has(m)||(l.has(m)||l.set(m,new Set),l.get(m).add(o))}),a.deps=u,Ge(a.lastValue,x)||(a.lastValue=B&&x!==null&&typeof x=="object"?Ae(Be(x),!0):x,r.set(o,(r.get(o)||0)+1),ce(o))},bt=async()=>{if(!v)return;try{let a={};t.forEach((x,m)=>{a[m]=x});let u=a,h=e?.encoded;h?u=btoa(JSON.stringify(a)):u=JSON.stringify(a),v.setItem(le().replace("_",""),JSON.stringify({v:1,t:Date.now(),e:null,d:u,_sys_v:k,_b64:h?!0:void 0})),H("set","FULL_STATE",!0)}catch(a){let u=a instanceof Error?a:new Error(String(a));i?i(u,{operation:"persist",key:"FULL_STATE"}):y||console.error("[gState] Persist failed:",u)}let o=Array.from(_.entries());_.clear();for(let[a,u]of o)try{let h=u.value,x=u.options.encoded||u.options.secure;if(u.options.encrypted){if(!C)throw new Error(`Encryption key missing for "${a}"`);h=await Ze(u.value,C)}else x?h=btoa(JSON.stringify(u.value)):typeof u.value=="object"&&u.value!==null&&(h=JSON.stringify(u.value));v.setItem(`${le()}${a}`,JSON.stringify({v:r.get(a)||1,t:Date.now(),e:u.options.ttl?Date.now()+u.options.ttl:null,d:h,_sys_v:k,_enc:u.options.encrypted?!0:void 0,_b64:x?!0:void 0})),H("set",a,!0)}catch(h){let x=h instanceof Error?h:new Error(String(h));i?i(x,{operation:"persist",key:a}):y||console.error("[gState] Persist failed:",x)}},ee={},N={_setSilently:(o,a)=>{let u=n.get(o)||0,h=B&&a!==null&&typeof a=="object"?Ae(Be(a),!0):a,x=Qe(h);G=G-u+x,n.set(o,x),t.set(o,h),r.set(o,(r.get(o)||0)+1)},_registerMethod:(o,a,u)=>{if(u!==void 0){let m=o,O=a;ee[m]||(ee[m]={}),ee[m][O]=u;return}console.warn("[gState] _registerMethod(name, fn) is deprecated. Use _registerMethod(pluginName, methodName, fn) instead.");let h=o,x=a;ee.core||(ee.core={}),ee.core[h]=x},set:(o,a,u={})=>{let h=t.get(o),x=B&&typeof a=="function"?mt(h,a):a;if(P&&!tt(o))return y||console.warn(`[gState] Invalid key: ${o}`),!1;if(!pe(p,o,"write",U))return H("set",o,!1,"RBAC Denied"),y||console.error(`[gState] RBAC Denied for "${o}"`),!1;let m=P?ue(x):x,O=n.get(o)||0;Y("onBeforeSet",{key:o,value:m,store:N,version:r.get(o)||0});let J=B&&m!==null&&typeof m=="object"?Ae(Be(m),!0):m;if(!Ge(h,J)){let D=d>0||S>0?Qe(J):0;if(d>0&&D>d){let T=new Error(`Object size (${D} bytes) exceeds maxObjectSize (${d} bytes)`);i?i(T,{operation:"set",key:o}):y||console.warn(`[gState] ${T.message} for "${o}"`)}if(S>0){let T=G-O+D;if(T>S){let Pe=new Error(`Total store size (${T} bytes) exceeds limit (${S} bytes)`);i?i(Pe,{operation:"set"}):y||console.warn(`[gState] ${Pe.message}`)}}G=G-O+D,n.set(o,D),t.set(o,J),r.set(o,(r.get(o)||0)+1);let X=u.persist===!0;return X&&(_.set(o,{value:J,options:{...u,persist:X,encoded:u.encoded||e?.encoded}}),Xe&&clearTimeout(Xe),Xe=setTimeout(bt,R)),Y("onSet",{key:o,value:J,store:N,version:r.get(o)}),H("set",o,!0),ce(o),!0}return!1},get:o=>{if(!pe(p,o,"read",U))return H("get",o,!1,"RBAC Denied"),null;let a=t.get(o);return Y("onGet",{store:N,key:o,value:a}),H("get",o,!0),a},compute:(o,a)=>{try{return w.has(o)||(w.set(o,{selector:a,lastValue:null,deps:new Set}),wt(o)),w.get(o).lastValue}catch(u){let h=u instanceof Error?u:new Error(String(u));return i?i(h,{operation:"compute",key:o}):y||console.error(`[gState] Compute error for "${o}":`,u),null}},watch:(o,a)=>{b.has(o)||b.set(o,new Set);let u=b.get(o);return u.add(a),()=>{u.delete(a),u.size===0&&b.delete(o)}},remove:o=>{if(!pe(p,o,"delete",U))return H("delete",o,!1,"RBAC Denied"),!1;let a=t.get(o),u=t.delete(o);return u&&(G-=n.get(o)||0,n.delete(o),Y("onRemove",{store:N,key:o,value:a})),r.set(o,(r.get(o)||0)+1),v&&v.removeItem(`${le()}${o}`),H("delete",o,!0),ce(o),u},delete:o=>N.remove(o),deleteAll:()=>{if(Array.from(t.keys()).forEach(o=>N.remove(o)),v){let o=le();for(let a=0;a<(v.length||0);a++){let u=v.key(a);u?.startsWith(o)&&(v.removeItem(u),a--)}}return G=0,n.clear(),!0},list:()=>Object.fromEntries(t.entries()),use:o=>{g.add(o)},transaction:o=>{W=!0,Y("onTransaction",{store:N,key:"START"});try{o()}finally{W=!1,Y("onTransaction",{store:N,key:"END"}),Z&&(Z=!1,ce())}},destroy:()=>{typeof window<"u"&&window.removeEventListener("beforeunload",Et),Y("onDestroy",{store:N}),s.clear(),c.clear(),b.clear(),w.clear(),l.clear(),f.clear(),t.clear(),n.clear(),G=0,p.clear(),E.clear()},_addPlugin:o=>{try{f.set(o.name,o),o.hooks?.onInstall?.({store:N})}catch(a){let u=a instanceof Error?a:new Error(String(a));i?i(u,{operation:"plugin:install",key:o.name}):y||console.error(`[gState] Failed to install plugin "${o.name}":`,a)}},_removePlugin:o=>{f.delete(o)},_subscribe:(o,a)=>{if(a){c.has(a)||c.set(a,new Set);let u=c.get(a);return u.add(o),()=>{u.delete(o),u.size===0&&c.delete(a)}}return s.add(o),()=>s.delete(o)},_getVersion:o=>r.get(o)??0,addAccessRule:(o,a)=>Re(p,o,a),hasPermission:(o,a,u)=>{if(p.size===0)return!0;for(let[h,x]of p){let m;if(typeof h=="function")m=h(o,u);else try{let O=I.get(h);O||(O=new RegExp(h),I.set(h,O)),m=O.test(o)}catch{continue}if(m)return x.includes(a)||x.includes("admin")}return!1},recordConsent:(o,a,u)=>ke(E,o,a,u),hasConsent:(o,a)=>rt(E,o,a),getConsents:o=>ot(E,o),revokeConsent:(o,a)=>nt(E,o,a),exportUserData:o=>st(E,o),deleteUserData:o=>it(E,o),get plugins(){return ee},get isReady(){return xe},get namespace(){return M},get userId(){return U},whenReady:()=>Jt};["addAccessRule","recordConsent","hasConsent","getConsents","revokeConsent","exportUserData","deleteUserData"].forEach(o=>{let a=N[o];a&&N._registerMethod("security",o,a)});let Et=()=>{_.size>0&&bt()};return typeof window<"u"&&window.addEventListener("beforeunload",Et),v?(async()=>{try{let a={},u=le(),h=0;for(let m=0;m<(v.length||0);m++){let O=v.key(m);if(!O||!O.startsWith(u))continue;let J=v.getItem(O);if(J)try{let D=JSON.parse(J),X=O.substring(u.length);if(h=Math.max(h,D._sys_v!==void 0?D._sys_v:D.v||0),D.e&&Date.now()>D.e){v.removeItem(O),m--;continue}let T=D.d;if(D._enc&&C)T=await Ye(T,C);else if(typeof T=="string"){if(D._b64)try{T=JSON.parse(atob(T))}catch{}else if(T.startsWith("{")||T.startsWith("["))try{T=JSON.parse(T)}catch{}}a[X]=T,H("hydrate",X,!0)}catch(D){H("hydrate",O,!1,String(D));let X=D instanceof Error?D:new Error(String(D));i?i(X,{operation:"hydration",key:O}):y||console.error(`[gState] Hydration failed for "${O}":`,D)}}let x=h<k&&e?.migrate?e.migrate(a,h):a;Object.entries(x).forEach(([m,O])=>{let J=B&&O!==null&&typeof O=="object"?Ae(Be(O),!0):O,D=Qe(J),X=n.get(m)||0;G=G-X+D,n.set(m,D),t.set(m,J),r.set(m,1)}),xe=!0,_e(),ce()}catch(a){xe=!0,_e();let u=a instanceof Error?a:new Error(String(a));i?i(u,{operation:"hydration"}):y||console.error("[gState] Hydration failed:",u)}})():(xe=!0,_e()),N};var Tr=(e,t)=>qe({...t,storage:e}),Ur=e=>qe({...e,storage:He.memory()}),Nr=e=>{let t=He.session();return t?qe({...e,storage:t}):null};export{at as Security,He as StorageAdapters,Ur as createMemoryStore,Nr as createSessionStore,qe as createStore,Tr as createStoreWithStorage};
|
|
1
|
+
var It=Object.defineProperty;var zt=(e,t)=>{for(var r in t)It(e,r,{get:t[r],enumerable:!0})};var mt=Symbol.for("immer-nothing"),ut=Symbol.for("immer-draftable"),b=Symbol.for("immer-state");function v(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var M=Object,W=M.getPrototypeOf,de="constructor",me="prototype",Ne="configurable",pe="enumerable",le="writable",q="value",z=e=>!!e&&!!e[b];function D(e){return e?St(e)||we(e)||!!e[ut]||!!e[de]?.[ut]||be(e)||Ee(e):!1}var Tt=M[me][de].toString(),lt=new WeakMap;function St(e){if(!e||!Ge(e))return!1;let t=W(e);if(t===null||t===M[me])return!0;let r=M.hasOwnProperty.call(t,de)&&t[de];if(r===Object)return!0;if(!L(r))return!1;let n=lt.get(r);return n===void 0&&(n=Function.toString.call(r),lt.set(r,n)),n===Tt}function Se(e,t,r=!0){Y(e)===0?(r?Reflect.ownKeys(e):M.keys(e)).forEach(s=>{t(s,e[s],e)}):e.forEach((n,s)=>t(s,n,e))}function Y(e){let t=e[b];return t?t.type_:we(e)?1:be(e)?2:Ee(e)?3:0}var ft=(e,t,r=Y(e))=>r===2?e.has(t):M[me].hasOwnProperty.call(e,t),Fe=(e,t,r=Y(e))=>r===2?e.get(t):e[t],_e=(e,t,r,n=Y(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function Vt(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var we=Array.isArray,be=e=>e instanceof Map,Ee=e=>e instanceof Set,Ge=e=>typeof e=="object",L=e=>typeof e=="function",Te=e=>typeof e=="boolean";function Nt(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var k=e=>e.copy_||e.base_;var He=e=>e.modified_?e.copy_:e.base_;function Ue(e,t){if(be(e))return new Map(e);if(Ee(e))return new Set(e);if(we(e))return Array[me].slice.call(e);let r=St(e);if(t===!0||t==="class_only"&&!r){let n=M.getOwnPropertyDescriptors(e);delete n[b];let s=Reflect.ownKeys(n);for(let a=0;a<s.length;a++){let f=s[a],_=n[f];_[le]===!1&&(_[le]=!0,_[Ne]=!0),(_.get||_.set)&&(n[f]={[Ne]:!0,[le]:!0,[pe]:_[pe],[q]:e[f]})}return M.create(W(e),n)}else{let n=W(e);if(n!==null&&r)return{...e};let s=M.create(n);return M.assign(s,e)}}function T(e,t=!1){return Ce(e)||z(e)||!D(e)||(Y(e)>1&&M.defineProperties(e,{set:ue,add:ue,clear:ue,delete:ue}),M.freeze(e),t&&Se(e,(r,n)=>{T(n,!0)},!1)),e}function Ft(){v(2)}var ue={[q]:Ft};function Ce(e){return e===null||!Ge(e)?!0:M.isFrozen(e)}var ge="MapSet",je="Patches",dt="ArrayMethods",wt={};function j(e){let t=wt[e];return t||v(0,e),t}var pt=e=>!!wt[e];var Q,bt=()=>Q,Ut=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:pt(ge)?j(ge):void 0,arrayMethodsPlugin_:pt(dt)?j(dt):void 0});function _t(e,t){t&&(e.patchPlugin_=j(je),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function $e(e){Le(e),e.drafts_.forEach(jt),e.drafts_=null}function Le(e){e===Q&&(Q=e.parent_)}var gt=e=>Q=Ut(Q,e);function jt(e){let t=e[b];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function ht(e,t){t.unfinalizedDrafts_=t.drafts_.length;let r=t.drafts_[0];if(e!==void 0&&e!==r){r[b].modified_&&($e(t),v(4)),D(e)&&(e=yt(t,e));let{patchPlugin_:s}=t;s&&s.generateReplacementPatches_(r[b].base_,e,t)}else e=yt(t,r);return $t(t,e,!0),$e(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==mt?e:void 0}function yt(e,t){if(Ce(t))return t;let r=t[b];if(!r)return he(t,e.handledSet_,e);if(!Pe(r,e))return t;if(!r.modified_)return r.base_;if(!r.finalized_){let{callbacks_:n}=r;if(n)for(;n.length>0;)n.pop()(e);Pt(r,e)}return r.copy_}function $t(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&T(t,r)}function Et(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var Pe=(e,t)=>e.scope_===t,Lt=[];function Ct(e,t,r,n){let s=k(e),a=e.type_;if(n!==void 0&&Fe(s,n,a)===t){_e(s,n,r,a);return}if(!e.draftLocations_){let _=e.draftLocations_=new Map;Se(s,(y,S)=>{if(z(S)){let x=_.get(S)||[];x.push(y),_.set(S,x)}})}let f=e.draftLocations_.get(t)??Lt;for(let _ of f)_e(s,_,r,a)}function Wt(e,t,r){e.callbacks_.push(function(s){let a=t;if(!a||!Pe(a,s))return;s.mapSetPlugin_?.fixSetContents(a);let f=He(a);Ct(e,a.draft_??a,f,r),Pt(a,s)})}function Pt(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let s=n.getPath(e);s&&n.generatePatches_(e,s,t)}Et(e)}}function Bt(e,t,r){let{scope_:n}=e;if(z(r)){let s=r[b];Pe(s,n)&&s.callbacks_.push(function(){fe(e);let f=He(s);Ct(e,r,f,t)})}else D(r)&&e.callbacks_.push(function(){let a=k(e);e.type_===3?a.has(r)&&he(r,n.handledSet_,n):Fe(a,t,e.type_)===r&&n.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&he(Fe(e.copy_,t,e.type_),n.handledSet_,n)})}function he(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||z(e)||t.has(e)||!D(e)||Ce(e)||(t.add(e),Se(e,(n,s)=>{if(z(s)){let a=s[b];if(Pe(a,r)){let f=He(a);_e(e,n,f,e.type_),Et(a)}}else D(s)&&he(s,t,r)})),e}function Gt(e,t){let r=we(e),n={type_:r?1:0,scope_:t?t.scope_:bt(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},s=n,a=ye;r&&(s=[n],a=X);let{revoke:f,proxy:_}=Proxy.revocable(s,a);return n.draft_=_,n.revoke_=f,[_,n]}var ye={get(e,t){if(t===b)return e;let r=e.scope_.arrayMethodsPlugin_,n=e.type_===1&&typeof t=="string";if(n&&r?.isArrayOperationMethod(t))return r.createMethodInterceptor(e,t);let s=k(e);if(!ft(s,t,e.type_))return Ht(e,s,t);let a=s[t];if(e.finalized_||!D(a)||n&&e.operationMethod&&r?.isMutatingArrayMethod(e.operationMethod)&&Nt(t))return a;if(a===Ve(e.base_,t)){fe(e);let f=e.type_===1?+t:t,_=Be(e.scope_,a,e,f);return e.copy_[f]=_}return a},has(e,t){return t in k(e)},ownKeys(e){return Reflect.ownKeys(k(e))},set(e,t,r){let n=Mt(k(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){let s=Ve(k(e),t),a=s?.[b];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(Vt(r,s)&&(r!==void 0||ft(e.base_,t,e.type_)))return!0;fe(e),We(e)}return e.copy_[t]===r&&(r!==void 0||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),Bt(e,t,r)),!0},deleteProperty(e,t){return fe(e),Ve(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),We(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let r=k(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[le]:!0,[Ne]:e.type_!==1||t!=="length",[pe]:n[pe],[q]:r[t]}},defineProperty(){v(11)},getPrototypeOf(e){return W(e.base_)},setPrototypeOf(){v(12)}},X={};for(let e in ye){let t=ye[e];X[e]=function(){let r=arguments;return r[0]=r[0][0],t.apply(this,r)}}X.deleteProperty=function(e,t){return X.set.call(this,e,t,void 0)};X.set=function(e,t,r){return ye.set.call(this,e[0],t,r,e[0])};function Ve(e,t){let r=e[b];return(r?k(r):e)[t]}function Ht(e,t,r){let n=Mt(t,r);return n?q in n?n[q]:n.get?.call(e.draft_):void 0}function Mt(e,t){if(!(t in e))return;let r=W(e);for(;r;){let n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=W(r)}}function We(e){e.modified_||(e.modified_=!0,e.parent_&&We(e.parent_))}function fe(e){e.copy_||(e.assigned_=new Map,e.copy_=Ue(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Jt=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,r,n)=>{if(L(t)&&!L(r)){let a=r;r=t;let f=this;return function(y=a,...S){return f.produce(y,x=>r.call(this,x,...S))}}L(r)||v(6),n!==void 0&&!L(n)&&v(7);let s;if(D(t)){let a=gt(this),f=Be(a,t,void 0),_=!0;try{s=r(f),_=!1}finally{_?$e(a):Le(a)}return _t(a,n),ht(s,a)}else if(!t||!Ge(t)){if(s=r(t),s===void 0&&(s=t),s===mt&&(s=void 0),this.autoFreeze_&&T(s,!0),n){let a=[],f=[];j(je).generateReplacementPatches_(t,s,{patches_:a,inversePatches_:f}),n(a,f)}return s}else v(1,t)},this.produceWithPatches=(t,r)=>{if(L(t))return(f,..._)=>this.produceWithPatches(f,y=>t(y,..._));let n,s;return[this.produce(t,r,(f,_)=>{n=f,s=_}),n,s]},Te(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Te(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Te(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){D(e)||v(8),z(e)&&(e=Kt(e));let t=gt(this),r=Be(t,e,void 0);return r[b].isManual_=!0,Le(t),r}finishDraft(e,t){let r=e&&e[b];(!r||!r.isManual_)&&v(9);let{scope_:n}=r;return _t(n,t),ht(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){let s=t[r];if(s.path.length===0&&s.op==="replace"){e=s.value;break}}r>-1&&(t=t.slice(r+1));let n=j(je).applyPatches_;return z(e)?n(e,t):this.produce(e,s=>n(s,t))}};function Be(e,t,r,n){let[s,a]=be(t)?j(ge).proxyMap_(t,r):Ee(t)?j(ge).proxySet_(t,r):Gt(t,r);return(r?.scope_??bt()).drafts_.push(s),a.callbacks_=r?.callbacks_??[],a.key_=n,r&&n!==void 0?Wt(r,a,n):a.callbacks_.push(function(y){y.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:S}=y;a.modified_&&S&&S.generatePatches_(a,[],y)}),s}function Kt(e){return z(e)||v(10,e),At(e)}function At(e){if(!D(e)||Ce(e))return e;let t=e[b],r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=Ue(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=Ue(e,!0);return Se(r,(s,a)=>{_e(r,s,At(a))},n),t&&(t.finalized_=!1),r}var qt=new Jt,vt=qt.produce;var rt={};zt(rt,{addAccessRule:()=>Ae,decrypt:()=>Ke,deleteUserData:()=>tt,encrypt:()=>Je,exportKey:()=>Xt,exportUserData:()=>et,generateEncryptionKey:()=>Qt,getConsents:()=>Ze,hasConsent:()=>Xe,hasPermission:()=>te,importKey:()=>Yt,isAuditActive:()=>qe,isCryptoAvailable:()=>xt,logAudit:()=>ee,recordConsent:()=>ve,revokeConsent:()=>Ye,sanitizeValue:()=>Z,setAuditLogger:()=>Zt,validateKey:()=>Qe});var xt=typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof crypto.subtle.generateKey=="function",Qt=async()=>{if(!xt)throw new Error("Web Crypto API not available");let e=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),t=crypto.getRandomValues(new Uint8Array(12));return{key:e,iv:t}},Xt=async e=>{let t=await crypto.subtle.exportKey("raw",e.key);return{key:btoa(String.fromCharCode(...new Uint8Array(t))),iv:btoa(String.fromCharCode(...e.iv))}},Yt=async(e,t)=>{let r=Uint8Array.from(atob(e),a=>a.charCodeAt(0)),n=Uint8Array.from(atob(t),a=>a.charCodeAt(0));return{key:await crypto.subtle.importKey("raw",r,{name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),iv:n}},Je=async(e,t)=>{let r=new TextEncoder,n=r.encode(JSON.stringify(e)),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:t.iv},t.key,n),a=new Uint8Array(t.iv.length+s.byteLength);return a.set(t.iv),a.set(new Uint8Array(s),t.iv.length),btoa(String.fromCharCode(...a))},Ke=async(e,t)=>{let r=Uint8Array.from(atob(e),f=>f.charCodeAt(0)),n=r.slice(0,12),s=r.slice(12),a=await crypto.subtle.decrypt({name:"AES-GCM",iv:n},t.key,s);return JSON.parse(new TextDecoder().decode(a))},Me=null,Zt=e=>{Me=e},qe=()=>Me!==null,ee=e=>{Me&&Me(e)},Ae=(e,t,r)=>{e.set(t instanceof RegExp?t.source:t,r)},te=(e,t,r,n)=>{if(e.size===0)return!0;for(let[s,a]of e){let f;if(typeof s=="function")f=s(t,n);else try{f=new RegExp(s).test(t)}catch{continue}if(f)return a.includes(r)||a.includes("admin")}return!1},Z=e=>{if(typeof e=="string")return e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"[SEC-REMOVED]").replace(/javascript:/gi,"[SEC-REMOVED]").replace(/data:text\/html/gi,"[SEC-REMOVED]").replace(/vbscript:/gi,"[SEC-REMOVED]").replace(/on\w+\s*=/gi,"[SEC-REMOVED]=").replace(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi,"[SEC-REMOVED]").replace(/<object\b[^<]*(?:(?!<\/object>)<[^<]*)*<\/object>/gi,"[SEC-REMOVED]").replace(/<embed\b[^<]*(?:(?!<\/embed>)<[^<]*)*<\/embed>/gi,"[SEC-REMOVED]").replace(/<svg\b[^<]*(?:(?!<\/svg>)<[^<]*)*<\/svg>/gi,"[SEC-REMOVED]").replace(/<form\b[^<]*(?:(?!<\/form>)<[^<]*)*<\/form>/gi,"[SEC-REMOVED]").replace(/<base\b[^<]*(?:(?!<\/base>)<[^<]*)*<\/base>/gi,"[SEC-REMOVED]").replace(/<link\b[^<]*(?:(?!<\/link>)<[^<]*)*<\/link>/gi,"[SEC-REMOVED]").replace(/<meta\b[^<]*(?:(?!<\/meta>)<[^<]*)*<\/meta>/gi,"[SEC-REMOVED]").replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi,"[SEC-REMOVED]").replace(/&#[xX]?[0-9a-fA-F]+;?/g,"");if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.getPrototypeOf(e)===Object.prototype){let t={};for(let[r,n]of Object.entries(e))t[r]=Z(n);return t}return e}return Array.isArray(e)?e.map(t=>Z(t)):e},Qe=e=>/^[a-zA-Z0-9_.-]+$/.test(e)&&e.length<=256,ve=(e,t,r,n)=>{let s={id:crypto.randomUUID(),purpose:r,granted:n,timestamp:Date.now()},a=e.get(t)||[];return a.push(s),e.set(t,a),ee({timestamp:Date.now(),action:"set",key:`consent:${r}`,userId:t,success:!0}),s},Xe=(e,t,r)=>{let n=e.get(t);if(!n)return!1;for(let s=n.length-1;s>=0;s--){let a=n[s];if(a&&a.purpose===r)return a.granted}return!1},Ye=(e,t,r)=>ve(e,t,r,!1),Ze=(e,t)=>e.get(t)||[],et=(e,t)=>({userId:t,exportedAt:Date.now(),consents:e.get(t)||[]}),tt=(e,t)=>{let r=e.get(t)?.length||0;return e.delete(t),{success:!0,deletedConsents:r}};var ne=e=>{if(e===null||typeof e!="object")return e;if(typeof structuredClone=="function")try{return structuredClone(e)}catch{}let t=new WeakMap,r=n=>{if(n===null||typeof n!="object"||typeof n=="function")return n;if(t.has(n))return t.get(n);if(n instanceof Date)return new Date(n.getTime());if(n instanceof RegExp)return new RegExp(n.source,n.flags);if(n instanceof Map){let f=new Map;return t.set(n,f),n.forEach((_,y)=>f.set(r(y),r(_))),f}if(n instanceof Set){let f=new Set;return t.set(n,f),n.forEach(_=>f.add(r(_))),f}let s=Array.isArray(n)?[]:Object.create(Object.getPrototypeOf(n));t.set(n,s);let a=[...Object.keys(n),...Object.getOwnPropertySymbols(n)];for(let f of a)s[f]=r(n[f]);return s};return r(e)},re=(e,t)=>{if(e===t)return!0;if(e===null||t===null||typeof e!="object"||typeof t!="object")return e===t;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let s=0;s<e.length;s++)if(!re(e[s],t[s]))return!1;return!0}let r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;for(let s=0;s<r.length;s++){let a=r[s];if(!(a in t)||!re(e[a],t[a]))return!1}return!0};var xe={local:()=>typeof window<"u"?window.localStorage:null,session:()=>typeof window<"u"?window.sessionStorage:null,memory:()=>{let e=new Map;return{getItem:t=>e.get(t)||null,setItem:(t,r)=>e.set(t,r),removeItem:t=>e.delete(t),key:t=>Array.from(e.keys())[t]||null,get length(){return e.size}}}},Oe=e=>{let t=new Map,r=new Map,n=new Map,s=new Set,a=new Map,f=new Set,_=new Map,y=new Map,S=new Map,x=new Map,B=new Map,Re=new Map,I=new Map,V=new Map,nt=e?.namespace||"gstate",E=e?.silent??!1,Ot=e?.debounceTime??150,ke=e?.version??0,C=e?.storage||xe.local(),g=e?.onError,oe=e?.maxObjectSize??5*1024*1024,se=e?.maxTotalSize??50*1024*1024,ie=e?.encryptionKey??null,ot=e?.validateInput??!0,Rt=e?.auditEnabled??!0,G=e?.userId,H=e?.immer??!0,kt=e?.persistByDefault??e?.persistence??e?.persist??!1;e?.accessRules&&e.accessRules.forEach(o=>Ae(I,o.pattern,o.permissions));let De=!1,Ie=!1,ae=!1,O=0,$=null,ce,Dt=new Promise(o=>{ce=o}),ze=o=>{if(o==null)return 0;let i=typeof o;if(i==="boolean")return 4;if(i==="number")return 8;if(i==="string")return o.length*2;if(i!=="object")return 0;let c=0,l=[o],p=new WeakSet;for(;l.length>0;){let u=l.pop();if(typeof u=="boolean")c+=4;else if(typeof u=="number")c+=8;else if(typeof u=="string")c+=u.length*2;else if(typeof u=="object"&&u!==null){let d=u;if(p.has(d))continue;if(p.add(d),Array.isArray(d))for(let h=0;h<d.length;h++)l.push(d[h]);else for(let h of Object.keys(d))c+=h.length*2,l.push(d[h])}}return c},J=()=>`${nt}_`,N=(o,i)=>{if(x.size!==0)for(let c of x.values()){let l=c.hooks?.[o];if(l)try{l(i)}catch(p){let u=p instanceof Error?p:new Error(String(p));g?g(u,{operation:`plugin:${c.name}:${o}`,key:i.key}):E||console.error(`[gState] Plugin "${c.name}" error:`,p)}}},R=(o,i,c,l)=>{Rt&&qe()&&ee&&ee({timestamp:Date.now(),action:o,key:i,userId:G,success:c,error:l})},K=o=>{if(o){let i=S.get(o);if(i)for(let p of i)st(p);let c=_.get(o);if(c){let p=w.get(o);for(let u of c)try{u(p)}catch(d){let h=d instanceof Error?d:new Error(String(d));g?g(h,{operation:"watcher",key:o}):E||console.error(`[gState] Watcher error for "${o}":`,d)}}let l=a.get(o);if(l)for(let p of l)try{p()}catch(u){let d=u instanceof Error?u:new Error(String(u));g?g(d,{operation:"keyListener",key:o}):E||console.error(`[gState] Listener error for "${o}":`,u)}}if(De){Ie=!0;return}for(let i of s)try{i()}catch(c){let l=c instanceof Error?c:new Error(String(c));g?g(l,{operation:"listener"}):E||console.error("[gState] Global listener error: ",c)}},st=o=>{let i=y.get(o),c=new Set;if(!i)return;let l=u=>(c.add(u),y.has(u)?y.get(u).lastValue:w.get(u)),p=i.selector(l);i.deps.forEach(u=>{if(!c.has(u)){let d=S.get(u);d&&(d.delete(o),d.size===0&&S.delete(u))}}),c.forEach(u=>{i.deps.has(u)||(S.has(u)||S.set(u,new Set),S.get(u).add(o))}),i.deps=c,re(i.lastValue,p)||(i.lastValue=H&&p!==null&&typeof p=="object"?T(ne(p),!0):p,r.set(o,(r.get(o)||0)+1),K(o))},it=async()=>{if(!C)return;try{let i={};t.forEach((p,u)=>{i[u]=p});let c,l=e?.encoded;l?c=btoa(JSON.stringify(i)):c=JSON.stringify(i),C.setItem(J().replace("_",""),JSON.stringify({v:1,t:Date.now(),e:null,d:c,_sys_v:ke,_b64:l?!0:void 0})),R("set","FULL_STATE",!0)}catch(i){let c=i instanceof Error?i:new Error(String(i));g?g(c,{operation:"persist",key:"FULL_STATE"}):E||console.error("[gState] Persist failed: ",c)}let o=Array.from(B.entries());B.clear();for(let[i,c]of o)try{let l=c.value,p=c.options.encoded||c.options.secure;if(c.options.encrypted){if(!ie)throw new Error(`Encryption key missing for "${i}"`);l=await Je(c.value,ie)}else p?l=btoa(JSON.stringify(c.value)):typeof c.value=="object"&&c.value!==null&&(l=JSON.stringify(c.value));C.setItem(`${J()}${i} `,JSON.stringify({v:r.get(i)||1,t:Date.now(),e:c.options.ttl?Date.now()+c.options.ttl:null,d:l,_sys_v:ke,_enc:c.options.encrypted?!0:void 0,_b64:p?!0:void 0})),R("set",i,!0)}catch(l){let p=l instanceof Error?l:new Error(String(l));g?g(p,{operation:"persist",key:i}):E||console.error("[gState] Persist failed: ",p)}},F={},w={_setSilently:(o,i)=>{let c=n.get(o)||0,l=H&&i!==null&&typeof i=="object"?T(ne(i),!0):i,p=ze(l);O=O-c+p,n.set(o,p),t.set(o,l),r.set(o,(r.get(o)||0)+1)},_registerMethod:(o,i,c)=>{if(c!==void 0){let u=o,d=i;F[u]||(F[u]={}),F[u][d]=c;return}console.warn("[gState] _registerMethod(name, fn) is deprecated. Use _registerMethod(pluginName, methodName, fn) instead.");let l=o,p=i;F.core||(F.core={}),F.core[l]=p},set:(o,i,c={})=>{let l=t.get(o),p=H&&typeof i=="function"?vt(l,i):i;if(ot&&!Qe(o))return E||console.warn(`[gState] Invalid key: ${o}`),!1;if(!te(I,o,"write",G))return R("set",o,!1,"RBAC Denied"),E||console.error(`[gState] RBAC Denied for "${o}"`),!1;let u=ot?Z(p):p,d=n.get(o)||0;N("onBeforeSet",{key:o,value:u,store:w,version:r.get(o)||0});let h=H&&u!==null&&typeof u=="object"?T(ne(u),!0):u;if(!re(l,h)){let A=oe>0||se>0?ze(h):0;if(oe>0&&A>oe){let U=new Error(`Object size (${A} bytes) exceeds maxObjectSize (${oe} bytes)`);g?g(U,{operation:"set",key:o}):E||console.warn(`[gState] ${U.message} for "${o}"`)}if(se>0){let U=O-d+A;if(U>se){let ct=new Error(`Total store size (${U} bytes) exceeds limit (${se} bytes)`);g?g(ct,{operation:"set"}):E||console.warn(`[gState] ${ct.message}`)}}O=O-d+A,n.set(o,A),t.set(o,h),r.set(o,(r.get(o)||0)+1);let P=c.persist??kt;return P&&(B.set(o,{value:h,options:{...c,persist:P,encoded:c.encoded||e?.encoded}}),$&&clearTimeout($),$=setTimeout(it,Ot)),N("onSet",{key:o,value:h,store:w,version:r.get(o)}),R("set",o,!0),K(o),!0}return!1},get:o=>{if(!te(I,o,"read",G))return R("get",o,!1,"RBAC Denied"),null;let i=t.get(o);return N("onGet",{store:w,key:o,value:i}),R("get",o,!0),i},compute:(o,i)=>{try{return y.has(o)||(y.set(o,{selector:i,lastValue:null,deps:new Set}),st(o)),y.get(o).lastValue}catch(c){let l=c instanceof Error?c:new Error(String(c));return g?g(l,{operation:"compute",key:o}):E||console.error(`[gState] Compute error for "${o}": `,c),null}},watch:(o,i)=>{_.has(o)||_.set(o,new Set);let c=_.get(o);return c.add(i),()=>{c.delete(i),c.size===0&&_.delete(o)}},remove:o=>{if(!te(I,o,"delete",G))return R("delete",o,!1,"RBAC Denied"),!1;let i=t.get(o),c=t.delete(o);return c&&(O-=n.get(o)||0,n.delete(o),N("onRemove",{store:w,key:o,value:i})),r.set(o,(r.get(o)||0)+1),C&&C.removeItem(`${J()}${o} `),R("delete",o,!0),K(o),c},delete:o=>w.remove(o),deleteAll:()=>{if(Array.from(t.keys()).forEach(o=>w.remove(o)),C){let o=J();for(let i=0;i<(C.length||0);i++){let c=C.key(i);c?.startsWith(o)&&(C.removeItem(c),i--)}}return O=0,n.clear(),!0},list:()=>Object.fromEntries(t.entries()),use:o=>{f.add(o)},transaction:o=>{De=!0,N("onTransaction",{store:w,key:"START"});try{o()}finally{De=!1,N("onTransaction",{store:w,key:"END"}),Ie&&(Ie=!1,K())}},destroy:()=>{$&&(clearTimeout($),$=null),B.clear(),typeof window<"u"&&window.removeEventListener("beforeunload",at),N("onDestroy",{store:w}),s.clear(),a.clear(),_.clear(),y.clear(),S.clear(),x.clear(),t.clear(),n.clear(),O=0,I.clear(),V.clear(),r.clear(),Re.clear(),f.clear()},_addPlugin:o=>{try{x.set(o.name,o),o.hooks?.onInstall?.({store:w})}catch(i){let c=i instanceof Error?i:new Error(String(i));g?g(c,{operation:"plugin:install",key:o.name}):E||console.error(`[gState] Failed to install plugin "${o.name}": `,i)}},_removePlugin:o=>{x.delete(o)},_subscribe:(o,i)=>{if(i){a.has(i)||a.set(i,new Set);let c=a.get(i);return c.add(o),()=>{c.delete(o),c.size===0&&a.delete(i)}}return s.add(o),()=>s.delete(o)},_getVersion:o=>r.get(o)??0,addAccessRule:(o,i)=>Ae(I,o,i),hasPermission:(o,i,c)=>{if(I.size===0)return!0;for(let[l,p]of I){let u;if(typeof l=="function")u=l(o,c);else try{let d=Re.get(l);d||(d=new RegExp(l),Re.set(l,d)),u=d.test(o)}catch{continue}if(u)return p.includes(i)||p.includes("admin")}return!1},recordConsent:(o,i,c)=>ve(V,o,i,c),hasConsent:(o,i)=>Xe(V,o,i),getConsents:o=>Ze(V,o),revokeConsent:(o,i)=>Ye(V,o,i),exportUserData:o=>et(V,o),deleteUserData:o=>tt(V,o),get plugins(){return F},get isReady(){return ae},get namespace(){return nt},get userId(){return G},whenReady:()=>Dt};["addAccessRule","recordConsent","hasConsent","getConsents","revokeConsent","exportUserData","deleteUserData"].forEach(o=>{let i=w[o];i&&w._registerMethod("security",o,i)});let at=()=>{B.size>0&&it()};return typeof window<"u"&&window.addEventListener("beforeunload",at),C?(async()=>{try{let i={},c=J(),l=0;for(let u=0;u<(C.length||0);u++){let d=C.key(u);if(!d||!d.startsWith(c))continue;let h=C.getItem(d);if(h)try{let m=JSON.parse(h),A=d.substring(c.length);if(l=Math.max(l,m._sys_v!==void 0?m._sys_v:m.v||0),m.e&&Date.now()>m.e){C.removeItem(d),u--;continue}let P=m.d;if(m._enc&&ie)P=await Ke(P,ie);else if(typeof P=="string"){if(m._b64)try{P=JSON.parse(atob(P))}catch{}else if(P.startsWith("{")||P.startsWith("["))try{P=JSON.parse(P)}catch{}}i[A]=P,R("hydrate",A,!0)}catch(m){R("hydrate",d,!1,String(m));let A=m instanceof Error?m:new Error(String(m));g?g(A,{operation:"hydration",key:d}):E||console.error(`[gState] Hydration failed for "${d}": `,m)}}let p=l<ke&&e?.migrate?e.migrate(i,l):i;Object.entries(p).forEach(([u,d])=>{let h=H&&d!==null&&typeof d=="object"?T(ne(d),!0):d,m=ze(h),A=n.get(u)||0;O=O-A+m,n.set(u,m),t.set(u,h),r.set(u,1)}),ae=!0,ce(),K()}catch(i){ae=!0,ce();let c=i instanceof Error?i:new Error(String(i));g?g(c,{operation:"hydration"}):E||console.error("[gState] Hydration failed: ",c)}})():(ae=!0,ce()),w};var ur=(e,t)=>Oe({...t,storage:e}),lr=e=>Oe({...e,storage:xe.memory()}),fr=e=>{let t=xe.session();return t?Oe({...e,storage:t}):null};export{rt as Security,xe as StorageAdapters,lr as createMemoryStore,fr as createSessionStore,Oe as createStore,ur as createStoreWithStorage};
|
package/core/types.d.ts
CHANGED
|
@@ -95,7 +95,24 @@ export interface GStatePlugins {
|
|
|
95
95
|
deletedConsents: number;
|
|
96
96
|
};
|
|
97
97
|
};
|
|
98
|
-
|
|
98
|
+
undoRedo: {
|
|
99
|
+
undo: () => boolean;
|
|
100
|
+
redo: () => boolean;
|
|
101
|
+
canUndo: () => boolean;
|
|
102
|
+
canRedo: () => boolean;
|
|
103
|
+
};
|
|
104
|
+
immer: {
|
|
105
|
+
setWithProduce: <T>(key: string, updater: (draft: T) => void) => boolean;
|
|
106
|
+
};
|
|
107
|
+
cloudSync: {
|
|
108
|
+
sync: () => Promise<{
|
|
109
|
+
status: string;
|
|
110
|
+
stats: import('../plugins/official/cloud-sync.plugin').SyncStats;
|
|
111
|
+
}>;
|
|
112
|
+
getStats: () => import('../plugins/official/cloud-sync.plugin').SyncStats;
|
|
113
|
+
};
|
|
114
|
+
logger: Record<string, never>;
|
|
115
|
+
[key: string]: unknown;
|
|
99
116
|
}
|
|
100
117
|
export interface StoreConfig<S extends Record<string, unknown> = Record<string, unknown>> {
|
|
101
118
|
namespace?: string;
|
package/core/utils.d.ts
ADDED
|
@@ -3,7 +3,7 @@ interface User {
|
|
|
3
3
|
name: string;
|
|
4
4
|
email: string;
|
|
5
5
|
}
|
|
6
|
-
export declare const fetchUser: (args
|
|
6
|
+
export declare const fetchUser: (args: {
|
|
7
7
|
id: string;
|
|
8
8
|
}) => Promise<User>;
|
|
9
9
|
export declare const useUser: import("../../advanced").IStore<Record<string, import("../../core/types").AsyncState<User>>> & {
|
|
@@ -11,15 +11,14 @@ interface User {
|
|
|
11
11
|
email: string
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
export const fetchUser = async (args?: { id: string }) => {
|
|
16
|
-
if (!args?.id) throw new Error('ID is required')
|
|
14
|
+
export const fetchUser = async (args: { id: string }) => {
|
|
17
15
|
const response = await fetch(`https://jsonplaceholder.typicode.com/users/${args.id}`)
|
|
18
16
|
if (!response.ok) throw new Error('User not found')
|
|
19
17
|
return response.json() as Promise<User>
|
|
20
18
|
}
|
|
21
19
|
|
|
22
|
-
|
|
20
|
+
// Basic Async Store for a specific user (Example)
|
|
21
|
+
export const useUser = createAsyncStore<User>(() => fetchUser({ id: '1' }), {
|
|
23
22
|
key: 'userData'
|
|
24
23
|
})
|
|
25
24
|
|
|
@@ -15,13 +15,11 @@ export const useCounter = gstate<CounterState>({
|
|
|
15
15
|
})
|
|
16
16
|
|
|
17
17
|
export const increment = () => {
|
|
18
|
-
|
|
19
|
-
useCounter.set('count', current + 1)
|
|
18
|
+
useCounter.set('count', (d) => d + 1)
|
|
20
19
|
useCounter.set('lastUpdated', new Date().toISOString())
|
|
21
20
|
}
|
|
22
21
|
|
|
23
22
|
export const decrement = () => {
|
|
24
|
-
|
|
25
|
-
useCounter.set('count', current - 1)
|
|
23
|
+
useCounter.set('count', (d) => d - 1)
|
|
26
24
|
useCounter.set('lastUpdated', new Date().toISOString())
|
|
27
25
|
}
|
|
@@ -25,19 +25,12 @@ export const useCart = gstate<CartState>({
|
|
|
25
25
|
})
|
|
26
26
|
|
|
27
27
|
export const addToCart = (product: Omit<CartItem, 'quantity'>) => {
|
|
28
|
-
useCart.
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (existingIndex > -1) {
|
|
33
|
-
const newItems = [...items]
|
|
34
|
-
const item = newItems[existingIndex]
|
|
35
|
-
if (item) {
|
|
36
|
-
newItems[existingIndex] = { ...item, quantity: item.quantity + 1 }
|
|
37
|
-
useCart.set('items', newItems)
|
|
38
|
-
}
|
|
28
|
+
useCart.set('items', (items) => {
|
|
29
|
+
const existing = items.find(item => item.id === product.id)
|
|
30
|
+
if (existing) {
|
|
31
|
+
existing.quantity++
|
|
39
32
|
} else {
|
|
40
|
-
|
|
33
|
+
items.push({ ...product, quantity: 1 })
|
|
41
34
|
}
|
|
42
35
|
})
|
|
43
36
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export interface VaultState extends Record<string, unknown> {
|
|
2
2
|
encryptedData: string | null;
|
|
3
3
|
}
|
|
4
|
-
export declare const initSecureVault: () => Promise<
|
|
5
|
-
export declare const useProfileStore:
|
|
4
|
+
export declare const initSecureVault: () => Promise<IStore<VaultState> & (<K extends keyof VaultState>(key: K) => readonly [VaultState[K] | undefined, (val: VaultState[K] | ((draft: VaultState[K]) => VaultState[K]), options?: unknown) => boolean])>;
|
|
5
|
+
export declare const useProfileStore: IStore<{
|
|
6
6
|
bio: string;
|
|
7
7
|
displayName: string;
|
|
8
8
|
}> & (<K extends "bio" | "displayName">(key: K) => readonly [{
|
|
@@ -18,4 +18,5 @@ export declare const useProfileStore: import("../../advanced").IStore<{
|
|
|
18
18
|
bio: string;
|
|
19
19
|
displayName: string;
|
|
20
20
|
}[K]), options?: unknown) => boolean]);
|
|
21
|
-
|
|
21
|
+
import type { IStore } from '../../index';
|
|
22
|
+
export declare const purgeUserData: (store: IStore<Record<string, unknown>>, userId: string) => void;
|
|
@@ -58,11 +58,13 @@ setAuditLogger((entry) => {
|
|
|
58
58
|
})
|
|
59
59
|
})
|
|
60
60
|
|
|
61
|
+
import type { IStore } from '../../index'
|
|
62
|
+
|
|
61
63
|
/**
|
|
62
64
|
* 4. GDPR "Right to be Forgotten"
|
|
63
65
|
* RECOMMENDED FOR: Compliance
|
|
64
66
|
*/
|
|
65
|
-
export const purgeUserData = (store:
|
|
67
|
+
export const purgeUserData = (store: IStore<Record<string, unknown>>, userId: string) => {
|
|
66
68
|
// Wipe state and storage
|
|
67
69
|
store.deleteAll()
|
|
68
70
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export declare const useEasyStore: import("../../advanced").IStore<{
|
|
2
|
+
user: {
|
|
3
|
+
name: string;
|
|
4
|
+
role: string;
|
|
5
|
+
};
|
|
6
|
+
theme: string;
|
|
7
|
+
notifications: number;
|
|
8
|
+
tempData: string;
|
|
9
|
+
}> & (<K extends "user" | "theme" | "notifications" | "tempData">(key: K) => readonly [{
|
|
10
|
+
user: {
|
|
11
|
+
name: string;
|
|
12
|
+
role: string;
|
|
13
|
+
};
|
|
14
|
+
theme: string;
|
|
15
|
+
notifications: number;
|
|
16
|
+
tempData: string;
|
|
17
|
+
}[K] | undefined, (val: {
|
|
18
|
+
user: {
|
|
19
|
+
name: string;
|
|
20
|
+
role: string;
|
|
21
|
+
};
|
|
22
|
+
theme: string;
|
|
23
|
+
notifications: number;
|
|
24
|
+
tempData: string;
|
|
25
|
+
}[K] | ((draft: {
|
|
26
|
+
user: {
|
|
27
|
+
name: string;
|
|
28
|
+
role: string;
|
|
29
|
+
};
|
|
30
|
+
theme: string;
|
|
31
|
+
notifications: number;
|
|
32
|
+
tempData: string;
|
|
33
|
+
}[K]) => {
|
|
34
|
+
user: {
|
|
35
|
+
name: string;
|
|
36
|
+
role: string;
|
|
37
|
+
};
|
|
38
|
+
theme: string;
|
|
39
|
+
notifications: number;
|
|
40
|
+
tempData: string;
|
|
41
|
+
}[K]), options?: unknown) => boolean]);
|
|
42
|
+
export declare const updateSettings: () => void;
|
|
43
|
+
export declare const checkState: () => void;
|
|
44
|
+
export declare const clearTempData: () => boolean;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { gstate } from '../../index'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Super Easy Example Store
|
|
5
|
+
* Demonstrates: set, get, delete, and multi-value state.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// 1. Define your initial state
|
|
9
|
+
const initialState = {
|
|
10
|
+
user: { name: 'Dario', role: 'Dev' },
|
|
11
|
+
theme: 'dark',
|
|
12
|
+
notifications: 5,
|
|
13
|
+
tempData: 'temporary information'
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// 2. Create the store (The "Magnetar" way)
|
|
17
|
+
export const useEasyStore = gstate(initialState)
|
|
18
|
+
|
|
19
|
+
// --- PRACTICAL ACTIONS ---
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* SET: Update specific values
|
|
23
|
+
*/
|
|
24
|
+
export const updateSettings = () => {
|
|
25
|
+
// Direct value set
|
|
26
|
+
useEasyStore.set('theme', 'light')
|
|
27
|
+
|
|
28
|
+
// Functional update (via Immer) - safe and easy for nested objects
|
|
29
|
+
useEasyStore.set('user', (draft) => {
|
|
30
|
+
draft.role = 'Architect'
|
|
31
|
+
})
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* GET: Retrieve values programmatically
|
|
36
|
+
*/
|
|
37
|
+
export const checkState = () => {
|
|
38
|
+
const currentTheme = useEasyStore.get('theme')
|
|
39
|
+
const user = useEasyStore.get('user')
|
|
40
|
+
|
|
41
|
+
console.log(`Current Theme: ${currentTheme}`)
|
|
42
|
+
console.log(`User Name: ${user?.name}`)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* DELETE: Remove a key from the state
|
|
47
|
+
*/
|
|
48
|
+
export const clearTempData = () => {
|
|
49
|
+
// Removes the 'tempData' key entirely from the store
|
|
50
|
+
const success = useEasyStore.delete('tempData')
|
|
51
|
+
return success
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* REACTIVE HOOK USAGE (Inside a component)
|
|
56
|
+
*
|
|
57
|
+
* const [theme, setTheme] = useEasyStore('theme')
|
|
58
|
+
* const [user] = useEasyStore('user')
|
|
59
|
+
*
|
|
60
|
+
* return <div className={theme}>{user.name}</div>
|
|
61
|
+
*/
|
|
@@ -5,5 +5,5 @@ export interface EditorState extends Record<string, unknown> {
|
|
|
5
5
|
}
|
|
6
6
|
export declare const useEditor: IStore<EditorState> & (<K extends keyof EditorState>(key: K) => readonly [EditorState[K] | undefined, (val: EditorState[K] | ((draft: EditorState[K]) => EditorState[K]), options?: unknown) => boolean]);
|
|
7
7
|
export declare const insertText: (text: string) => void;
|
|
8
|
-
export declare const undo: () =>
|
|
9
|
-
export declare const redo: () =>
|
|
8
|
+
export declare const undo: () => boolean;
|
|
9
|
+
export declare const redo: () => boolean;
|
|
@@ -14,16 +14,15 @@ export const useEditor = gstate<EditorState>({
|
|
|
14
14
|
cursorPosition: 0
|
|
15
15
|
})
|
|
16
16
|
|
|
17
|
-
// Add Plugin
|
|
17
|
+
// Add Plugin
|
|
18
18
|
useEditor._addPlugin(undoRedoPlugin({
|
|
19
19
|
limit: 50
|
|
20
|
-
})
|
|
20
|
+
}))
|
|
21
21
|
|
|
22
22
|
export const insertText = (text: string) => {
|
|
23
|
-
|
|
24
|
-
useEditor.set('content', current + text)
|
|
23
|
+
useEditor.set('content', (current) => current + text)
|
|
25
24
|
}
|
|
26
25
|
|
|
27
|
-
// Plugin methods access
|
|
28
|
-
export const undo = () =>
|
|
29
|
-
export const redo = () =>
|
|
26
|
+
// Plugin methods access - Type-safe!
|
|
27
|
+
export const undo = () => useEditor.plugins.undoRedo.undo()
|
|
28
|
+
export const redo = () => useEditor.plugins.undoRedo.redo()
|
package/index.d.ts
CHANGED
|
@@ -33,5 +33,6 @@ declare global {
|
|
|
33
33
|
var initState: typeof import("./core/hooks").initState;
|
|
34
34
|
var destroyState: typeof import("./core/hooks").destroyState;
|
|
35
35
|
var gState: IStore<Record<string, unknown>>;
|
|
36
|
+
var rgs: IStore<Record<string, unknown>>;
|
|
36
37
|
var useStore: typeof baseUseStore;
|
|
37
38
|
}
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var ht=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Ft=ht((tr,Bt)=>{"use strict";var lt=Object.defineProperty,Yt=Object.getOwnPropertyDescriptor,en=Object.getOwnPropertyNames,tn=Object.prototype.hasOwnProperty,nn=(e,t)=>{for(var n in t)lt(e,n,{get:t[n],enumerable:!0})},rn=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of en(t))!tn.call(e,o)&&o!==n&<(e,o,{get:()=>t[o],enumerable:!(r=Yt(t,o))||r.enumerable});return e},on=e=>rn(lt({},"__esModule",{value:!0}),e),Ot={};nn(Ot,{Immer:()=>$t,applyPatches:()=>kn,castDraft:()=>Mn,castImmutable:()=>In,createDraft:()=>An,current:()=>Ut,enableArrayMethods:()=>vn,enableMapSet:()=>bn,enablePatches:()=>wn,finishDraft:()=>Rn,freeze:()=>Je,immerable:()=>ae,isDraft:()=>L,isDraftable:()=>F,nothing:()=>Le,original:()=>an,produce:()=>xn,produceWithPatches:()=>En,setAutoFreeze:()=>Pn,setUseStrictIteration:()=>Cn,setUseStrictShallowCopy:()=>_n});Bt.exports=on(Ot);var Le=Symbol.for("immer-nothing"),ae=Symbol.for("immer-draftable"),C=Symbol.for("immer-state");function V(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var B=Object,oe=B.getPrototypeOf,me="constructor",Pe="prototype",ot="configurable",ze="enumerable",Ve="writable",we="value",L=e=>!!e&&!!e[C];function F(e){return e?Dt(e)||_e(e)||!!e[ae]||!!e[me]?.[ae]||Ce(e)||ke(e):!1}var sn=B[Pe][me].toString(),Ct=new WeakMap;function Dt(e){if(!e||!ce(e))return!1;let t=oe(e);if(t===null||t===B[Pe])return!0;let n=B.hasOwnProperty.call(t,me)&&t[me];if(n===Object)return!0;if(!re(n))return!1;let r=Ct.get(n);return r===void 0&&(r=Function.toString.call(n),Ct.set(n,r)),r===sn}function an(e){return L(e)||V(15,e),e[C].t}function le(e,t,n=!0){se(e)===0?(n?Reflect.ownKeys(e):B.keys(e)).forEach(r=>{t(r,e[r],e)}):e.forEach((r,o)=>t(o,r,e))}function se(e){let t=e[C];return t?t.r:_e(e)?1:Ce(e)?2:ke(e)?3:0}var he=(e,t,n=se(e))=>n===2?e.has(t):B[Pe].hasOwnProperty.call(e,t),Z=(e,t,n=se(e))=>n===2?e.get(t):e[t],Ne=(e,t,n,r=se(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function cn(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var _e=Array.isArray,Ce=e=>e instanceof Map,ke=e=>e instanceof Set,ce=e=>typeof e=="object",re=e=>typeof e=="function",nt=e=>typeof e=="boolean";function ln(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Tt=e=>ce(e)?e?.[C]:null,T=e=>e.e||e.t,un=e=>{let t=Tt(e);return t?t.e??t.t:e},ut=e=>e.s?e.e:e.t;function st(e,t){if(Ce(e))return new Map(e);if(ke(e))return new Set(e);if(_e(e))return Array[Pe].slice.call(e);let n=Dt(e);if(t===!0||t==="class_only"&&!n){let r=B.getOwnPropertyDescriptors(e);delete r[C];let o=Reflect.ownKeys(r);for(let s=0;s<o.length;s++){let d=o[s],S=r[d];S[Ve]===!1&&(S[Ve]=!0,S[ot]=!0),(S.get||S.set)&&(r[d]={[ot]:!0,[Ve]:!0,[ze]:S[ze],[we]:e[d]})}return B.create(oe(e),r)}else{let r=oe(e);if(r!==null&&n)return{...e};let o=B.create(r);return B.assign(o,e)}}function Je(e,t=!1){return qe(e)||L(e)||!F(e)||(se(e)>1&&B.defineProperties(e,{set:je,add:je,clear:je,delete:je}),B.freeze(e),t&&le(e,(n,r)=>{Je(r,!0)},!1)),e}function fn(){V(2)}var je={[we]:fn};function qe(e){return e===null||!ce(e)?!0:B.isFrozen(e)}var be="MapSet",$e="Patches",it="ArrayMethods",Ue={};function ie(e){let t=Ue[e];return t||V(0,e),t}var kt=e=>!!Ue[e];function ft(e,t){Ue[e]||(Ue[e]=t)}var ve,Ke=()=>ve,dn=(e,t)=>({o:[],i:e,l:t,F:!0,m:0,P:new Set,T:new Set,I:kt(be)?ie(be):void 0,E:kt(it)?ie(it):void 0});function At(e,t){t&&(e.x=ie($e),e.y=[],e.d=[],e.C=t)}function at(e){ct(e),e.o.forEach(pn),e.o=null}function ct(e){e===ve&&(ve=e.i)}var Rt=e=>ve=dn(ve,e);function pn(e){let t=e[C];t.r===0||t.r===1?t.b():t.g=!0}function Mt(e,t){t.m=t.o.length;let n=t.o[0];if(e!==void 0&&e!==n){n[C].s&&(at(t),V(4)),F(e)&&(e=It(t,e));let{x:r}=t;r&&r.M(n[C].t,e,t)}else e=It(t,n);return gn(t,e,!0),at(t),t.y&&t.C(t.y,t.d),e!==Le?e:void 0}function It(e,t){if(qe(t))return t;let n=t[C];if(!n)return Fe(t,e.P,e);if(!Ge(n,e))return t;if(!n.s)return n.t;if(!n.u){let{f:r}=n;if(r)for(;r.length>0;)r.pop()(e);zt(n,e)}return n.e}function gn(e,t,n=!1){!e.i&&e.l.h&&e.F&&Je(t,n)}function jt(e){e.u=!0,e.a.m--}var Ge=(e,t)=>e.a===t,yn=[];function Vt(e,t,n,r){let o=T(e),s=e.r;if(r!==void 0&&Z(o,r,s)===t){Ne(o,r,n,s);return}if(!e.D){let S=e.D=new Map;le(o,(g,a)=>{if(L(a)){let c=S.get(a)||[];c.push(g),S.set(a,c)}})}let d=e.D.get(t)??yn;for(let S of d)Ne(o,S,n,s)}function hn(e,t,n){e.f.push(function(r){let o=t;if(!o||!Ge(o,r))return;r.I?.fixSetContents(o);let s=ut(o);Vt(e,o.c??o,s,n),zt(o,r)})}function zt(e,t){if(e.s&&!e.u&&(e.r===3||e.r===1&&e.R||(e.n?.size??0)>0)){let{x:n}=t;if(n){let r=n.getPath(e);r&&n.O(e,r,t)}jt(e)}}function Be(e,t,n){let{a:r}=e;if(L(n)){let o=n[C];Ge(o,r)&&o.f.push(function(){Se(e);let s=ut(o);Vt(e,n,s,t)})}else F(n)&&e.f.push(function(){let o=T(e);e.r===3?o.has(n)&&Fe(n,r.P,r):Z(o,t,e.r)===n&&r.o.length>1&&(e.n.get(t)??!1)===!0&&e.e&&Fe(Z(e.e,t,e.r),r.P,r)})}function Fe(e,t,n){return!n.l.h&&n.m<1||L(e)||t.has(e)||!F(e)||qe(e)||(t.add(e),le(e,(r,o)=>{if(L(o)){let s=o[C];if(Ge(s,n)){let d=ut(s);Ne(e,r,d,e.r),jt(s)}}else F(o)&&Fe(o,t,n)})),e}function Sn(e,t){let n=_e(e),r={r:n?1:0,a:t?t.a:Ke(),s:!1,u:!1,n:void 0,i:t,t:e,c:null,e:null,b:null,S:!1,f:void 0},o=r,s=We;n&&(o=[r],s=xe);let{revoke:d,proxy:S}=Proxy.revocable(o,s);return r.c=S,r.b=d,[S,r]}var We={get(e,t){if(t===C)return e;let n=e.a.E,r=e.r===1&&typeof t=="string";if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let o=T(e);if(!he(o,t,e.r))return mn(e,o,t);let s=o[t];if(e.u||!F(s)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&ln(t))return s;if(s===rt(e.t,t)){Se(e);let d=e.r===1?+t:t,S=Ee(e.a,s,e,d);return e.e[d]=S}return s},has(e,t){return t in T(e)},ownKeys(e){return Reflect.ownKeys(T(e))},set(e,t,n){let r=Nt(T(e),t);if(r?.set)return r.set.call(e.c,n),!0;if(!e.s){let o=rt(T(e),t),s=o?.[C];if(s&&s.t===n)return e.e[t]=n,e.n.set(t,!1),!0;if(cn(n,o)&&(n!==void 0||he(e.t,t,e.r)))return!0;Se(e),H(e)}return e.e[t]===n&&(n!==void 0||t in e.e)||Number.isNaN(n)&&Number.isNaN(e.e[t])||(e.e[t]=n,e.n.set(t,!0),Be(e,t,n)),!0},deleteProperty(e,t){return Se(e),rt(e.t,t)!==void 0||t in e.t?(e.n.set(t,!1),H(e)):e.n.delete(t),e.e&&delete e.e[t],!0},getOwnPropertyDescriptor(e,t){let n=T(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[Ve]:!0,[ot]:e.r!==1||t!=="length",[ze]:r[ze],[we]:n[t]}},defineProperty(){V(11)},getPrototypeOf(e){return oe(e.t)},setPrototypeOf(){V(12)}},xe={};for(let e in We){let t=We[e];xe[e]=function(){let n=arguments;return n[0]=n[0][0],t.apply(this,n)}}xe.deleteProperty=function(e,t){return xe.set.call(this,e,t,void 0)};xe.set=function(e,t,n){return We.set.call(this,e[0],t,n,e[0])};function rt(e,t){let n=e[C];return(n?T(n):e)[t]}function mn(e,t,n){let r=Nt(t,n);return r?we in r?r[we]:r.get?.call(e.c):void 0}function Nt(e,t){if(!(t in e))return;let n=oe(e);for(;n;){let r=Object.getOwnPropertyDescriptor(n,t);if(r)return r;n=oe(n)}}function H(e){e.s||(e.s=!0,e.i&&H(e.i))}function Se(e){e.e||(e.n=new Map,e.e=st(e.t,e.a.l.A))}var $t=class{constructor(e){this.h=!0,this.A=!1,this._=!1,this.produce=(t,n,r)=>{if(re(t)&&!re(n)){let s=n;n=t;let d=this;return function(S=s,...g){return d.produce(S,a=>n.call(this,a,...g))}}re(n)||V(6),r!==void 0&&!re(r)&&V(7);let o;if(F(t)){let s=Rt(this),d=Ee(s,t,void 0),S=!0;try{o=n(d),S=!1}finally{S?at(s):ct(s)}return At(s,r),Mt(o,s)}else if(!t||!ce(t)){if(o=n(t),o===void 0&&(o=t),o===Le&&(o=void 0),this.h&&Je(o,!0),r){let s=[],d=[];ie($e).M(t,o,{y:s,d}),r(s,d)}return o}else V(1,t)},this.produceWithPatches=(t,n)=>{if(re(t))return(s,...d)=>this.produceWithPatches(s,S=>t(S,...d));let r,o;return[this.produce(t,n,(s,d)=>{r=s,o=d}),r,o]},nt(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),nt(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),nt(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){F(e)||V(8),L(e)&&(e=Ut(e));let t=Rt(this),n=Ee(t,e,void 0);return n[C].S=!0,ct(t),n}finishDraft(e,t){let n=e&&e[C];(!n||!n.S)&&V(9);let{a:r}=n;return At(r,t),Mt(void 0,r)}setAutoFreeze(e){this.h=e}setUseStrictShallowCopy(e){this.A=e}setUseStrictIteration(e){this._=e}shouldUseStrictIteration(){return this._}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let o=t[n];if(o.path.length===0&&o.op==="replace"){e=o.value;break}}n>-1&&(t=t.slice(n+1));let r=ie($e).N;return L(e)?r(e,t):this.produce(e,o=>r(o,t))}};function Ee(e,t,n,r){let[o,s]=Ce(t)?ie(be).w(t,n):ke(t)?ie(be).V(t,n):Sn(t,n);return(n?.a??Ke()).o.push(o),s.f=n?.f??[],s.p=r,n&&r!==void 0?hn(n,s,r):s.f.push(function(d){d.I?.fixSetContents(s);let{x:S}=d;s.s&&S&&S.O(s,[],d)}),o}function Ut(e){return L(e)||V(10,e),Kt(e)}function Kt(e){if(!F(e)||qe(e))return e;let t=e[C],n,r=!0;if(t){if(!t.s)return t.t;t.u=!0,n=st(e,t.a.l.A),r=t.a.l.shouldUseStrictIteration()}else n=st(e,!0);return le(n,(o,s)=>{Ne(n,o,Kt(s))},r),t&&(t.u=!1),n}function wn(){function e(f,b=[]){if(f.p!==void 0){let w=f.i.e??f.i.t,m=Tt(Z(w,f.p)),k=Z(w,f.p);if(k===void 0||k!==f.c&&k!==f.t&&k!==f.e||m!=null&&m.t!==f.t)return null;let M=f.i.r===3,P;if(M){let l=f.i;P=Array.from(l.o.keys()).indexOf(f.p)}else P=f.p;if(!(M&&w.size>P||he(w,P)))return null;b.push(P)}if(f.i)return e(f.i,b);b.reverse();try{t(f.e,b)}catch{return null}return b}function t(f,b){let w=f;for(let m=0;m<b.length-1;m++){let k=b[m];if(w=Z(w,k),!ce(w)||w===null)throw new Error(`Cannot resolve path at '${b.join("/")}'`)}return w}let n="replace",r="add",o="remove";function s(f,b,w){if(f.a.T.has(f))return;f.a.T.add(f);let{y:m,d:k}=w;switch(f.r){case 0:case 2:return S(f,b,m,k);case 1:return d(f,b,m,k);case 3:return g(f,b,m,k)}}function d(f,b,w,m){let{t:k,n:M}=f,P=f.e;P.length<k.length&&([k,P]=[P,k],[w,m]=[m,w]);let l=f.R===!0;for(let h=0;h<k.length;h++){let x=P[h],_=k[h];if((l||M?.get(h.toString()))&&x!==_){let I=x?.[C];if(I&&I.s)continue;let j=b.concat([h]);w.push({op:n,path:j,value:R(x)}),m.push({op:n,path:j,value:R(_)})}}for(let h=k.length;h<P.length;h++){let x=b.concat([h]);w.push({op:r,path:x,value:R(P[h])})}for(let h=P.length-1;k.length<=h;--h){let x=b.concat([h]);m.push({op:o,path:x})}}function S(f,b,w,m){let{t:k,e:M,r:P}=f;le(f.n,(l,h)=>{let x=Z(k,l,P),_=Z(M,l,P),I=h?he(k,l)?n:r:o;if(x===_&&I===n)return;let j=b.concat(l);w.push(I===o?{op:I,path:j}:{op:I,path:j,value:R(_)}),m.push(I===r?{op:o,path:j}:I===o?{op:r,path:j,value:R(x)}:{op:n,path:j,value:R(x)})})}function g(f,b,w,m){let{t:k,e:M}=f,P=0;k.forEach(l=>{if(!M.has(l)){let h=b.concat([P]);w.push({op:o,path:h,value:l}),m.unshift({op:r,path:h,value:l})}P++}),P=0,M.forEach(l=>{if(!k.has(l)){let h=b.concat([P]);w.push({op:r,path:h,value:l}),m.unshift({op:o,path:h,value:l})}P++})}function a(f,b,w){let{y:m,d:k}=w;m.push({op:n,path:[],value:b===Le?void 0:b}),k.push({op:n,path:[],value:f})}function c(f,b){return b.forEach(w=>{let{path:m,op:k}=w,M=f;for(let x=0;x<m.length-1;x++){let _=se(M),I=m[x];typeof I!="string"&&typeof I!="number"&&(I=""+I),(_===0||_===1)&&(I==="__proto__"||I===me)&&V(19),re(M)&&I===Pe&&V(19),M=Z(M,I),ce(M)||V(18,m.join("/"))}let P=se(M),l=y(w.value),h=m[m.length-1];switch(k){case n:switch(P){case 2:return M.set(h,l);case 3:V(16);default:return M[h]=l}case r:switch(P){case 1:return h==="-"?M.push(l):M.splice(h,0,l);case 2:return M.set(h,l);case 3:return M.add(l);default:return M[h]=l}case o:switch(P){case 1:return M.splice(h,1);case 2:return M.delete(h);case 3:return M.delete(w.value);default:return delete M[h]}default:V(17,k)}}),f}function y(f){if(!F(f))return f;if(_e(f))return f.map(y);if(Ce(f))return new Map(Array.from(f.entries()).map(([w,m])=>[w,y(m)]));if(ke(f))return new Set(Array.from(f).map(y));let b=Object.create(oe(f));for(let w in f)b[w]=y(f[w]);return he(f,ae)&&(b[ae]=f[ae]),b}function R(f){return L(f)?y(f):f}ft($e,{N:c,O:s,M:a,getPath:e})}function bn(){class e extends Map{constructor(a,c){super(),this[C]={r:2,i:c,a:c?c.a:Ke(),s:!1,u:!1,e:void 0,n:void 0,t:a,c:this,S:!1,g:!1,f:[]}}get size(){return T(this[C]).size}has(a){return T(this[C]).has(a)}set(a,c){let y=this[C];return d(y),(!T(y).has(a)||T(y).get(a)!==c)&&(n(y),H(y),y.n.set(a,!0),y.e.set(a,c),y.n.set(a,!0),Be(y,a,c)),this}delete(a){if(!this.has(a))return!1;let c=this[C];return d(c),n(c),H(c),c.t.has(a)?c.n.set(a,!1):c.n.delete(a),c.e.delete(a),!0}clear(){let a=this[C];d(a),T(a).size&&(n(a),H(a),a.n=new Map,le(a.t,c=>{a.n.set(c,!1)}),a.e.clear())}forEach(a,c){let y=this[C];T(y).forEach((R,f,b)=>{a.call(c,this.get(f),f,this)})}get(a){let c=this[C];d(c);let y=T(c).get(a);if(c.u||!F(y)||y!==c.t.get(a))return y;let R=Ee(c.a,y,c,a);return n(c),c.e.set(a,R),R}keys(){return T(this[C]).keys()}values(){let a=this.keys();return{[Symbol.iterator]:()=>this.values(),next:()=>{let c=a.next();return c.done?c:{done:!1,value:this.get(c.value)}}}}entries(){let a=this.keys();return{[Symbol.iterator]:()=>this.entries(),next:()=>{let c=a.next();if(c.done)return c;let y=this.get(c.value);return{done:!1,value:[c.value,y]}}}}[Symbol.iterator](){return this.entries()}}function t(g,a){let c=new e(g,a);return[c,c[C]]}function n(g){g.e||(g.n=new Map,g.e=new Map(g.t))}class r extends Set{constructor(a,c){super(),this[C]={r:3,i:c,a:c?c.a:Ke(),s:!1,u:!1,e:void 0,t:a,c:this,o:new Map,g:!1,S:!1,n:void 0,f:[]}}get size(){return T(this[C]).size}has(a){let c=this[C];return d(c),c.e?!!(c.e.has(a)||c.o.has(a)&&c.e.has(c.o.get(a))):c.t.has(a)}add(a){let c=this[C];return d(c),this.has(a)||(s(c),H(c),c.e.add(a),Be(c,a,a)),this}delete(a){if(!this.has(a))return!1;let c=this[C];return d(c),s(c),H(c),c.e.delete(a)||(c.o.has(a)?c.e.delete(c.o.get(a)):!1)}clear(){let a=this[C];d(a),T(a).size&&(s(a),H(a),a.e.clear())}values(){let a=this[C];return d(a),s(a),a.e.values()}entries(){let a=this[C];return d(a),s(a),a.e.entries()}keys(){return this.values()}[Symbol.iterator](){return this.values()}forEach(a,c){let y=this.values(),R=y.next();for(;!R.done;)a.call(c,R.value,R.value,this),R=y.next()}}function o(g,a){let c=new r(g,a);return[c,c[C]]}function s(g){g.e||(g.e=new Set,g.t.forEach(a=>{if(F(a)){let c=Ee(g.a,a,g,a);g.o.set(a,c),g.e.add(c)}else g.e.add(a)}))}function d(g){g.g&&V(3,JSON.stringify(T(g)))}function S(g){if(g.r===3&&g.e){let a=new Set(g.e);g.e.clear(),a.forEach(c=>{g.e.add(un(c))})}}ft(be,{w:t,V:o,fixSetContents:S})}function vn(){let e=new Set(["shift","unshift"]),t=new Set(["push","pop"]),n=new Set([...t,...e]),r=new Set(["reverse","sort"]),o=new Set([...n,...r,"splice"]),s=new Set(["find","findLast"]),d=new Set(["filter","slice","concat","flat",...s,"findIndex","findLastIndex","some","every","indexOf","lastIndexOf","includes","join","toString","toLocaleString"]);function S(l){return o.has(l)}function g(l){return d.has(l)}function a(l){return S(l)||g(l)}function c(l,h){l.operationMethod=h}function y(l){l.operationMethod=void 0}function R(l,h,x=!0){Se(l);let _=h();return H(l),x&&l.n.set("length",!0),_}function f(l){l.R=!0}function b(l,h){return l<0?Math.max(h+l,0):Math.min(l,h)}function w(l,h,x){for(let _=0;_<x.length;_++){let I=h+_;l.n.set(I,!0),Be(l,I,x[_])}}function m(l,h,x){return R(l,()=>{let _=l.e.length,I=l.e[h](...x);return e.has(h)&&f(l),h==="push"&&x.length>0?w(l,_,x):h==="unshift"&&x.length>0&&w(l,0,x),n.has(h)?I:l.c})}function k(l,h,x){return R(l,()=>(l.e[h](...x),f(l),l.c),!1)}function M(l,h){return function(...x){let _=h;c(l,_);try{if(S(_)){if(n.has(_))return m(l,_,x);if(r.has(_))return k(l,_,x);if(_==="splice"){let I=R(l,()=>l.e.splice(...x));if(f(l),x.length>2){let j=b(x[0]??0,l.e.length);w(l,j,x.slice(2))}return I}}else return P(l,_,x)}finally{y(l)}}}function P(l,h,x){let _=T(l);if(h==="filter"){let I=x[0],j=[];for(let N=0;N<_.length;N++)I(_[N],N,_)&&j.push(l.c[N]);return j}if(s.has(h)){let I=x[0],j=h==="find",N=j?1:-1,J=j?0:_.length-1;for(let K=J;K>=0&&K<_.length;K+=N)if(I(_[K],K,_))return l.c[K];return}if(h==="slice"){let I=x[0]??0,j=x[1]??_.length,N=b(I,_.length),J=b(j,_.length),K=[];for(let ee=N;ee<J;ee++)K.push(l.c[ee]);return K}return _[h](...x)}ft(it,{createMethodInterceptor:M,isArrayOperationMethod:a,isMutatingArrayMethod:S})}var U=new $t,xn=U.produce,En=U.produceWithPatches.bind(U),Pn=U.setAutoFreeze.bind(U),_n=U.setUseStrictShallowCopy.bind(U),Cn=U.setUseStrictIteration.bind(U),kn=U.applyPatches.bind(U),An=U.createDraft.bind(U),Rn=U.finishDraft.bind(U),Mn=e=>e,In=e=>e});var Lt=ht((rr,Wt)=>{"use strict";Wt.exports=Ft()});var St=typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof crypto.subtle.generateKey=="function",Gt=async()=>{if(!St)throw new Error("Web Crypto API not available");let e=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),t=crypto.getRandomValues(new Uint8Array(12));return{key:e,iv:t}},Ht=async e=>{let t=await crypto.subtle.exportKey("raw",e.key);return{key:btoa(String.fromCharCode(...new Uint8Array(t))),iv:btoa(String.fromCharCode(...e.iv))}},Xt=async(e,t)=>{let n=Uint8Array.from(atob(e),s=>s.charCodeAt(0)),r=Uint8Array.from(atob(t),s=>s.charCodeAt(0));return{key:await crypto.subtle.importKey("raw",n,{name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),iv:r}},mt=async(e,t)=>{let n=new TextEncoder,r=n.encode(JSON.stringify(e)),o=await crypto.subtle.encrypt({name:"AES-GCM",iv:t.iv},t.key,r),s=new Uint8Array(t.iv.length+o.byteLength);return s.set(t.iv),s.set(new Uint8Array(o),t.iv.length),btoa(String.fromCharCode(...s))},wt=async(e,t)=>{let n=Uint8Array.from(atob(e),d=>d.charCodeAt(0)),r=n.slice(0,12),o=n.slice(12),s=await crypto.subtle.decrypt({name:"AES-GCM",iv:r},t.key,o);return JSON.parse(new TextDecoder().decode(s))},De=null,Qt=e=>{De=e},bt=()=>De!==null,ye=e=>{De&&De(e)},Ye=(e,t,n)=>{e.set(t instanceof RegExp?t.source:t,n)},Te=(e,t,n,r)=>{if(e.size===0)return!0;for(let[o,s]of e){let d;if(typeof o=="function")d=o(t,r);else try{d=new RegExp(o).test(t)}catch{continue}if(d)return s.includes(n)||s.includes("admin")}return!1},ge=e=>{if(typeof e=="string")return e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"[SEC-REMOVED]").replace(/javascript:/gi,"[SEC-REMOVED]").replace(/data:text\/html/gi,"[SEC-REMOVED]").replace(/vbscript:/gi,"[SEC-REMOVED]").replace(/on\w+\s*=/gi,"[SEC-REMOVED]=").replace(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi,"[SEC-REMOVED]").replace(/<object\b[^<]*(?:(?!<\/object>)<[^<]*)*<\/object>/gi,"[SEC-REMOVED]").replace(/<embed\b[^<]*(?:(?!<\/embed>)<[^<]*)*<\/embed>/gi,"[SEC-REMOVED]").replace(/<svg\b[^<]*(?:(?!<\/svg>)<[^<]*)*<\/svg>/gi,"[SEC-REMOVED]").replace(/<form\b[^<]*(?:(?!<\/form>)<[^<]*)*<\/form>/gi,"[SEC-REMOVED]").replace(/<base\b[^<]*(?:(?!<\/base>)<[^<]*)*<\/base>/gi,"[SEC-REMOVED]").replace(/<link\b[^<]*(?:(?!<\/link>)<[^<]*)*<\/link>/gi,"[SEC-REMOVED]").replace(/<meta\b[^<]*(?:(?!<\/meta>)<[^<]*)*<\/meta>/gi,"[SEC-REMOVED]").replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi,"[SEC-REMOVED]").replace(/&#[xX]?[0-9a-fA-F]+;?/g,"");if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.getPrototypeOf(e)===Object.prototype){let t={};for(let[n,r]of Object.entries(e))t[n]=ge(r);return t}return e}return Array.isArray(e)?e.map(t=>ge(t)):e},et=e=>/^[a-zA-Z0-9_.-]+$/.test(e)&&e.length<=256,tt=(e,t,n,r)=>{let o={id:crypto.randomUUID(),purpose:n,granted:r,timestamp:Date.now()},s=e.get(t)||[];return s.push(o),e.set(t,s),ye({timestamp:Date.now(),action:"set",key:`consent:${n}`,userId:t,success:!0}),o},vt=(e,t,n)=>{let r=e.get(t);if(!r)return!1;for(let o=r.length-1;o>=0;o--){let s=r[o];if(s&&s.purpose===n)return s.granted}return!1},xt=(e,t,n)=>tt(e,t,n,!1),Et=(e,t)=>e.get(t)||[],Pt=(e,t)=>({userId:t,exportedAt:Date.now(),consents:e.get(t)||[]}),_t=(e,t)=>{let n=e.get(t)?.length||0;return e.delete(t),{success:!0,deletedConsents:n}};var dt=null,Ae=null,On=()=>{if(!dt)try{let e=Lt();dt=e.produce,Ae=e.freeze}catch(e){throw console.error("[gState] Immer not installed. Run: npm install immer"),e}},Dn={local:()=>typeof window<"u"?window.localStorage:null,session:()=>typeof window<"u"?window.sessionStorage:null,memory:()=>{let e=new Map;return{getItem:t=>e.get(t)||null,setItem:(t,n)=>e.set(t,n),removeItem:t=>e.delete(t),key:t=>Array.from(e.keys())[t]||null,get length(){return e.size}}}},He=e=>{if(e===null||typeof e!="object")return e;if(typeof structuredClone=="function")try{return structuredClone(e)}catch{}let t=new WeakMap,n=r=>{if(r===null||typeof r!="object"||typeof r=="function")return r;if(t.has(r))return t.get(r);if(r instanceof Date)return new Date(r.getTime());if(r instanceof RegExp)return new RegExp(r.source,r.flags);if(r instanceof Map){let d=new Map;return t.set(r,d),r.forEach((S,g)=>d.set(n(g),n(S))),d}if(r instanceof Set){let d=new Set;return t.set(r,d),r.forEach(S=>d.add(n(S))),d}let o=Array.isArray(r)?[]:Object.create(Object.getPrototypeOf(r));t.set(r,o);let s=[...Object.keys(r),...Object.getOwnPropertySymbols(r)];for(let d of s)o[d]=n(r[d]);return o};return n(e)},Xe=(e,t)=>{if(e===t)return!0;if(e===null||t===null||typeof e!="object"||typeof t!="object")return e===t;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let o=0;o<e.length;o++)if(!Xe(e[o],t[o]))return!1;return!0}let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let o of n)if(!r.includes(o)||!Xe(e[o],t[o]))return!1;return!0},ue=e=>{let t=new Map,n=new Map,r=new Map,o=new Set,s=new Map,d=new Set,S=new Map,g=new Map,a=new Map,c=new Map,y=new Map,R=new Map,f=new Map,b=new Map,w=e?.namespace||"gstate",m=e?.silent??!1,k=e?.debounceTime??150,M=e?.version??0,P=e?.storage||Dn.local(),l=e?.onError,h=e?.maxObjectSize??5*1024*1024,x=e?.maxTotalSize??50*1024*1024,_=e?.encryptionKey??null,I=e?.validateInput??!0,j=e?.auditEnabled??!0,N=e?.userId,J=e?.immer??!0;J&&On(),e?.accessRules&&e.accessRules.forEach(i=>Ye(f,i.pattern,i.permissions));let K=!1,ee=!1,Me=!1,q=0,Qe=null,Ie,qt=new Promise(i=>{Ie=i}),Ze=i=>{if(i==null)return 0;let u=0,p=[i],v=new WeakSet;for(;p.length>0;){let A=p.pop();if(typeof A=="boolean")u+=4;else if(typeof A=="number")u+=8;else if(typeof A=="string")u+=A.length*2;else if(typeof A=="object"&&A!==null){let E=A;if(v.has(E))continue;if(v.add(E),Array.isArray(E))for(let O=0;O<E.length;O++)p.push(E[O]);else for(let O of Object.keys(E))u+=O.length*2,p.push(E[O])}}return u},de=()=>`${w}_`,te=(i,u)=>{c.forEach(p=>{if(p.hooks?.[i])try{p.hooks[i](u)}catch(v){let A=v instanceof Error?v:new Error(String(v));l?l(A,{operation:`plugin:${p.name}:${i}`,key:u.key}):m||console.error(`[gState] Plugin "${p.name}" error:`,v)}})},G=(i,u,p,v)=>{j&&bt()&&ye&&ye({timestamp:Date.now(),action:i,key:u,userId:N,success:p,error:v})},pe=i=>{if(i&&(a.get(i)?.forEach(u=>pt(u)),S.get(i)?.forEach(u=>{try{u($.get(i))}catch(p){let v=p instanceof Error?p:new Error(String(p));l?l(v,{operation:"watcher",key:i}):m||console.error(`[gState] Watcher error for "${i}":`,p)}}),s.get(i)?.forEach(u=>{try{u()}catch(p){let v=p instanceof Error?p:new Error(String(p));l?l(v,{operation:"keyListener",key:i}):m||console.error(`[gState] Listener error for "${i}":`,p)}})),K){ee=!0;return}o.forEach(u=>{try{u()}catch(p){let v=p instanceof Error?p:new Error(String(p));l?l(v,{operation:"listener"}):m||console.error("[gState] Global listener error:",p)}})},pt=i=>{let u=g.get(i),p=new Set;if(!u)return;let v=E=>(p.add(E),g.has(E)?g.get(E).lastValue:$.get(E)),A=u.selector(v);u.deps.forEach(E=>{if(!p.has(E)){let O=a.get(E);O&&(O.delete(i),O.size===0&&a.delete(E))}}),p.forEach(E=>{u.deps.has(E)||(a.has(E)||a.set(E,new Set),a.get(E).add(i))}),u.deps=p,Xe(u.lastValue,A)||(u.lastValue=J&&A!==null&&typeof A=="object"?Ae(He(A),!0):A,n.set(i,(n.get(i)||0)+1),pe(i))},gt=async()=>{if(!P)return;try{let u={};t.forEach((A,E)=>{u[E]=A});let p=u,v=e?.encoded;v?p=btoa(JSON.stringify(u)):p=JSON.stringify(u),P.setItem(de().replace("_",""),JSON.stringify({v:1,t:Date.now(),e:null,d:p,_sys_v:M,_b64:v?!0:void 0})),G("set","FULL_STATE",!0)}catch(u){let p=u instanceof Error?u:new Error(String(u));l?l(p,{operation:"persist",key:"FULL_STATE"}):m||console.error("[gState] Persist failed:",p)}let i=Array.from(y.entries());y.clear();for(let[u,p]of i)try{let v=p.value,A=p.options.encoded||p.options.secure;if(p.options.encrypted){if(!_)throw new Error(`Encryption key missing for "${u}"`);v=await mt(p.value,_)}else A?v=btoa(JSON.stringify(p.value)):typeof p.value=="object"&&p.value!==null&&(v=JSON.stringify(p.value));P.setItem(`${de()}${u}`,JSON.stringify({v:n.get(u)||1,t:Date.now(),e:p.options.ttl?Date.now()+p.options.ttl:null,d:v,_sys_v:M,_enc:p.options.encrypted?!0:void 0,_b64:A?!0:void 0})),G("set",u,!0)}catch(v){let A=v instanceof Error?v:new Error(String(v));l?l(A,{operation:"persist",key:u}):m||console.error("[gState] Persist failed:",A)}},ne={},$={_setSilently:(i,u)=>{let p=r.get(i)||0,v=J&&u!==null&&typeof u=="object"?Ae(He(u),!0):u,A=Ze(v);q=q-p+A,r.set(i,A),t.set(i,v),n.set(i,(n.get(i)||0)+1)},_registerMethod:(i,u,p)=>{if(p!==void 0){let E=i,O=u;ne[E]||(ne[E]={}),ne[E][O]=p;return}console.warn("[gState] _registerMethod(name, fn) is deprecated. Use _registerMethod(pluginName, methodName, fn) instead.");let v=i,A=u;ne.core||(ne.core={}),ne.core[v]=A},set:(i,u,p={})=>{let v=t.get(i),A=J&&typeof u=="function"?dt(v,u):u;if(I&&!et(i))return m||console.warn(`[gState] Invalid key: ${i}`),!1;if(!Te(f,i,"write",N))return G("set",i,!1,"RBAC Denied"),m||console.error(`[gState] RBAC Denied for "${i}"`),!1;let E=I?ge(A):A,O=r.get(i)||0;te("onBeforeSet",{key:i,value:E,store:$,version:n.get(i)||0});let W=J&&E!==null&&typeof E=="object"?Ae(He(E),!0):E;if(!Xe(v,W)){let D=h>0||x>0?Ze(W):0;if(h>0&&D>h){let z=new Error(`Object size (${D} bytes) exceeds maxObjectSize (${h} bytes)`);l?l(z,{operation:"set",key:i}):m||console.warn(`[gState] ${z.message} for "${i}"`)}if(x>0){let z=q-O+D;if(z>x){let Oe=new Error(`Total store size (${z} bytes) exceeds limit (${x} bytes)`);l?l(Oe,{operation:"set"}):m||console.warn(`[gState] ${Oe.message}`)}}q=q-O+D,r.set(i,D),t.set(i,W),n.set(i,(n.get(i)||0)+1);let Q=p.persist===!0;return Q&&(y.set(i,{value:W,options:{...p,persist:Q,encoded:p.encoded||e?.encoded}}),Qe&&clearTimeout(Qe),Qe=setTimeout(gt,k)),te("onSet",{key:i,value:W,store:$,version:n.get(i)}),G("set",i,!0),pe(i),!0}return!1},get:i=>{if(!Te(f,i,"read",N))return G("get",i,!1,"RBAC Denied"),null;let u=t.get(i);return te("onGet",{store:$,key:i,value:u}),G("get",i,!0),u},compute:(i,u)=>{try{return g.has(i)||(g.set(i,{selector:u,lastValue:null,deps:new Set}),pt(i)),g.get(i).lastValue}catch(p){let v=p instanceof Error?p:new Error(String(p));return l?l(v,{operation:"compute",key:i}):m||console.error(`[gState] Compute error for "${i}":`,p),null}},watch:(i,u)=>{S.has(i)||S.set(i,new Set);let p=S.get(i);return p.add(u),()=>{p.delete(u),p.size===0&&S.delete(i)}},remove:i=>{if(!Te(f,i,"delete",N))return G("delete",i,!1,"RBAC Denied"),!1;let u=t.get(i),p=t.delete(i);return p&&(q-=r.get(i)||0,r.delete(i),te("onRemove",{store:$,key:i,value:u})),n.set(i,(n.get(i)||0)+1),P&&P.removeItem(`${de()}${i}`),G("delete",i,!0),pe(i),p},delete:i=>$.remove(i),deleteAll:()=>{if(Array.from(t.keys()).forEach(i=>$.remove(i)),P){let i=de();for(let u=0;u<(P.length||0);u++){let p=P.key(u);p?.startsWith(i)&&(P.removeItem(p),u--)}}return q=0,r.clear(),!0},list:()=>Object.fromEntries(t.entries()),use:i=>{d.add(i)},transaction:i=>{K=!0,te("onTransaction",{store:$,key:"START"});try{i()}finally{K=!1,te("onTransaction",{store:$,key:"END"}),ee&&(ee=!1,pe())}},destroy:()=>{typeof window<"u"&&window.removeEventListener("beforeunload",yt),te("onDestroy",{store:$}),o.clear(),s.clear(),S.clear(),g.clear(),a.clear(),c.clear(),t.clear(),r.clear(),q=0,f.clear(),b.clear()},_addPlugin:i=>{try{c.set(i.name,i),i.hooks?.onInstall?.({store:$})}catch(u){let p=u instanceof Error?u:new Error(String(u));l?l(p,{operation:"plugin:install",key:i.name}):m||console.error(`[gState] Failed to install plugin "${i.name}":`,u)}},_removePlugin:i=>{c.delete(i)},_subscribe:(i,u)=>{if(u){s.has(u)||s.set(u,new Set);let p=s.get(u);return p.add(i),()=>{p.delete(i),p.size===0&&s.delete(u)}}return o.add(i),()=>o.delete(i)},_getVersion:i=>n.get(i)??0,addAccessRule:(i,u)=>Ye(f,i,u),hasPermission:(i,u,p)=>{if(f.size===0)return!0;for(let[v,A]of f){let E;if(typeof v=="function")E=v(i,p);else try{let O=R.get(v);O||(O=new RegExp(v),R.set(v,O)),E=O.test(i)}catch{continue}if(E)return A.includes(u)||A.includes("admin")}return!1},recordConsent:(i,u,p)=>tt(b,i,u,p),hasConsent:(i,u)=>vt(b,i,u),getConsents:i=>Et(b,i),revokeConsent:(i,u)=>xt(b,i,u),exportUserData:i=>Pt(b,i),deleteUserData:i=>_t(b,i),get plugins(){return ne},get isReady(){return Me},get namespace(){return w},get userId(){return N},whenReady:()=>qt};["addAccessRule","recordConsent","hasConsent","getConsents","revokeConsent","exportUserData","deleteUserData"].forEach(i=>{let u=$[i];u&&$._registerMethod("security",i,u)});let yt=()=>{y.size>0&>()};return typeof window<"u"&&window.addEventListener("beforeunload",yt),P?(async()=>{try{let u={},p=de(),v=0;for(let E=0;E<(P.length||0);E++){let O=P.key(E);if(!O||!O.startsWith(p))continue;let W=P.getItem(O);if(W)try{let D=JSON.parse(W),Q=O.substring(p.length);if(v=Math.max(v,D._sys_v!==void 0?D._sys_v:D.v||0),D.e&&Date.now()>D.e){P.removeItem(O),E--;continue}let z=D.d;if(D._enc&&_)z=await wt(z,_);else if(typeof z=="string"){if(D._b64)try{z=JSON.parse(atob(z))}catch{}else if(z.startsWith("{")||z.startsWith("["))try{z=JSON.parse(z)}catch{}}u[Q]=z,G("hydrate",Q,!0)}catch(D){G("hydrate",O,!1,String(D));let Q=D instanceof Error?D:new Error(String(D));l?l(Q,{operation:"hydration",key:O}):m||console.error(`[gState] Hydration failed for "${O}":`,D)}}let A=v<M&&e?.migrate?e.migrate(u,v):u;Object.entries(A).forEach(([E,O])=>{let W=J&&O!==null&&typeof O=="object"?Ae(He(O),!0):O,D=Ze(W),Q=r.get(E)||0;q=q-Q+D,r.set(E,D),t.set(E,W),n.set(E,1)}),Me=!0,Ie(),pe()}catch(u){Me=!0,Ie();let p=u instanceof Error?u:new Error(String(u));l?l(p,{operation:"hydration"}):m||console.error("[gState] Hydration failed:",p)}})():(Me=!0,Ie()),$};import{useSyncExternalStore as Jt,useDebugValue as Tn,useMemo as fe}from"react";var Y=null,jn=e=>{Y&&!e?.namespace&&(e?.silent||console.warn("[gState] Store already exists. Pass a unique namespace to create additional stores."));let t=ue(e);return Y=t,t},Vn=()=>{Y&&(Y.destroy(),Y=null)},zn=e=>{let t=e||Y,n=fe(()=>r=>t?t._subscribe(r):()=>{},[t]);return Jt(n,()=>t?t.isReady:!1,()=>!0)},X=()=>Y;var Re=(e,t)=>{let n=fe(()=>t||Y,[t]),r=fe(()=>({set:()=>(console.warn("[gState] Store not initialized. Call initState() or pass a store instance."),!1),get:()=>null,remove:()=>!1,delete:()=>!1,deleteAll:()=>!1,list:()=>({}),compute:()=>null,watch:()=>()=>{},use:()=>{},transaction:()=>{},destroy:()=>{},_subscribe:()=>()=>{},_setSilently:()=>{},_registerMethod:()=>{},_addPlugin:()=>{},_removePlugin:()=>{},_getVersion:()=>0,get isReady(){return!1},whenReady:()=>Promise.resolve(),get plugins(){return new Proxy({},{get:(g,a)=>new Proxy({},{get:(c,y)=>(...R)=>(console.warn(`[gState] Ghost store: Cannot call store.plugins.${String(a)}.${String(y)}() - store not initialized. Call initState() first or pass a store instance to useStore().`),null)})})}}),[]),o=n||r;fe(()=>{!n&&!t&&console.warn("[gState] Using ghost store - no store initialized. Call initState() or pass a store instance.")},[n,t]);let s=fe(()=>g=>o._subscribe(g,e),[o,e]),d=Jt(s,()=>o.get(e)??void 0,()=>{}),S=fe(()=>(g,a)=>o.set(e,g,a),[o,e]);return Tn(d,g=>`${e}: ${JSON.stringify(g)}`),[d,S]};var Nn=(e,t)=>{let n=t?.key||"async_data",r=t?.store||ue({namespace:`async_${n}`,silent:!0});return r.get(n)==null&&r.set(n,{data:null,loading:!1,error:null,updatedAt:null}),Object.assign(r,{execute:async()=>{let s=r.get(n);r.set(n,{...s||{data:null,loading:!1,error:null,updatedAt:null},loading:!0,error:null}),"whenReady"in r&&!r.isReady&&await r.whenReady();try{let d=await e(),S=r.get(n);r.set(n,{...S||{data:null,loading:!1,error:null,updatedAt:null},data:d,loading:!1,updatedAt:Date.now()},{persist:t?.persist})}catch(d){let S=r.get(n);r.set(n,{...S||{data:null,loading:!1,error:null,updatedAt:null},error:d instanceof Error?d:new Error(String(d)),loading:!1})}}})};var $n=()=>({name:"gstate-immer",hooks:{onInstall:({store:e})=>{e._registerMethod("immer","setWithProduce",((t,n)=>e.set(t,n)))}}});var Un=e=>{let t=[],n=-1,r=!1,o=e?.limit||50;return{name:"gstate-undo-redo",hooks:{onInstall:({store:s})=>{t.push(s.list()),n=0,s._registerMethod("undoRedo","undo",()=>{if(n>0){r=!0,n--;let d=t[n];return d?(Object.entries(d).forEach(([S,g])=>{s._setSilently(S,g)}),r=!1,!0):!1}return!1}),s._registerMethod("undoRedo","redo",()=>{if(n<t.length-1){r=!0,n++;let d=t[n];return d?(Object.entries(d).forEach(([S,g])=>{s._setSilently(S,g)}),r=!1,!0):!1}return!1}),s._registerMethod("undoRedo","canUndo",()=>n>0),s._registerMethod("undoRedo","canRedo",()=>n<t.length-1)},onSet:({store:s})=>{r||(n<t.length-1&&(t=t.slice(0,n+1)),t.push(s.list()),t.length>o?t.shift():n++)}}}};var Kn=e=>({name:"gstate-schema",hooks:{onSet:({key:t,value:n})=>{if(!t)return;let r=e[t];if(r){let o=r(n);if(o!==!0)throw new Error(`[Schema Error] Validation failed for key "${t}": ${o===!1?"Invalid type":o}`)}}}});var Bn=e=>{let r=globalThis.__REDUX_DEVTOOLS_EXTENSION__;if(!r?.connect)return{name:"gstate-devtools-noop",hooks:{}};let o=null;return{name:"gstate-devtools",hooks:{onInstall:({store:s})=>{o=r.connect({name:e?.name||"Magnetar Store"}),o.init(s.list())},onSet:({key:s,store:d})=>{!s||!o||o.send(`SET_${s.toUpperCase()}`,d.list())},onRemove:({key:s,store:d})=>{!s||!o||o.send(`REMOVE_${s.toUpperCase()}`,d.list())}}}};var Fn=()=>{let e=new Map;return{name:"gstate-snapshot",hooks:{onInstall:({store:t})=>{t._registerMethod("snapshot","takeSnapshot",(n=>{e.set(n,t.list())})),t._registerMethod("snapshot","restoreSnapshot",(n=>{let r=e.get(n);return r?(t.transaction(()=>{Object.entries(r).forEach(([o,s])=>{t.set(o,s)})}),!0):!1})),t._registerMethod("snapshot","listSnapshots",(()=>Array.from(e.keys()))),t._registerMethod("snapshot","deleteSnapshot",(n=>e.delete(n))),t._registerMethod("snapshot","clearSnapshots",(()=>e.clear()))}}}};var Wn=e=>({name:"gstate-guard",hooks:{onBeforeSet:({key:t,value:n,store:r})=>{if(!t)return;let o=e[t];if(o){let s=o(n)}}}});var Ln=e=>({name:"gstate-analytics",hooks:{onSet:({key:t,value:n})=>{t&&(!e.keys||e.keys.includes(t))&&e.provider({key:t,value:n,action:"SET"})},onRemove:({key:t})=>{t&&(!e.keys||e.keys.includes(t))&&e.provider({key:t,value:null,action:"REMOVE"})}}});var Jn=e=>{let t=new BroadcastChannel(e?.channelName||"gstate_sync"),n=!1;return{name:"gstate-sync",hooks:{onInstall:({store:r})=>{t.onmessage=o=>{let{key:s,value:d,action:S}=o.data;s&&(n=!0,S==="REMOVE"?r.remove(s):r.set(s,d),n=!1)}},onSet:({key:r,value:o})=>{!r||n||t.postMessage({key:r,value:o,action:"SET"})},onRemove:({key:r})=>{!r||n||t.postMessage({key:r,action:"REMOVE"})},onDestroy:()=>{t.close()}}}};var qn=()=>({name:"gstate-debug-noop",hooks:{}});var Gn=(e={})=>{let t=e.dbName||"rgs-db",n=e.storeName||"states",r=e.version||1,o=null,s=()=>new Promise((a,c)=>{if(o)return a(o);let y=indexedDB.open(t,r);y.onerror=()=>c(y.error),y.onsuccess=()=>{o=y.result,a(o)},y.onupgradeneeded=R=>{let f=R.target.result;f.objectStoreNames.contains(n)||f.createObjectStore(n)}}),d=async(a,c)=>{let y=await s();return new Promise((R,f)=>{let m=y.transaction(n,"readwrite").objectStore(n).put(c,a);m.onsuccess=()=>R(),m.onerror=()=>f(m.error)})},S=async a=>{let c=await s();return new Promise((y,R)=>{let w=c.transaction(n,"readonly").objectStore(n).get(a);w.onsuccess=()=>y(w.result),w.onerror=()=>R(w.error)})},g=async a=>{let c=await s();return new Promise((y,R)=>{let w=c.transaction(n,"readwrite").objectStore(n).delete(a);w.onsuccess=()=>y(),w.onerror=()=>R(w.error)})};return{name:"indexedDB",hooks:{onInstall:({store:a})=>{a._registerMethod("indexedDB","clear",async()=>{(await s()).transaction(n,"readwrite").objectStore(n).clear()})},onInit:async({store:a})=>{let f=(await s()).transaction(n,"readonly").objectStore(n).getAllKeys();f.onsuccess=async()=>{let b=f.result,w=a.namespace+"_";for(let m of b)if(m.startsWith(w)){let k=await S(m);if(k){let M=m.substring(w.length);a._setSilently(M,k.d)}}}},onSet:async({key:a,value:c,store:y})=>{if(!a)return;let R=y.namespace+"_",f={d:c,t:Date.now(),v:y._getVersion?.(a)||1};await d(`${R}${a}`,f)},onRemove:async({key:a,store:c})=>{if(!a)return;let y=c.namespace+"_";await g(`${y}${a}`)}}}};var Hn=e=>{let{adapter:t,autoSyncInterval:n}=e,r=new Map,o={lastSyncTimestamp:null,totalKeysSynced:0,totalBytesSynced:0,syncCount:0,lastDuration:0,errors:0},s=null;return{name:"cloudSync",hooks:{onInstall:({store:d})=>{d._registerMethod("cloudSync","sync",async()=>{let S=performance.now(),g={},a=0;try{let c=d.list(),y=Object.keys(c);for(let f of y){let b=d._getVersion?.(f)||0,w=r.get(f)||0;if(b>w){let m=c[f];g[f]=m,a+=JSON.stringify(m).length,r.set(f,b)}}if(Object.keys(g).length===0)return{status:"no-change",stats:o};if(await t.save(g))return o.lastSyncTimestamp=Date.now(),o.totalKeysSynced+=Object.keys(g).length,o.totalBytesSynced+=a,o.syncCount++,o.lastDuration=performance.now()-S,e.onSync&&e.onSync(o),{status:"success",stats:o};throw new Error(`Adapter ${t.name} failed to save.`)}catch(c){return o.errors++,console.error(`[gState] Cloud Sync Failed (${t.name}):`,c),{status:"error",error:String(c),stats:o}}}),d._registerMethod("cloudSync","getStats",()=>o),n&&n>0&&(s=setInterval(()=>{d.plugins.cloudSync.sync()},n))},onDestroy:()=>{s&&clearInterval(s)}}}},Xn=(e,t)=>({name:"MongoDB-Atlas",save:async n=>(await fetch(`${e}/action/updateOne`,{method:"POST",headers:{"Content-Type":"application/json","api-key":t},body:JSON.stringify({dataSource:"Cluster0",database:"rgs_cloud",collection:"user_states",filter:{id:"global_state"},update:{$set:{data:n,updatedAt:Date.now()}},upsert:!0})})).ok}),Qn=(e,t)=>({name:"Firebase-Firestore",save:async n=>{try{return console.log("[Mock] Firestore Syncing:",n),!0}catch{return!1}}}),Zn=(e,t)=>({name:"SQL-REST-API",save:async n=>(await fetch(e,{method:"PATCH",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(n)})).ok});var vr=e=>({name:"gstate-logger",hooks:{onSet:({key:t,value:n,version:r})=>{let o=new Date().toLocaleTimeString(),s=`[gState] SET: ${t} (v${r}) @ ${o}`;e?.collapsed?console.groupCollapsed(s):console.group(s),console.info("%c Value:","color: #4CAF50; font-weight: bold;",n),console.groupEnd()},onRemove:({key:t})=>{console.warn(`[gState] REMOVED: ${t}`)},onTransaction:({key:t})=>{t==="START"?console.group("\u2500\u2500 TRANSACTION START \u2500\u2500"):console.groupEnd()}}});var zr=(e,t)=>{let n=typeof t=="string"?{namespace:t}:t,r=e,o=n?.namespace;if(typeof window<"u"&&o)try{let g=localStorage.getItem(o);g&&(r=JSON.parse(atob(g)))}catch{}let s=ue(n);return r&&Object.entries(r).forEach(([g,a])=>{s._setSilently(g,a)}),typeof window<"u"&&n?.persist&&o&&s._subscribe(()=>{try{let g={},a=s.list();Object.keys(a).forEach(c=>{let y=c.toLowerCase();y.includes("token")||y.includes("password")||y.includes("secret")||y.includes("key")||(g[c]=s.get(c))}),localStorage.setItem(o,btoa(JSON.stringify(g)))}catch{}}),Object.assign(g=>Re(g,s),s)};var Nr=(e,t)=>X()?.addAccessRule(e,t),$r=(e,t,n)=>X()?.hasPermission(e,t,n)??!0,Ur=(e,t,n)=>{let r=X();if(!r)throw new Error("[gState] recordConsent failed: No store found. call initState() first.");return r.recordConsent(e,t,n)},Kr=(e,t)=>X()?.hasConsent(e,t)??!1,Br=e=>X()?.getConsents(e)??[],Fr=(e,t)=>X()?.revokeConsent(e,t),Wr=e=>{let t=X();if(!t)throw new Error("[gState] exportUserData failed: No store found.");return t.exportUserData(e)},Lr=e=>{let t=X();if(!t)throw new Error("[gState] deleteUserData failed: No store found.");return t.deleteUserData(e)},Jr=()=>{},qr=()=>{};export{Nr as addAccessRule,Ln as analyticsPlugin,Jr as clearAccessRules,qr as clearAllConsents,Hn as cloudSyncPlugin,Nn as createAsyncStore,Qn as createFirestoreAdapter,Xn as createMongoAdapter,Zn as createSqlRestAdapter,ue as createStore,qn as debugPlugin,Lr as deleteUserData,Vn as destroyState,Bn as devToolsPlugin,Ht as exportKey,Wr as exportUserData,Gt as generateEncryptionKey,Br as getConsents,X as getStore,zr as gstate,Wn as guardPlugin,Kr as hasConsent,$r as hasPermission,$n as immerPlugin,Xt as importKey,Gn as indexedDBPlugin,jn as initState,St as isCryptoAvailable,ye as logAudit,vr as loggerPlugin,Ur as recordConsent,Fr as revokeConsent,ge as sanitizeValue,Kn as schemaPlugin,Qt as setAuditLogger,Fn as snapshotPlugin,Jn as syncPlugin,Un as undoRedoPlugin,Re as useGState,zn as useIsStoreReady,Re as useSimpleState,Re as useStore,et as validateKey};
|
|
1
|
+
var pt=Symbol.for("immer-nothing"),ot=Symbol.for("immer-draftable"),R=Symbol.for("immer-state");function O(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var M=Object,H=M.getPrototypeOf,we="constructor",ke="prototype",je="configurable",be="enumerable",me="writable",te="value",$=e=>!!e&&!!e[R];function U(e){return e?gt(e)||Re(e)||!!e[ot]||!!e[we]?.[ot]||Ae(e)||Ie(e):!1}var Vt=M[ke][we].toString(),st=new WeakMap;function gt(e){if(!e||!He(e))return!1;let t=H(e);if(t===null||t===M[ke])return!0;let n=M.hasOwnProperty.call(t,we)&&t[we];if(n===Object)return!0;if(!J(n))return!1;let r=st.get(n);return r===void 0&&(r=Function.toString.call(n),st.set(n,r)),r===Vt}function Ce(e,t,n=!0){oe(e)===0?(n?Reflect.ownKeys(e):M.keys(e)).forEach(o=>{t(o,e[o],e)}):e.forEach((r,o)=>t(o,r,e))}function oe(e){let t=e[R];return t?t.type_:Re(e)?1:Ae(e)?2:Ie(e)?3:0}var it=(e,t,n=oe(e))=>n===2?e.has(t):M[ke].hasOwnProperty.call(e,t),Fe=(e,t,n=oe(e))=>n===2?e.get(t):e[t],Ee=(e,t,n,r=oe(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function Nt(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var Re=Array.isArray,Ae=e=>e instanceof Map,Ie=e=>e instanceof Set,He=e=>typeof e=="object",J=e=>typeof e=="function",Ue=e=>typeof e=="boolean";function Ut(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var N=e=>e.copy_||e.base_;var qe=e=>e.modified_?e.copy_:e.base_;function Be(e,t){if(Ae(e))return new Map(e);if(Ie(e))return new Set(e);if(Re(e))return Array[ke].slice.call(e);let n=gt(e);if(t===!0||t==="class_only"&&!n){let r=M.getOwnPropertyDescriptors(e);delete r[R];let o=Reflect.ownKeys(r);for(let i=0;i<o.length;i++){let u=o[i],f=r[u];f[me]===!1&&(f[me]=!0,f[je]=!0),(f.get||f.set)&&(r[u]={[je]:!0,[me]:!0,[be]:f[be],[te]:e[u]})}return M.create(H(e),r)}else{let r=H(e);if(r!==null&&n)return{...e};let o=M.create(r);return M.assign(o,e)}}function j(e,t=!1){return Me(e)||$(e)||!U(e)||(oe(e)>1&&M.defineProperties(e,{set:Se,add:Se,clear:Se,delete:Se}),M.freeze(e),t&&Ce(e,(n,r)=>{j(r,!0)},!1)),e}function $t(){O(2)}var Se={[te]:$t};function Me(e){return e===null||!He(e)?!0:M.isFrozen(e)}var xe="MapSet",Le="Patches",at="ArrayMethods",yt={};function W(e){let t=yt[e];return t||O(0,e),t}var ct=e=>!!yt[e];var ne,ht=()=>ne,jt=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:ct(xe)?W(xe):void 0,arrayMethodsPlugin_:ct(at)?W(at):void 0});function ut(e,t){t&&(e.patchPlugin_=W(Le),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Ke(e){We(e),e.drafts_.forEach(Ft),e.drafts_=null}function We(e){e===ne&&(ne=e.parent_)}var lt=e=>ne=jt(ne,e);function Ft(e){let t=e[R];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function ft(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[R].modified_&&(Ke(t),O(4)),U(e)&&(e=dt(t,e));let{patchPlugin_:o}=t;o&&o.generateReplacementPatches_(n[R].base_,e,t)}else e=dt(t,n);return Bt(t,e,!0),Ke(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==pt?e:void 0}function dt(e,t){if(Me(t))return t;let n=t[R];if(!n)return Pe(t,e.handledSet_,e);if(!De(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:r}=n;if(r)for(;r.length>0;)r.pop()(e);_t(n,e)}return n.copy_}function Bt(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&j(t,n)}function St(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var De=(e,t)=>e.scope_===t,Lt=[];function mt(e,t,n,r){let o=N(e),i=e.type_;if(r!==void 0&&Fe(o,r,i)===t){Ee(o,r,n,i);return}if(!e.draftLocations_){let f=e.draftLocations_=new Map;Ce(o,(p,g)=>{if($(g)){let S=f.get(g)||[];S.push(p),f.set(g,S)}})}let u=e.draftLocations_.get(t)??Lt;for(let f of u)Ee(o,f,n,i)}function Kt(e,t,n){e.callbacks_.push(function(o){let i=t;if(!i||!De(i,o))return;o.mapSetPlugin_?.fixSetContents(i);let u=qe(i);mt(e,i.draft_??i,u,n),_t(i,o)})}function _t(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:r}=t;if(r){let o=r.getPath(e);o&&r.generatePatches_(e,o,t)}St(e)}}function Wt(e,t,n){let{scope_:r}=e;if($(n)){let o=n[R];De(o,r)&&o.callbacks_.push(function(){_e(e);let u=qe(o);mt(e,n,u,t)})}else U(n)&&e.callbacks_.push(function(){let i=N(e);e.type_===3?i.has(n)&&Pe(n,r.handledSet_,r):Fe(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&Pe(Fe(e.copy_,t,e.type_),r.handledSet_,r)})}function Pe(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||$(e)||t.has(e)||!U(e)||Me(e)||(t.add(e),Ce(e,(r,o)=>{if($(o)){let i=o[R];if(De(i,n)){let u=qe(i);Ee(e,r,u,e.type_),St(i)}}else U(o)&&Pe(o,t,n)})),e}function Gt(e,t){let n=Re(e),r={type_:n?1:0,scope_:t?t.scope_:ht(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},o=r,i=ve;n&&(o=[r],i=re);let{revoke:u,proxy:f}=Proxy.revocable(o,i);return r.draft_=f,r.revoke_=u,[f,r]}var ve={get(e,t){if(t===R)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t=="string";if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let o=N(e);if(!it(o,t,e.type_))return Jt(e,o,t);let i=o[t];if(e.finalized_||!U(i)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Ut(t))return i;if(i===$e(e.base_,t)){_e(e);let u=e.type_===1?+t:t,f=Je(e.scope_,i,e,u);return e.copy_[u]=f}return i},has(e,t){return t in N(e)},ownKeys(e){return Reflect.ownKeys(N(e))},set(e,t,n){let r=wt(N(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let o=$e(N(e),t),i=o?.[R];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(Nt(n,o)&&(n!==void 0||it(e.base_,t,e.type_)))return!0;_e(e),Ge(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=n,e.assigned_.set(t,!0),Wt(e,t,n)),!0},deleteProperty(e,t){return _e(e),$e(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),Ge(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=N(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[me]:!0,[je]:e.type_!==1||t!=="length",[be]:r[be],[te]:n[t]}},defineProperty(){O(11)},getPrototypeOf(e){return H(e.base_)},setPrototypeOf(){O(12)}},re={};for(let e in ve){let t=ve[e];re[e]=function(){let n=arguments;return n[0]=n[0][0],t.apply(this,n)}}re.deleteProperty=function(e,t){return re.set.call(this,e,t,void 0)};re.set=function(e,t,n){return ve.set.call(this,e[0],t,n,e[0])};function $e(e,t){let n=e[R];return(n?N(n):e)[t]}function Jt(e,t,n){let r=wt(t,n);return r?te in r?r[te]:r.get?.call(e.draft_):void 0}function wt(e,t){if(!(t in e))return;let n=H(e);for(;n;){let r=Object.getOwnPropertyDescriptor(n,t);if(r)return r;n=H(n)}}function Ge(e){e.modified_||(e.modified_=!0,e.parent_&&Ge(e.parent_))}function _e(e){e.copy_||(e.assigned_=new Map,e.copy_=Be(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Ht=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,n,r)=>{if(J(t)&&!J(n)){let i=n;n=t;let u=this;return function(p=i,...g){return u.produce(p,S=>n.call(this,S,...g))}}J(n)||O(6),r!==void 0&&!J(r)&&O(7);let o;if(U(t)){let i=lt(this),u=Je(i,t,void 0),f=!0;try{o=n(u),f=!1}finally{f?Ke(i):We(i)}return ut(i,r),ft(o,i)}else if(!t||!He(t)){if(o=n(t),o===void 0&&(o=t),o===pt&&(o=void 0),this.autoFreeze_&&j(o,!0),r){let i=[],u=[];W(Le).generateReplacementPatches_(t,o,{patches_:i,inversePatches_:u}),r(i,u)}return o}else O(1,t)},this.produceWithPatches=(t,n)=>{if(J(t))return(u,...f)=>this.produceWithPatches(u,p=>t(p,...f));let r,o;return[this.produce(t,n,(u,f)=>{r=u,o=f}),r,o]},Ue(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Ue(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Ue(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){U(e)||O(8),$(e)&&(e=qt(e));let t=lt(this),n=Je(t,e,void 0);return n[R].isManual_=!0,We(t),n}finishDraft(e,t){let n=e&&e[R];(!n||!n.isManual_)&&O(9);let{scope_:r}=n;return ut(r,t),ft(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let o=t[n];if(o.path.length===0&&o.op==="replace"){e=o.value;break}}n>-1&&(t=t.slice(n+1));let r=W(Le).applyPatches_;return $(e)?r(e,t):this.produce(e,o=>r(o,t))}};function Je(e,t,n,r){let[o,i]=Ae(t)?W(xe).proxyMap_(t,n):Ie(t)?W(xe).proxySet_(t,n):Gt(t,n);return(n?.scope_??ht()).drafts_.push(o),i.callbacks_=n?.callbacks_??[],i.key_=r,n&&r!==void 0?Kt(n,i,r):i.callbacks_.push(function(p){p.mapSetPlugin_?.fixSetContents(i);let{patchPlugin_:g}=p;i.modified_&&g&&g.generatePatches_(i,[],p)}),o}function qt(e){return $(e)||O(10,e),bt(e)}function bt(e){if(!U(e)||Me(e))return e;let t=e[R],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Be(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Be(e,!0);return Ce(n,(o,i)=>{Ee(n,o,bt(i))},r),t&&(t.finalized_=!1),n}var Xt=new Ht,Et=Xt.produce;var xt=typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof crypto.subtle.generateKey=="function",Qt=async()=>{if(!xt)throw new Error("Web Crypto API not available");let e=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),t=crypto.getRandomValues(new Uint8Array(12));return{key:e,iv:t}},Yt=async e=>{let t=await crypto.subtle.exportKey("raw",e.key);return{key:btoa(String.fromCharCode(...new Uint8Array(t))),iv:btoa(String.fromCharCode(...e.iv))}},Zt=async(e,t)=>{let n=Uint8Array.from(atob(e),i=>i.charCodeAt(0)),r=Uint8Array.from(atob(t),i=>i.charCodeAt(0));return{key:await crypto.subtle.importKey("raw",n,{name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),iv:r}},Pt=async(e,t)=>{let n=new TextEncoder,r=n.encode(JSON.stringify(e)),o=await crypto.subtle.encrypt({name:"AES-GCM",iv:t.iv},t.key,r),i=new Uint8Array(t.iv.length+o.byteLength);return i.set(t.iv),i.set(new Uint8Array(o),t.iv.length),btoa(String.fromCharCode(...i))},vt=async(e,t)=>{let n=Uint8Array.from(atob(e),u=>u.charCodeAt(0)),r=n.slice(0,12),o=n.slice(12),i=await crypto.subtle.decrypt({name:"AES-GCM",iv:r},t.key,o);return JSON.parse(new TextDecoder().decode(i))},Oe=null,en=e=>{Oe=e},kt=()=>Oe!==null,ie=e=>{Oe&&Oe(e)},Xe=(e,t,n)=>{e.set(t instanceof RegExp?t.source:t,n)},Te=(e,t,n,r)=>{if(e.size===0)return!0;for(let[o,i]of e){let u;if(typeof o=="function")u=o(t,r);else try{u=new RegExp(o).test(t)}catch{continue}if(u)return i.includes(n)||i.includes("admin")}return!1},se=e=>{if(typeof e=="string")return e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"[SEC-REMOVED]").replace(/javascript:/gi,"[SEC-REMOVED]").replace(/data:text\/html/gi,"[SEC-REMOVED]").replace(/vbscript:/gi,"[SEC-REMOVED]").replace(/on\w+\s*=/gi,"[SEC-REMOVED]=").replace(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi,"[SEC-REMOVED]").replace(/<object\b[^<]*(?:(?!<\/object>)<[^<]*)*<\/object>/gi,"[SEC-REMOVED]").replace(/<embed\b[^<]*(?:(?!<\/embed>)<[^<]*)*<\/embed>/gi,"[SEC-REMOVED]").replace(/<svg\b[^<]*(?:(?!<\/svg>)<[^<]*)*<\/svg>/gi,"[SEC-REMOVED]").replace(/<form\b[^<]*(?:(?!<\/form>)<[^<]*)*<\/form>/gi,"[SEC-REMOVED]").replace(/<base\b[^<]*(?:(?!<\/base>)<[^<]*)*<\/base>/gi,"[SEC-REMOVED]").replace(/<link\b[^<]*(?:(?!<\/link>)<[^<]*)*<\/link>/gi,"[SEC-REMOVED]").replace(/<meta\b[^<]*(?:(?!<\/meta>)<[^<]*)*<\/meta>/gi,"[SEC-REMOVED]").replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi,"[SEC-REMOVED]").replace(/&#[xX]?[0-9a-fA-F]+;?/g,"");if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.getPrototypeOf(e)===Object.prototype){let t={};for(let[n,r]of Object.entries(e))t[n]=se(r);return t}return e}return Array.isArray(e)?e.map(t=>se(t)):e},Qe=e=>/^[a-zA-Z0-9_.-]+$/.test(e)&&e.length<=256,Ye=(e,t,n,r)=>{let o={id:crypto.randomUUID(),purpose:n,granted:r,timestamp:Date.now()},i=e.get(t)||[];return i.push(o),e.set(t,i),ie({timestamp:Date.now(),action:"set",key:`consent:${n}`,userId:t,success:!0}),o},Ct=(e,t,n)=>{let r=e.get(t);if(!r)return!1;for(let o=r.length-1;o>=0;o--){let i=r[o];if(i&&i.purpose===n)return i.granted}return!1},Rt=(e,t,n)=>Ye(e,t,n,!1),At=(e,t)=>e.get(t)||[],It=(e,t)=>({userId:t,exportedAt:Date.now(),consents:e.get(t)||[]}),Mt=(e,t)=>{let n=e.get(t)?.length||0;return e.delete(t),{success:!0,deletedConsents:n}};var ce=e=>{if(e===null||typeof e!="object")return e;if(typeof structuredClone=="function")try{return structuredClone(e)}catch{}let t=new WeakMap,n=r=>{if(r===null||typeof r!="object"||typeof r=="function")return r;if(t.has(r))return t.get(r);if(r instanceof Date)return new Date(r.getTime());if(r instanceof RegExp)return new RegExp(r.source,r.flags);if(r instanceof Map){let u=new Map;return t.set(r,u),r.forEach((f,p)=>u.set(n(p),n(f))),u}if(r instanceof Set){let u=new Set;return t.set(r,u),r.forEach(f=>u.add(n(f))),u}let o=Array.isArray(r)?[]:Object.create(Object.getPrototypeOf(r));t.set(r,o);let i=[...Object.keys(r),...Object.getOwnPropertySymbols(r)];for(let u of i)o[u]=n(r[u]);return o};return n(e)},ae=(e,t)=>{if(e===t)return!0;if(e===null||t===null||typeof e!="object"||typeof t!="object")return e===t;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let o=0;o<e.length;o++)if(!ae(e[o],t[o]))return!1;return!0}let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let o=0;o<n.length;o++){let i=n[o];if(!(i in t)||!ae(e[i],t[i]))return!1}return!0};var nn={local:()=>typeof window<"u"?window.localStorage:null,session:()=>typeof window<"u"?window.sessionStorage:null,memory:()=>{let e=new Map;return{getItem:t=>e.get(t)||null,setItem:(t,n)=>e.set(t,n),removeItem:t=>e.delete(t),key:t=>Array.from(e.keys())[t]||null,get length(){return e.size}}}},q=e=>{let t=new Map,n=new Map,r=new Map,o=new Set,i=new Map,u=new Set,f=new Map,p=new Map,g=new Map,S=new Map,m=new Map,v=new Map,_=new Map,k=new Map,P=e?.namespace||"gstate",w=e?.silent??!1,fe=e?.debounceTime??150,X=e?.version??0,A=e?.storage||nn.local(),b=e?.onError,de=e?.maxObjectSize??5*1024*1024,pe=e?.maxTotalSize??50*1024*1024,ge=e?.encryptionKey??null,Ze=e?.validateInput??!0,Ot=e?.auditEnabled??!0,Q=e?.userId,Y=e?.immer??!0,Tt=e?.persistByDefault??e?.persistence??e?.persist??!1;e?.accessRules&&e.accessRules.forEach(s=>Xe(_,s.pattern,s.permissions));let ze=!1,Ve=!1,ye=!1,T=0,G=null,he,zt=new Promise(s=>{he=s}),Ne=s=>{if(s==null)return 0;let a=typeof s;if(a==="boolean")return 4;if(a==="number")return 8;if(a==="string")return s.length*2;if(a!=="object")return 0;let c=0,d=[s],h=new WeakSet;for(;d.length>0;){let l=d.pop();if(typeof l=="boolean")c+=4;else if(typeof l=="number")c+=8;else if(typeof l=="string")c+=l.length*2;else if(typeof l=="object"&&l!==null){let y=l;if(h.has(y))continue;if(h.add(y),Array.isArray(y))for(let E=0;E<y.length;E++)d.push(y[E]);else for(let E of Object.keys(y))c+=E.length*2,d.push(y[E])}}return c},Z=()=>`${P}_`,B=(s,a)=>{if(S.size!==0)for(let c of S.values()){let d=c.hooks?.[s];if(d)try{d(a)}catch(h){let l=h instanceof Error?h:new Error(String(h));b?b(l,{operation:`plugin:${c.name}:${s}`,key:a.key}):w||console.error(`[gState] Plugin "${c.name}" error:`,h)}}},z=(s,a,c,d)=>{Ot&&kt()&&ie&&ie({timestamp:Date.now(),action:s,key:a,userId:Q,success:c,error:d})},ee=s=>{if(s){let a=g.get(s);if(a)for(let h of a)et(h);let c=f.get(s);if(c){let h=C.get(s);for(let l of c)try{l(h)}catch(y){let E=y instanceof Error?y:new Error(String(y));b?b(E,{operation:"watcher",key:s}):w||console.error(`[gState] Watcher error for "${s}":`,y)}}let d=i.get(s);if(d)for(let h of d)try{h()}catch(l){let y=l instanceof Error?l:new Error(String(l));b?b(y,{operation:"keyListener",key:s}):w||console.error(`[gState] Listener error for "${s}":`,l)}}if(ze){Ve=!0;return}for(let a of o)try{a()}catch(c){let d=c instanceof Error?c:new Error(String(c));b?b(d,{operation:"listener"}):w||console.error("[gState] Global listener error: ",c)}},et=s=>{let a=p.get(s),c=new Set;if(!a)return;let d=l=>(c.add(l),p.has(l)?p.get(l).lastValue:C.get(l)),h=a.selector(d);a.deps.forEach(l=>{if(!c.has(l)){let y=g.get(l);y&&(y.delete(s),y.size===0&&g.delete(l))}}),c.forEach(l=>{a.deps.has(l)||(g.has(l)||g.set(l,new Set),g.get(l).add(s))}),a.deps=c,ae(a.lastValue,h)||(a.lastValue=Y&&h!==null&&typeof h=="object"?j(ce(h),!0):h,n.set(s,(n.get(s)||0)+1),ee(s))},tt=async()=>{if(!A)return;try{let a={};t.forEach((h,l)=>{a[l]=h});let c,d=e?.encoded;d?c=btoa(JSON.stringify(a)):c=JSON.stringify(a),A.setItem(Z().replace("_",""),JSON.stringify({v:1,t:Date.now(),e:null,d:c,_sys_v:X,_b64:d?!0:void 0})),z("set","FULL_STATE",!0)}catch(a){let c=a instanceof Error?a:new Error(String(a));b?b(c,{operation:"persist",key:"FULL_STATE"}):w||console.error("[gState] Persist failed: ",c)}let s=Array.from(m.entries());m.clear();for(let[a,c]of s)try{let d=c.value,h=c.options.encoded||c.options.secure;if(c.options.encrypted){if(!ge)throw new Error(`Encryption key missing for "${a}"`);d=await Pt(c.value,ge)}else h?d=btoa(JSON.stringify(c.value)):typeof c.value=="object"&&c.value!==null&&(d=JSON.stringify(c.value));A.setItem(`${Z()}${a} `,JSON.stringify({v:n.get(a)||1,t:Date.now(),e:c.options.ttl?Date.now()+c.options.ttl:null,d,_sys_v:X,_enc:c.options.encrypted?!0:void 0,_b64:h?!0:void 0})),z("set",a,!0)}catch(d){let h=d instanceof Error?d:new Error(String(d));b?b(h,{operation:"persist",key:a}):w||console.error("[gState] Persist failed: ",h)}},L={},C={_setSilently:(s,a)=>{let c=r.get(s)||0,d=Y&&a!==null&&typeof a=="object"?j(ce(a),!0):a,h=Ne(d);T=T-c+h,r.set(s,h),t.set(s,d),n.set(s,(n.get(s)||0)+1)},_registerMethod:(s,a,c)=>{if(c!==void 0){let l=s,y=a;L[l]||(L[l]={}),L[l][y]=c;return}console.warn("[gState] _registerMethod(name, fn) is deprecated. Use _registerMethod(pluginName, methodName, fn) instead.");let d=s,h=a;L.core||(L.core={}),L.core[d]=h},set:(s,a,c={})=>{let d=t.get(s),h=Y&&typeof a=="function"?Et(d,a):a;if(Ze&&!Qe(s))return w||console.warn(`[gState] Invalid key: ${s}`),!1;if(!Te(_,s,"write",Q))return z("set",s,!1,"RBAC Denied"),w||console.error(`[gState] RBAC Denied for "${s}"`),!1;let l=Ze?se(h):h,y=r.get(s)||0;B("onBeforeSet",{key:s,value:l,store:C,version:n.get(s)||0});let E=Y&&l!==null&&typeof l=="object"?j(ce(l),!0):l;if(!ae(d,E)){let D=de>0||pe>0?Ne(E):0;if(de>0&&D>de){let K=new Error(`Object size (${D} bytes) exceeds maxObjectSize (${de} bytes)`);b?b(K,{operation:"set",key:s}):w||console.warn(`[gState] ${K.message} for "${s}"`)}if(pe>0){let K=T-y+D;if(K>pe){let rt=new Error(`Total store size (${K} bytes) exceeds limit (${pe} bytes)`);b?b(rt,{operation:"set"}):w||console.warn(`[gState] ${rt.message}`)}}T=T-y+D,r.set(s,D),t.set(s,E),n.set(s,(n.get(s)||0)+1);let I=c.persist??Tt;return I&&(m.set(s,{value:E,options:{...c,persist:I,encoded:c.encoded||e?.encoded}}),G&&clearTimeout(G),G=setTimeout(tt,fe)),B("onSet",{key:s,value:E,store:C,version:n.get(s)}),z("set",s,!0),ee(s),!0}return!1},get:s=>{if(!Te(_,s,"read",Q))return z("get",s,!1,"RBAC Denied"),null;let a=t.get(s);return B("onGet",{store:C,key:s,value:a}),z("get",s,!0),a},compute:(s,a)=>{try{return p.has(s)||(p.set(s,{selector:a,lastValue:null,deps:new Set}),et(s)),p.get(s).lastValue}catch(c){let d=c instanceof Error?c:new Error(String(c));return b?b(d,{operation:"compute",key:s}):w||console.error(`[gState] Compute error for "${s}": `,c),null}},watch:(s,a)=>{f.has(s)||f.set(s,new Set);let c=f.get(s);return c.add(a),()=>{c.delete(a),c.size===0&&f.delete(s)}},remove:s=>{if(!Te(_,s,"delete",Q))return z("delete",s,!1,"RBAC Denied"),!1;let a=t.get(s),c=t.delete(s);return c&&(T-=r.get(s)||0,r.delete(s),B("onRemove",{store:C,key:s,value:a})),n.set(s,(n.get(s)||0)+1),A&&A.removeItem(`${Z()}${s} `),z("delete",s,!0),ee(s),c},delete:s=>C.remove(s),deleteAll:()=>{if(Array.from(t.keys()).forEach(s=>C.remove(s)),A){let s=Z();for(let a=0;a<(A.length||0);a++){let c=A.key(a);c?.startsWith(s)&&(A.removeItem(c),a--)}}return T=0,r.clear(),!0},list:()=>Object.fromEntries(t.entries()),use:s=>{u.add(s)},transaction:s=>{ze=!0,B("onTransaction",{store:C,key:"START"});try{s()}finally{ze=!1,B("onTransaction",{store:C,key:"END"}),Ve&&(Ve=!1,ee())}},destroy:()=>{G&&(clearTimeout(G),G=null),m.clear(),typeof window<"u"&&window.removeEventListener("beforeunload",nt),B("onDestroy",{store:C}),o.clear(),i.clear(),f.clear(),p.clear(),g.clear(),S.clear(),t.clear(),r.clear(),T=0,_.clear(),k.clear(),n.clear(),v.clear(),u.clear()},_addPlugin:s=>{try{S.set(s.name,s),s.hooks?.onInstall?.({store:C})}catch(a){let c=a instanceof Error?a:new Error(String(a));b?b(c,{operation:"plugin:install",key:s.name}):w||console.error(`[gState] Failed to install plugin "${s.name}": `,a)}},_removePlugin:s=>{S.delete(s)},_subscribe:(s,a)=>{if(a){i.has(a)||i.set(a,new Set);let c=i.get(a);return c.add(s),()=>{c.delete(s),c.size===0&&i.delete(a)}}return o.add(s),()=>o.delete(s)},_getVersion:s=>n.get(s)??0,addAccessRule:(s,a)=>Xe(_,s,a),hasPermission:(s,a,c)=>{if(_.size===0)return!0;for(let[d,h]of _){let l;if(typeof d=="function")l=d(s,c);else try{let y=v.get(d);y||(y=new RegExp(d),v.set(d,y)),l=y.test(s)}catch{continue}if(l)return h.includes(a)||h.includes("admin")}return!1},recordConsent:(s,a,c)=>Ye(k,s,a,c),hasConsent:(s,a)=>Ct(k,s,a),getConsents:s=>At(k,s),revokeConsent:(s,a)=>Rt(k,s,a),exportUserData:s=>It(k,s),deleteUserData:s=>Mt(k,s),get plugins(){return L},get isReady(){return ye},get namespace(){return P},get userId(){return Q},whenReady:()=>zt};["addAccessRule","recordConsent","hasConsent","getConsents","revokeConsent","exportUserData","deleteUserData"].forEach(s=>{let a=C[s];a&&C._registerMethod("security",s,a)});let nt=()=>{m.size>0&&tt()};return typeof window<"u"&&window.addEventListener("beforeunload",nt),A?(async()=>{try{let a={},c=Z(),d=0;for(let l=0;l<(A.length||0);l++){let y=A.key(l);if(!y||!y.startsWith(c))continue;let E=A.getItem(y);if(E)try{let x=JSON.parse(E),D=y.substring(c.length);if(d=Math.max(d,x._sys_v!==void 0?x._sys_v:x.v||0),x.e&&Date.now()>x.e){A.removeItem(y),l--;continue}let I=x.d;if(x._enc&&ge)I=await vt(I,ge);else if(typeof I=="string"){if(x._b64)try{I=JSON.parse(atob(I))}catch{}else if(I.startsWith("{")||I.startsWith("["))try{I=JSON.parse(I)}catch{}}a[D]=I,z("hydrate",D,!0)}catch(x){z("hydrate",y,!1,String(x));let D=x instanceof Error?x:new Error(String(x));b?b(D,{operation:"hydration",key:y}):w||console.error(`[gState] Hydration failed for "${y}": `,x)}}let h=d<X&&e?.migrate?e.migrate(a,d):a;Object.entries(h).forEach(([l,y])=>{let E=Y&&y!==null&&typeof y=="object"?j(ce(y),!0):y,x=Ne(E),D=r.get(l)||0;T=T-D+x,r.set(l,x),t.set(l,E),n.set(l,1)}),ye=!0,he(),ee()}catch(a){ye=!0,he();let c=a instanceof Error?a:new Error(String(a));b?b(c,{operation:"hydration"}):w||console.error("[gState] Hydration failed: ",c)}})():(ye=!0,he()),C};import{useSyncExternalStore as Dt,useDebugValue as rn,useMemo as ue}from"react";var F=null,on=e=>{F&&!e?.namespace&&(e?.silent||console.warn("[gState] Store already exists. Pass a unique namespace to create additional stores."));let t=q(e);return F=t,t},sn=()=>{F&&(F.destroy(),F=null)},an=e=>{let t=e||F,n=ue(()=>r=>t?t._subscribe(r):()=>{},[t]);return Dt(n,()=>t?t.isReady:!1,()=>!0)},V=()=>F;var le=(e,t)=>{let n=ue(()=>t||F,[t]),r=ue(()=>{let p=()=>{},g=()=>!1,S=()=>null;return{set:g,get:S,remove:g,delete:g,deleteAll:g,list:()=>({}),compute:S,watch:()=>()=>{},use:p,transaction:p,destroy:p,_subscribe:()=>()=>{},_setSilently:p,_registerMethod:p,_addPlugin:p,_removePlugin:p,_getVersion:()=>0,get isReady(){return!1},whenReady:()=>Promise.resolve(),get plugins(){return{}}}},[]),o=n||r,i=ue(()=>p=>o._subscribe(p,e),[o,e]),u=Dt(i,()=>o.get(e)??void 0,()=>{}),f=ue(()=>(p,g)=>o.set(e,p,g),[o,e]);return rn(u,p=>`${e}: ${JSON.stringify(p)}`),[u,f]};var cn=(e,t)=>{let n=t?.key||"async_data",r=t?.store||q({namespace:`async_${n}`,silent:!0});return r.get(n)==null&&r.set(n,{data:null,loading:!1,error:null,updatedAt:null}),Object.assign(r,{execute:async()=>{let i=r.get(n);r.set(n,{...i||{data:null,loading:!1,error:null,updatedAt:null},loading:!0,error:null}),"whenReady"in r&&!r.isReady&&await r.whenReady();try{let u=await e(),f=r.get(n);r.set(n,{...f||{data:null,loading:!1,error:null,updatedAt:null},data:u,loading:!1,updatedAt:Date.now()},{persist:t?.persist})}catch(u){let f=r.get(n);r.set(n,{...f||{data:null,loading:!1,error:null,updatedAt:null},error:u instanceof Error?u:new Error(String(u)),loading:!1})}}})};var un=()=>({name:"gstate-immer",hooks:{onInstall:({store:e})=>{e._registerMethod("immer","setWithProduce",((t,n)=>e.set(t,n)))}}});var ln=e=>{let t=[],n=-1,r=!1,o=e?.limit||50;return{name:"gstate-undo-redo",hooks:{onInstall:({store:i})=>{t.push(i.list()),n=0,i._registerMethod("undoRedo","undo",()=>{if(n>0){r=!0,n--;let u=t[n];return u?(Object.entries(u).forEach(([f,p])=>{i._setSilently(f,p)}),r=!1,!0):!1}return!1}),i._registerMethod("undoRedo","redo",()=>{if(n<t.length-1){r=!0,n++;let u=t[n];return u?(Object.entries(u).forEach(([f,p])=>{i._setSilently(f,p)}),r=!1,!0):!1}return!1}),i._registerMethod("undoRedo","canUndo",()=>n>0),i._registerMethod("undoRedo","canRedo",()=>n<t.length-1)},onSet:({store:i})=>{r||(n<t.length-1&&(t=t.slice(0,n+1)),t.push(i.list()),t.length>o?t.shift():n++)}}}};var fn=e=>({name:"gstate-schema",hooks:{onSet:({key:t,value:n})=>{if(!t)return;let r=e[t];if(r){let o=r(n);if(o!==!0)throw new Error(`[Schema Error] Validation failed for key "${t}": ${o===!1?"Invalid type":o}`)}}}});var dn=e=>{let r=globalThis.__REDUX_DEVTOOLS_EXTENSION__;if(!r?.connect)return{name:"gstate-devtools-noop",hooks:{}};let o=null;return{name:"gstate-devtools",hooks:{onInstall:({store:i})=>{o=r.connect({name:e?.name||"Magnetar Store"}),o.init(i.list())},onSet:({key:i,store:u})=>{!i||!o||o.send(`SET_${i.toUpperCase()}`,u.list())},onRemove:({key:i,store:u})=>{!i||!o||o.send(`REMOVE_${i.toUpperCase()}`,u.list())}}}};var pn=()=>{let e=new Map;return{name:"gstate-snapshot",hooks:{onInstall:({store:t})=>{t._registerMethod("snapshot","takeSnapshot",(n=>{e.set(n,t.list())})),t._registerMethod("snapshot","restoreSnapshot",(n=>{let r=e.get(n);return r?(t.transaction(()=>{Object.entries(r).forEach(([o,i])=>{t.set(o,i)})}),!0):!1})),t._registerMethod("snapshot","listSnapshots",(()=>Array.from(e.keys()))),t._registerMethod("snapshot","deleteSnapshot",(n=>e.delete(n))),t._registerMethod("snapshot","clearSnapshots",(()=>e.clear()))}}}};var gn=e=>({name:"gstate-guard",hooks:{onBeforeSet:({key:t,value:n,store:r})=>{if(!t)return;let o=e[t];if(o){let i=o(n)}}}});var yn=e=>({name:"gstate-analytics",hooks:{onSet:({key:t,value:n})=>{t&&(!e.keys||e.keys.includes(t))&&e.provider({key:t,value:n,action:"SET"})},onRemove:({key:t})=>{t&&(!e.keys||e.keys.includes(t))&&e.provider({key:t,value:null,action:"REMOVE"})}}});var hn=e=>{let t=new BroadcastChannel(e?.channelName||"gstate_sync"),n=!1;return{name:"gstate-sync",hooks:{onInstall:({store:r})=>{t.onmessage=o=>{let{key:i,value:u,action:f}=o.data;i&&(n=!0,f==="REMOVE"?r.remove(i):r.set(i,u),n=!1)}},onSet:({key:r,value:o})=>{!r||n||t.postMessage({key:r,value:o,action:"SET"})},onRemove:({key:r})=>{!r||n||t.postMessage({key:r,action:"REMOVE"})},onDestroy:()=>{t.close()}}}};var Sn=()=>({name:"gstate-debug-noop",hooks:{}});var mn=(e={})=>{let t=e.dbName||"rgs-db",n=e.storeName||"states",r=e.version||1,o=null,i=()=>new Promise((g,S)=>{if(o)return g(o);let m=indexedDB.open(t,r);m.onerror=()=>S(m.error),m.onsuccess=()=>{o=m.result,g(o)},m.onupgradeneeded=v=>{let _=v.target.result;_.objectStoreNames.contains(n)||_.createObjectStore(n)}}),u=async(g,S)=>{let m=await i();return new Promise((v,_)=>{let w=m.transaction(n,"readwrite").objectStore(n).put(S,g);w.onsuccess=()=>v(),w.onerror=()=>_(w.error)})},f=async g=>{let S=await i();return new Promise((m,v)=>{let P=S.transaction(n,"readonly").objectStore(n).get(g);P.onsuccess=()=>m(P.result),P.onerror=()=>v(P.error)})},p=async g=>{let S=await i();return new Promise((m,v)=>{let P=S.transaction(n,"readwrite").objectStore(n).delete(g);P.onsuccess=()=>m(),P.onerror=()=>v(P.error)})};return{name:"indexedDB",hooks:{onInstall:({store:g})=>{g._registerMethod("indexedDB","clear",async()=>{(await i()).transaction(n,"readwrite").objectStore(n).clear()})},onInit:async({store:g})=>{let _=(await i()).transaction(n,"readonly").objectStore(n).getAllKeys();_.onsuccess=async()=>{let k=_.result,P=g.namespace+"_";for(let w of k)if(w.startsWith(P)){let fe=await f(w);if(fe){let X=w.substring(P.length);g._setSilently(X,fe.d)}}}},onSet:async({key:g,value:S,store:m})=>{if(!g)return;let v=m.namespace+"_",_={d:S,t:Date.now(),v:m._getVersion?.(g)||1};await u(`${v}${g}`,_)},onRemove:async({key:g,store:S})=>{if(!g)return;let m=S.namespace+"_";await p(`${m}${g}`)}}}};var _n=e=>{let{adapter:t,autoSyncInterval:n}=e,r=new Map,o={lastSyncTimestamp:null,totalKeysSynced:0,totalBytesSynced:0,syncCount:0,lastDuration:0,errors:0},i=null;return{name:"cloudSync",hooks:{onInstall:({store:u})=>{u._registerMethod("cloudSync","sync",async()=>{let f=performance.now(),p={},g=0;try{let S=u.list(),m=Object.keys(S);for(let _ of m){let k=u._getVersion?.(_)||0,P=r.get(_)||0;if(k>P){let w=S[_];p[_]=w,g+=JSON.stringify(w).length,r.set(_,k)}}if(Object.keys(p).length===0)return{status:"no-change",stats:o};if(await t.save(p))return o.lastSyncTimestamp=Date.now(),o.totalKeysSynced+=Object.keys(p).length,o.totalBytesSynced+=g,o.syncCount++,o.lastDuration=performance.now()-f,e.onSync&&e.onSync(o),{status:"success",stats:o};throw new Error(`Adapter ${t.name} failed to save.`)}catch(S){return o.errors++,console.error(`[gState] Cloud Sync Failed (${t.name}):`,S),{status:"error",error:String(S),stats:o}}}),u._registerMethod("cloudSync","getStats",()=>o),n&&n>0&&(i=setInterval(()=>{let p=u.plugins.cloudSync;p&&p.sync()},n))},onDestroy:()=>{i&&clearInterval(i)}}}},wn=(e,t)=>({name:"MongoDB-Atlas",save:async n=>(await fetch(`${e}/action/updateOne`,{method:"POST",headers:{"Content-Type":"application/json","api-key":t},body:JSON.stringify({dataSource:"Cluster0",database:"rgs_cloud",collection:"user_states",filter:{id:"global_state"},update:{$set:{data:n,updatedAt:Date.now()}},upsert:!0})})).ok}),bn=(e,t)=>({name:"Firebase-Firestore",save:async n=>{try{return console.log("[Mock] Firestore Syncing:",n),!0}catch{return!1}}}),En=(e,t)=>({name:"SQL-REST-API",save:async n=>(await fetch(e,{method:"PATCH",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(n)})).ok});var Gn=e=>({name:"gstate-logger",hooks:{onSet:({key:t,value:n,version:r})=>{let o=new Date().toLocaleTimeString(),i=`[gState] SET: ${t} (v${r}) @ ${o}`;e?.collapsed?console.groupCollapsed(i):console.group(i),console.info("%c Value:","color: #4CAF50; font-weight: bold;",n),console.groupEnd()},onRemove:({key:t})=>{console.warn(`[gState] REMOVED: ${t}`)},onTransaction:({key:t})=>{t==="START"?console.group("\u2500\u2500 TRANSACTION START \u2500\u2500"):console.groupEnd()}}});var cr=(e,t)=>{let r=q(typeof t=="string"?{namespace:t}:t);e&&Object.entries(e).forEach(([i,u])=>{r.get(i)===null&&r._setSilently(i,u)});let o=i=>le(i,r);return typeof window<"u"&&(window.gState=r,window.rgs=r),Object.assign(o,r)};var ur=(e,t)=>V()?.addAccessRule(e,t),lr=(e,t,n)=>V()?.hasPermission(e,t,n)??!0,fr=(e,t,n)=>{let r=V();if(!r)throw new Error("[gState] recordConsent failed: No store found. call initState() first.");return r.recordConsent(e,t,n)},dr=(e,t)=>V()?.hasConsent(e,t)??!1,pr=e=>V()?.getConsents(e)??[],gr=(e,t)=>V()?.revokeConsent(e,t),yr=e=>{let t=V();if(!t)throw new Error("[gState] exportUserData failed: No store found.");return t.exportUserData(e)},hr=e=>{let t=V();if(!t)throw new Error("[gState] deleteUserData failed: No store found.");return t.deleteUserData(e)},Sr=()=>{},mr=()=>{};export{ur as addAccessRule,yn as analyticsPlugin,Sr as clearAccessRules,mr as clearAllConsents,_n as cloudSyncPlugin,cn as createAsyncStore,bn as createFirestoreAdapter,wn as createMongoAdapter,En as createSqlRestAdapter,q as createStore,Sn as debugPlugin,hr as deleteUserData,sn as destroyState,dn as devToolsPlugin,Yt as exportKey,yr as exportUserData,Qt as generateEncryptionKey,pr as getConsents,V as getStore,cr as gstate,gn as guardPlugin,dr as hasConsent,lr as hasPermission,un as immerPlugin,Zt as importKey,mn as indexedDBPlugin,on as initState,xt as isCryptoAvailable,ie as logAudit,Gn as loggerPlugin,fr as recordConsent,gr as revokeConsent,se as sanitizeValue,fn as schemaPlugin,en as setAuditLogger,pn as snapshotPlugin,hn as syncPlugin,ln as undoRedoPlugin,le as useGState,an as useIsStoreReady,le as useSimpleState,le as useStore,Qe as validateKey};
|
package/markdown/api.md
CHANGED
|
@@ -26,7 +26,7 @@ function initState<S extends Record<string, unknown>>(
|
|
|
26
26
|
const store = initState({
|
|
27
27
|
namespace: 'myApp',
|
|
28
28
|
version: 1,
|
|
29
|
-
|
|
29
|
+
persistByDefault: true,
|
|
30
30
|
onError: (error, context) => {
|
|
31
31
|
console.error(`Error in ${context.operation}:`, error.message)
|
|
32
32
|
}
|
package/package.json
CHANGED
|
@@ -1,81 +1,84 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@biglogic/rgs",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Argis (RGS) - React Globo State: A react state everywhere made easy",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"
|
|
48
|
-
},
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
"@
|
|
58
|
-
"@
|
|
59
|
-
"@
|
|
60
|
-
"@
|
|
61
|
-
"@
|
|
62
|
-
"@types/
|
|
63
|
-
"@
|
|
64
|
-
"@
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
|
|
81
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@biglogic/rgs",
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "Argis (RGS) - React Globo State: A react state everywhere made easy",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"rgs",
|
|
8
|
+
"gstate",
|
|
9
|
+
"state-management",
|
|
10
|
+
"react",
|
|
11
|
+
"enterprise",
|
|
12
|
+
"hooks",
|
|
13
|
+
"global-state",
|
|
14
|
+
"immer",
|
|
15
|
+
"biglogic",
|
|
16
|
+
"persistence",
|
|
17
|
+
"react-globo-state",
|
|
18
|
+
"argis"
|
|
19
|
+
],
|
|
20
|
+
"homepage": "https://https://github.com/BigLogic-ca/rgs",
|
|
21
|
+
"bugs": {
|
|
22
|
+
"url": "https://github.com/BigLogic-ca/rgs/issues"
|
|
23
|
+
},
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"author": "Dario Passariello <dariopassariello@gmail.com>",
|
|
26
|
+
"contributors": [
|
|
27
|
+
{
|
|
28
|
+
"name": "Dario Passariello",
|
|
29
|
+
"email": "dariopassariello@gmail.com",
|
|
30
|
+
"url": "https://dario.passariello.ca/"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "Valeria Cala Scaglitta",
|
|
34
|
+
"email": "valeriacalascaglitta@gmail.com"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"main": "./index.js",
|
|
38
|
+
"types": "./index.d.ts",
|
|
39
|
+
"exports": {
|
|
40
|
+
".": "./index.js"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"build": "tsc --emitDeclarationOnly --outDir dist && node ./esbuild.config.mjs && npm run build:extension",
|
|
44
|
+
"build:extension": "cd vscode-extension && vsce package -o ../dist",
|
|
45
|
+
"test": "jest --config tests/jest/jest.config.ts",
|
|
46
|
+
"npm: pack": "npm run build && cd dist && npm pack",
|
|
47
|
+
"npm: publish": "npm run build && cd dist && npm publish --access=public"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"immer": "^11.1.4"
|
|
51
|
+
},
|
|
52
|
+
"peerDependencies": {
|
|
53
|
+
"react": ">=16.8.0",
|
|
54
|
+
"react-dom": ">=16.8.0"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@eslint/js": "10.0.1",
|
|
58
|
+
"@playwright/test": "1.58.2",
|
|
59
|
+
"@testing-library/dom": "10.4.1",
|
|
60
|
+
"@testing-library/jest-dom": "6.9.1",
|
|
61
|
+
"@testing-library/react": "16.3.2",
|
|
62
|
+
"@types/jest": "30.0.0",
|
|
63
|
+
"@types/node": "25.2.3",
|
|
64
|
+
"@types/react": "19.2.14",
|
|
65
|
+
"@types/react-dom": "19.2.3",
|
|
66
|
+
"@typescript-eslint/eslint-plugin": "^8.56.0",
|
|
67
|
+
"@typescript-eslint/parser": "^8.56.0",
|
|
68
|
+
"dphelper": "2.6.3",
|
|
69
|
+
"esbuild": "0.27.3",
|
|
70
|
+
"esbuild-plugin-copy": "2.1.1",
|
|
71
|
+
"eslint": "^10.0.0",
|
|
72
|
+
"eslint-plugin-react": "7.37.5",
|
|
73
|
+
"eslint-plugin-react-hooks": "7.0.1",
|
|
74
|
+
"globals": "17.3.0",
|
|
75
|
+
"jest": "30.2.0",
|
|
76
|
+
"jest-environment-jsdom": "30.2.0",
|
|
77
|
+
"react": "19.2.4",
|
|
78
|
+
"react-dom": "19.2.4",
|
|
79
|
+
"ts-jest": "29.4.6",
|
|
80
|
+
"tslib": "^2.8.1",
|
|
81
|
+
"typescript": "^5.9.3",
|
|
82
|
+
"typescript-eslint": "8.56.0"
|
|
83
|
+
}
|
|
84
|
+
}
|
package/plugins/index.d.ts
CHANGED
|
@@ -10,6 +10,6 @@ export { debugPlugin } from "./official/debug.plugin";
|
|
|
10
10
|
export { indexedDBPlugin } from "./official/indexeddb.plugin";
|
|
11
11
|
export { cloudSyncPlugin, createMongoAdapter, createFirestoreAdapter, createSqlRestAdapter } from "./official/cloud-sync.plugin";
|
|
12
12
|
import type { IPlugin } from "../core/types";
|
|
13
|
-
export declare const loggerPlugin: (options?: {
|
|
13
|
+
export declare const loggerPlugin: <S extends Record<string, unknown>>(options?: {
|
|
14
14
|
collapsed?: boolean;
|
|
15
|
-
}) => IPlugin
|
|
15
|
+
}) => IPlugin<S>;
|
|
@@ -9,14 +9,14 @@ export interface SyncStats {
|
|
|
9
9
|
}
|
|
10
10
|
export interface CloudSyncAdapter {
|
|
11
11
|
name: string;
|
|
12
|
-
save: (data: Record<string,
|
|
12
|
+
save: (data: Record<string, unknown>) => Promise<boolean>;
|
|
13
13
|
}
|
|
14
14
|
export interface CloudSyncOptions {
|
|
15
15
|
adapter: CloudSyncAdapter;
|
|
16
16
|
autoSyncInterval?: number;
|
|
17
17
|
onSync?: (stats: SyncStats) => void;
|
|
18
18
|
}
|
|
19
|
-
export declare const cloudSyncPlugin: (options: CloudSyncOptions) => IPlugin<
|
|
19
|
+
export declare const cloudSyncPlugin: <S extends Record<string, unknown>>(options: CloudSyncOptions) => IPlugin<S>;
|
|
20
20
|
export declare const createMongoAdapter: (apiUrl: string, apiKey: string) => CloudSyncAdapter;
|
|
21
|
-
export declare const createFirestoreAdapter: (db:
|
|
21
|
+
export declare const createFirestoreAdapter: (db: unknown, docPath: string) => CloudSyncAdapter;
|
|
22
22
|
export declare const createSqlRestAdapter: (endpoint: string, authToken: string) => CloudSyncAdapter;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { IPlugin } from '../../core/types';
|
|
2
|
-
export declare const immerPlugin: () => IPlugin
|
|
2
|
+
export declare const immerPlugin: <S extends Record<string, unknown>>() => IPlugin<S>;
|
|
@@ -4,4 +4,4 @@ export interface IndexedDBOptions {
|
|
|
4
4
|
storeName?: string;
|
|
5
5
|
version?: number;
|
|
6
6
|
}
|
|
7
|
-
export declare const indexedDBPlugin: (options?: IndexedDBOptions) => IPlugin<
|
|
7
|
+
export declare const indexedDBPlugin: <S extends Record<string, unknown>>(options?: IndexedDBOptions) => IPlugin<S>;
|
|
Binary file
|