UNPKG

zustand-lite

Version:

Zustand Lite builds upon zustand, by auto-generating selectors and simplifying API even more.

3 lines 2.71 kB
import{devtools as U,persist as w}from"zustand/middleware";import{createStore as R}from"zustand/vanilla";function g(e){return{getInitialState:e.getInitialState,subscribe:e.subscribe}}function m(e){return()=>e.getState()}function c(e){return m(e)}function h(e){return e?e.split(` `).map(r=>{let t=r.match(/at (\S+)/);if(t)return t[1];let n=r.match(/^(\S+)@/);return n?n[1]:null}).filter(r=>!!r).map(r=>{let t=r.split(".");return t?.[1]??t?.[0]}):[]}function L(){return h(new Error().stack)?.[2]??"setState"}function p(e,r){return(t,n,o)=>{e.setState(t,n,r?{type:o??L(),payload:t}:void 0)}}function x(e,r){let t=p(e,r);return Object.keys(e.getState()).forEach(n=>{t[n]=o=>{e.getState()[n]!==o&&e.setState(i=>({...i,[n]:o}),!1,r?{type:n,payload:{[n]:o}}:void 0)}}),t}import{shallow as F}from"zustand/shallow";import{useStoreWithEqualityFn as P}from"zustand/traditional";function f(e,r,t,n){typeof e=="object"&&e!==null&&Object.keys(e).forEach(o=>{let i=[...t,o];Object.defineProperty(r,o,{value:(s=F)=>P(n,S=>B(S,i),s),writable:!0,configurable:!0,enumerable:!0}),f(e[o],r[o],i,n)})}function B(e,r){let t=e;for(let n of r)if(t=t[n],!t)return t;return t}import{shallow as O}from"zustand/shallow";import{useStoreWithEqualityFn as j}from"zustand/traditional";function u(e){return(r,t=O)=>j(e,r,t)}function b(e){let r=u(e);return f(e.getState(),r,[],e),r}import{shallow as D}from"zustand/shallow";import{useStoreWithEqualityFn as E}from"zustand/traditional";function A(e,r,t){let n=e({get:r.get}),o={};return Object.keys(n).forEach(i=>{o[i]=(...s)=>E(t,()=>n[i](...s),D)}),r.use=Object.assign(u(t),r.use,o),r.get=Object.assign(m(t),r.get,n),r}function y(e,r,t,n){let o=p(t,n);return r.set=Object.assign(o,r.set,e(r)),r}function G(e,r,t,n){return{api:t.api,set:t.set,use:e?(()=>{let o=Object.keys(t.use).reduce((i,s)=>r[s]&&e.includes(s)?i:{...i,[s]:t.use[s]},{});return Object.assign(u(n),o)})():t.use,get:e?Object.assign(()=>Object.entries(t.get()).reduce((i,[s,S])=>r[s]&&e.includes(s)?i:{...i,[s]:S},{}),t.get):t.get}}function q(e,r){let{name:t="zustand-lite",plugins:n=[],middlewares:o={}}=r??{},i=e;n.forEach(a=>{a.creates&&(i={...i,...a.creates()})});let s=()=>i;o.devtools&&(s=U(s,o.devtools===!0?{name:"zustand-lite",store:t}:o.devtools)),o.persist&&(s=w(s,o.persist===!0?{name:t}:o.persist));let S=R(s),d={api:g(S),get:c(S),use:b(S),set:x(S,!!o.devtools),extendGetters(a){return A(a,this,S)},extendSetters(a){return y(a,this,S,!!o.devtools)},restrictState(a=[]){return G(a,i,this,S)}},l=d;return n.forEach(a=>{a.extends&&(l=a.extends(d))}),l}var v={extends:e=>e.extendSetters(({api:r,set:t})=>({reset:()=>{t(r.getInitialState?.()??{},!0)}}))};export{q as createStore,v as reset}; //# sourceMappingURL=index.js.map