@asaidimu/react-store 1.0.0 → 1.0.1
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/index.cjs +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
package/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var p=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var v=(a,e)=>{for(var t in e)p(a,t,{get:e[t],enumerable:!0})},w=(a,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of b(e))!T.call(a,r)&&r!==t&&p(a,r,{get:()=>e[r],enumerable:!(i=S(e,r))||i.enumerable});return a};var M=a=>w(p({},"__esModule",{value:!0}),a);var $={};v($,{StateManager:()=>l,createStore:()=>x});module.exports=M($);var h=require("react");var y=require("@asaidimu/node"),k="root",g=class{cache=new Map;maxSize;maxAge;constructor(e=100,t=5e3){this.maxSize=e,this.maxAge=t}get(e){let t=this.cache.get(e);if(t){if(Date.now()-t.timestamp>this.maxAge){this.cache.delete(e);return}return t.value}}set(e,t){if(this.cache.size>=this.maxSize){let i=this.cache.keys().next().value;this.cache.delete(i)}this.cache.set(e,{value:t,timestamp:Date.now()})}},l=class{manager;subscribers=new Set;middleware;options;definition;middlewareCache;constructor(e,t={}){this.definition=e,this.options=t,this.middleware=t.middleware||[],this.middlewareCache=new g,this.manager=this.initializeManager()}initializeManager(){let e=(0,y.createNodeManager)();e.add("root",null,{key:"root"});let t=(i="root",r=this.definition.state)=>{for(let[s,n]of Object.entries(r))typeof n=="object"&&!Array.isArray(n)?(e.add(`${i}/${s}`,
|
|
1
|
+
"use strict";var p=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var v=(a,e)=>{for(var t in e)p(a,t,{get:e[t],enumerable:!0})},w=(a,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of b(e))!T.call(a,r)&&r!==t&&p(a,r,{get:()=>e[r],enumerable:!(i=S(e,r))||i.enumerable});return a};var M=a=>w(p({},"__esModule",{value:!0}),a);var $={};v($,{StateManager:()=>l,createStore:()=>x});module.exports=M($);var h=require("react");var y=require("@asaidimu/node"),k="root",g=class{cache=new Map;maxSize;maxAge;constructor(e=100,t=5e3){this.maxSize=e,this.maxAge=t}get(e){let t=this.cache.get(e);if(t){if(Date.now()-t.timestamp>this.maxAge){this.cache.delete(e);return}return t.value}}set(e,t){if(this.cache.size>=this.maxSize){let i=this.cache.keys().next().value;this.cache.delete(i)}this.cache.set(e,{value:t,timestamp:Date.now()})}},l=class{manager;subscribers=new Set;middleware;options;definition;middlewareCache;constructor(e,t={}){this.definition=e,this.options=t,this.middleware=t.middleware||[],this.middlewareCache=new g,this.manager=this.initializeManager()}initializeManager(){let e=(0,y.createNodeManager)();e.add("root",null,{key:"root"});let t=(i="root",r=this.definition.state)=>{for(let[s,n]of Object.entries(r))typeof n=="object"&&!Array.isArray(n)?(e.add(`${i}/${s}`,n,{key:s}),t(`${i}/${s}`,n)):e.add(`${i}/${s}`,n,{key:s})};if(t(),this.definition.sync){let i=this.getState.bind(this),r=this.definition.sync;e.subscribe("node",()=>{r(i())})}return e}getState(){return this.manager.store().map("key").root}getTree(){return this.manager.store().serialize()}setState(e,t){let i=this.getState();if(!i)return;let r=(s,n)=>{if(typeof n=="object"&&!Array.isArray(n))for(let[o,u]of Object.entries(n)){let d=`${s}/${o}`;r(d,u)}else this.manager.update(s,n)};try{for(let[s,n]of Object.entries(e)){let o=t?`${t}/${s}`:`root/${s}`;if(i[s]===n)continue;if(!this.validateState({[s]:n},o))throw new Error(`Validation failed for ${o}`);let u=this.applyMiddleware({[s]:n},o);r(o,u[s])}this.notifySubscribers()}catch(s){this.handleError(s,{action:"setState",state:e})}}validateState(e,t){if(!this.options.validation)return!0;let i=t.split("/").pop(),r=this.options.validation[i];return r?r.every(s=>{try{return s.validate(e[i])}catch(n){return console.error(`Validation error at ${t}:`,n),!1}}):!0}applyMiddleware(e,t){let i=`${t}-${JSON.stringify(e)}`,r=this.middlewareCache.get(i);if(r)return r;let s=this.middleware.reduce((n,o)=>o(n),e);return this.middlewareCache.set(i,s),s}handleError(e,t){this.options.error?.onError&&this.options.error.onError(e,t),this.options.error?.recovery}subscribe(e){return this.subscribers.add(e),()=>{this.subscribers.delete(e)}}notifySubscribers(){this.subscribers.forEach(e=>e())}select(e,t){let i=[],r=this.manager;function s(n){let o={get:(u,d)=>{let c=`${n}/${d}`;return r.exists(c)&&i.push(c),s(c)}};return new Proxy({},o)}return e(s(k)),r.subscribe({event:"node",path:i},t)}};var f=class{metrics={updates:0,subscriptionTriggers:0,middlewareExecutions:0,batchSize:0,lastUpdateDuration:0};enableMetrics;constructor(e=!1){this.enableMetrics=e}track(e,t){if(!this.enableMetrics)return t();let i=performance.now();try{let r=t();return this.recordMetric(e,performance.now()-i),r}catch(r){throw this.recordError(e,r),r}}recordMetric(e,t){switch(e){case"update":this.metrics.updates++,this.metrics.lastUpdateDuration=t;break;case"subscription":this.metrics.subscriptionTriggers++;break;case"middleware":this.metrics.middlewareExecutions++;break}}recordError(e,t){console.error(`Error in ${e}:`,t)}getMetrics(){return{...this.metrics}}reset(){this.metrics={updates:0,subscriptionTriggers:0,middlewareExecutions:0,batchSize:0,lastUpdateDuration:0}}},m=class{selectorCache=new WeakMap;create(e){return t=>{let i=this.selectorCache.get(e);i||(i=new WeakMap,this.selectorCache.set(e,i));let r=i.get(t);if(r)return r.result;let s=e(t);return i.set(t,{result:s,deps:[]}),s}}};function x(a,e={}){let t=new l(a,e),i=new m,r=new f(e.enableMetrics),s=Object.entries(a.actions).reduce((n,[o,u])=>(n[o]=async(...d)=>{try{return await r.track("update",async()=>{let c=await u(t.getState(),...d);return t.setState(c),c})}catch(c){throw console.error(`Error in action ${o}:`,c),c}},n),{});return function(){return{select:(0,h.useCallback)(u=>{let d=i.create(u);return(0,h.useSyncExternalStore)(c=>r.track("subscription",()=>t.select(d,c)),()=>d(t.getState()),()=>d(t.getState()))},[]),actions:s,getState:()=>t.getState(),getTree:()=>t.getTree(),getMetrics:()=>r.getMetrics(),resetMetrics:()=>r.reset()}}}0&&(module.exports={StateManager,createStore});
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useCallback as y,useSyncExternalStore as S}from"react";import{createNodeManager as f}from"@asaidimu/node";var m="root",h=class{cache=new Map;maxSize;maxAge;constructor(e=100,t=5e3){this.maxSize=e,this.maxAge=t}get(e){let t=this.cache.get(e);if(t){if(Date.now()-t.timestamp>this.maxAge){this.cache.delete(e);return}return t.value}}set(e,t){if(this.cache.size>=this.maxSize){let i=this.cache.keys().next().value;this.cache.delete(i)}this.cache.set(e,{value:t,timestamp:Date.now()})}},l=class{manager;subscribers=new Set;middleware;options;definition;middlewareCache;constructor(e,t={}){this.definition=e,this.options=t,this.middleware=t.middleware||[],this.middlewareCache=new h,this.manager=this.initializeManager()}initializeManager(){let e=f();e.add("root",null,{key:"root"});let t=(i="root",s=this.definition.state)=>{for(let[r,n]of Object.entries(s))typeof n=="object"&&!Array.isArray(n)?(e.add(`${i}/${r}`,
|
|
1
|
+
import{useCallback as y,useSyncExternalStore as S}from"react";import{createNodeManager as f}from"@asaidimu/node";var m="root",h=class{cache=new Map;maxSize;maxAge;constructor(e=100,t=5e3){this.maxSize=e,this.maxAge=t}get(e){let t=this.cache.get(e);if(t){if(Date.now()-t.timestamp>this.maxAge){this.cache.delete(e);return}return t.value}}set(e,t){if(this.cache.size>=this.maxSize){let i=this.cache.keys().next().value;this.cache.delete(i)}this.cache.set(e,{value:t,timestamp:Date.now()})}},l=class{manager;subscribers=new Set;middleware;options;definition;middlewareCache;constructor(e,t={}){this.definition=e,this.options=t,this.middleware=t.middleware||[],this.middlewareCache=new h,this.manager=this.initializeManager()}initializeManager(){let e=f();e.add("root",null,{key:"root"});let t=(i="root",s=this.definition.state)=>{for(let[r,n]of Object.entries(s))typeof n=="object"&&!Array.isArray(n)?(e.add(`${i}/${r}`,n,{key:r}),t(`${i}/${r}`,n)):e.add(`${i}/${r}`,n,{key:r})};if(t(),this.definition.sync){let i=this.getState.bind(this),s=this.definition.sync;e.subscribe("node",()=>{s(i())})}return e}getState(){return this.manager.store().map("key").root}getTree(){return this.manager.store().serialize()}setState(e,t){let i=this.getState();if(!i)return;let s=(r,n)=>{if(typeof n=="object"&&!Array.isArray(n))for(let[a,d]of Object.entries(n)){let c=`${r}/${a}`;s(c,d)}else this.manager.update(r,n)};try{for(let[r,n]of Object.entries(e)){let a=t?`${t}/${r}`:`root/${r}`;if(i[r]===n)continue;if(!this.validateState({[r]:n},a))throw new Error(`Validation failed for ${a}`);let d=this.applyMiddleware({[r]:n},a);s(a,d[r])}this.notifySubscribers()}catch(r){this.handleError(r,{action:"setState",state:e})}}validateState(e,t){if(!this.options.validation)return!0;let i=t.split("/").pop(),s=this.options.validation[i];return s?s.every(r=>{try{return r.validate(e[i])}catch(n){return console.error(`Validation error at ${t}:`,n),!1}}):!0}applyMiddleware(e,t){let i=`${t}-${JSON.stringify(e)}`,s=this.middlewareCache.get(i);if(s)return s;let r=this.middleware.reduce((n,a)=>a(n),e);return this.middlewareCache.set(i,r),r}handleError(e,t){this.options.error?.onError&&this.options.error.onError(e,t),this.options.error?.recovery}subscribe(e){return this.subscribers.add(e),()=>{this.subscribers.delete(e)}}notifySubscribers(){this.subscribers.forEach(e=>e())}select(e,t){let i=[],s=this.manager;function r(n){let a={get:(d,c)=>{let o=`${n}/${c}`;return s.exists(o)&&i.push(o),r(o)}};return new Proxy({},a)}return e(r(m)),s.subscribe({event:"node",path:i},t)}};var p=class{metrics={updates:0,subscriptionTriggers:0,middlewareExecutions:0,batchSize:0,lastUpdateDuration:0};enableMetrics;constructor(e=!1){this.enableMetrics=e}track(e,t){if(!this.enableMetrics)return t();let i=performance.now();try{let s=t();return this.recordMetric(e,performance.now()-i),s}catch(s){throw this.recordError(e,s),s}}recordMetric(e,t){switch(e){case"update":this.metrics.updates++,this.metrics.lastUpdateDuration=t;break;case"subscription":this.metrics.subscriptionTriggers++;break;case"middleware":this.metrics.middlewareExecutions++;break}}recordError(e,t){console.error(`Error in ${e}:`,t)}getMetrics(){return{...this.metrics}}reset(){this.metrics={updates:0,subscriptionTriggers:0,middlewareExecutions:0,batchSize:0,lastUpdateDuration:0}}},g=class{selectorCache=new WeakMap;create(e){return t=>{let i=this.selectorCache.get(e);i||(i=new WeakMap,this.selectorCache.set(e,i));let s=i.get(t);if(s)return s.result;let r=e(t);return i.set(t,{result:r,deps:[]}),r}}};function M(u,e={}){let t=new l(u,e),i=new g,s=new p(e.enableMetrics),r=Object.entries(u.actions).reduce((n,[a,d])=>(n[a]=async(...c)=>{try{return await s.track("update",async()=>{let o=await d(t.getState(),...c);return t.setState(o),o})}catch(o){throw console.error(`Error in action ${a}:`,o),o}},n),{});return function(){return{select:y(d=>{let c=i.create(d);return S(o=>s.track("subscription",()=>t.select(c,o)),()=>c(t.getState()),()=>c(t.getState()))},[]),actions:r,getState:()=>t.getState(),getTree:()=>t.getTree(),getMetrics:()=>s.getMetrics(),resetMetrics:()=>s.reset()}}}export{l as StateManager,M as createStore};
|