dev-react-microstore 3.0.0 → 3.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/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var g=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var j=Object.prototype.hasOwnProperty;var R=(a,r)=>{for(var c in r)g(a,c,{get:r[c],enumerable:!0})},I=(a,r,c,l)=>{if(r&&typeof r=="object"||typeof r=="function")for(let y of v(r))!j.call(a,y)&&y!==c&&g(a,y,{get:()=>r[y],enumerable:!(l=P(r,y))||l.enumerable});return a};var C=a=>I(g({},"__esModule",{value:!0}),a);var D={};R(D,{createStoreState:()=>F,useStoreSelector:()=>z});module.exports=C(D);var f=require("react");function V(a,r){let c;return function(...l){c!==void 0&&clearTimeout(c),c=setTimeout(()=>a.apply(this,l),r)}}function F(a,r={}){let c=a,{asyncUpdate:l=!0,debounceDelay:y=0,perKeyDebounce:k={}}=r,T=new Map,p=new Map;return{get:()=>c,set:d=>{var o,i;if(!d)return;let t=[];for(let n in d){let e=n,u=c[e],s=d[e];u!==s&&(Object.is(u,s)||(c[e]=s,t.push(e)))}if(t.length!==0)if(l)for(let n of t)k[n]!==!1?(p.has(n)||p.set(n,V(()=>{var u;(u=T.get(n))==null||u.forEach(s=>s())},y)),p.get(n)()):(o=T.get(n))==null||o.forEach(u=>u());else for(let n of t)(i=T.get(n))==null||i.forEach(e=>e())},subscribe:(d,t)=>{for(let o of d)T.has(o)||T.set(o,new Set),T.get(o).add(t);return()=>{var o;for(let i of d)(o=T.get(i))==null||o.delete(t)}},select:d=>{let t={},o=c;for(let i of d)t[i]=o[i];return t}}}function E(a,r){return a.length===r.length&&a.every((c,l)=>c===r[l])}function z(a,r){let c=(0,f.useRef)({}),l=(0,f.useRef)(null),y=(0,f.useRef)(null),k=(0,f.useRef)(null),T=(0,f.useRef)(!0),p=(0,f.useRef)({}),b=(0,f.useRef)(null);if(!l.current||!E(l.current,r)){let t=[],o=[];for(let i of r)if(typeof i=="string"){let n=i;t.push({key:n}),o.push(n)}else{let n=i;for(let e in n){let u=n[e],s=e;t.push({key:s,compare:u}),o.push(s)}}y.current=t,k.current=o,l.current=r}let h=y.current,m=k.current,K=()=>{let t=a.get();if(T.current){T.current=!1;let e={};for(let{key:u}of h){let s=t[u];p.current[u]=s,e[u]=s}return c.current=e,e}if(!(()=>{var e;for(let{key:u,compare:s}of h){let S=p.current[u],x=t[u];if(S===void 0||((e=s==null?void 0:s(S,x))!=null?e:!Object.is(S,x)))return!0}return!1})())return c.current;let n={};for(let{key:e,compare:u}of h){let s=p.current[e],S=t[e];s===void 0||(u?!u(s,S):!Object.is(s,S))?(p.current[e]=S,n[e]=S):n[e]=s}return c.current=n,n},d=(0,f.useMemo)(()=>{let t=a.get(),o={};for(let i of m)o[i]=t[i];return o},[m]);if(!b.current||k.current!==m){let t=m;b.current=o=>a.subscribe(t,o)}return(0,f.useSyncExternalStore)(b.current,K,()=>d)}0&&(module.exports={createStoreState,useStoreSelector});
1
+ "use strict";var g=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var j=Object.prototype.hasOwnProperty;var R=(u,n)=>{for(var a in n)g(u,a,{get:n[a],enumerable:!0})},I=(u,n,a,l)=>{if(n&&typeof n=="object"||typeof n=="function")for(let y of v(n))!j.call(u,y)&&y!==a&&g(u,y,{get:()=>n[y],enumerable:!(l=P(n,y))||l.enumerable});return u};var C=u=>I(g({},"__esModule",{value:!0}),u);var D={};R(D,{createStoreState:()=>F,useStoreSelector:()=>z});module.exports=C(D);var f=require("react");function V(u,n){let a;return(...l)=>{clearTimeout(a),a=setTimeout(()=>u(...l),n)}}function F(u,n={}){let a=u,{asyncUpdate:l=!0,debounceDelay:y=0,perKeyDebounce:b={}}=n,T=new Map,p=new Map;return{get:()=>a,set:d=>{var s,i;if(!d)return;let t=[];for(let o in d){let e=o,c=a[e],r=d[e];c!==r&&(Object.is(c,r)||(a[e]=r,t.push(e)))}if(t.length!==0)if(l)for(let o of t)b[o]!==!1?(p.has(o)||p.set(o,V(()=>{var c;(c=T.get(o))==null||c.forEach(r=>r())},y)),p.get(o)()):(s=T.get(o))==null||s.forEach(c=>c());else for(let o of t)(i=T.get(o))==null||i.forEach(e=>e())},subscribe:(d,t)=>{for(let s of d)T.has(s)||T.set(s,new Set),T.get(s).add(t);return()=>{var s;for(let i of d)(s=T.get(i))==null||s.delete(t)}},select:d=>{let t={},s=a;for(let i of d)t[i]=s[i];return t}}}function E(u,n){return u.length===n.length&&u.every((a,l)=>a===n[l])}function z(u,n){let a=(0,f.useRef)({}),l=(0,f.useRef)(null),y=(0,f.useRef)(null),b=(0,f.useRef)(null),T=(0,f.useRef)(!0),p=(0,f.useRef)({}),k=(0,f.useRef)(null);if(!l.current||!E(l.current,n)){let t=[],s=[];for(let i of n)if(typeof i=="string"){let o=i;t.push({key:o}),s.push(o)}else{let o=i;for(let e in o){let c=o[e],r=e;t.push({key:r,compare:c}),s.push(r)}}y.current=t,b.current=s,l.current=n,k.current=null}let m=y.current,x=b.current,K=()=>{let t=u.get();if(T.current){T.current=!1;let e={};for(let{key:c}of m){let r=t[c];p.current[c]=r,e[c]=r}return a.current=e,e}if(!(()=>{var e;for(let{key:c,compare:r}of m){let S=p.current[c],h=t[c];if(S===void 0||((e=r==null?void 0:r(S,h))!=null?e:!Object.is(S,h)))return!0}return!1})())return a.current;let o={};for(let{key:e,compare:c}of m){let r=p.current[e],S=t[e];r===void 0||(c?!c(r,S):!Object.is(r,S))?(p.current[e]=S,o[e]=S):o[e]=r}return a.current=o,o},d=(0,f.useMemo)(()=>{let t=u.get(),s={};for(let i of x)s[i]=t[i];return s},[x]);return k.current||(k.current=t=>u.subscribe(x,t)),(0,f.useSyncExternalStore)(k.current,K,()=>d)}0&&(module.exports={createStoreState,useStoreSelector});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{useMemo as K,useRef as p,useSyncExternalStore as P}from"react";function v(a,i){let u;return function(...y){u!==void 0&&clearTimeout(u),u=setTimeout(()=>a.apply(this,y),i)}}function C(a,i={}){let u=a,{asyncUpdate:y=!0,debounceDelay:m=0,perKeyDebounce:S={}}=i,l=new Map,T=new Map;return{get:()=>u,set:f=>{var o,c;if(!f)return;let t=[];for(let n in f){let e=n,s=u[e],r=f[e];s!==r&&(Object.is(s,r)||(u[e]=r,t.push(e)))}if(t.length!==0)if(y)for(let n of t)S[n]!==!1?(T.has(n)||T.set(n,v(()=>{var s;(s=l.get(n))==null||s.forEach(r=>r())},m)),T.get(n)()):(o=l.get(n))==null||o.forEach(s=>s());else for(let n of t)(c=l.get(n))==null||c.forEach(e=>e())},subscribe:(f,t)=>{for(let o of f)l.has(o)||l.set(o,new Set),l.get(o).add(t);return()=>{var o;for(let c of f)(o=l.get(c))==null||o.delete(t)}},select:f=>{let t={},o=u;for(let c of f)t[c]=o[c];return t}}}function j(a,i){return a.length===i.length&&a.every((u,y)=>u===i[y])}function V(a,i){let u=p({}),y=p(null),m=p(null),S=p(null),l=p(!0),T=p({}),b=p(null);if(!y.current||!j(y.current,i)){let t=[],o=[];for(let c of i)if(typeof c=="string"){let n=c;t.push({key:n}),o.push(n)}else{let n=c;for(let e in n){let s=n[e],r=e;t.push({key:r,compare:s}),o.push(r)}}m.current=t,S.current=o,y.current=i}let h=m.current,k=S.current,g=()=>{let t=a.get();if(l.current){l.current=!1;let e={};for(let{key:s}of h){let r=t[s];T.current[s]=r,e[s]=r}return u.current=e,e}if(!(()=>{var e;for(let{key:s,compare:r}of h){let d=T.current[s],x=t[s];if(d===void 0||((e=r==null?void 0:r(d,x))!=null?e:!Object.is(d,x)))return!0}return!1})())return u.current;let n={};for(let{key:e,compare:s}of h){let r=T.current[e],d=t[e];r===void 0||(s?!s(r,d):!Object.is(r,d))?(T.current[e]=d,n[e]=d):n[e]=r}return u.current=n,n},f=K(()=>{let t=a.get(),o={};for(let c of k)o[c]=t[c];return o},[k]);if(!b.current||S.current!==k){let t=k;b.current=o=>a.subscribe(t,o)}return P(b.current,g,()=>f)}export{C as createStoreState,V as useStoreSelector};
1
+ import{useMemo as K,useRef as p,useSyncExternalStore as P}from"react";function v(a,i){let u;return(...y)=>{clearTimeout(u),u=setTimeout(()=>a(...y),i)}}function C(a,i={}){let u=a,{asyncUpdate:y=!0,debounceDelay:k=0,perKeyDebounce:b={}}=i,l=new Map,T=new Map;return{get:()=>u,set:f=>{var r,c;if(!f)return;let t=[];for(let o in f){let e=o,s=u[e],n=f[e];s!==n&&(Object.is(s,n)||(u[e]=n,t.push(e)))}if(t.length!==0)if(y)for(let o of t)b[o]!==!1?(T.has(o)||T.set(o,v(()=>{var s;(s=l.get(o))==null||s.forEach(n=>n())},k)),T.get(o)()):(r=l.get(o))==null||r.forEach(s=>s());else for(let o of t)(c=l.get(o))==null||c.forEach(e=>e())},subscribe:(f,t)=>{for(let r of f)l.has(r)||l.set(r,new Set),l.get(r).add(t);return()=>{var r;for(let c of f)(r=l.get(c))==null||r.delete(t)}},select:f=>{let t={},r=u;for(let c of f)t[c]=r[c];return t}}}function j(a,i){return a.length===i.length&&a.every((u,y)=>u===i[y])}function V(a,i){let u=p({}),y=p(null),k=p(null),b=p(null),l=p(!0),T=p({}),S=p(null);if(!y.current||!j(y.current,i)){let t=[],r=[];for(let c of i)if(typeof c=="string"){let o=c;t.push({key:o}),r.push(o)}else{let o=c;for(let e in o){let s=o[e],n=e;t.push({key:n,compare:s}),r.push(n)}}k.current=t,b.current=r,y.current=i,S.current=null}let m=k.current,x=b.current,g=()=>{let t=a.get();if(l.current){l.current=!1;let e={};for(let{key:s}of m){let n=t[s];T.current[s]=n,e[s]=n}return u.current=e,e}if(!(()=>{var e;for(let{key:s,compare:n}of m){let d=T.current[s],h=t[s];if(d===void 0||((e=n==null?void 0:n(d,h))!=null?e:!Object.is(d,h)))return!0}return!1})())return u.current;let o={};for(let{key:e,compare:s}of m){let n=T.current[e],d=t[e];n===void 0||(s?!s(n,d):!Object.is(n,d))?(T.current[e]=d,o[e]=d):o[e]=n}return u.current=o,o},f=K(()=>{let t=a.get(),r={};for(let c of x)r[c]=t[c];return r},[x]);return S.current||(S.current=t=>a.subscribe(x,t)),P(S.current,g,()=>f)}export{C as createStoreState,V as useStoreSelector};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dev-react-microstore",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "A minimal global state manager for React with fine-grained subscriptions.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/index.ts CHANGED
@@ -4,12 +4,10 @@ type StoreListener = () => void;
4
4
 
