@biglogic/rgs 3.9.1 → 3.9.3

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@biglogic/rgs",
3
3
  "code": "argis",
4
- "version": "3.9.1",
4
+ "version": "3.9.3",
5
5
  "description": "Argis (RGS) - Reactive Global State: A react state everywhere made easy",
6
6
  "main": "./index.cjs",
7
7
  "browser": "./index.cjs",
@@ -0,0 +1,9 @@
1
+ export declare const include: {
2
+ from: string;
3
+ to: string;
4
+ }[];
5
+ export declare const plug: {
6
+ copyStatic: boolean;
7
+ injectCss: boolean;
8
+ types: boolean;
9
+ };
package/core/advanced.cjs DELETED
@@ -1 +0,0 @@
1
- "use strict";var e=Symbol.for("immer-nothing"),t=Symbol.for("immer-draftable"),n=Symbol.for("immer-state"),r=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}];function s(e,...t){{const n=r[e],s=D(n)?n.apply(null,t):n;throw new Error(`[Immer] ${s}`)}}var o=Object,i=o.getPrototypeOf,a="constructor",c="prototype",l="configurable",u="enumerable",f="writable",p="value",d=e=>!!e&&!!e[n];function y(e){return!!e&&(_(e)||E(e)||!!e[t]||!!e[a]?.[t]||k(e)||O(e))}var h=o[c][a].toString(),g=new WeakMap;function _(e){if(!e||!C(e))return!1;const t=i(e);if(null===t||t===o[c])return!0;const n=o.hasOwnProperty.call(t,a)&&t[a];if(n===Object)return!0;if(!D(n))return!1;let r=g.get(n);return void 0===r&&(r=Function.toString.call(n),g.set(n,r)),r===h}function m(e,t,n=!0){if(0===S(e)){(n?Reflect.ownKeys(e):o.keys(e)).forEach(n=>{t(n,e[n],e)})}else e.forEach((n,r)=>t(r,n,e))}function S(e){const t=e[n];return t?t.type_:E(e)?1:k(e)?2:O(e)?3:0}var w=(e,t,n=S(e))=>2===n?e.has(t):o[c].hasOwnProperty.call(e,t),v=(e,t,n=S(e))=>2===n?e.get(t):e[t],b=(e,t,n,r=S(e))=>{2===r?e.set(t,n):3===r?e.add(n):e[t]=n};var E=Array.isArray,k=e=>e instanceof Map,O=e=>e instanceof Set,C=e=>"object"==typeof e,D=e=>"function"==typeof e,M=e=>"boolean"==typeof e;var A=e=>e.copy_||e.base_,P=e=>e.modified_?e.copy_:e.base_;function z(e,t){if(k(e))return new Map(e);if(O(e))return new Set(e);if(E(e))return Array[c].slice.call(e);const r=_(e);if(!0===t||"class_only"===t&&!r){const t=o.getOwnPropertyDescriptors(e);delete t[n];let r=Reflect.ownKeys(t);for(let n=0;n<r.length;n++){const s=r[n],o=t[s];!1===o[f]&&(o[f]=!0,o[l]=!0),(o.get||o.set)&&(t[s]={[l]:!0,[f]:!0,[u]:o[u],[p]:e[s]})}return o.create(i(e),t)}{const t=i(e);if(null!==t&&r)return{...e};const n=o.create(t);return o.assign(n,e)}}function T(e,t=!1){return I(e)||d(e)||!y(e)||(S(e)>1&&o.defineProperties(e,{set:j,add:j,clear:j,delete:j}),o.freeze(e),t&&m(e,(e,t)=>{T(t,!0)},!1)),e}var j={[p]:function(){s(2)}};function I(e){return null===e||!C(e)||o.isFrozen(e)}var R="MapSet",x="Patches",V="ArrayMethods",L={};function $(e){const t=L[e];return t||s(0,e),t}var N,U=e=>!!L[e],F=()=>N;function J(e,t){t&&(e.patchPlugin_=$(x),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function K(e){Q(e),e.drafts_.forEach(B),e.drafts_=null}function Q(e){e===N&&(N=e.parent_)}var W=e=>N={drafts_:[],parent_:N,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:U(R)?$(R):void 0,arrayMethodsPlugin_:U(V)?$(V):void 0};function B(e){const t=e[n];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function G(t,r){r.unfinalizedDrafts_=r.drafts_.length;const o=r.drafts_[0];if(void 0!==t&&t!==o){o[n].modified_&&(K(r),s(4)),y(t)&&(t=Z(r,t));const{patchPlugin_:e}=r;e&&e.generateReplacementPatches_(o[n].base_,t,r)}else t=Z(r,o);return function(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&T(t,n)}(r,t,!0),K(r),r.patches_&&r.patchListener_(r.patches_,r.inversePatches_),t!==e?t:void 0}function Z(e,t){if(I(t))return t;const r=t[n];if(!r){return te(t,e.handledSet_,e)}if(!X(r,e))return t;if(!r.modified_)return r.base_;if(!r.finalized_){const{callbacks_:t}=r;if(t)for(;t.length>0;){t.pop()(e)}ee(r,e)}return r.copy_}function q(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var X=(e,t)=>e.scope_===t,H=[];function Y(e,t,n,r){const s=A(e),o=e.type_;if(void 0!==r){if(v(s,r,o)===t)return void b(s,r,n,o)}if(!e.draftLocations_){const t=e.draftLocations_=new Map;m(s,(e,n)=>{if(d(n)){const r=t.get(n)||[];r.push(e),t.set(n,r)}})}const i=e.draftLocations_.get(t)??H;for(const e of i)b(s,e,n,o)}function ee(e,t){if(e.modified_&&!e.finalized_&&(3===e.type_||1===e.type_&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){const{patchPlugin_:n}=t;if(n){const r=n.getPath(e);r&&n.generatePatches_(e,r,t)}q(e)}}function te(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||d(e)||t.has(e)||!y(e)||I(e)||(t.add(e),m(e,(s,o)=>{if(d(o)){const t=o[n];if(X(t,r)){const n=P(t);b(e,s,n,e.type_),q(t)}}else y(o)&&te(o,t,r)})),e}var ne={get(e,t){if(t===n)return e;let r=e.scope_.arrayMethodsPlugin_;const s=1===e.type_&&"string"==typeof t;if(s&&r?.isArrayOperationMethod(t))return r.createMethodInterceptor(e,t);const o=A(e);if(!w(o,t,e.type_))return function(e,t,n){const r=oe(t,n);return r?p in r?r[p]:r.get?.call(e.draft_):void 0}(e,o,t);const i=o[t];if(e.finalized_||!y(i))return i;if(s&&e.operationMethod&&r?.isMutatingArrayMethod(e.operationMethod)&&function(e){const t=+e;return Number.isInteger(t)&&String(t)===e}(t))return i;if(i===se(e.base_,t)){ae(e);const n=1===e.type_?+t:t,r=ce(e.scope_,i,e,n);return e.copy_[n]=r}return i},has:(e,t)=>t in A(e),ownKeys:e=>Reflect.ownKeys(A(e)),set(e,t,r){const s=oe(A(e),t);if(s?.set)return s.set.call(e.draft_,r),!0;if(!e.modified_){const s=se(A(e),t),a=s?.[n];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(((o=r)===(i=s)?0!==o||1/o==1/i:o!=o&&i!=i)&&(void 0!==r||w(e.base_,t,e.type_)))return!0;ae(e),ie(e)}var o,i;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),function(e,t,r){const{scope_:s}=e;if(d(r)){const o=r[n];X(o,s)&&o.callbacks_.push(function(){ae(e);const n=P(o);Y(e,r,n,t)})}else y(r)&&e.callbacks_.push(function(){const n=A(e);3===e.type_?n.has(r)&&te(r,s.handledSet_,s):v(n,t,e.type_)===r&&s.drafts_.length>1&&!0===(e.assigned_.get(t)??!1)&&e.copy_&&te(v(e.copy_,t,e.type_),s.handledSet_,s)})}(e,t,r)),!0},deleteProperty:(e,t)=>(ae(e),void 0!==se(e.base_,t)||t in e.base_?(e.assigned_.set(t,!1),ie(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const n=A(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r?{[f]:!0,[l]:1!==e.type_||"length"!==t,[u]:r[u],[p]:n[t]}:r},defineProperty(){s(11)},getPrototypeOf:e=>i(e.base_),setPrototypeOf(){s(12)}},re={};for(let e in ne){let t=ne[e];re[e]=function(){const e=arguments;return e[0]=e[0][0],t.apply(this,e)}}function se(e,t){const r=e[n];return(r?A(r):e)[t]}function oe(e,t){if(!(t in e))return;let n=i(e);for(;n;){const e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=i(n)}}function ie(e){e.modified_||(e.modified_=!0,e.parent_&&ie(e.parent_))}function ae(e){e.copy_||(e.assigned_=new Map,e.copy_=z(e.base_,e.scope_.immer_.useStrictShallowCopy_))}re.deleteProperty=function(e,t){return isNaN(parseInt(t))&&s(13),re.set.call(this,e,t,void 0)},re.set=function(e,t,n){return"length"!==t&&isNaN(parseInt(t))&&s(14),ne.set.call(this,e[0],t,n,e[0])};function ce(e,t,n,r){const[s,o]=k(t)?$(R).proxyMap_(t,n):O(t)?$(R).proxySet_(t,n):function(e,t){const n=E(e),r={type_:n?1:0,scope_:t?t.scope_:F(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0};let s=r,o=ne;n&&(s=[r],o=re);const{revoke:i,proxy:a}=Proxy.revocable(s,o);return r.draft_=a,r.revoke_=i,[a,r]}(t,n);return(n?.scope_??F()).drafts_.push(s),o.callbacks_=n?.callbacks_??[],o.key_=r,n&&void 0!==r?function(e,t,n){e.callbacks_.push(function(r){const s=t;if(!s||!X(s,r))return;r.mapSetPlugin_?.fixSetContents(s);const o=P(s);Y(e,s.draft_??s,o,n),ee(s,r)})}(n,o,r):o.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(o);const{patchPlugin_:t}=e;o.modified_&&t&&t.generatePatches_(o,[],e)}),s}function le(e){if(!y(e)||I(e))return e;const t=e[n];let r,s=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=z(e,t.scope_.immer_.useStrictShallowCopy_),s=t.scope_.immer_.shouldUseStrictIteration()}else r=z(e,!0);return m(r,(e,t)=>{b(r,e,le(t))},s),t&&(t.finalized_=!1),r}var ue=(new class{constructor(t){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,n,r)=>{if(D(t)&&!D(n)){const e=n;n=t;const r=this;return function(t=e,...s){return r.produce(t,e=>n.call(this,e,...s))}}let o;if(D(n)||s(6),void 0===r||D(r)||s(7),y(t)){const e=W(this),s=ce(e,t,void 0);let i=!0;try{o=n(s),i=!1}finally{i?K(e):Q(e)}return J(e,r),G(o,e)}if(!t||!C(t)){if(o=n(t),void 0===o&&(o=t),o===e&&(o=void 0),this.autoFreeze_&&T(o,!0),r){const e=[],n=[];$(x).generateReplacementPatches_(t,o,{patches_:e,inversePatches_:n}),r(e,n)}return o}s(1,t)},this.produceWithPatches=(e,t)=>{if(D(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},M(t?.autoFreeze)&&this.setAutoFreeze(t.autoFreeze),M(t?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(t.useStrictShallowCopy),M(t?.useStrictIteration)&&this.setUseStrictIteration(t.useStrictIteration)}createDraft(e){y(e)||s(8),d(e)&&(e=function(e){d(e)||s(10,e);return le(e)}(e));const t=W(this),r=ce(t,e,void 0);return r[n].isManual_=!0,Q(t),r}finishDraft(e,t){const r=e&&e[n];r&&r.isManual_||s(9);const{scope_:o}=r;return J(o,t),G(void 0,o)}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--){const r=t[n];if(0===r.path.length&&"replace"===r.op){e=r.value;break}}n>-1&&(t=t.slice(n+1));const r=$(x).applyPatches_;return d(e)?r(e,t):this.produce(e,e=>r(e,t))}}).produce,fe=(e,t)=>{const n=Date.now();if(/\(\.*\+\?\)\+/.test(e)||/\(\.*\?\)\*/.test(e))return!1;if(e.length>500)return!1;try{const n=new RegExp(e).test(t);Date.now();return n}catch{return!1}},pe=()=>{if("undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID)try{return crypto.randomUUID()}catch{}throw new Error("Cryptographically secure random UUID generation is required but crypto.randomUUID is unavailable. Please use a browser or environment with Web Crypto API support.")};"undefined"!=typeof crypto&&void 0!==crypto.subtle&&crypto.subtle.generateKey;var de=async(e,t)=>{const n=(new TextEncoder).encode(JSON.stringify(e)),r=await crypto.subtle.encrypt({name:"AES-GCM",iv:t.iv},t.key,n),s=new Uint8Array(t.iv.length+r.byteLength);return s.set(t.iv),s.set(new Uint8Array(r),t.iv.length),btoa(String.fromCharCode(...s))},ye=async(e,t)=>{const n=Uint8Array.from(atob(e),e=>e.charCodeAt(0)),r=n.slice(0,12),s=n.slice(12),o=await crypto.subtle.decrypt({name:"AES-GCM",iv:r},t.key,s);return JSON.parse((new TextDecoder).decode(o))},he=(e,t,n)=>{e.set(t instanceof RegExp?t.source:t,n)},ge=(e,t,n,r)=>{if(0===e.size)return!0;for(const[s,o]of e){let e;if(e="function"==typeof s?s(t,r):fe(s,t),e)return o.includes(n)||o.includes("admin")}return!1},_e=e=>{if("string"==typeof e){let t=e.replace(/&#[xX]?[0-9a-fA-F]+;?/g,e=>{const t=e.match(/&#x([0-9a-fA-F]+);?/i);if(t&&t[1])return String.fromCharCode(parseInt(t[1],16));const n=e.match(/&#([0-9]+);?/);return n&&n[1]?String.fromCharCode(parseInt(n[1],10)):e});try{t=decodeURIComponent(t)}catch{}return t.replace(/\b(javascript|vbscript|data:text\/html|about:blank|chrome:)/gi,"[SEC-REMOVED]").replace(/<script\b[^>]*>[\s\S]*?<\s*\/\s*script\b[^>]*>/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]")}if(e&&"object"==typeof e&&!Array.isArray(e)){if(Object.getPrototypeOf(e)===Object.prototype){const t={};for(const[n,r]of Object.entries(e))t[n]=_e(r);return t}return e}return Array.isArray(e)?e.map(e=>_e(e)):e},me=(e,t,n,r)=>{const s={id:pe(),purpose:n,granted:r,timestamp:Date.now()},o=e.get(t)||[];return o.push(s),e.set(t,o),s},Se=e=>{if(null===e||"object"!=typeof e)return e;if("function"==typeof structuredClone)try{return structuredClone(e)}catch(e){}const t=new WeakMap,n=e=>{if(null===e||"object"!=typeof e)return e;if("function"==typeof e)return e;if(t.has(e))return t.get(e);if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e.source,e.flags);if(e instanceof Map){const r=new Map;return t.set(e,r),e.forEach((e,t)=>r.set(n(t),n(e))),r}if(e instanceof Set){const r=new Set;return t.set(e,r),e.forEach(e=>r.add(n(e))),r}const r=Array.isArray(e)?[]:Object.create(Object.getPrototypeOf(e));t.set(e,r);const s=[...Object.keys(e),...Object.getOwnPropertySymbols(e)];for(const t of s)r[t]=n(e[t]);return r};return n(e)},we=(e,t)=>{if(e===t)return!0;if(null===e||null===t)return e===t;if("object"!=typeof e||"object"!=typeof t)return e===t;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!we(e[n],t[n]))return!1;return!0}const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r=0;r<n.length;r++){const s=n[r];if(!(s in t)||!we(e[s],t[s]))return!1}return!0},ve=e=>`${e}_`,be=class{store;config;pendingQueue=new Map;remoteVersions=new Map;syncTimer=null;onlineStatusListeners=new Set;syncStateListeners=new Set;_isOnline=!0;_isSyncing=!1;constructor(e,t){this.store=e,this.config={endpoint:t.endpoint,authToken:t.authToken||"",strategy:t.strategy||"last-write-wins",autoSyncInterval:t.autoSyncInterval??3e4,syncOnReconnect:t.syncOnReconnect??!0,debounceTime:t.debounceTime??1e3,fetch:t.fetch||fetch,onSync:t.onSync||(()=>{}),onConflict:t.onConflict||(()=>({action:"accept-local"})),maxRetries:t.maxRetries??3},this._isOnline="undefined"==typeof navigator||navigator.onLine,this._setupOnlineListener(),this._setupStoreListener(),this.config.autoSyncInterval>0&&this._startAutoSync()}_getAuthToken(){const e=this.config.authToken;return"function"==typeof e?e()||"":e||""}_setupOnlineListener(){"undefined"!=typeof window&&(window.addEventListener("online",()=>{this._isOnline=!0,this._notifyOnlineChange(!0),this.config.syncOnReconnect&&this.sync()}),window.addEventListener("offline",()=>{this._isOnline=!1,this._notifyOnlineChange(!1)}))}_setupStoreListener(){this.store._subscribe(()=>{})}_startAutoSync(){setInterval(()=>{this._isOnline&&!this._isSyncing&&this.pendingQueue.size>0&&this.sync()},this.config.autoSyncInterval)}_notifyOnlineChange(e){this.onlineStatusListeners.forEach(t=>t(e)),this._notifyStateChange()}_notifyStateChange(){const e=this.getState();this.syncStateListeners.forEach(t=>t(e))}queueChange(e,t){const n=this.store._getVersion(e)||1;this.pendingQueue.set(e,{key:e,value:Se(t),timestamp:Date.now(),version:n}),this._notifyStateChange(),this.syncTimer&&clearTimeout(this.syncTimer),this.syncTimer=setTimeout(()=>{this._isOnline&&this.sync()},this.config.debounceTime)}async sync(){if(this._isSyncing)return{success:!1,syncedKeys:[],conflicts:[],errors:["Sync already in progress"],timestamp:Date.now(),duration:0};this._isSyncing=!0,this._notifyStateChange();const e=Date.now(),t=[],n=[],r=[];try{const s=Array.from(this.pendingQueue.values());if(0===s.length)return this._isSyncing=!1,this._notifyStateChange(),{success:!0,syncedKeys:[],conflicts:[],errors:[],timestamp:Date.now(),duration:Date.now()-e};await this._fetchRemoteVersions(s.map(e=>e.key));for(const e of s)try{const r=this.remoteVersions.get(e.key);if(r)if(r.version>=e.version){const s={key:e.key,localValue:e.value,remoteValue:r.value,localVersion:e.version,remoteVersion:r.version,timestamp:e.timestamp};n.push(s);const o=this.config.onConflict(s);await this._resolveConflict(e,r,o),t.push(e.key),this.pendingQueue.delete(e.key)}else await this._pushChange(e),t.push(e.key),this.pendingQueue.delete(e.key);else await this._pushChange(e),t.push(e.key),this.pendingQueue.delete(e.key)}catch(t){r.push(`Failed to sync "${e.key}": ${t}`)}const o={success:0===r.length,syncedKeys:t,conflicts:n,errors:r,timestamp:Date.now(),duration:Date.now()-e};return this.config.onSync(o),o}catch(s){const o=`Sync failed: ${s}`;return r.push(o),{success:!1,syncedKeys:t,conflicts:n,errors:r,timestamp:Date.now(),duration:Date.now()-e}}finally{this._isSyncing=!1,this._notifyStateChange()}}async _fetchRemoteVersions(e){try{const t=this._getAuthToken(),n=await this.config.fetch(`${this.config.endpoint}/versions`,{method:"POST",headers:{"Content-Type":"application/json",...t&&{Authorization:`Bearer ${t}`}},body:JSON.stringify({keys:e})});if(n.ok){const e=await n.json();if(e.versions)for(const[t,n]of Object.entries(e.versions))this.remoteVersions.set(t,n)}}catch(e){}}async _pushChange(e){let t=0;for(;t<this.config.maxRetries;)try{const n=this._getAuthToken(),r=await this.config.fetch(`${this.config.endpoint}/sync`,{method:"POST",headers:{"Content-Type":"application/json",...n&&{Authorization:`Bearer ${n}`}},body:JSON.stringify({key:e.key,value:e.value,version:e.version,timestamp:e.timestamp})});if(r.ok){const t=await r.json();return void(t.version&&this.remoteVersions.set(e.key,{version:t.version,timestamp:t.timestamp||Date.now(),value:e.value}))}t++}catch(e){if(t++,t>=this.config.maxRetries)throw e}}async _resolveConflict(e,t,n){switch(n.action){case"accept-local":await this._pushChange({...e,version:t.version+1,timestamp:Date.now()});break;case"accept-remote":this.store.set(e.key,t.value);break;case"merge":this.store.set(e.key,n.value),await this._pushChange({key:e.key,value:n.value,version:Math.max(e.version,t.version)+1,timestamp:Date.now()})}}getState(){return{isOnline:this._isOnline,isSyncing:this._isSyncing,lastSyncTimestamp:null,pendingChanges:this.pendingQueue.size,conflicts:0}}onOnlineChange(e){return this.onlineStatusListeners.add(e),()=>this.onlineStatusListeners.delete(e)}onStateChange(e){return this.syncStateListeners.add(e),()=>this.syncStateListeners.delete(e)}async flush(){return this.sync()}destroy(){this.syncTimer&&clearTimeout(this.syncTimer),this.pendingQueue.clear(),this.onlineStatusListeners.clear(),this.syncStateListeners.clear()}},Ee=()=>{try{0;const e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:{};return void 0!==e.__DEV__&&!1===e.__DEV__}catch{return!1}},ke={local:()=>"undefined"!=typeof window?window.localStorage:null,session:()=>"undefined"!=typeof window?window.sessionStorage:null,memory:()=>{const 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}}}},Oe=e=>{const t=new Map,n=new Map,r=new Map,s=new Set,o=new Map,i=new Set,a=new Map,c=new Map,l=new Map,u=new Map,f=new Map,p=new Map,d=new Map,y=new Map,h=e?.namespace||"gstate",g=e?.silent??!1,_=e?.debounceTime??150,m=e?.version??0,S=e?.storage||ke.local(),w=e?.onError,v=e?.maxObjectSize??0,b=e?.maxTotalSize??0,E=e?.encryptionKey??null,k=e?.validateInput??!0,O=e?.userId,C=e?.immer??!0,D=e?.persistByDefault??e?.persistence??e?.persist??!1;e?.accessRules&&e.accessRules.forEach(e=>he(d,e.pattern,e.permissions));let M,A=!1,P=!1,z=!1,j=0,I=null,R=null;const x=new Promise(e=>{M=e}),V=()=>({store:t,versions:n,sizes:r,totalSize:j,storage:S,config:e||{},diskQueue:f,encryptionKey:E,audit:U,onError:w,silent:g,debounceTime:_,currentVersion:m}),L=()=>({plugins:u,onError:w,silent:g}),$=e=>{if(null==e)return 0;const t=typeof e;if("boolean"===t)return 4;if("number"===t)return 8;if("string"===t)return 2*e.length;if("object"!==t)return 0;let n=0;const r=[e],s=new WeakSet;for(;r.length>0;){const e=r.pop();if("boolean"==typeof e)n+=4;else if("number"==typeof e)n+=8;else if("string"==typeof e)n+=2*e.length;else if("object"==typeof e&&null!==e){const t=e;if(s.has(t))continue;if(s.add(t),Array.isArray(t))for(let e=0;e<t.length;e++)r.push(t[e]);else for(const e of Object.keys(t))n+=2*e.length,r.push(t[e])}}return n},N=(e,t)=>{((e,t,n)=>{if(0!==e.plugins.size)for(const r of e.plugins.values()){const s=r.hooks?.[t];if(s)try{s(n)}catch(s){const o=s instanceof Error?s:new Error(String(s));e.onError?e.onError(o,{operation:`plugin:${r.name}:${t}`,key:n.key}):e.silent}}})(L(),e,t)},U=(e,t,n,r)=>{},F=e=>{const t=c.get(e);if(!t)return;const r=new Set,s=t.selector(e=>(r.add(e),c.has(e)?c.get(e).lastValue:W.get(e)));t.deps.forEach(t=>{if(!r.has(t)){const n=l.get(t);n&&(n.delete(e),0===n.size&&l.delete(t))}}),r.forEach(n=>{t.deps.has(n)||(l.has(n)||l.set(n,new Set),l.get(n).add(e))}),t.deps=r,we(t.lastValue,s)||(t.lastValue=C&&null!==s&&"object"==typeof s?T(Se(s),!0):s,n.set(e,(n.get(e)||0)+1),J(e))},J=e=>{if(e){if(l.has(e)){const t=l.get(e);for(const e of t)F(e)}const t=a.get(e);if(t){const n=W.get(e);for(const r of t)try{r(n)}catch(t){const n=t instanceof Error?t:new Error(String(t));w&&w(n,{operation:"watcher",key:e})}}const n=o.get(e);if(n)for(const t of n)try{t()}catch(t){const n=t instanceof Error?t:new Error(String(t));w&&w(n,{operation:"keyListener",key:e})}}if(A)P=!0;else for(const e of s)try{e()}catch(e){const t=e instanceof Error?e:new Error(String(e));w&&w(t,{operation:"listener"})}},K=async()=>{(async e=>{if(!e.storage)return;const{store:t,config:n,diskQueue:r,storage:s,encryptionKey:o,audit:i,onError:a,silent:c,currentVersion:l}=e,u=ve(n.namespace||"gstate");try{const e={};let r;t.forEach((t,n)=>{e[n]=t});const o=n?.encoded;r=o?btoa(JSON.stringify(e)):JSON.stringify(e),s.setItem(u.replace("_",""),JSON.stringify({v:1,t:Date.now(),e:null,d:r,_sys_v:l,_b64:!!o||void 0})),i("set","FULL_STATE",!0)}catch(e){const t=e instanceof Error?e:new Error(String(e));a&&a(t,{operation:"persist",key:"FULL_STATE"})}const f=Array.from(r.entries());r.clear();for(const[t,n]of f)try{if(!t||!/^[a-zA-Z0-9_.-]+$/.test(t)||t.length>256)continue;let r=n.value;const a=n.options.encoded||n.options.encrypted||n.options.secure;if(n.options.encrypted){if(!o)throw new Error(`Encryption key missing for "${t}"`);r=await de(n.value,o)}else a?r=btoa(JSON.stringify(n.value)):"object"==typeof n.value&&null!==n.value&&(r=JSON.stringify(n.value));s.setItem(`${u}${t}`,JSON.stringify({v:e.versions.get(t)||1,t:Date.now(),e:n.options.ttl?Date.now()+n.options.ttl:null,d:r,_sys_v:l,_enc:!!n.options.encrypted||void 0,_b64:!(!n.options.encoded&&!n.options.secure)||void 0})),i("set",t,!0)}catch(e){const n=e instanceof Error?e:new Error(String(e));a&&a(n,{operation:"persist",key:t})}})(V())},Q={},W={_setSilently:(e,s)=>{const o=r.get(e)||0,i=C&&null!==s&&"object"==typeof s?T(Se(s),!0):s,a=(v>0||b>0)&&!Ee()?$(i):0;j=j-o+a,r.set(e,a),t.set(e,i),n.set(e,(n.get(e)||0)+1),R=null},_registerMethod:(e,t,n)=>{const r=e=>"__proto__"===e||"constructor"===e||"prototype"===e;r(e)||r(t)||(Q[e]||(Q[e]={}),Q[e][t]=n)},set:(s,o,i={})=>{const a=t.get(s),c=C&&"function"==typeof o?ue(a,o):o;if(k&&!(e=>/^([a-zA-Z0-9_.-][a-zA-Z0-9_.-]*)$/.test(e)&&e.length<=256&&e.length>0)(s))return!1;if(!ge(d,s,"write",O))return!1;const l=k?_e(c):c,u=r.get(s)||0;N("onBeforeSet",{key:s,value:l,store:W,version:n.get(s)||0});const p=C&&null!==l&&"object"==typeof l?T(Se(l),!0):l;if(!we(a,p)){const o=(v>0||b>0)&&!Ee()?$(p):0;if(v>0&&o>v){const e=new Error(`Object size (${o} bytes) exceeds maxObjectSize (${v} bytes)`);w&&w(e,{operation:"set",key:s})}if(b>0){const e=j-u+o;if(e>b){const t=new Error(`Total store size (${e} bytes) exceeds limit (${b} bytes)`);w&&w(t,{operation:"set"})}}j=j-u+o,r.set(s,o),t.set(s,p),n.set(s,(n.get(s)||0)+1),R=null;const a=i.persist??D;return a&&(f.set(s,{value:p,options:{...i,persist:a,encoded:i.encoded||e?.encoded}}),I&&clearTimeout(I),I=setTimeout(K,_)),N("onSet",{key:s,value:p,store:W,version:n.get(s)}),J(s),!0}return!1},get:e=>{if(!ge(d,e,"read",O))return null;const n=t.get(e);return N("onGet",{store:W,key:e,value:n}),n},compute:(e,t)=>{try{return c.has(e)||(c.set(e,{selector:t,lastValue:null,deps:new Set}),F(e)),c.get(e).lastValue}catch(t){const n=t instanceof Error?t:new Error(String(t));return w&&w(n,{operation:"compute",key:e}),null}},watch:(e,t)=>{a.has(e)||a.set(e,new Set);const n=a.get(e);return n.add(t),()=>{n.delete(t),0===n.size&&a.delete(e)}},remove:e=>{if(!ge(d,e,"delete",O))return!1;const s=t.get(e),o=t.delete(e);return o&&(j-=r.get(e)||0,r.delete(e),N("onRemove",{store:W,key:e,value:s}),R=null),n.set(e,(n.get(e)||0)+1),S&&S.removeItem(`${h}_${e}`),J(e),o},delete:e=>W.remove(e),deleteAll:()=>{if(Array.from(t.keys()).forEach(e=>W.remove(e)),S){const e=h+"_";for(let t=0;t<(S.length||0);t++){const n=S.key(t);n?.startsWith(e)&&(S.removeItem(n),t--)}}return j=0,r.clear(),R=null,!0},list:()=>Object.fromEntries(t.entries()),use:e=>{i.add(e)},transaction:e=>{A=!0,N("onTransaction",{store:W,key:"START"});try{e()}finally{A=!1,N("onTransaction",{store:W,key:"END"}),P&&(P=!1,J())}},destroy:()=>{I&&(clearTimeout(I),I=null),f.clear(),"undefined"!=typeof window&&window.removeEventListener("beforeunload",B),N("onDestroy",{store:W}),s.clear(),o.clear(),a.clear(),c.clear(),l.clear(),u.clear(),t.clear(),r.clear(),j=0,d.clear(),y.clear(),n.clear(),p.clear(),i.clear()},_addPlugin:e=>{((e,t,n)=>{try{e.plugins.set(t.name,t),t.hooks?.onInstall?.({store:n})}catch(n){const r=n instanceof Error?n:new Error(String(n));e.onError?e.onError(r,{operation:"plugin:install",key:t.name}):e.silent}})(L(),e,W)},_removePlugin:e=>{u.delete(e)},_subscribe:(e,t)=>{if(t){o.has(t)||o.set(t,new Set);const n=o.get(t);return n.add(e),()=>{n.delete(e),0===n.size&&o.delete(t)}}return s.add(e),()=>s.delete(e)},_getVersion:e=>n.get(e)??0,addAccessRule:(e,t)=>he(d,e,t),hasPermission:(e,t,n)=>ge(d,e,t,n),recordConsent:(e,t,n)=>me(y,e,t,n),hasConsent:(e,t)=>((e,t,n)=>{const r=e.get(t);if(!r)return!1;for(let e=r.length-1;e>=0;e--){const t=r[e];if(t&&t.purpose===n)return t.granted}return!1})(y,e,t),getConsents:e=>((e,t)=>e.get(t)||[])(y,e),revokeConsent:(e,t)=>((e,t,n)=>me(e,t,n,!1))(y,e,t),exportUserData:e=>((e,t)=>({userId:t,exportedAt:Date.now(),consents:e.get(t)||[]}))(y,e),deleteUserData:e=>((e,t)=>{const n=e.get(t)?.length||0;return e.delete(t),{success:!0,deletedConsents:n}})(y,e),getSnapshot:()=>(R||(R=Object.fromEntries(t.entries())),R),get plugins(){return Q},get isReady(){return z},get namespace(){return h},get userId(){return O},whenReady:()=>x};["addAccessRule","recordConsent","hasConsent","getConsents","revokeConsent","exportUserData","deleteUserData"].forEach(e=>{const t=W[e];t&&W._registerMethod("security",e,t)});const B=()=>{f.size>0&&K()};"undefined"!=typeof window&&window.addEventListener("beforeunload",B),S?(async(e,t,n)=>{const{storage:r,config:s,encryptionKey:o,audit:i,onError:a,silent:c,currentVersion:l,store:u,sizes:f,versions:p}=e,d=ve(s.namespace||"gstate"),y=s.immer??!0;if(r)try{const c={};let h=0;for(let e=0;e<(r.length||0);e++){const t=r.key(e);if(!t||!t.startsWith(d))continue;const n=r.getItem(t);if(n)try{const s=JSON.parse(n),a=t.substring(d.length);if(h=Math.max(h,void 0!==s._sys_v?s._sys_v:s.v||0),s.e&&Date.now()>s.e){r.removeItem(t),e--;continue}let l=s.d;if(s._enc&&o)l=await ye(l,o);else if("string"==typeof l)if(s._b64)try{l=JSON.parse(atob(l))}catch(e){}else if(l.startsWith("{")||l.startsWith("["))try{l=JSON.parse(l)}catch(e){}c[a]=l,i("hydrate",a,!0)}catch(e){i("hydrate",t,!1,String(e));const n=e instanceof Error?e:new Error(String(e));a&&a(n,{operation:"hydration",key:t})}}const g=h<l&&s.migrate?s.migrate(c,h):c;Object.entries(g).forEach(([n,r])=>{const s=y&&null!==r&&"object"==typeof r?T(Se(r),!0):r,o=t(s),i=f.get(n)||0;e.totalSize=e.totalSize-i+o,f.set(n,o),u.set(n,s),p.set(n,1)}),n()}catch(e){const t=e instanceof Error?e:new Error(String(e));a&&a(t,{operation:"hydration"})}})(V(),e=>(v>0||b>0)&&!Ee()?$(e):0,()=>{z=!0,R=null,M(),J()}).then(()=>{}):(z=!0,M());let G=null;return e?.sync&&(G=new be(W,e.sync),W._registerMethod("sync","flush",()=>G?.flush()),W._registerMethod("sync","getState",()=>G?.getState()),W._registerMethod("sync","onStateChange",e=>G?.onStateChange(e))),W};exports.AnalyticsPlugin=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"}))}}}),exports.StorageAdapters=ke,exports.SyncPlugin=e=>{const t=new BroadcastChannel(e?.channelName||"gstate_sync");let n=!1;return{name:"gstate-sync",hooks:{onInstall:({store:e})=>{t.onmessage=t=>{const{key:r,value:s,action:o}=t.data;r&&(n=!0,"REMOVE"===o?e.remove(r):e.set(r,s),n=!1)}},onSet:({key:e,value:r})=>{e&&!n&&t.postMessage({key:e,value:r,action:"SET"})},onRemove:({key:e})=>{e&&!n&&t.postMessage({key:e,action:"REMOVE"})},onDestroy:()=>{t.close()}}}},exports.createAsyncStore=(e,t)=>{const n=t?.key||"async_data",r=t?.store||Oe({namespace:`async_${n}`,silent:!0});null==r.get(n)&&r.set(n,{data:null,loading:!1,error:null,updatedAt:null});return Object.assign(r,{execute:async()=>{const 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{const s=await e(),o=r.get(n);r.set(n,{...o||{data:null,loading:!1,error:null,updatedAt:null},data:s,loading:!1,updatedAt:Date.now()},{persist:t?.persist})}catch(e){const t=r.get(n);r.set(n,{...t||{data:null,loading:!1,error:null,updatedAt:null},error:e instanceof Error?e:new Error(String(e)),loading:!1})}}})};
package/core/advanced.js DELETED
@@ -1 +0,0 @@
1
- var e=Symbol.for("immer-nothing"),t=Symbol.for("immer-draftable"),n=Symbol.for("immer-state"),r=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}];function s(e,...t){{const n=r[e],s=D(n)?n.apply(null,t):n;throw new Error(`[Immer] ${s}`)}}var o=Object,i=o.getPrototypeOf,a="constructor",c="prototype",l="configurable",u="enumerable",f="writable",p="value",d=e=>!!e&&!!e[n];function y(e){return!!e&&(_(e)||E(e)||!!e[t]||!!e[a]?.[t]||k(e)||O(e))}var h=o[c][a].toString(),g=new WeakMap;function _(e){if(!e||!C(e))return!1;const t=i(e);if(null===t||t===o[c])return!0;const n=o.hasOwnProperty.call(t,a)&&t[a];if(n===Object)return!0;if(!D(n))return!1;let r=g.get(n);return void 0===r&&(r=Function.toString.call(n),g.set(n,r)),r===h}function m(e,t,n=!0){if(0===S(e)){(n?Reflect.ownKeys(e):o.keys(e)).forEach(n=>{t(n,e[n],e)})}else e.forEach((n,r)=>t(r,n,e))}function S(e){const t=e[n];return t?t.type_:E(e)?1:k(e)?2:O(e)?3:0}var w=(e,t,n=S(e))=>2===n?e.has(t):o[c].hasOwnProperty.call(e,t),v=(e,t,n=S(e))=>2===n?e.get(t):e[t],b=(e,t,n,r=S(e))=>{2===r?e.set(t,n):3===r?e.add(n):e[t]=n};var E=Array.isArray,k=e=>e instanceof Map,O=e=>e instanceof Set,C=e=>"object"==typeof e,D=e=>"function"==typeof e,M=e=>"boolean"==typeof e;var A=e=>e.copy_||e.base_,P=e=>e.modified_?e.copy_:e.base_;function z(e,t){if(k(e))return new Map(e);if(O(e))return new Set(e);if(E(e))return Array[c].slice.call(e);const r=_(e);if(!0===t||"class_only"===t&&!r){const t=o.getOwnPropertyDescriptors(e);delete t[n];let r=Reflect.ownKeys(t);for(let n=0;n<r.length;n++){const s=r[n],o=t[s];!1===o[f]&&(o[f]=!0,o[l]=!0),(o.get||o.set)&&(t[s]={[l]:!0,[f]:!0,[u]:o[u],[p]:e[s]})}return o.create(i(e),t)}{const t=i(e);if(null!==t&&r)return{...e};const n=o.create(t);return o.assign(n,e)}}function T(e,t=!1){return I(e)||d(e)||!y(e)||(S(e)>1&&o.defineProperties(e,{set:j,add:j,clear:j,delete:j}),o.freeze(e),t&&m(e,(e,t)=>{T(t,!0)},!1)),e}var j={[p]:function(){s(2)}};function I(e){return null===e||!C(e)||o.isFrozen(e)}var R="MapSet",V="Patches",x="ArrayMethods",L={};function $(e){const t=L[e];return t||s(0,e),t}var N,U=e=>!!L[e],F=()=>N;function J(e,t){t&&(e.patchPlugin_=$(V),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function K(e){Q(e),e.drafts_.forEach(B),e.drafts_=null}function Q(e){e===N&&(N=e.parent_)}var W=e=>N={drafts_:[],parent_:N,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:U(R)?$(R):void 0,arrayMethodsPlugin_:U(x)?$(x):void 0};function B(e){const t=e[n];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function G(t,r){r.unfinalizedDrafts_=r.drafts_.length;const o=r.drafts_[0];if(void 0!==t&&t!==o){o[n].modified_&&(K(r),s(4)),y(t)&&(t=Z(r,t));const{patchPlugin_:e}=r;e&&e.generateReplacementPatches_(o[n].base_,t,r)}else t=Z(r,o);return function(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&T(t,n)}(r,t,!0),K(r),r.patches_&&r.patchListener_(r.patches_,r.inversePatches_),t!==e?t:void 0}function Z(e,t){if(I(t))return t;const r=t[n];if(!r){return te(t,e.handledSet_,e)}if(!X(r,e))return t;if(!r.modified_)return r.base_;if(!r.finalized_){const{callbacks_:t}=r;if(t)for(;t.length>0;){t.pop()(e)}ee(r,e)}return r.copy_}function q(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var X=(e,t)=>e.scope_===t,H=[];function Y(e,t,n,r){const s=A(e),o=e.type_;if(void 0!==r){if(v(s,r,o)===t)return void b(s,r,n,o)}if(!e.draftLocations_){const t=e.draftLocations_=new Map;m(s,(e,n)=>{if(d(n)){const r=t.get(n)||[];r.push(e),t.set(n,r)}})}const i=e.draftLocations_.get(t)??H;for(const e of i)b(s,e,n,o)}function ee(e,t){if(e.modified_&&!e.finalized_&&(3===e.type_||1===e.type_&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){const{patchPlugin_:n}=t;if(n){const r=n.getPath(e);r&&n.generatePatches_(e,r,t)}q(e)}}function te(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||d(e)||t.has(e)||!y(e)||I(e)||(t.add(e),m(e,(s,o)=>{if(d(o)){const t=o[n];if(X(t,r)){const n=P(t);b(e,s,n,e.type_),q(t)}}else y(o)&&te(o,t,r)})),e}var ne={get(e,t){if(t===n)return e;let r=e.scope_.arrayMethodsPlugin_;const s=1===e.type_&&"string"==typeof t;if(s&&r?.isArrayOperationMethod(t))return r.createMethodInterceptor(e,t);const o=A(e);if(!w(o,t,e.type_))return function(e,t,n){const r=oe(t,n);return r?p in r?r[p]:r.get?.call(e.draft_):void 0}(e,o,t);const i=o[t];if(e.finalized_||!y(i))return i;if(s&&e.operationMethod&&r?.isMutatingArrayMethod(e.operationMethod)&&function(e){const t=+e;return Number.isInteger(t)&&String(t)===e}(t))return i;if(i===se(e.base_,t)){ae(e);const n=1===e.type_?+t:t,r=ce(e.scope_,i,e,n);return e.copy_[n]=r}return i},has:(e,t)=>t in A(e),ownKeys:e=>Reflect.ownKeys(A(e)),set(e,t,r){const s=oe(A(e),t);if(s?.set)return s.set.call(e.draft_,r),!0;if(!e.modified_){const s=se(A(e),t),a=s?.[n];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(((o=r)===(i=s)?0!==o||1/o==1/i:o!=o&&i!=i)&&(void 0!==r||w(e.base_,t,e.type_)))return!0;ae(e),ie(e)}var o,i;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),function(e,t,r){const{scope_:s}=e;if(d(r)){const o=r[n];X(o,s)&&o.callbacks_.push(function(){ae(e);const n=P(o);Y(e,r,n,t)})}else y(r)&&e.callbacks_.push(function(){const n=A(e);3===e.type_?n.has(r)&&te(r,s.handledSet_,s):v(n,t,e.type_)===r&&s.drafts_.length>1&&!0===(e.assigned_.get(t)??!1)&&e.copy_&&te(v(e.copy_,t,e.type_),s.handledSet_,s)})}(e,t,r)),!0},deleteProperty:(e,t)=>(ae(e),void 0!==se(e.base_,t)||t in e.base_?(e.assigned_.set(t,!1),ie(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const n=A(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r?{[f]:!0,[l]:1!==e.type_||"length"!==t,[u]:r[u],[p]:n[t]}:r},defineProperty(){s(11)},getPrototypeOf:e=>i(e.base_),setPrototypeOf(){s(12)}},re={};for(let e in ne){let t=ne[e];re[e]=function(){const e=arguments;return e[0]=e[0][0],t.apply(this,e)}}function se(e,t){const r=e[n];return(r?A(r):e)[t]}function oe(e,t){if(!(t in e))return;let n=i(e);for(;n;){const e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=i(n)}}function ie(e){e.modified_||(e.modified_=!0,e.parent_&&ie(e.parent_))}function ae(e){e.copy_||(e.assigned_=new Map,e.copy_=z(e.base_,e.scope_.immer_.useStrictShallowCopy_))}re.deleteProperty=function(e,t){return isNaN(parseInt(t))&&s(13),re.set.call(this,e,t,void 0)},re.set=function(e,t,n){return"length"!==t&&isNaN(parseInt(t))&&s(14),ne.set.call(this,e[0],t,n,e[0])};function ce(e,t,n,r){const[s,o]=k(t)?$(R).proxyMap_(t,n):O(t)?$(R).proxySet_(t,n):function(e,t){const n=E(e),r={type_:n?1:0,scope_:t?t.scope_:F(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0};let s=r,o=ne;n&&(s=[r],o=re);const{revoke:i,proxy:a}=Proxy.revocable(s,o);return r.draft_=a,r.revoke_=i,[a,r]}(t,n);return(n?.scope_??F()).drafts_.push(s),o.callbacks_=n?.callbacks_??[],o.key_=r,n&&void 0!==r?function(e,t,n){e.callbacks_.push(function(r){const s=t;if(!s||!X(s,r))return;r.mapSetPlugin_?.fixSetContents(s);const o=P(s);Y(e,s.draft_??s,o,n),ee(s,r)})}(n,o,r):o.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(o);const{patchPlugin_:t}=e;o.modified_&&t&&t.generatePatches_(o,[],e)}),s}function le(e){if(!y(e)||I(e))return e;const t=e[n];let r,s=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=z(e,t.scope_.immer_.useStrictShallowCopy_),s=t.scope_.immer_.shouldUseStrictIteration()}else r=z(e,!0);return m(r,(e,t)=>{b(r,e,le(t))},s),t&&(t.finalized_=!1),r}var ue=(new class{constructor(t){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,n,r)=>{if(D(t)&&!D(n)){const e=n;n=t;const r=this;return function(t=e,...s){return r.produce(t,e=>n.call(this,e,...s))}}let o;if(D(n)||s(6),void 0===r||D(r)||s(7),y(t)){const e=W(this),s=ce(e,t,void 0);let i=!0;try{o=n(s),i=!1}finally{i?K(e):Q(e)}return J(e,r),G(o,e)}if(!t||!C(t)){if(o=n(t),void 0===o&&(o=t),o===e&&(o=void 0),this.autoFreeze_&&T(o,!0),r){const e=[],n=[];$(V).generateReplacementPatches_(t,o,{patches_:e,inversePatches_:n}),r(e,n)}return o}s(1,t)},this.produceWithPatches=(e,t)=>{if(D(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},M(t?.autoFreeze)&&this.setAutoFreeze(t.autoFreeze),M(t?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(t.useStrictShallowCopy),M(t?.useStrictIteration)&&this.setUseStrictIteration(t.useStrictIteration)}createDraft(e){y(e)||s(8),d(e)&&(e=function(e){d(e)||s(10,e);return le(e)}(e));const t=W(this),r=ce(t,e,void 0);return r[n].isManual_=!0,Q(t),r}finishDraft(e,t){const r=e&&e[n];r&&r.isManual_||s(9);const{scope_:o}=r;return J(o,t),G(void 0,o)}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--){const r=t[n];if(0===r.path.length&&"replace"===r.op){e=r.value;break}}n>-1&&(t=t.slice(n+1));const r=$(V).applyPatches_;return d(e)?r(e,t):this.produce(e,e=>r(e,t))}}).produce,fe=(e,t)=>{const n=Date.now();if(/\(\.*\+\?\)\+/.test(e)||/\(\.*\?\)\*/.test(e))return!1;if(e.length>500)return!1;try{const n=new RegExp(e).test(t);Date.now();return n}catch{return!1}},pe=()=>{if("undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID)try{return crypto.randomUUID()}catch{}throw new Error("Cryptographically secure random UUID generation is required but crypto.randomUUID is unavailable. Please use a browser or environment with Web Crypto API support.")};"undefined"!=typeof crypto&&void 0!==crypto.subtle&&crypto.subtle.generateKey;var de=async(e,t)=>{const n=(new TextEncoder).encode(JSON.stringify(e)),r=await crypto.subtle.encrypt({name:"AES-GCM",iv:t.iv},t.key,n),s=new Uint8Array(t.iv.length+r.byteLength);return s.set(t.iv),s.set(new Uint8Array(r),t.iv.length),btoa(String.fromCharCode(...s))},ye=async(e,t)=>{const n=Uint8Array.from(atob(e),e=>e.charCodeAt(0)),r=n.slice(0,12),s=n.slice(12),o=await crypto.subtle.decrypt({name:"AES-GCM",iv:r},t.key,s);return JSON.parse((new TextDecoder).decode(o))},he=(e,t,n)=>{e.set(t instanceof RegExp?t.source:t,n)},ge=(e,t,n,r)=>{if(0===e.size)return!0;for(const[s,o]of e){let e;if(e="function"==typeof s?s(t,r):fe(s,t),e)return o.includes(n)||o.includes("admin")}return!1},_e=e=>{if("string"==typeof e){let t=e.replace(/&#[xX]?[0-9a-fA-F]+;?/g,e=>{const t=e.match(/&#x([0-9a-fA-F]+);?/i);if(t&&t[1])return String.fromCharCode(parseInt(t[1],16));const n=e.match(/&#([0-9]+);?/);return n&&n[1]?String.fromCharCode(parseInt(n[1],10)):e});try{t=decodeURIComponent(t)}catch{}return t.replace(/\b(javascript|vbscript|data:text\/html|about:blank|chrome:)/gi,"[SEC-REMOVED]").replace(/<script\b[^>]*>[\s\S]*?<\s*\/\s*script\b[^>]*>/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]")}if(e&&"object"==typeof e&&!Array.isArray(e)){if(Object.getPrototypeOf(e)===Object.prototype){const t={};for(const[n,r]of Object.entries(e))t[n]=_e(r);return t}return e}return Array.isArray(e)?e.map(e=>_e(e)):e},me=(e,t,n,r)=>{const s={id:pe(),purpose:n,granted:r,timestamp:Date.now()},o=e.get(t)||[];return o.push(s),e.set(t,o),s},Se=e=>{if(null===e||"object"!=typeof e)return e;if("function"==typeof structuredClone)try{return structuredClone(e)}catch(e){}const t=new WeakMap,n=e=>{if(null===e||"object"!=typeof e)return e;if("function"==typeof e)return e;if(t.has(e))return t.get(e);if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e.source,e.flags);if(e instanceof Map){const r=new Map;return t.set(e,r),e.forEach((e,t)=>r.set(n(t),n(e))),r}if(e instanceof Set){const r=new Set;return t.set(e,r),e.forEach(e=>r.add(n(e))),r}const r=Array.isArray(e)?[]:Object.create(Object.getPrototypeOf(e));t.set(e,r);const s=[...Object.keys(e),...Object.getOwnPropertySymbols(e)];for(const t of s)r[t]=n(e[t]);return r};return n(e)},we=(e,t)=>{if(e===t)return!0;if(null===e||null===t)return e===t;if("object"!=typeof e||"object"!=typeof t)return e===t;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!we(e[n],t[n]))return!1;return!0}const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r=0;r<n.length;r++){const s=n[r];if(!(s in t)||!we(e[s],t[s]))return!1}return!0},ve=e=>`${e}_`,be=class{store;config;pendingQueue=new Map;remoteVersions=new Map;syncTimer=null;onlineStatusListeners=new Set;syncStateListeners=new Set;_isOnline=!0;_isSyncing=!1;constructor(e,t){this.store=e,this.config={endpoint:t.endpoint,authToken:t.authToken||"",strategy:t.strategy||"last-write-wins",autoSyncInterval:t.autoSyncInterval??3e4,syncOnReconnect:t.syncOnReconnect??!0,debounceTime:t.debounceTime??1e3,fetch:t.fetch||fetch,onSync:t.onSync||(()=>{}),onConflict:t.onConflict||(()=>({action:"accept-local"})),maxRetries:t.maxRetries??3},this._isOnline="undefined"==typeof navigator||navigator.onLine,this._setupOnlineListener(),this._setupStoreListener(),this.config.autoSyncInterval>0&&this._startAutoSync()}_getAuthToken(){const e=this.config.authToken;return"function"==typeof e?e()||"":e||""}_setupOnlineListener(){"undefined"!=typeof window&&(window.addEventListener("online",()=>{this._isOnline=!0,this._notifyOnlineChange(!0),this.config.syncOnReconnect&&this.sync()}),window.addEventListener("offline",()=>{this._isOnline=!1,this._notifyOnlineChange(!1)}))}_setupStoreListener(){this.store._subscribe(()=>{})}_startAutoSync(){setInterval(()=>{this._isOnline&&!this._isSyncing&&this.pendingQueue.size>0&&this.sync()},this.config.autoSyncInterval)}_notifyOnlineChange(e){this.onlineStatusListeners.forEach(t=>t(e)),this._notifyStateChange()}_notifyStateChange(){const e=this.getState();this.syncStateListeners.forEach(t=>t(e))}queueChange(e,t){const n=this.store._getVersion(e)||1;this.pendingQueue.set(e,{key:e,value:Se(t),timestamp:Date.now(),version:n}),this._notifyStateChange(),this.syncTimer&&clearTimeout(this.syncTimer),this.syncTimer=setTimeout(()=>{this._isOnline&&this.sync()},this.config.debounceTime)}async sync(){if(this._isSyncing)return{success:!1,syncedKeys:[],conflicts:[],errors:["Sync already in progress"],timestamp:Date.now(),duration:0};this._isSyncing=!0,this._notifyStateChange();const e=Date.now(),t=[],n=[],r=[];try{const s=Array.from(this.pendingQueue.values());if(0===s.length)return this._isSyncing=!1,this._notifyStateChange(),{success:!0,syncedKeys:[],conflicts:[],errors:[],timestamp:Date.now(),duration:Date.now()-e};await this._fetchRemoteVersions(s.map(e=>e.key));for(const e of s)try{const r=this.remoteVersions.get(e.key);if(r)if(r.version>=e.version){const s={key:e.key,localValue:e.value,remoteValue:r.value,localVersion:e.version,remoteVersion:r.version,timestamp:e.timestamp};n.push(s);const o=this.config.onConflict(s);await this._resolveConflict(e,r,o),t.push(e.key),this.pendingQueue.delete(e.key)}else await this._pushChange(e),t.push(e.key),this.pendingQueue.delete(e.key);else await this._pushChange(e),t.push(e.key),this.pendingQueue.delete(e.key)}catch(t){r.push(`Failed to sync "${e.key}": ${t}`)}const o={success:0===r.length,syncedKeys:t,conflicts:n,errors:r,timestamp:Date.now(),duration:Date.now()-e};return this.config.onSync(o),o}catch(s){const o=`Sync failed: ${s}`;return r.push(o),{success:!1,syncedKeys:t,conflicts:n,errors:r,timestamp:Date.now(),duration:Date.now()-e}}finally{this._isSyncing=!1,this._notifyStateChange()}}async _fetchRemoteVersions(e){try{const t=this._getAuthToken(),n=await this.config.fetch(`${this.config.endpoint}/versions`,{method:"POST",headers:{"Content-Type":"application/json",...t&&{Authorization:`Bearer ${t}`}},body:JSON.stringify({keys:e})});if(n.ok){const e=await n.json();if(e.versions)for(const[t,n]of Object.entries(e.versions))this.remoteVersions.set(t,n)}}catch(e){}}async _pushChange(e){let t=0;for(;t<this.config.maxRetries;)try{const n=this._getAuthToken(),r=await this.config.fetch(`${this.config.endpoint}/sync`,{method:"POST",headers:{"Content-Type":"application/json",...n&&{Authorization:`Bearer ${n}`}},body:JSON.stringify({key:e.key,value:e.value,version:e.version,timestamp:e.timestamp})});if(r.ok){const t=await r.json();return void(t.version&&this.remoteVersions.set(e.key,{version:t.version,timestamp:t.timestamp||Date.now(),value:e.value}))}t++}catch(e){if(t++,t>=this.config.maxRetries)throw e}}async _resolveConflict(e,t,n){switch(n.action){case"accept-local":await this._pushChange({...e,version:t.version+1,timestamp:Date.now()});break;case"accept-remote":this.store.set(e.key,t.value);break;case"merge":this.store.set(e.key,n.value),await this._pushChange({key:e.key,value:n.value,version:Math.max(e.version,t.version)+1,timestamp:Date.now()})}}getState(){return{isOnline:this._isOnline,isSyncing:this._isSyncing,lastSyncTimestamp:null,pendingChanges:this.pendingQueue.size,conflicts:0}}onOnlineChange(e){return this.onlineStatusListeners.add(e),()=>this.onlineStatusListeners.delete(e)}onStateChange(e){return this.syncStateListeners.add(e),()=>this.syncStateListeners.delete(e)}async flush(){return this.sync()}destroy(){this.syncTimer&&clearTimeout(this.syncTimer),this.pendingQueue.clear(),this.onlineStatusListeners.clear(),this.syncStateListeners.clear()}},Ee=()=>{try{0;const e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:{};return void 0!==e.__DEV__&&!1===e.__DEV__}catch{return!1}},ke={local:()=>"undefined"!=typeof window?window.localStorage:null,session:()=>"undefined"!=typeof window?window.sessionStorage:null,memory:()=>{const 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}}}},Oe=e=>{const t=new Map,n=new Map,r=new Map,s=new Set,o=new Map,i=new Set,a=new Map,c=new Map,l=new Map,u=new Map,f=new Map,p=new Map,d=new Map,y=new Map,h=e?.namespace||"gstate",g=e?.silent??!1,_=e?.debounceTime??150,m=e?.version??0,S=e?.storage||ke.local(),w=e?.onError,v=e?.maxObjectSize??0,b=e?.maxTotalSize??0,E=e?.encryptionKey??null,k=e?.validateInput??!0,O=e?.userId,C=e?.immer??!0,D=e?.persistByDefault??e?.persistence??e?.persist??!1;e?.accessRules&&e.accessRules.forEach(e=>he(d,e.pattern,e.permissions));let M,A=!1,P=!1,z=!1,j=0,I=null,R=null;const V=new Promise(e=>{M=e}),x=()=>({store:t,versions:n,sizes:r,totalSize:j,storage:S,config:e||{},diskQueue:f,encryptionKey:E,audit:U,onError:w,silent:g,debounceTime:_,currentVersion:m}),L=()=>({plugins:u,onError:w,silent:g}),$=e=>{if(null==e)return 0;const t=typeof e;if("boolean"===t)return 4;if("number"===t)return 8;if("string"===t)return 2*e.length;if("object"!==t)return 0;let n=0;const r=[e],s=new WeakSet;for(;r.length>0;){const e=r.pop();if("boolean"==typeof e)n+=4;else if("number"==typeof e)n+=8;else if("string"==typeof e)n+=2*e.length;else if("object"==typeof e&&null!==e){const t=e;if(s.has(t))continue;if(s.add(t),Array.isArray(t))for(let e=0;e<t.length;e++)r.push(t[e]);else for(const e of Object.keys(t))n+=2*e.length,r.push(t[e])}}return n},N=(e,t)=>{((e,t,n)=>{if(0!==e.plugins.size)for(const r of e.plugins.values()){const s=r.hooks?.[t];if(s)try{s(n)}catch(s){const o=s instanceof Error?s:new Error(String(s));e.onError?e.onError(o,{operation:`plugin:${r.name}:${t}`,key:n.key}):e.silent}}})(L(),e,t)},U=(e,t,n,r)=>{},F=e=>{const t=c.get(e);if(!t)return;const r=new Set,s=t.selector(e=>(r.add(e),c.has(e)?c.get(e).lastValue:W.get(e)));t.deps.forEach(t=>{if(!r.has(t)){const n=l.get(t);n&&(n.delete(e),0===n.size&&l.delete(t))}}),r.forEach(n=>{t.deps.has(n)||(l.has(n)||l.set(n,new Set),l.get(n).add(e))}),t.deps=r,we(t.lastValue,s)||(t.lastValue=C&&null!==s&&"object"==typeof s?T(Se(s),!0):s,n.set(e,(n.get(e)||0)+1),J(e))},J=e=>{if(e){if(l.has(e)){const t=l.get(e);for(const e of t)F(e)}const t=a.get(e);if(t){const n=W.get(e);for(const r of t)try{r(n)}catch(t){const n=t instanceof Error?t:new Error(String(t));w&&w(n,{operation:"watcher",key:e})}}const n=o.get(e);if(n)for(const t of n)try{t()}catch(t){const n=t instanceof Error?t:new Error(String(t));w&&w(n,{operation:"keyListener",key:e})}}if(A)P=!0;else for(const e of s)try{e()}catch(e){const t=e instanceof Error?e:new Error(String(e));w&&w(t,{operation:"listener"})}},K=async()=>{(async e=>{if(!e.storage)return;const{store:t,config:n,diskQueue:r,storage:s,encryptionKey:o,audit:i,onError:a,silent:c,currentVersion:l}=e,u=ve(n.namespace||"gstate");try{const e={};let r;t.forEach((t,n)=>{e[n]=t});const o=n?.encoded;r=o?btoa(JSON.stringify(e)):JSON.stringify(e),s.setItem(u.replace("_",""),JSON.stringify({v:1,t:Date.now(),e:null,d:r,_sys_v:l,_b64:!!o||void 0})),i("set","FULL_STATE",!0)}catch(e){const t=e instanceof Error?e:new Error(String(e));a&&a(t,{operation:"persist",key:"FULL_STATE"})}const f=Array.from(r.entries());r.clear();for(const[t,n]of f)try{if(!t||!/^[a-zA-Z0-9_.-]+$/.test(t)||t.length>256)continue;let r=n.value;const a=n.options.encoded||n.options.encrypted||n.options.secure;if(n.options.encrypted){if(!o)throw new Error(`Encryption key missing for "${t}"`);r=await de(n.value,o)}else a?r=btoa(JSON.stringify(n.value)):"object"==typeof n.value&&null!==n.value&&(r=JSON.stringify(n.value));s.setItem(`${u}${t}`,JSON.stringify({v:e.versions.get(t)||1,t:Date.now(),e:n.options.ttl?Date.now()+n.options.ttl:null,d:r,_sys_v:l,_enc:!!n.options.encrypted||void 0,_b64:!(!n.options.encoded&&!n.options.secure)||void 0})),i("set",t,!0)}catch(e){const n=e instanceof Error?e:new Error(String(e));a&&a(n,{operation:"persist",key:t})}})(x())},Q={},W={_setSilently:(e,s)=>{const o=r.get(e)||0,i=C&&null!==s&&"object"==typeof s?T(Se(s),!0):s,a=(v>0||b>0)&&!Ee()?$(i):0;j=j-o+a,r.set(e,a),t.set(e,i),n.set(e,(n.get(e)||0)+1),R=null},_registerMethod:(e,t,n)=>{const r=e=>"__proto__"===e||"constructor"===e||"prototype"===e;r(e)||r(t)||(Q[e]||(Q[e]={}),Q[e][t]=n)},set:(s,o,i={})=>{const a=t.get(s),c=C&&"function"==typeof o?ue(a,o):o;if(k&&!(e=>/^([a-zA-Z0-9_.-][a-zA-Z0-9_.-]*)$/.test(e)&&e.length<=256&&e.length>0)(s))return!1;if(!ge(d,s,"write",O))return!1;const l=k?_e(c):c,u=r.get(s)||0;N("onBeforeSet",{key:s,value:l,store:W,version:n.get(s)||0});const p=C&&null!==l&&"object"==typeof l?T(Se(l),!0):l;if(!we(a,p)){const o=(v>0||b>0)&&!Ee()?$(p):0;if(v>0&&o>v){const e=new Error(`Object size (${o} bytes) exceeds maxObjectSize (${v} bytes)`);w&&w(e,{operation:"set",key:s})}if(b>0){const e=j-u+o;if(e>b){const t=new Error(`Total store size (${e} bytes) exceeds limit (${b} bytes)`);w&&w(t,{operation:"set"})}}j=j-u+o,r.set(s,o),t.set(s,p),n.set(s,(n.get(s)||0)+1),R=null;const a=i.persist??D;return a&&(f.set(s,{value:p,options:{...i,persist:a,encoded:i.encoded||e?.encoded}}),I&&clearTimeout(I),I=setTimeout(K,_)),N("onSet",{key:s,value:p,store:W,version:n.get(s)}),J(s),!0}return!1},get:e=>{if(!ge(d,e,"read",O))return null;const n=t.get(e);return N("onGet",{store:W,key:e,value:n}),n},compute:(e,t)=>{try{return c.has(e)||(c.set(e,{selector:t,lastValue:null,deps:new Set}),F(e)),c.get(e).lastValue}catch(t){const n=t instanceof Error?t:new Error(String(t));return w&&w(n,{operation:"compute",key:e}),null}},watch:(e,t)=>{a.has(e)||a.set(e,new Set);const n=a.get(e);return n.add(t),()=>{n.delete(t),0===n.size&&a.delete(e)}},remove:e=>{if(!ge(d,e,"delete",O))return!1;const s=t.get(e),o=t.delete(e);return o&&(j-=r.get(e)||0,r.delete(e),N("onRemove",{store:W,key:e,value:s}),R=null),n.set(e,(n.get(e)||0)+1),S&&S.removeItem(`${h}_${e}`),J(e),o},delete:e=>W.remove(e),deleteAll:()=>{if(Array.from(t.keys()).forEach(e=>W.remove(e)),S){const e=h+"_";for(let t=0;t<(S.length||0);t++){const n=S.key(t);n?.startsWith(e)&&(S.removeItem(n),t--)}}return j=0,r.clear(),R=null,!0},list:()=>Object.fromEntries(t.entries()),use:e=>{i.add(e)},transaction:e=>{A=!0,N("onTransaction",{store:W,key:"START"});try{e()}finally{A=!1,N("onTransaction",{store:W,key:"END"}),P&&(P=!1,J())}},destroy:()=>{I&&(clearTimeout(I),I=null),f.clear(),"undefined"!=typeof window&&window.removeEventListener("beforeunload",B),N("onDestroy",{store:W}),s.clear(),o.clear(),a.clear(),c.clear(),l.clear(),u.clear(),t.clear(),r.clear(),j=0,d.clear(),y.clear(),n.clear(),p.clear(),i.clear()},_addPlugin:e=>{((e,t,n)=>{try{e.plugins.set(t.name,t),t.hooks?.onInstall?.({store:n})}catch(n){const r=n instanceof Error?n:new Error(String(n));e.onError?e.onError(r,{operation:"plugin:install",key:t.name}):e.silent}})(L(),e,W)},_removePlugin:e=>{u.delete(e)},_subscribe:(e,t)=>{if(t){o.has(t)||o.set(t,new Set);const n=o.get(t);return n.add(e),()=>{n.delete(e),0===n.size&&o.delete(t)}}return s.add(e),()=>s.delete(e)},_getVersion:e=>n.get(e)??0,addAccessRule:(e,t)=>he(d,e,t),hasPermission:(e,t,n)=>ge(d,e,t,n),recordConsent:(e,t,n)=>me(y,e,t,n),hasConsent:(e,t)=>((e,t,n)=>{const r=e.get(t);if(!r)return!1;for(let e=r.length-1;e>=0;e--){const t=r[e];if(t&&t.purpose===n)return t.granted}return!1})(y,e,t),getConsents:e=>((e,t)=>e.get(t)||[])(y,e),revokeConsent:(e,t)=>((e,t,n)=>me(e,t,n,!1))(y,e,t),exportUserData:e=>((e,t)=>({userId:t,exportedAt:Date.now(),consents:e.get(t)||[]}))(y,e),deleteUserData:e=>((e,t)=>{const n=e.get(t)?.length||0;return e.delete(t),{success:!0,deletedConsents:n}})(y,e),getSnapshot:()=>(R||(R=Object.fromEntries(t.entries())),R),get plugins(){return Q},get isReady(){return z},get namespace(){return h},get userId(){return O},whenReady:()=>V};["addAccessRule","recordConsent","hasConsent","getConsents","revokeConsent","exportUserData","deleteUserData"].forEach(e=>{const t=W[e];t&&W._registerMethod("security",e,t)});const B=()=>{f.size>0&&K()};"undefined"!=typeof window&&window.addEventListener("beforeunload",B),S?(async(e,t,n)=>{const{storage:r,config:s,encryptionKey:o,audit:i,onError:a,silent:c,currentVersion:l,store:u,sizes:f,versions:p}=e,d=ve(s.namespace||"gstate"),y=s.immer??!0;if(r)try{const c={};let h=0;for(let e=0;e<(r.length||0);e++){const t=r.key(e);if(!t||!t.startsWith(d))continue;const n=r.getItem(t);if(n)try{const s=JSON.parse(n),a=t.substring(d.length);if(h=Math.max(h,void 0!==s._sys_v?s._sys_v:s.v||0),s.e&&Date.now()>s.e){r.removeItem(t),e--;continue}let l=s.d;if(s._enc&&o)l=await ye(l,o);else if("string"==typeof l)if(s._b64)try{l=JSON.parse(atob(l))}catch(e){}else if(l.startsWith("{")||l.startsWith("["))try{l=JSON.parse(l)}catch(e){}c[a]=l,i("hydrate",a,!0)}catch(e){i("hydrate",t,!1,String(e));const n=e instanceof Error?e:new Error(String(e));a&&a(n,{operation:"hydration",key:t})}}const g=h<l&&s.migrate?s.migrate(c,h):c;Object.entries(g).forEach(([n,r])=>{const s=y&&null!==r&&"object"==typeof r?T(Se(r),!0):r,o=t(s),i=f.get(n)||0;e.totalSize=e.totalSize-i+o,f.set(n,o),u.set(n,s),p.set(n,1)}),n()}catch(e){const t=e instanceof Error?e:new Error(String(e));a&&a(t,{operation:"hydration"})}})(x(),e=>(v>0||b>0)&&!Ee()?$(e):0,()=>{z=!0,R=null,M(),J()}).then(()=>{}):(z=!0,M());let G=null;return e?.sync&&(G=new be(W,e.sync),W._registerMethod("sync","flush",()=>G?.flush()),W._registerMethod("sync","getState",()=>G?.getState()),W._registerMethod("sync","onStateChange",e=>G?.onStateChange(e))),W},Ce=(e,t)=>{const n=t?.key||"async_data",r=t?.store||Oe({namespace:`async_${n}`,silent:!0});null==r.get(n)&&r.set(n,{data:null,loading:!1,error:null,updatedAt:null});return Object.assign(r,{execute:async()=>{const 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{const s=await e(),o=r.get(n);r.set(n,{...o||{data:null,loading:!1,error:null,updatedAt:null},data:s,loading:!1,updatedAt:Date.now()},{persist:t?.persist})}catch(e){const t=r.get(n);r.set(n,{...t||{data:null,loading:!1,error:null,updatedAt:null},error:e instanceof Error?e:new Error(String(e)),loading:!1})}}})},De=e=>{const t=new BroadcastChannel(e?.channelName||"gstate_sync");let n=!1;return{name:"gstate-sync",hooks:{onInstall:({store:e})=>{t.onmessage=t=>{const{key:r,value:s,action:o}=t.data;r&&(n=!0,"REMOVE"===o?e.remove(r):e.set(r,s),n=!1)}},onSet:({key:e,value:r})=>{e&&!n&&t.postMessage({key:e,value:r,action:"SET"})},onRemove:({key:e})=>{e&&!n&&t.postMessage({key:e,action:"REMOVE"})},onDestroy:()=>{t.close()}}}},Me=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"}))}}});export{Me as AnalyticsPlugin,ke as StorageAdapters,De as SyncPlugin,Ce as createAsyncStore};
package/core/minimal.cjs DELETED
@@ -1 +0,0 @@
1
- "use strict";exports.createStore=e=>{let t={...e};const r=new Set;return{get:e=>t[e],set:(e,s)=>{t={...t,[e]:s},r.forEach(e=>e())},subscribe:e=>(r.add(e),()=>r.delete(e))}};
package/core/minimal.js DELETED
@@ -1 +0,0 @@
1
- var e=e=>{let t={...e};const r=new Set;return{get:e=>t[e],set:(e,s)=>{t={...t,[e]:s},r.forEach(e=>e())},subscribe:e=>(r.add(e),()=>r.delete(e))}};export{e as createStore};