5
5
  function debounce<T extends (...args: any[]) => void>(fn: T, delay: number): T {
6
6
  let timeoutId: ReturnType<typeof setTimeout> | undefined;
7
- return function (this: ThisParameterType<T>, ...args: Parameters<T>) {
8
- if (timeoutId !== undefined) {
9
- clearTimeout(timeoutId);
10
- }
11
- timeoutId = setTimeout(() => fn.apply(this, args), delay);
12
- } as T;
7
+ return ((...args: Parameters<T>) => {
8
+ clearTimeout(timeoutId);
9
+ timeoutId = setTimeout(() => fn(...args), delay);
10
+ }) as T;
13
11
  }
14
12
 
15
13
  type StoreOptions<T extends object> = {
@@ -166,6 +164,7 @@ export function useStoreSelector<T extends object, S extends SelectorInput<T>>(
166
164
  normalizedRef.current = normalized;
167
165
  keysRef.current = keys;
168
166
  prevSelector.current = selector;
167
+ subscribeRef.current = null;
169
168
  }
170
169
 
171
170
  const normalized = normalizedRef.current!;
@@ -231,11 +230,9 @@ export function useStoreSelector<T extends object, S extends SelectorInput<T>>(
231
230
  return result as Picked<T, S>;
232
231
  }, [keys]);
233
232
 
234
-
235
- if (!subscribeRef.current || keysRef.current !== keys) {
236
- const currentKeys = keys;
233
+ if (!subscribeRef.current) {
237
234
  subscribeRef.current = (onStoreChange: () => void) =>
238
- store.subscribe(currentKeys, onStoreChange);
235
+ store.subscribe(keys, onStoreChange);
239
236
  }
240
237
 
241
238
  return useSyncExternalStore(subscribeRef.current, getSnapshot, () => staticSnapshot);