stunk 3.0.0-beta.1 → 3.0.0-beta.2

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 CHANGED
@@ -29,73 +29,13 @@ pnpm add stunk
29
29
 
30
30
  📖 [Read the docs](https://stunk.dev)
31
31
 
32
- <<<<<<< HEAD
33
- [Stunk](https://stunk.dev/)
34
- =======
35
32
  ---
36
- >>>>>>> v3
37
33
 
38
34
  ## Core State
39
35
 
40
36
  ```ts
41
37
  import { chunk } from "stunk";
42
38
 
43
- <<<<<<< HEAD
44
- // Create a chunk holding a number
45
- const count = chunk<number>(0);
46
-
47
- // Create a chunk holding a string
48
- const name = chunk<string>("Stunky, chunky");
49
- ```
50
-
51
- 👉 [See full explanation in docs](https://stunk.dev/chunk.html)
52
-
53
- ## Interacting with a Chunk
54
-
55
- ```typescript
56
- // Get value
57
- console.log(count.get()); // 0
58
-
59
- // Set a new value
60
- count.set(10);
61
-
62
- // Update based on the previous value
63
- count.set((prev: number) => prev + 1);
64
-
65
- // Reset to the initial value
66
- count.reset();
67
-
68
- // Destroy the chunk and all its subscribers.
69
- count.destroy();
70
- ```
71
-
72
- 👉 [See full explanation in docs](https://stunk.dev/chunk.html)
73
-
74
- ## React via useChunk
75
-
76
- The `useChunk` hook, enables components to reactively read and update state from a Chunk. The counter example below depicts
77
-
78
- ```typescript
79
- import { chunk } from "stunk";
80
- import { useChunk } from "stunk/react";
81
-
82
- const count = chunk<number>(0);
83
-
84
- const Counter = () => {
85
- const [value, set, reset] = useChunk(count);
86
-
87
- return (
88
- <div>
89
- <p>Count: {value}</p>
90
- <button onClick={() => set((prev: number) => prev + 1)}>Increment</button>
91
- <button onClick={() => reset()}>Reset</button>
92
- </div>
93
- );
94
- };
95
- ```
96
-
97
- 👉 [See full explanation in docs](https://stunk.dev/useChunk.html)
98
- =======
99
39
  const count = chunk(0);
100
40
 
101
41
  count.get(); // 0
@@ -107,7 +47,6 @@ count.destroy(); // clear all subscribers
107
47
  ```
108
48
 
109
49
  ---
110
- >>>>>>> v3
111
50
 
112
51
  ## Computed — auto dependency tracking
113
52
 
@@ -212,61 +151,8 @@ configureQuery({
212
151
  import { chunk } from "stunk";
213
152
  import { logger, nonNegativeValidator } from "stunk/middleware";
214
153
 
215
- <<<<<<< HEAD
216
- const count = chunk<number>(0);
217
-
218
- const DoubledCount = () => {
219
- const double = useDerive(count, (value: number) => value * 2);
220
-
221
- return <p>Double: {double}</p>;
222
- };
223
- ```
224
-
225
- 👉 [See full explanation in docs](https://stunk.dev/useDerive.html)
226
-
227
- ## React via useComputed
228
-
229
- Hook that derives a computed value from one or more Chunks. It automatically re-evaluates whenever any of its dependencies change, ensuring efficient and reactive updates.
230
-
231
- ```typescript
232
- import { chunk } from "stunk";
233
- import { useComputed } from "stunk/react";
234
-
235
- const count = chunk<number>(2);
236
- const multiplier = chunk<number>(3);
237
-
238
- const ComputedExample = () => {
239
- const product = useComputed(
240
- [count, multiplier],
241
- (c: number, m: number) => c * m
242
- );
243
-
244
- return <p>Product: {product}</p>;
245
- };
246
- ```
247
-
248
- 👉 [See full explanation in docs](https://stunk.dev/useComputed.html)
249
-
250
- ## React via useAsyncChunk
251
-
252
- Hook that manages that manages asynchronous state. It offers built-in reactivity, handling loading, error, and data states, ensuring the UI stays in sync with asynchronous operations.
253
-
254
- ```typescript
255
- import { asyncChunk } from "stunk";
256
- import { useAsyncChunk } from "stunk/react";
257
-
258
- interface User {
259
- name: string;
260
- email: string;
261
- }
262
-
263
- const fetchUser = asyncChunk<User>(async () => {
264
- const res = await fetch("https://jsonplaceholder.typicode.com/users/1");
265
- return res.json();
266
- =======
267
154
  const score = chunk(0, {
268
155
  middleware: [logger(), nonNegativeValidator]
269
- >>>>>>> v3
270
156
  });
271
157
 
272
158
  score.set(10); // logs: "Setting value: 10"
@@ -323,14 +209,8 @@ function Counter() {
323
209
 
324
210
  return (
325
211
  <div>
326
- <<<<<<< HEAD
327
- <h2>{data?.name}</h2>
328
- <p>{data?.email}</p>
329
- <button onClick={reload}>Reload</button>
330
- =======
331
212
  <p>Count: {count} — Doubled: {doubled}</p>
332
213
  <button onClick={() => setCount((n) => n + 1)}>+</button>
333
- >>>>>>> v3
334
214
  </div>
335
215
  );
336
216
  }
@@ -353,11 +233,7 @@ function CreatePostForm() {
353
233
  }
354
234
  ```
355
235
 
356
- <<<<<<< HEAD
357
- 👉 [See full explanation in docs](https://stunk.dev/useAysncChunk.html)
358
- =======
359
236
  ---
360
- >>>>>>> v3
361
237
 
362
238
  ## Package exports
363
239
 
@@ -368,36 +244,7 @@ function CreatePostForm() {
368
244
  | `stunk/query` | `asyncChunk`, `infiniteAsyncChunk`, `combineAsyncChunks`, `mutation`, `configureQuery` |
369
245
  | `stunk/middleware` | `history`, `persist`, `logger`, `nonNegativeValidator` |
370
246
 
371
- <<<<<<< HEAD
372
- ```typescript
373
- import { chunk } from "stunk";
374
- import { useChunkValue } from "stunk/react";
375
-
376
- const count = chunk<number>(0);
377
-
378
- const CounterDisplay = () => {
379
- const value = useChunkValue(count);
380
-
381
- return <p>Count: {value}</p>;
382
- };
383
- ```
384
-
385
- 👉 [See full explanation in docs](https://stunk.dev/read-only-values.html)
386
-
387
- Live Examples:
388
-
389
- 👉 [Visit](https://stunk-examples.dev/)
390
-
391
- Coding Examples:
392
-
393
- 👉 [Visit](https://stunk.dev/examples.html)
394
-
395
- Further Examples:
396
-
397
- 👉 [Visit](https://github.com/I-am-abdulazeez/stunk-examples/)
398
- =======
399
247
  ---
400
- >>>>>>> v3
401
248
 
402
249
  ## Contributing
403
250
 
@@ -0,0 +1 @@
1
+ import {c,a}from'./chunk-3DOB632D.js';var v=new Set,l=new Map,j=0;function M(n,a$1={}){let s=j++,d=a$1.name||`chunk_${s}`,m=a$1.middleware||[],C=a$1.strict??false;if(n===void 0)throw new Error(`[${d}] Initial value cannot be undefined.`);let f=n!==null&&typeof n=="object"&&!Array.isArray(n)?new Set(Object.keys(n)):null,t=n,i=new Set,y=()=>{i.forEach(e=>e(t));};l.set(s,{notify:y});let h=()=>{if(i.size===0){l.delete(s);return}y();},D=()=>(t),_=()=>t,S=e=>{let r;if(typeof e=="function"?r=e(t):r=e,c(t,r),f&&r!==null&&typeof r=="object"&&!Array.isArray(r)){let u=Object.keys(r).filter(c=>!f.has(c));if(u.length>0){let c=`[${d}] Unexpected keys in set(): ${u.join(", ")}. These keys were not present in the initial shape.`;if(C)throw new Error(`\u{1F6A8} Stunk: ${c}`);console.error(`\u{1F6A8} Stunk: ${c}`);}}let o=a(r,m);o!==t&&(t=o,h());},T=e=>{if(typeof e!="function")throw new Error("Callback must be a function.");return i.add(e),()=>i.delete(e)},k={get:D,peek:_,set:S,subscribe:T,derive:e=>{if(typeof e!="function")throw new Error("Derive function must be a function.");let r=e(t),o=M(r),u=T(()=>{let g=e(t);o.set(g);}),c=o.destroy;return o.destroy=()=>{u(),c();},o},reset:()=>{t=n,h();},destroy:()=>{i.clear(),t=n,v.delete(s),l.delete(s);},[Symbol.for("stunk.meta")]:{name:d,id:s}};return k}export{M as a};
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var be=Object.defineProperty;var re=(e,a)=>{for(var t in a)be(e,t,{get:a[t],enumerable:true});};function ne(e,a){if(e===void 0)throw new Error("Value cannot be undefined.");if(a.length===0)return e;let t=e;for(let c=0;c<a.length;c++){let i=a[c],s=typeof i=="function"?i:i.fn,f=typeof i=="function"?`index ${c}`:i.name||`index ${c}`;try{let n=s(t);if(n===void 0)break;if(n===null)throw new Error(`Middleware "${f}" returned null value.`);t=n;}catch(n){let r=n instanceof Error?n.message:String(n);throw new Error(`Middleware "${f}" threw an error: ${r}`)}}return t}function O(e,a){if(e===a)return true;if(!e||!a||typeof e!=typeof a)return false;if(Array.isArray(e)&&Array.isArray(a)){if(e.length!==a.length)return false;for(let t=0;t<e.length;t++)if(e[t]!==a[t])return false;return true}if(typeof e=="object"&&typeof a=="object"){let t=Object.keys(e),c=Object.keys(a);if(t.length!==c.length)return false;for(let i of t)if(!Object.prototype.hasOwnProperty.call(a,i)||e[i]!==a[i])return false;return true}return false}function ke(e){return e[Symbol.for("stunk.meta")]}var _=null;function U(e){let a=new Set,t=_;_=a;try{return [e(),Array.from(a)]}finally{_=t;}}function Ee(e){_&&_.add(e);}var Q=false,G=new Set,W=new Map,ve=0;function xe(e){let a=Q;Q=true;try{e();}finally{if(!a){Q=false;let t=Array.from(G);G.clear(),t.forEach(c=>{let i=W.get(c);i&&i.notify();});}}}function v(e,a={}){let t=ve++,c=`chunk_${t}`,i=a.middleware||[];a.strict??false;if(e===void 0)throw new Error(`[${c}] Initial value cannot be undefined.`);let n=e,r=new Set,p=()=>{r.forEach(h=>h(n));};W.set(t,{notify:p});let u=()=>{if(r.size===0){W.delete(t);return}Q?G.add(t):p();},o=()=>(Ee(D),n),d=()=>n,m=h=>{let x;typeof h=="function"?x=h(n):x=h;let P=ne(x,i);P!==n&&(n=P,u());},T=h=>{if(typeof h!="function")throw new Error("Callback must be a function.");return r.add(h),()=>r.delete(h)},D={get:o,peek:d,set:m,subscribe:T,derive:h=>{if(typeof h!="function")throw new Error("Derive function must be a function.");let x=h(n),P=v(x),y=T(()=>{let $=h(n);P.set($);}),g=P.destroy;return P.destroy=()=>{y(),g();},P},reset:()=>{n=e,u();},destroy:()=>{r.clear(),n=e,G.delete(t),W.delete(t);}};return D}function oe(e){let[a,t]=U(e),c=a,i=t,s=false,f=[],n=0,r=v(c),p=()=>{if(!s)return;s=false;let[o,d]=U(e);O(d,i)||(f.forEach(T=>T()),f=d.map(T=>T.subscribe(()=>{s=true,n>0&&p();})),i=d),(typeof o=="object"&&typeof c=="object"?!O(o,c):o!==c)&&(c=o,r.set(o));};f=i.map(o=>o.subscribe(()=>{s=true,n>0&&p();}));let u;return u={get:()=>(s&&p(),r.get()),peek:()=>c,subscribe:o=>{let d=r.subscribe(o);return n++,()=>{n=Math.max(0,n-1),d();}},derive:o=>(n++,oe(()=>o(u.get()))),recompute:()=>{s=true,p();},isDirty:()=>s,destroy:()=>{f.forEach(o=>o()),r.destroy(),n=0;}},u}function ae(e,a,t={}){let{useShallowEqual:c=false}=t,i=e.get(),s=a(i),f=v(s),n=()=>{let d=e.get(),m=a(d);(c?!O(m,s):m!==s)&&(s=m,f.set(m));},r=e.subscribe(n),{set:p,reset:u,...o}=f;return {...o,derive:d=>ae(f,d,t),destroy:()=>{r(),f.destroy();}}}var ce={};re(ce,{history:()=>ue,logger:()=>ie,nonNegativeValidator:()=>se,persist:()=>le});function ie(){return e=>(console.log("Setting value:",e),e)}var se=e=>{if(e<0)throw new Error("Value must be non-negative!");return e};function ue(e,a={}){let{maxHistory:t=100,skipDuplicates:c=false}=a,i=[e.get()],s=0;return {...e,get:()=>e.get(),peek:()=>e.peek(),set:n=>{let r;if(typeof n=="function"?r=n(e.get()):r=n,c){let p=i[s];if(r===p||c==="shallow"&&typeof r=="object"&&typeof p=="object"&&r!==null&&p!==null&&O(r,p))return}if(i.splice(s+1),i.push(r),i.length>t){let p=i.length-t;i.splice(0,p);}s=i.length-1,e.set(r);},undo:()=>{s<=0||(s--,e.set(i[s]));},redo:()=>{s>=i.length-1||(s++,e.set(i[s]));},canUndo:()=>s>0,canRedo:()=>s<i.length-1,getHistory:()=>[...i],clearHistory:()=>{let n=e.get();i.length=0,i.push(n),s=0;},reset:()=>{e.reset(),i.length=0,i.push(e.get()),s=0;},destroy:()=>{i.length=0,e.destroy();},subscribe:n=>e.subscribe(n)}}function le(e,a){let{key:t,serialize:c=JSON.stringify,deserialize:i=JSON.parse,onError:s}=a,f="storage"in a?a.storage:typeof window<"u"?localStorage:void 0;if(!f)return console.warn(`persist: Storage not available for key "${t}". Persistence disabled.`),{...e,clearStorage:()=>{}};let n=e.get();try{let u=f.getItem(t);if(u!==null){let o=i(u);if(o!==null&&n!==null&&(typeof o!=typeof n||Array.isArray(o)!==Array.isArray(n))){let T=`persist: Type mismatch for "${t}". Expected ${Array.isArray(n)?"array":typeof n}, got ${Array.isArray(o)?"array":typeof o}. Using initial value.`;console.warn(T),s?.(new Error(T),"load");}else e.set(o);}}catch(u){let o=u instanceof Error?u:new Error(String(u));console.error(`persist: Failed to load state for "${t}":`,o),s?.(o,"load");}let r=e.subscribe(u=>{try{f.setItem(t,c(u));}catch(o){let d=o instanceof Error?o:new Error(String(o));console.error(`persist: Failed to save state for "${t}":`,d),s?.(d,"save");}});return {...e,get:()=>e.get(),peek:()=>e.peek(),set:u=>e.set(u),subscribe:u=>e.subscribe(u),derive:u=>e.derive(u),reset:()=>e.reset(),destroy:()=>{r(),e.destroy();},clearStorage:()=>{try{f.removeItem(t);}catch(u){let o=u instanceof Error?u:new Error(String(u));console.error(`persist: Failed to clear storage for "${t}":`,o),s?.(o,"save");}}}}var he={};re(he,{asyncChunk:()=>K,combineAsyncChunks:()=>pe,configureQuery:()=>de,getGlobalQueryConfig:()=>F,infiniteAsyncChunk:()=>ye,mutation:()=>me,resetQueryConfig:()=>fe});var q={};function de(e){q={...e.query!==void 0&&{query:{...q.query,...e.query}},...e.mutation!==void 0&&{mutation:{...q.mutation,...e.mutation}}};}function F(){return q}function fe(){q={};}var N=new Map,Pe=0;function K(e,a={}){let t=F().query??{},{key:c,initialData:i=null,enabled:s=true,onSuccess:f=t.onSuccess,onError:n=t.onError,retryCount:r=t.retryCount??0,retryDelay:p=t.retryDelay??1e3,keepPreviousData:u=false,staleTime:o=t.staleTime??0,cacheTime:d=t.cacheTime??5*60*1e3,refetchInterval:m=t.refetchInterval,refetchOnWindowFocus:T=t.refetchOnWindowFocus??false,pagination:A}=a,E=c??`async_chunk_${Pe++}`,C=()=>typeof s=="function"?s():s,D=!!A,h=A?.mode||"replace",x=e.length>0,P={loading:C()&&!x,error:null,data:i,lastFetched:void 0,isPlaceholderData:false,pagination:D?{page:A.initialPage||1,pageSize:A.pageSize||10,total:void 0,hasMore:void 0}:void 0},y=v(P),g={},$=null,R=null,I=null,H=0,J=()=>{let l=y.get();return !l.lastFetched||o===0?true:Date.now()-l.lastFetched>o},ge=()=>{y.set({...y.get(),data:i,lastFetched:void 0});},Te=()=>{R&&clearTimeout(R),d>0&&(R=setTimeout(ge,d));},B=()=>{$&&(clearInterval($),$=null),R&&(clearTimeout(R),R=null),I&&typeof window<"u"&&(window.removeEventListener("focus",I),I=null);},X=()=>{C()&&(typeof window>"u"||(m&&m>0&&($=setInterval(()=>{k(void 0,0,false);},m)),T&&(I=()=>{J()&&k(void 0,0,false);},window.addEventListener("focus",I))));},k=async(l,b=r,M=false)=>{if(!C()||(l!==void 0&&(g={...g,...l}),!M&&!J()&&y.get().data!==null))return;if(N.has(E))return N.get(E);let L=y.get();y.set({...L,loading:true,error:null,data:L.data,isPlaceholderData:u&&L.data!==null});let Z=(async()=>{try{let j={...g};if(D){let V=y.get().pagination;V&&(j.page=V.page,j.pageSize=V.pageSize);}let w=x?await e(j):await e(),S,ee,te;if(w&&typeof w=="object"&&"data"in w){let V=w;S=V.data,ee=V.total,te=V.hasMore;}else S=w;let z=y.get();D&&h==="accumulate"&&z.data&&Array.isArray(z.data)&&Array.isArray(S)&&(S=[...z.data,...S]),y.set({loading:!1,error:null,data:S,lastFetched:Date.now(),isPlaceholderData:!1,pagination:D?{...z.pagination,total:ee,hasMore:te}:void 0}),Te(),f&&f(S);}catch(j){if(b>0)return await new Promise(S=>setTimeout(S,p)),N.delete(E),k(l,b-1,M);let w=y.get();y.set({loading:false,error:j,data:w.data,lastFetched:w.lastFetched,isPlaceholderData:false,pagination:w.pagination}),n&&n(j);}finally{N.delete(E);}})();return N.set(E,Z),Z};X(),C()&&!x&&k();let Y={...y,subscribe:l=>{H++;let b=y.subscribe(l);return ()=>{b(),H--;}},reload:async l=>{await k(l,r,true);},refresh:async l=>{await k(l,r,false);},mutate:l=>{let b=y.get();y.set({...b,data:l(b.data)});},reset:()=>{B(),g={},y.set({...P,loading:C()&&!x}),X(),C()&&!x&&k();},cleanup:()=>{H<=0&&B();},forceCleanup:()=>{B();},setParams:l=>{let b={...g};for(let M in l)l[M]===null?delete b[M]:b[M]=l[M];g=b,C()&&k(g,r,true);},clearParams:()=>{g={},C()&&k(void 0,r,true);}};return D?{...Y,nextPage:async()=>{let l=y.get();!l.pagination||l.pagination.hasMore===false||(y.set({...l,pagination:{...l.pagination,page:l.pagination.page+1}}),await k(g,r,true));},prevPage:async()=>{let l=y.get();!l.pagination||l.pagination.page<=1||(y.set({...l,pagination:{...l.pagination,page:l.pagination.page-1}}),await k(g,r,true));},goToPage:async l=>{let b=y.get();!b.pagination||l<1||(y.set({...b,pagination:{...b.pagination,page:l}}),await k(g,r,true));},resetPagination:async()=>{let l=y.get();l.pagination&&(y.set({...l,data:h==="accumulate"?i:l.data,pagination:{...l.pagination,page:A?.initialPage||1}}),await k(g,r,true));}}:Y}function ye(e,a={}){let{pageSize:t=10,...c}=a;return K(e,{...c,pagination:{pageSize:t,mode:"accumulate",initialPage:1}})}function pe(e){let a=Object.entries(e),t=a.reduce((r,[p,u])=>(r[p]=u.get().data,r),{}),c=a.reduce((r,[p,u])=>{let o=u.get().error;return o&&(r[p]=o),r},{}),i=a.some(([,r])=>r.get().loading),s=a.find(([,r])=>r.get().error)?.[1].get().error??null,n=v({loading:i,error:s,errors:c,data:t});return a.forEach(([r,p])=>{p.subscribe(()=>{let u=false,o=null,d={},m={...n.get().data};a.forEach(([T,A])=>{let E=A.get();E.loading&&(u=true),E.error&&(o||(o=E.error),d[T]=E.error),m[T]=E.data;}),n.set({loading:u,error:o,errors:d,data:m});});}),n}function me(e,a={}){let t=F().mutation??{},{invalidates:c=[],onSuccess:i=t.onSuccess,onError:s=t.onError,onSettled:f}=a,n={loading:false,data:null,error:null,isSuccess:false},r=v(n);return {mutate:async(...u)=>{let o=u[0];r.set({loading:true,data:null,error:null,isSuccess:false});try{let d=await e(o);return r.set({loading:!1,data:d,error:null,isSuccess:!0}),c.length>0&&await Promise.all(c.map(m=>m.reload())),i&&i(d,o),f&&f(d,null,o),{data:d,error:null}}catch(d){let m=d;return r.set({loading:false,data:null,error:m,isSuccess:false}),s&&s(m,o),f&&f(null,m,o),{data:null,error:m}}},get:()=>r.get(),subscribe:u=>r.subscribe(u),reset:()=>r.set(n)}}exports.batch=xe;exports.chunk=v;exports.computed=oe;exports.getChunkMeta=ke;exports.middleware=ce;exports.query=he;exports.select=ae;
1
+ 'use strict';var be=Object.defineProperty;var re=(e,a)=>{for(var t in a)be(e,t,{get:a[t],enumerable:true});};function ne(e,a){if(e===void 0)throw new Error("Value cannot be undefined.");if(a.length===0)return e;let t=e;for(let c=0;c<a.length;c++){let i=a[c],s=typeof i=="function"?i:i.fn,f=typeof i=="function"?`index ${c}`:i.name||`index ${c}`;try{let n=s(t);if(n===void 0)break;if(n===null)throw new Error(`Middleware "${f}" returned null value.`);t=n;}catch(n){let r=n instanceof Error?n.message:String(n);throw new Error(`Middleware "${f}" threw an error: ${r}`)}}return t}function O(e,a){if(e===a)return true;if(!e||!a||typeof e!=typeof a)return false;if(Array.isArray(e)&&Array.isArray(a)){if(e.length!==a.length)return false;for(let t=0;t<e.length;t++)if(e[t]!==a[t])return false;return true}if(typeof e=="object"&&typeof a=="object"){let t=Object.keys(e),c=Object.keys(a);if(t.length!==c.length)return false;for(let i of t)if(!Object.prototype.hasOwnProperty.call(a,i)||e[i]!==a[i])return false;return true}return false}function ke(e){return e[Symbol.for("stunk.meta")]}var _=null;function U(e){let a=new Set,t=_;_=a;try{return [e(),Array.from(a)]}finally{_=t;}}function Ee(e){_&&_.add(e);}var Q=false,G=new Set,W=new Map,ve=0;function xe(e){let a=Q;Q=true;try{e();}finally{a||(Q=false,G.forEach(t=>{let c=W.get(t);c&&c.notify();}),G.clear());}}function v(e,a={}){let t=ve++,c=`chunk_${t}`,i=a.middleware||[];a.strict??false;if(e===void 0)throw new Error(`[${c}] Initial value cannot be undefined.`);let n=e,r=new Set,p=()=>{r.forEach(h=>h(n));};W.set(t,{notify:p});let u=()=>{if(r.size===0){W.delete(t);return}Q?G.add(t):p();},o=()=>(Ee(D),n),d=()=>n,m=h=>{let x;typeof h=="function"?x=h(n):x=h;let P=ne(x,i);P!==n&&(n=P,u());},T=h=>{if(typeof h!="function")throw new Error("Callback must be a function.");return r.add(h),()=>r.delete(h)},D={get:o,peek:d,set:m,subscribe:T,derive:h=>{if(typeof h!="function")throw new Error("Derive function must be a function.");let x=h(n),P=v(x),y=T(()=>{let $=h(n);P.set($);}),g=P.destroy;return P.destroy=()=>{y(),g();},P},reset:()=>{n=e,u();},destroy:()=>{r.clear(),n=e,G.delete(t),W.delete(t);}};return D}function oe(e){let[a,t]=U(e),c=a,i=t,s=false,f=[],n=0,r=v(c),p=()=>{if(!s)return;s=false;let[o,d]=U(e);O(d,i)||(f.forEach(T=>T()),f=d.map(T=>T.subscribe(()=>{s=true,n>0&&p();})),i=d),(typeof o=="object"&&typeof c=="object"?!O(o,c):o!==c)&&(c=o,r.set(o));};f=i.map(o=>o.subscribe(()=>{s=true,n>0&&p();}));let u;return u={get:()=>(s&&p(),r.get()),peek:()=>c,subscribe:o=>{let d=r.subscribe(o);return n++,()=>{n=Math.max(0,n-1),d();}},derive:o=>(n++,oe(()=>o(u.get()))),recompute:()=>{s=true,p();},isDirty:()=>s,destroy:()=>{f.forEach(o=>o()),r.destroy(),n=0;}},u}function ae(e,a,t={}){let{useShallowEqual:c=false}=t,i=e.get(),s=a(i),f=v(s),n=()=>{let d=e.get(),m=a(d);(c?!O(m,s):m!==s)&&(s=m,f.set(m));},r=e.subscribe(n),{set:p,reset:u,...o}=f;return {...o,derive:d=>ae(f,d,t),destroy:()=>{r(),f.destroy();}}}var ce={};re(ce,{history:()=>ue,logger:()=>ie,nonNegativeValidator:()=>se,persist:()=>le});function ie(){return e=>(console.log("Setting value:",e),e)}var se=e=>{if(e<0)throw new Error("Value must be non-negative!");return e};function ue(e,a={}){let{maxHistory:t=100,skipDuplicates:c=false}=a,i=[e.get()],s=0;return {...e,get:()=>e.get(),peek:()=>e.peek(),set:n=>{let r;if(typeof n=="function"?r=n(e.get()):r=n,c){let p=i[s];if(r===p||c==="shallow"&&typeof r=="object"&&typeof p=="object"&&r!==null&&p!==null&&O(r,p))return}if(i.splice(s+1),i.push(r),i.length>t){let p=i.length-t;i.splice(0,p);}s=i.length-1,e.set(r);},undo:()=>{s<=0||(s--,e.set(i[s]));},redo:()=>{s>=i.length-1||(s++,e.set(i[s]));},canUndo:()=>s>0,canRedo:()=>s<i.length-1,getHistory:()=>[...i],clearHistory:()=>{let n=e.get();i.length=0,i.push(n),s=0;},reset:()=>{e.reset(),i.length=0,i.push(e.get()),s=0;},destroy:()=>{i.length=0,e.destroy();},subscribe:n=>e.subscribe(n)}}function le(e,a){let{key:t,serialize:c=JSON.stringify,deserialize:i=JSON.parse,onError:s}=a,f="storage"in a?a.storage:typeof window<"u"?localStorage:void 0;if(!f)return console.warn(`persist: Storage not available for key "${t}". Persistence disabled.`),{...e,clearStorage:()=>{}};let n=e.get();try{let u=f.getItem(t);if(u!==null){let o=i(u);if(o!==null&&n!==null&&(typeof o!=typeof n||Array.isArray(o)!==Array.isArray(n))){let T=`persist: Type mismatch for "${t}". Expected ${Array.isArray(n)?"array":typeof n}, got ${Array.isArray(o)?"array":typeof o}. Using initial value.`;console.warn(T),s?.(new Error(T),"load");}else e.set(o);}}catch(u){let o=u instanceof Error?u:new Error(String(u));console.error(`persist: Failed to load state for "${t}":`,o),s?.(o,"load");}let r=e.subscribe(u=>{try{f.setItem(t,c(u));}catch(o){let d=o instanceof Error?o:new Error(String(o));console.error(`persist: Failed to save state for "${t}":`,d),s?.(d,"save");}});return {...e,get:()=>e.get(),peek:()=>e.peek(),set:u=>e.set(u),subscribe:u=>e.subscribe(u),derive:u=>e.derive(u),reset:()=>e.reset(),destroy:()=>{r(),e.destroy();},clearStorage:()=>{try{f.removeItem(t);}catch(u){let o=u instanceof Error?u:new Error(String(u));console.error(`persist: Failed to clear storage for "${t}":`,o),s?.(o,"save");}}}}var he={};re(he,{asyncChunk:()=>K,combineAsyncChunks:()=>pe,configureQuery:()=>de,getGlobalQueryConfig:()=>F,infiniteAsyncChunk:()=>ye,mutation:()=>me,resetQueryConfig:()=>fe});var q={};function de(e){q={...e.query!==void 0&&{query:{...q.query,...e.query}},...e.mutation!==void 0&&{mutation:{...q.mutation,...e.mutation}}};}function F(){return q}function fe(){q={};}var N=new Map,Pe=0;function K(e,a={}){let t=F().query??{},{key:c,initialData:i=null,enabled:s=true,onSuccess:f=t.onSuccess,onError:n=t.onError,retryCount:r=t.retryCount??0,retryDelay:p=t.retryDelay??1e3,keepPreviousData:u=false,staleTime:o=t.staleTime??0,cacheTime:d=t.cacheTime??5*60*1e3,refetchInterval:m=t.refetchInterval,refetchOnWindowFocus:T=t.refetchOnWindowFocus??false,pagination:A}=a,E=c??`async_chunk_${Pe++}`,C=()=>typeof s=="function"?s():s,D=!!A,h=A?.mode||"replace",x=e.length>0,P={loading:C()&&!x,error:null,data:i,lastFetched:void 0,isPlaceholderData:false,pagination:D?{page:A.initialPage||1,pageSize:A.pageSize||10,total:void 0,hasMore:void 0}:void 0},y=v(P),g={},$=null,R=null,I=null,H=0,J=()=>{let l=y.get();return !l.lastFetched||o===0?true:Date.now()-l.lastFetched>o},ge=()=>{y.set({...y.get(),data:i,lastFetched:void 0});},Te=()=>{R&&clearTimeout(R),d>0&&(R=setTimeout(ge,d));},B=()=>{$&&(clearInterval($),$=null),R&&(clearTimeout(R),R=null),I&&typeof window<"u"&&(window.removeEventListener("focus",I),I=null);},X=()=>{C()&&(typeof window>"u"||(m&&m>0&&($=setInterval(()=>{k(void 0,0,false);},m)),T&&(I=()=>{J()&&k(void 0,0,false);},window.addEventListener("focus",I))));},k=async(l,b=r,M=false)=>{if(!C()||(l!==void 0&&(g={...g,...l}),!M&&!J()&&y.get().data!==null))return;if(N.has(E))return N.get(E);let L=y.get();y.set({...L,loading:true,error:null,data:L.data,isPlaceholderData:u&&L.data!==null});let Z=(async()=>{try{let j={...g};if(D){let V=y.get().pagination;V&&(j.page=V.page,j.pageSize=V.pageSize);}let w=x?await e(j):await e(),S,ee,te;if(w&&typeof w=="object"&&"data"in w){let V=w;S=V.data,ee=V.total,te=V.hasMore;}else S=w;let z=y.get();D&&h==="accumulate"&&z.data&&Array.isArray(z.data)&&Array.isArray(S)&&(S=[...z.data,...S]),y.set({loading:!1,error:null,data:S,lastFetched:Date.now(),isPlaceholderData:!1,pagination:D?{...z.pagination,total:ee,hasMore:te}:void 0}),Te(),f&&f(S);}catch(j){if(b>0)return await new Promise(S=>setTimeout(S,p)),N.delete(E),k(l,b-1,M);let w=y.get();y.set({loading:false,error:j,data:w.data,lastFetched:w.lastFetched,isPlaceholderData:false,pagination:w.pagination}),n&&n(j);}finally{N.delete(E);}})();return N.set(E,Z),Z};X(),C()&&!x&&k();let Y={...y,subscribe:l=>{H++;let b=y.subscribe(l);return ()=>{b(),H--;}},reload:async l=>{await k(l,r,true);},refresh:async l=>{await k(l,r,false);},mutate:l=>{let b=y.get();y.set({...b,data:l(b.data)});},reset:()=>{B(),g={},y.set({...P,loading:C()&&!x}),X(),C()&&!x&&k();},cleanup:()=>{H<=0&&B();},forceCleanup:()=>{B();},setParams:l=>{let b={...g};for(let M in l)l[M]===null?delete b[M]:b[M]=l[M];g=b,C()&&k(g,r,true);},clearParams:()=>{g={},C()&&k(void 0,r,true);}};return D?{...Y,nextPage:async()=>{let l=y.get();!l.pagination||l.pagination.hasMore===false||(y.set({...l,pagination:{...l.pagination,page:l.pagination.page+1}}),await k(g,r,true));},prevPage:async()=>{let l=y.get();!l.pagination||l.pagination.page<=1||(y.set({...l,pagination:{...l.pagination,page:l.pagination.page-1}}),await k(g,r,true));},goToPage:async l=>{let b=y.get();!b.pagination||l<1||(y.set({...b,pagination:{...b.pagination,page:l}}),await k(g,r,true));},resetPagination:async()=>{let l=y.get();l.pagination&&(y.set({...l,data:h==="accumulate"?i:l.data,pagination:{...l.pagination,page:A?.initialPage||1}}),await k(g,r,true));}}:Y}function ye(e,a={}){let{pageSize:t=10,...c}=a;return K(e,{...c,pagination:{pageSize:t,mode:"accumulate",initialPage:1}})}function pe(e){let a=Object.entries(e),t=a.reduce((r,[p,u])=>(r[p]=u.get().data,r),{}),c=a.reduce((r,[p,u])=>{let o=u.get().error;return o&&(r[p]=o),r},{}),i=a.some(([,r])=>r.get().loading),s=a.find(([,r])=>r.get().error)?.[1].get().error??null,n=v({loading:i,error:s,errors:c,data:t});return a.forEach(([r,p])=>{p.subscribe(()=>{let u=false,o=null,d={},m={...n.get().data};a.forEach(([T,A])=>{let E=A.get();E.loading&&(u=true),E.error&&(o||(o=E.error),d[T]=E.error),m[T]=E.data;}),n.set({loading:u,error:o,errors:d,data:m});});}),n}function me(e,a={}){let t=F().mutation??{},{invalidates:c=[],onSuccess:i=t.onSuccess,onError:s=t.onError,onSettled:f}=a,n={loading:false,data:null,error:null,isSuccess:false},r=v(n);return {mutate:async(...u)=>{let o=u[0];r.set({loading:true,data:null,error:null,isSuccess:false});try{let d=await e(o);return r.set({loading:!1,data:d,error:null,isSuccess:!0}),c.length>0&&await Promise.all(c.map(m=>m.reload())),i&&i(d,o),f&&f(d,null,o),{data:d,error:null}}catch(d){let m=d;return r.set({loading:false,data:null,error:m,isSuccess:false}),s&&s(m,o),f&&f(null,m,o),{data:null,error:m}}},get:()=>r.get(),subscribe:u=>r.subscribe(u),reset:()=>r.set(n)}}exports.batch=xe;exports.chunk=v;exports.computed=oe;exports.getChunkMeta=ke;exports.middleware=ce;exports.query=he;exports.select=ae;
package/dist/index.d.cts CHANGED
@@ -67,6 +67,25 @@ declare function batch(callback: () => void): void;
67
67
  * @param initialValue - The starting value. Cannot be `undefined`.
68
68
  * @param config - Optional configuration for naming, middleware, and strict mode.
69
69
  * @returns A `Chunk<T>` with `get()`, `set()`, `peek()`, `subscribe()`, `derive()`, `reset()`, and `destroy()`.
70
+ *
71
+ * @throws If `initialValue` is `undefined`.
72
+ *
73
+ * @example
74
+ * const count = chunk(0);
75
+ * count.get(); // 0
76
+ * count.set(1); // subscribers notified
77
+ * count.set(n => n + 1); // updater function
78
+ * count.reset(); // back to 0
79
+ *
80
+ * @example
81
+ * // Named chunk with strict mode — throws on unknown keys in dev
82
+ * const user = chunk({ name: 'Alice', age: 30 }, { name: 'user', strict: true });
83
+ *
84
+ * @example
85
+ * // With middleware
86
+ * const positive = chunk(0, {
87
+ * middleware: [nonNegativeValidator]
88
+ * });
70
89
  */
71
90
  declare function chunk<T>(initialValue: T, config?: ChunkConfig<T>): Chunk<T>;
72
91
 
package/dist/index.d.ts CHANGED
@@ -67,6 +67,25 @@ declare function batch(callback: () => void): void;
67
67
  * @param initialValue - The starting value. Cannot be `undefined`.
68
68
  * @param config - Optional configuration for naming, middleware, and strict mode.
69
69
  * @returns A `Chunk<T>` with `get()`, `set()`, `peek()`, `subscribe()`, `derive()`, `reset()`, and `destroy()`.
70
+ *
71
+ * @throws If `initialValue` is `undefined`.
72
+ *
73
+ * @example
74
+ * const count = chunk(0);
75
+ * count.get(); // 0
76
+ * count.set(1); // subscribers notified
77
+ * count.set(n => n + 1); // updater function
78
+ * count.reset(); // back to 0
79
+ *
80
+ * @example
81
+ * // Named chunk with strict mode — throws on unknown keys in dev
82
+ * const user = chunk({ name: 'Alice', age: 30 }, { name: 'user', strict: true });
83
+ *
84
+ * @example
85
+ * // With middleware
86
+ * const positive = chunk(0, {
87
+ * middleware: [nonNegativeValidator]
88
+ * });
70
89
  */
71
90
  declare function chunk<T>(initialValue: T, config?: ChunkConfig<T>): Chunk<T>;
72
91
 
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var be=Object.defineProperty;var re=(e,a)=>{for(var t in a)be(e,t,{get:a[t],enumerable:true});};function ne(e,a){if(e===void 0)throw new Error("Value cannot be undefined.");if(a.length===0)return e;let t=e;for(let c=0;c<a.length;c++){let i=a[c],s=typeof i=="function"?i:i.fn,f=typeof i=="function"?`index ${c}`:i.name||`index ${c}`;try{let n=s(t);if(n===void 0)break;if(n===null)throw new Error(`Middleware "${f}" returned null value.`);t=n;}catch(n){let r=n instanceof Error?n.message:String(n);throw new Error(`Middleware "${f}" threw an error: ${r}`)}}return t}function O(e,a){if(e===a)return true;if(!e||!a||typeof e!=typeof a)return false;if(Array.isArray(e)&&Array.isArray(a)){if(e.length!==a.length)return false;for(let t=0;t<e.length;t++)if(e[t]!==a[t])return false;return true}if(typeof e=="object"&&typeof a=="object"){let t=Object.keys(e),c=Object.keys(a);if(t.length!==c.length)return false;for(let i of t)if(!Object.prototype.hasOwnProperty.call(a,i)||e[i]!==a[i])return false;return true}return false}function ke(e){return e[Symbol.for("stunk.meta")]}var _=null;function U(e){let a=new Set,t=_;_=a;try{return [e(),Array.from(a)]}finally{_=t;}}function Ee(e){_&&_.add(e);}var Q=false,G=new Set,W=new Map,ve=0;function xe(e){let a=Q;Q=true;try{e();}finally{if(!a){Q=false;let t=Array.from(G);G.clear(),t.forEach(c=>{let i=W.get(c);i&&i.notify();});}}}function v(e,a={}){let t=ve++,c=`chunk_${t}`,i=a.middleware||[];a.strict??false;if(e===void 0)throw new Error(`[${c}] Initial value cannot be undefined.`);let n=e,r=new Set,p=()=>{r.forEach(h=>h(n));};W.set(t,{notify:p});let u=()=>{if(r.size===0){W.delete(t);return}Q?G.add(t):p();},o=()=>(Ee(D),n),d=()=>n,m=h=>{let x;typeof h=="function"?x=h(n):x=h;let P=ne(x,i);P!==n&&(n=P,u());},T=h=>{if(typeof h!="function")throw new Error("Callback must be a function.");return r.add(h),()=>r.delete(h)},D={get:o,peek:d,set:m,subscribe:T,derive:h=>{if(typeof h!="function")throw new Error("Derive function must be a function.");let x=h(n),P=v(x),y=T(()=>{let $=h(n);P.set($);}),g=P.destroy;return P.destroy=()=>{y(),g();},P},reset:()=>{n=e,u();},destroy:()=>{r.clear(),n=e,G.delete(t),W.delete(t);}};return D}function oe(e){let[a,t]=U(e),c=a,i=t,s=false,f=[],n=0,r=v(c),p=()=>{if(!s)return;s=false;let[o,d]=U(e);O(d,i)||(f.forEach(T=>T()),f=d.map(T=>T.subscribe(()=>{s=true,n>0&&p();})),i=d),(typeof o=="object"&&typeof c=="object"?!O(o,c):o!==c)&&(c=o,r.set(o));};f=i.map(o=>o.subscribe(()=>{s=true,n>0&&p();}));let u;return u={get:()=>(s&&p(),r.get()),peek:()=>c,subscribe:o=>{let d=r.subscribe(o);return n++,()=>{n=Math.max(0,n-1),d();}},derive:o=>(n++,oe(()=>o(u.get()))),recompute:()=>{s=true,p();},isDirty:()=>s,destroy:()=>{f.forEach(o=>o()),r.destroy(),n=0;}},u}function ae(e,a,t={}){let{useShallowEqual:c=false}=t,i=e.get(),s=a(i),f=v(s),n=()=>{let d=e.get(),m=a(d);(c?!O(m,s):m!==s)&&(s=m,f.set(m));},r=e.subscribe(n),{set:p,reset:u,...o}=f;return {...o,derive:d=>ae(f,d,t),destroy:()=>{r(),f.destroy();}}}var ce={};re(ce,{history:()=>ue,logger:()=>ie,nonNegativeValidator:()=>se,persist:()=>le});function ie(){return e=>(console.log("Setting value:",e),e)}var se=e=>{if(e<0)throw new Error("Value must be non-negative!");return e};function ue(e,a={}){let{maxHistory:t=100,skipDuplicates:c=false}=a,i=[e.get()],s=0;return {...e,get:()=>e.get(),peek:()=>e.peek(),set:n=>{let r;if(typeof n=="function"?r=n(e.get()):r=n,c){let p=i[s];if(r===p||c==="shallow"&&typeof r=="object"&&typeof p=="object"&&r!==null&&p!==null&&O(r,p))return}if(i.splice(s+1),i.push(r),i.length>t){let p=i.length-t;i.splice(0,p);}s=i.length-1,e.set(r);},undo:()=>{s<=0||(s--,e.set(i[s]));},redo:()=>{s>=i.length-1||(s++,e.set(i[s]));},canUndo:()=>s>0,canRedo:()=>s<i.length-1,getHistory:()=>[...i],clearHistory:()=>{let n=e.get();i.length=0,i.push(n),s=0;},reset:()=>{e.reset(),i.length=0,i.push(e.get()),s=0;},destroy:()=>{i.length=0,e.destroy();},subscribe:n=>e.subscribe(n)}}function le(e,a){let{key:t,serialize:c=JSON.stringify,deserialize:i=JSON.parse,onError:s}=a,f="storage"in a?a.storage:typeof window<"u"?localStorage:void 0;if(!f)return console.warn(`persist: Storage not available for key "${t}". Persistence disabled.`),{...e,clearStorage:()=>{}};let n=e.get();try{let u=f.getItem(t);if(u!==null){let o=i(u);if(o!==null&&n!==null&&(typeof o!=typeof n||Array.isArray(o)!==Array.isArray(n))){let T=`persist: Type mismatch for "${t}". Expected ${Array.isArray(n)?"array":typeof n}, got ${Array.isArray(o)?"array":typeof o}. Using initial value.`;console.warn(T),s?.(new Error(T),"load");}else e.set(o);}}catch(u){let o=u instanceof Error?u:new Error(String(u));console.error(`persist: Failed to load state for "${t}":`,o),s?.(o,"load");}let r=e.subscribe(u=>{try{f.setItem(t,c(u));}catch(o){let d=o instanceof Error?o:new Error(String(o));console.error(`persist: Failed to save state for "${t}":`,d),s?.(d,"save");}});return {...e,get:()=>e.get(),peek:()=>e.peek(),set:u=>e.set(u),subscribe:u=>e.subscribe(u),derive:u=>e.derive(u),reset:()=>e.reset(),destroy:()=>{r(),e.destroy();},clearStorage:()=>{try{f.removeItem(t);}catch(u){let o=u instanceof Error?u:new Error(String(u));console.error(`persist: Failed to clear storage for "${t}":`,o),s?.(o,"save");}}}}var he={};re(he,{asyncChunk:()=>K,combineAsyncChunks:()=>pe,configureQuery:()=>de,getGlobalQueryConfig:()=>F,infiniteAsyncChunk:()=>ye,mutation:()=>me,resetQueryConfig:()=>fe});var q={};function de(e){q={...e.query!==void 0&&{query:{...q.query,...e.query}},...e.mutation!==void 0&&{mutation:{...q.mutation,...e.mutation}}};}function F(){return q}function fe(){q={};}var N=new Map,Pe=0;function K(e,a={}){let t=F().query??{},{key:c,initialData:i=null,enabled:s=true,onSuccess:f=t.onSuccess,onError:n=t.onError,retryCount:r=t.retryCount??0,retryDelay:p=t.retryDelay??1e3,keepPreviousData:u=false,staleTime:o=t.staleTime??0,cacheTime:d=t.cacheTime??5*60*1e3,refetchInterval:m=t.refetchInterval,refetchOnWindowFocus:T=t.refetchOnWindowFocus??false,pagination:A}=a,E=c??`async_chunk_${Pe++}`,C=()=>typeof s=="function"?s():s,D=!!A,h=A?.mode||"replace",x=e.length>0,P={loading:C()&&!x,error:null,data:i,lastFetched:void 0,isPlaceholderData:false,pagination:D?{page:A.initialPage||1,pageSize:A.pageSize||10,total:void 0,hasMore:void 0}:void 0},y=v(P),g={},$=null,R=null,I=null,H=0,J=()=>{let l=y.get();return !l.lastFetched||o===0?true:Date.now()-l.lastFetched>o},ge=()=>{y.set({...y.get(),data:i,lastFetched:void 0});},Te=()=>{R&&clearTimeout(R),d>0&&(R=setTimeout(ge,d));},B=()=>{$&&(clearInterval($),$=null),R&&(clearTimeout(R),R=null),I&&typeof window<"u"&&(window.removeEventListener("focus",I),I=null);},X=()=>{C()&&(typeof window>"u"||(m&&m>0&&($=setInterval(()=>{k(void 0,0,false);},m)),T&&(I=()=>{J()&&k(void 0,0,false);},window.addEventListener("focus",I))));},k=async(l,b=r,M=false)=>{if(!C()||(l!==void 0&&(g={...g,...l}),!M&&!J()&&y.get().data!==null))return;if(N.has(E))return N.get(E);let L=y.get();y.set({...L,loading:true,error:null,data:L.data,isPlaceholderData:u&&L.data!==null});let Z=(async()=>{try{let j={...g};if(D){let V=y.get().pagination;V&&(j.page=V.page,j.pageSize=V.pageSize);}let w=x?await e(j):await e(),S,ee,te;if(w&&typeof w=="object"&&"data"in w){let V=w;S=V.data,ee=V.total,te=V.hasMore;}else S=w;let z=y.get();D&&h==="accumulate"&&z.data&&Array.isArray(z.data)&&Array.isArray(S)&&(S=[...z.data,...S]),y.set({loading:!1,error:null,data:S,lastFetched:Date.now(),isPlaceholderData:!1,pagination:D?{...z.pagination,total:ee,hasMore:te}:void 0}),Te(),f&&f(S);}catch(j){if(b>0)return await new Promise(S=>setTimeout(S,p)),N.delete(E),k(l,b-1,M);let w=y.get();y.set({loading:false,error:j,data:w.data,lastFetched:w.lastFetched,isPlaceholderData:false,pagination:w.pagination}),n&&n(j);}finally{N.delete(E);}})();return N.set(E,Z),Z};X(),C()&&!x&&k();let Y={...y,subscribe:l=>{H++;let b=y.subscribe(l);return ()=>{b(),H--;}},reload:async l=>{await k(l,r,true);},refresh:async l=>{await k(l,r,false);},mutate:l=>{let b=y.get();y.set({...b,data:l(b.data)});},reset:()=>{B(),g={},y.set({...P,loading:C()&&!x}),X(),C()&&!x&&k();},cleanup:()=>{H<=0&&B();},forceCleanup:()=>{B();},setParams:l=>{let b={...g};for(let M in l)l[M]===null?delete b[M]:b[M]=l[M];g=b,C()&&k(g,r,true);},clearParams:()=>{g={},C()&&k(void 0,r,true);}};return D?{...Y,nextPage:async()=>{let l=y.get();!l.pagination||l.pagination.hasMore===false||(y.set({...l,pagination:{...l.pagination,page:l.pagination.page+1}}),await k(g,r,true));},prevPage:async()=>{let l=y.get();!l.pagination||l.pagination.page<=1||(y.set({...l,pagination:{...l.pagination,page:l.pagination.page-1}}),await k(g,r,true));},goToPage:async l=>{let b=y.get();!b.pagination||l<1||(y.set({...b,pagination:{...b.pagination,page:l}}),await k(g,r,true));},resetPagination:async()=>{let l=y.get();l.pagination&&(y.set({...l,data:h==="accumulate"?i:l.data,pagination:{...l.pagination,page:A?.initialPage||1}}),await k(g,r,true));}}:Y}function ye(e,a={}){let{pageSize:t=10,...c}=a;return K(e,{...c,pagination:{pageSize:t,mode:"accumulate",initialPage:1}})}function pe(e){let a=Object.entries(e),t=a.reduce((r,[p,u])=>(r[p]=u.get().data,r),{}),c=a.reduce((r,[p,u])=>{let o=u.get().error;return o&&(r[p]=o),r},{}),i=a.some(([,r])=>r.get().loading),s=a.find(([,r])=>r.get().error)?.[1].get().error??null,n=v({loading:i,error:s,errors:c,data:t});return a.forEach(([r,p])=>{p.subscribe(()=>{let u=false,o=null,d={},m={...n.get().data};a.forEach(([T,A])=>{let E=A.get();E.loading&&(u=true),E.error&&(o||(o=E.error),d[T]=E.error),m[T]=E.data;}),n.set({loading:u,error:o,errors:d,data:m});});}),n}function me(e,a={}){let t=F().mutation??{},{invalidates:c=[],onSuccess:i=t.onSuccess,onError:s=t.onError,onSettled:f}=a,n={loading:false,data:null,error:null,isSuccess:false},r=v(n);return {mutate:async(...u)=>{let o=u[0];r.set({loading:true,data:null,error:null,isSuccess:false});try{let d=await e(o);return r.set({loading:!1,data:d,error:null,isSuccess:!0}),c.length>0&&await Promise.all(c.map(m=>m.reload())),i&&i(d,o),f&&f(d,null,o),{data:d,error:null}}catch(d){let m=d;return r.set({loading:false,data:null,error:m,isSuccess:false}),s&&s(m,o),f&&f(null,m,o),{data:null,error:m}}},get:()=>r.get(),subscribe:u=>r.subscribe(u),reset:()=>r.set(n)}}export{xe as batch,v as chunk,oe as computed,ke as getChunkMeta,ce as middleware,he as query,ae as select};
1
+ var be=Object.defineProperty;var re=(e,a)=>{for(var t in a)be(e,t,{get:a[t],enumerable:true});};function ne(e,a){if(e===void 0)throw new Error("Value cannot be undefined.");if(a.length===0)return e;let t=e;for(let c=0;c<a.length;c++){let i=a[c],s=typeof i=="function"?i:i.fn,f=typeof i=="function"?`index ${c}`:i.name||`index ${c}`;try{let n=s(t);if(n===void 0)break;if(n===null)throw new Error(`Middleware "${f}" returned null value.`);t=n;}catch(n){let r=n instanceof Error?n.message:String(n);throw new Error(`Middleware "${f}" threw an error: ${r}`)}}return t}function O(e,a){if(e===a)return true;if(!e||!a||typeof e!=typeof a)return false;if(Array.isArray(e)&&Array.isArray(a)){if(e.length!==a.length)return false;for(let t=0;t<e.length;t++)if(e[t]!==a[t])return false;return true}if(typeof e=="object"&&typeof a=="object"){let t=Object.keys(e),c=Object.keys(a);if(t.length!==c.length)return false;for(let i of t)if(!Object.prototype.hasOwnProperty.call(a,i)||e[i]!==a[i])return false;return true}return false}function ke(e){return e[Symbol.for("stunk.meta")]}var _=null;function U(e){let a=new Set,t=_;_=a;try{return [e(),Array.from(a)]}finally{_=t;}}function Ee(e){_&&_.add(e);}var Q=false,G=new Set,W=new Map,ve=0;function xe(e){let a=Q;Q=true;try{e();}finally{a||(Q=false,G.forEach(t=>{let c=W.get(t);c&&c.notify();}),G.clear());}}function v(e,a={}){let t=ve++,c=`chunk_${t}`,i=a.middleware||[];a.strict??false;if(e===void 0)throw new Error(`[${c}] Initial value cannot be undefined.`);let n=e,r=new Set,p=()=>{r.forEach(h=>h(n));};W.set(t,{notify:p});let u=()=>{if(r.size===0){W.delete(t);return}Q?G.add(t):p();},o=()=>(Ee(D),n),d=()=>n,m=h=>{let x;typeof h=="function"?x=h(n):x=h;let P=ne(x,i);P!==n&&(n=P,u());},T=h=>{if(typeof h!="function")throw new Error("Callback must be a function.");return r.add(h),()=>r.delete(h)},D={get:o,peek:d,set:m,subscribe:T,derive:h=>{if(typeof h!="function")throw new Error("Derive function must be a function.");let x=h(n),P=v(x),y=T(()=>{let $=h(n);P.set($);}),g=P.destroy;return P.destroy=()=>{y(),g();},P},reset:()=>{n=e,u();},destroy:()=>{r.clear(),n=e,G.delete(t),W.delete(t);}};return D}function oe(e){let[a,t]=U(e),c=a,i=t,s=false,f=[],n=0,r=v(c),p=()=>{if(!s)return;s=false;let[o,d]=U(e);O(d,i)||(f.forEach(T=>T()),f=d.map(T=>T.subscribe(()=>{s=true,n>0&&p();})),i=d),(typeof o=="object"&&typeof c=="object"?!O(o,c):o!==c)&&(c=o,r.set(o));};f=i.map(o=>o.subscribe(()=>{s=true,n>0&&p();}));let u;return u={get:()=>(s&&p(),r.get()),peek:()=>c,subscribe:o=>{let d=r.subscribe(o);return n++,()=>{n=Math.max(0,n-1),d();}},derive:o=>(n++,oe(()=>o(u.get()))),recompute:()=>{s=true,p();},isDirty:()=>s,destroy:()=>{f.forEach(o=>o()),r.destroy(),n=0;}},u}function ae(e,a,t={}){let{useShallowEqual:c=false}=t,i=e.get(),s=a(i),f=v(s),n=()=>{let d=e.get(),m=a(d);(c?!O(m,s):m!==s)&&(s=m,f.set(m));},r=e.subscribe(n),{set:p,reset:u,...o}=f;return {...o,derive:d=>ae(f,d,t),destroy:()=>{r(),f.destroy();}}}var ce={};re(ce,{history:()=>ue,logger:()=>ie,nonNegativeValidator:()=>se,persist:()=>le});function ie(){return e=>(console.log("Setting value:",e),e)}var se=e=>{if(e<0)throw new Error("Value must be non-negative!");return e};function ue(e,a={}){let{maxHistory:t=100,skipDuplicates:c=false}=a,i=[e.get()],s=0;return {...e,get:()=>e.get(),peek:()=>e.peek(),set:n=>{let r;if(typeof n=="function"?r=n(e.get()):r=n,c){let p=i[s];if(r===p||c==="shallow"&&typeof r=="object"&&typeof p=="object"&&r!==null&&p!==null&&O(r,p))return}if(i.splice(s+1),i.push(r),i.length>t){let p=i.length-t;i.splice(0,p);}s=i.length-1,e.set(r);},undo:()=>{s<=0||(s--,e.set(i[s]));},redo:()=>{s>=i.length-1||(s++,e.set(i[s]));},canUndo:()=>s>0,canRedo:()=>s<i.length-1,getHistory:()=>[...i],clearHistory:()=>{let n=e.get();i.length=0,i.push(n),s=0;},reset:()=>{e.reset(),i.length=0,i.push(e.get()),s=0;},destroy:()=>{i.length=0,e.destroy();},subscribe:n=>e.subscribe(n)}}function le(e,a){let{key:t,serialize:c=JSON.stringify,deserialize:i=JSON.parse,onError:s}=a,f="storage"in a?a.storage:typeof window<"u"?localStorage:void 0;if(!f)return console.warn(`persist: Storage not available for key "${t}". Persistence disabled.`),{...e,clearStorage:()=>{}};let n=e.get();try{let u=f.getItem(t);if(u!==null){let o=i(u);if(o!==null&&n!==null&&(typeof o!=typeof n||Array.isArray(o)!==Array.isArray(n))){let T=`persist: Type mismatch for "${t}". Expected ${Array.isArray(n)?"array":typeof n}, got ${Array.isArray(o)?"array":typeof o}. Using initial value.`;console.warn(T),s?.(new Error(T),"load");}else e.set(o);}}catch(u){let o=u instanceof Error?u:new Error(String(u));console.error(`persist: Failed to load state for "${t}":`,o),s?.(o,"load");}let r=e.subscribe(u=>{try{f.setItem(t,c(u));}catch(o){let d=o instanceof Error?o:new Error(String(o));console.error(`persist: Failed to save state for "${t}":`,d),s?.(d,"save");}});return {...e,get:()=>e.get(),peek:()=>e.peek(),set:u=>e.set(u),subscribe:u=>e.subscribe(u),derive:u=>e.derive(u),reset:()=>e.reset(),destroy:()=>{r(),e.destroy();},clearStorage:()=>{try{f.removeItem(t);}catch(u){let o=u instanceof Error?u:new Error(String(u));console.error(`persist: Failed to clear storage for "${t}":`,o),s?.(o,"save");}}}}var he={};re(he,{asyncChunk:()=>K,combineAsyncChunks:()=>pe,configureQuery:()=>de,getGlobalQueryConfig:()=>F,infiniteAsyncChunk:()=>ye,mutation:()=>me,resetQueryConfig:()=>fe});var q={};function de(e){q={...e.query!==void 0&&{query:{...q.query,...e.query}},...e.mutation!==void 0&&{mutation:{...q.mutation,...e.mutation}}};}function F(){return q}function fe(){q={};}var N=new Map,Pe=0;function K(e,a={}){let t=F().query??{},{key:c,initialData:i=null,enabled:s=true,onSuccess:f=t.onSuccess,onError:n=t.onError,retryCount:r=t.retryCount??0,retryDelay:p=t.retryDelay??1e3,keepPreviousData:u=false,staleTime:o=t.staleTime??0,cacheTime:d=t.cacheTime??5*60*1e3,refetchInterval:m=t.refetchInterval,refetchOnWindowFocus:T=t.refetchOnWindowFocus??false,pagination:A}=a,E=c??`async_chunk_${Pe++}`,C=()=>typeof s=="function"?s():s,D=!!A,h=A?.mode||"replace",x=e.length>0,P={loading:C()&&!x,error:null,data:i,lastFetched:void 0,isPlaceholderData:false,pagination:D?{page:A.initialPage||1,pageSize:A.pageSize||10,total:void 0,hasMore:void 0}:void 0},y=v(P),g={},$=null,R=null,I=null,H=0,J=()=>{let l=y.get();return !l.lastFetched||o===0?true:Date.now()-l.lastFetched>o},ge=()=>{y.set({...y.get(),data:i,lastFetched:void 0});},Te=()=>{R&&clearTimeout(R),d>0&&(R=setTimeout(ge,d));},B=()=>{$&&(clearInterval($),$=null),R&&(clearTimeout(R),R=null),I&&typeof window<"u"&&(window.removeEventListener("focus",I),I=null);},X=()=>{C()&&(typeof window>"u"||(m&&m>0&&($=setInterval(()=>{k(void 0,0,false);},m)),T&&(I=()=>{J()&&k(void 0,0,false);},window.addEventListener("focus",I))));},k=async(l,b=r,M=false)=>{if(!C()||(l!==void 0&&(g={...g,...l}),!M&&!J()&&y.get().data!==null))return;if(N.has(E))return N.get(E);let L=y.get();y.set({...L,loading:true,error:null,data:L.data,isPlaceholderData:u&&L.data!==null});let Z=(async()=>{try{let j={...g};if(D){let V=y.get().pagination;V&&(j.page=V.page,j.pageSize=V.pageSize);}let w=x?await e(j):await e(),S,ee,te;if(w&&typeof w=="object"&&"data"in w){let V=w;S=V.data,ee=V.total,te=V.hasMore;}else S=w;let z=y.get();D&&h==="accumulate"&&z.data&&Array.isArray(z.data)&&Array.isArray(S)&&(S=[...z.data,...S]),y.set({loading:!1,error:null,data:S,lastFetched:Date.now(),isPlaceholderData:!1,pagination:D?{...z.pagination,total:ee,hasMore:te}:void 0}),Te(),f&&f(S);}catch(j){if(b>0)return await new Promise(S=>setTimeout(S,p)),N.delete(E),k(l,b-1,M);let w=y.get();y.set({loading:false,error:j,data:w.data,lastFetched:w.lastFetched,isPlaceholderData:false,pagination:w.pagination}),n&&n(j);}finally{N.delete(E);}})();return N.set(E,Z),Z};X(),C()&&!x&&k();let Y={...y,subscribe:l=>{H++;let b=y.subscribe(l);return ()=>{b(),H--;}},reload:async l=>{await k(l,r,true);},refresh:async l=>{await k(l,r,false);},mutate:l=>{let b=y.get();y.set({...b,data:l(b.data)});},reset:()=>{B(),g={},y.set({...P,loading:C()&&!x}),X(),C()&&!x&&k();},cleanup:()=>{H<=0&&B();},forceCleanup:()=>{B();},setParams:l=>{let b={...g};for(let M in l)l[M]===null?delete b[M]:b[M]=l[M];g=b,C()&&k(g,r,true);},clearParams:()=>{g={},C()&&k(void 0,r,true);}};return D?{...Y,nextPage:async()=>{let l=y.get();!l.pagination||l.pagination.hasMore===false||(y.set({...l,pagination:{...l.pagination,page:l.pagination.page+1}}),await k(g,r,true));},prevPage:async()=>{let l=y.get();!l.pagination||l.pagination.page<=1||(y.set({...l,pagination:{...l.pagination,page:l.pagination.page-1}}),await k(g,r,true));},goToPage:async l=>{let b=y.get();!b.pagination||l<1||(y.set({...b,pagination:{...b.pagination,page:l}}),await k(g,r,true));},resetPagination:async()=>{let l=y.get();l.pagination&&(y.set({...l,data:h==="accumulate"?i:l.data,pagination:{...l.pagination,page:A?.initialPage||1}}),await k(g,r,true));}}:Y}function ye(e,a={}){let{pageSize:t=10,...c}=a;return K(e,{...c,pagination:{pageSize:t,mode:"accumulate",initialPage:1}})}function pe(e){let a=Object.entries(e),t=a.reduce((r,[p,u])=>(r[p]=u.get().data,r),{}),c=a.reduce((r,[p,u])=>{let o=u.get().error;return o&&(r[p]=o),r},{}),i=a.some(([,r])=>r.get().loading),s=a.find(([,r])=>r.get().error)?.[1].get().error??null,n=v({loading:i,error:s,errors:c,data:t});return a.forEach(([r,p])=>{p.subscribe(()=>{let u=false,o=null,d={},m={...n.get().data};a.forEach(([T,A])=>{let E=A.get();E.loading&&(u=true),E.error&&(o||(o=E.error),d[T]=E.error),m[T]=E.data;}),n.set({loading:u,error:o,errors:d,data:m});});}),n}function me(e,a={}){let t=F().mutation??{},{invalidates:c=[],onSuccess:i=t.onSuccess,onError:s=t.onError,onSettled:f}=a,n={loading:false,data:null,error:null,isSuccess:false},r=v(n);return {mutate:async(...u)=>{let o=u[0];r.set({loading:true,data:null,error:null,isSuccess:false});try{let d=await e(o);return r.set({loading:!1,data:d,error:null,isSuccess:!0}),c.length>0&&await Promise.all(c.map(m=>m.reload())),i&&i(d,o),f&&f(d,null,o),{data:d,error:null}}catch(d){let m=d;return r.set({loading:false,data:null,error:m,isSuccess:false}),s&&s(m,o),f&&f(null,m,o),{data:null,error:m}}},get:()=>r.get(),subscribe:u=>r.subscribe(u),reset:()=>r.set(n)}}export{xe as batch,v as chunk,oe as computed,ke as getChunkMeta,ce as middleware,he as query,ae as select};
@@ -1 +1 @@
1
- import {a}from'../chunk-KWDC37TK.js';import'../chunk-3DOB632D.js';var O={};function Y(i){O={...i.query!==void 0&&{query:{...O.query,...i.query}},...i.mutation!==void 0&&{mutation:{...O.mutation,...i.mutation}}};}function R(){return O}function Z(){O={};}var V=new Map,ee=0;function L(i,l={}){let r=R().query??{},{key:T,initialData:b=null,enabled:h=true,onSuccess:E=r.onSuccess,onError:p=r.onError,retryCount:a$1=r.retryCount??0,retryDelay:P=r.retryDelay??1e3,keepPreviousData:c=false,staleTime:n=r.staleTime??0,cacheTime:d=r.cacheTime??5*60*1e3,refetchInterval:s=r.refetchInterval,refetchOnWindowFocus:Q=r.refetchOnWindowFocus??false,pagination:k}=l,g=T??`async_chunk_${ee++}`,C=()=>typeof h=="function"?h():h,w=!!k,j=k?.mode||"replace",M=i.length>0,K={loading:C()&&!M,error:null,data:b,lastFetched:void 0,isPlaceholderData:false,pagination:w?{page:k.initialPage||1,pageSize:k.pageSize||10,total:void 0,hasMore:void 0}:void 0},t=a(K),f={},I=null,S=null,F=null,G=0,N=()=>{let e=t.get();return !e.lastFetched||n===0?true:Date.now()-e.lastFetched>n},U=()=>{t.set({...t.get(),data:b,lastFetched:void 0});},X=()=>{S&&clearTimeout(S),d>0&&(S=setTimeout(U,d));},q=()=>{I&&(clearInterval(I),I=null),S&&(clearTimeout(S),S=null),F&&typeof window<"u"&&(window.removeEventListener("focus",F),F=null);},_=()=>{C()&&(typeof window>"u"||(s&&s>0&&(I=setInterval(()=>{u(void 0,0,false);},s)),Q&&(F=()=>{N()&&u(void 0,0,false);},window.addEventListener("focus",F))));},u=async(e,o=a$1,v=false)=>{if(!C()||(e!==void 0&&(f={...f,...e}),!v&&!N()&&t.get().data!==null))return;if(V.has(g))return V.get(g);let W=t.get();t.set({...W,loading:true,error:null,data:W.data,isPlaceholderData:c&&W.data!==null});let $=(async()=>{try{let A={...f};if(w){let x=t.get().pagination;x&&(A.page=x.page,A.pageSize=x.pageSize);}let m=M?await i(A):await i(),y,B,J;if(m&&typeof m=="object"&&"data"in m){let x=m;y=x.data,B=x.total,J=x.hasMore;}else y=m;let z=t.get();w&&j==="accumulate"&&z.data&&Array.isArray(z.data)&&Array.isArray(y)&&(y=[...z.data,...y]),t.set({loading:!1,error:null,data:y,lastFetched:Date.now(),isPlaceholderData:!1,pagination:w?{...z.pagination,total:B,hasMore:J}:void 0}),X(),E&&E(y);}catch(A){if(o>0)return await new Promise(y=>setTimeout(y,P)),V.delete(g),u(e,o-1,v);let m=t.get();t.set({loading:false,error:A,data:m.data,lastFetched:m.lastFetched,isPlaceholderData:false,pagination:m.pagination}),p&&p(A);}finally{V.delete(g);}})();return V.set(g,$),$};_(),C()&&!M&&u();let H={...t,subscribe:e=>{G++;let o=t.subscribe(e);return ()=>{o(),G--;}},reload:async e=>{await u(e,a$1,true);},refresh:async e=>{await u(e,a$1,false);},mutate:e=>{let o=t.get();t.set({...o,data:e(o.data)});},reset:()=>{q(),f={},t.set({...K,loading:C()&&!M}),_(),C()&&!M&&u();},cleanup:()=>{G<=0&&q();},forceCleanup:()=>{q();},setParams:e=>{let o={...f};for(let v in e)e[v]===null?delete o[v]:o[v]=e[v];f=o,C()&&u(f,a$1,true);},clearParams:()=>{f={},C()&&u(void 0,a$1,true);}};return w?{...H,nextPage:async()=>{let e=t.get();!e.pagination||e.pagination.hasMore===false||(t.set({...e,pagination:{...e.pagination,page:e.pagination.page+1}}),await u(f,a$1,true));},prevPage:async()=>{let e=t.get();!e.pagination||e.pagination.page<=1||(t.set({...e,pagination:{...e.pagination,page:e.pagination.page-1}}),await u(f,a$1,true));},goToPage:async e=>{let o=t.get();!o.pagination||e<1||(t.set({...o,pagination:{...o.pagination,page:e}}),await u(f,a$1,true));},resetPagination:async()=>{let e=t.get();e.pagination&&(t.set({...e,data:j==="accumulate"?b:e.data,pagination:{...e.pagination,page:k?.initialPage||1}}),await u(f,a$1,true));}}:H}function ae(i,l={}){let{pageSize:r=10,...T}=l;return L(i,{...T,pagination:{pageSize:r,mode:"accumulate",initialPage:1}})}function te(i){let l=Object.entries(i),r=l.reduce((a,[P,c])=>(a[P]=c.get().data,a),{}),T=l.reduce((a,[P,c])=>{let n=c.get().error;return n&&(a[P]=n),a},{}),b=l.some(([,a])=>a.get().loading),h=l.find(([,a])=>a.get().error)?.[1].get().error??null,p=a({loading:b,error:h,errors:T,data:r});return l.forEach(([a,P])=>{P.subscribe(()=>{let c=false,n=null,d={},s={...p.get().data};l.forEach(([Q,k])=>{let g=k.get();g.loading&&(c=true),g.error&&(n||(n=g.error),d[Q]=g.error),s[Q]=g.data;}),p.set({loading:c,error:n,errors:d,data:s});});}),p}function re(i,l={}){let r=R().mutation??{},{invalidates:T=[],onSuccess:b=r.onSuccess,onError:h=r.onError,onSettled:E}=l,p={loading:false,data:null,error:null,isSuccess:false},a$1=a(p);return {mutate:async(...c)=>{let n=c[0];a$1.set({loading:true,data:null,error:null,isSuccess:false});try{let d=await i(n);return a$1.set({loading:!1,data:d,error:null,isSuccess:!0}),T.length>0&&await Promise.all(T.map(s=>s.reload())),b&&b(d,n),E&&E(d,null,n),{data:d,error:null}}catch(d){let s=d;return a$1.set({loading:false,data:null,error:s,isSuccess:false}),h&&h(s,n),E&&E(null,s,n),{data:null,error:s}}},get:()=>a$1.get(),subscribe:c=>a$1.subscribe(c),reset:()=>a$1.set(p)}}export{L as asyncChunk,te as combineAsyncChunks,Y as configureQuery,R as getGlobalQueryConfig,ae as infiniteAsyncChunk,re as mutation,Z as resetQueryConfig};
1
+ import {a}from'../chunk-HPKV6WRO.js';import'../chunk-3DOB632D.js';var O={};function Y(i){O={...i.query!==void 0&&{query:{...O.query,...i.query}},...i.mutation!==void 0&&{mutation:{...O.mutation,...i.mutation}}};}function R(){return O}function Z(){O={};}var V=new Map,ee=0;function L(i,l={}){let r=R().query??{},{key:T,initialData:b=null,enabled:h=true,onSuccess:E=r.onSuccess,onError:p=r.onError,retryCount:a$1=r.retryCount??0,retryDelay:P=r.retryDelay??1e3,keepPreviousData:c=false,staleTime:n=r.staleTime??0,cacheTime:d=r.cacheTime??5*60*1e3,refetchInterval:s=r.refetchInterval,refetchOnWindowFocus:Q=r.refetchOnWindowFocus??false,pagination:k}=l,g=T??`async_chunk_${ee++}`,C=()=>typeof h=="function"?h():h,w=!!k,j=k?.mode||"replace",M=i.length>0,K={loading:C()&&!M,error:null,data:b,lastFetched:void 0,isPlaceholderData:false,pagination:w?{page:k.initialPage||1,pageSize:k.pageSize||10,total:void 0,hasMore:void 0}:void 0},t=a(K),f={},I=null,S=null,F=null,G=0,N=()=>{let e=t.get();return !e.lastFetched||n===0?true:Date.now()-e.lastFetched>n},U=()=>{t.set({...t.get(),data:b,lastFetched:void 0});},X=()=>{S&&clearTimeout(S),d>0&&(S=setTimeout(U,d));},q=()=>{I&&(clearInterval(I),I=null),S&&(clearTimeout(S),S=null),F&&typeof window<"u"&&(window.removeEventListener("focus",F),F=null);},_=()=>{C()&&(typeof window>"u"||(s&&s>0&&(I=setInterval(()=>{u(void 0,0,false);},s)),Q&&(F=()=>{N()&&u(void 0,0,false);},window.addEventListener("focus",F))));},u=async(e,o=a$1,v=false)=>{if(!C()||(e!==void 0&&(f={...f,...e}),!v&&!N()&&t.get().data!==null))return;if(V.has(g))return V.get(g);let W=t.get();t.set({...W,loading:true,error:null,data:W.data,isPlaceholderData:c&&W.data!==null});let $=(async()=>{try{let A={...f};if(w){let x=t.get().pagination;x&&(A.page=x.page,A.pageSize=x.pageSize);}let m=M?await i(A):await i(),y,B,J;if(m&&typeof m=="object"&&"data"in m){let x=m;y=x.data,B=x.total,J=x.hasMore;}else y=m;let z=t.get();w&&j==="accumulate"&&z.data&&Array.isArray(z.data)&&Array.isArray(y)&&(y=[...z.data,...y]),t.set({loading:!1,error:null,data:y,lastFetched:Date.now(),isPlaceholderData:!1,pagination:w?{...z.pagination,total:B,hasMore:J}:void 0}),X(),E&&E(y);}catch(A){if(o>0)return await new Promise(y=>setTimeout(y,P)),V.delete(g),u(e,o-1,v);let m=t.get();t.set({loading:false,error:A,data:m.data,lastFetched:m.lastFetched,isPlaceholderData:false,pagination:m.pagination}),p&&p(A);}finally{V.delete(g);}})();return V.set(g,$),$};_(),C()&&!M&&u();let H={...t,subscribe:e=>{G++;let o=t.subscribe(e);return ()=>{o(),G--;}},reload:async e=>{await u(e,a$1,true);},refresh:async e=>{await u(e,a$1,false);},mutate:e=>{let o=t.get();t.set({...o,data:e(o.data)});},reset:()=>{q(),f={},t.set({...K,loading:C()&&!M}),_(),C()&&!M&&u();},cleanup:()=>{G<=0&&q();},forceCleanup:()=>{q();},setParams:e=>{let o={...f};for(let v in e)e[v]===null?delete o[v]:o[v]=e[v];f=o,C()&&u(f,a$1,true);},clearParams:()=>{f={},C()&&u(void 0,a$1,true);}};return w?{...H,nextPage:async()=>{let e=t.get();!e.pagination||e.pagination.hasMore===false||(t.set({...e,pagination:{...e.pagination,page:e.pagination.page+1}}),await u(f,a$1,true));},prevPage:async()=>{let e=t.get();!e.pagination||e.pagination.page<=1||(t.set({...e,pagination:{...e.pagination,page:e.pagination.page-1}}),await u(f,a$1,true));},goToPage:async e=>{let o=t.get();!o.pagination||e<1||(t.set({...o,pagination:{...o.pagination,page:e}}),await u(f,a$1,true));},resetPagination:async()=>{let e=t.get();e.pagination&&(t.set({...e,data:j==="accumulate"?b:e.data,pagination:{...e.pagination,page:k?.initialPage||1}}),await u(f,a$1,true));}}:H}function ae(i,l={}){let{pageSize:r=10,...T}=l;return L(i,{...T,pagination:{pageSize:r,mode:"accumulate",initialPage:1}})}function te(i){let l=Object.entries(i),r=l.reduce((a,[P,c])=>(a[P]=c.get().data,a),{}),T=l.reduce((a,[P,c])=>{let n=c.get().error;return n&&(a[P]=n),a},{}),b=l.some(([,a])=>a.get().loading),h=l.find(([,a])=>a.get().error)?.[1].get().error??null,p=a({loading:b,error:h,errors:T,data:r});return l.forEach(([a,P])=>{P.subscribe(()=>{let c=false,n=null,d={},s={...p.get().data};l.forEach(([Q,k])=>{let g=k.get();g.loading&&(c=true),g.error&&(n||(n=g.error),d[Q]=g.error),s[Q]=g.data;}),p.set({loading:c,error:n,errors:d,data:s});});}),p}function re(i,l={}){let r=R().mutation??{},{invalidates:T=[],onSuccess:b=r.onSuccess,onError:h=r.onError,onSettled:E}=l,p={loading:false,data:null,error:null,isSuccess:false},a$1=a(p);return {mutate:async(...c)=>{let n=c[0];a$1.set({loading:true,data:null,error:null,isSuccess:false});try{let d=await i(n);return a$1.set({loading:!1,data:d,error:null,isSuccess:!0}),T.length>0&&await Promise.all(T.map(s=>s.reload())),b&&b(d,n),E&&E(d,null,n),{data:d,error:null}}catch(d){let s=d;return a$1.set({loading:false,data:null,error:s,isSuccess:false}),h&&h(s,n),E&&E(null,s,n),{data:null,error:s}}},get:()=>a$1.get(),subscribe:c=>a$1.subscribe(c),reset:()=>a$1.set(p)}}export{L as asyncChunk,te as combineAsyncChunks,Y as configureQuery,R as getGlobalQueryConfig,ae as infiniteAsyncChunk,re as mutation,Z as resetQueryConfig};
@@ -1 +1 @@
1
- 'use strict';var react=require('react');function _(e,t){if(e===void 0)throw new Error("Value cannot be undefined.");if(t.length===0)return e;let r=e;for(let o=0;o<t.length;o++){let i=t[o],c=typeof i=="function"?i:i.fn,a=typeof i=="function"?`index ${o}`:i.name||`index ${o}`;try{let n=c(r);if(n===void 0)break;if(n===null)throw new Error(`Middleware "${a}" returned null value.`);r=n;}catch(n){let u=n instanceof Error?n.message:String(n);throw new Error(`Middleware "${a}" threw an error: ${u}`)}}return r}function I(e,t){if(e===t)return true;if(!e||!t||typeof e!=typeof t)return false;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return false;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return false;return true}if(typeof e=="object"&&typeof t=="object"){let r=Object.keys(e),o=Object.keys(t);if(r.length!==o.length)return false;for(let i of r)if(!Object.prototype.hasOwnProperty.call(t,i)||e[i]!==t[i])return false;return true}return false}function R(e,t,r="",o={}){let{checkMissing:i=true,checkTypes:c=true}=o;if(e===null||t===null||e===void 0||t===void 0)return;if(typeof e!=typeof t){console.error(`\u{1F6A8} Stunk: Type mismatch at '${r||"root"}'. Expected ${typeof e}, got ${typeof t}.`);return}if(typeof e!="object"||typeof t!="object")return;if(Array.isArray(e)!==Array.isArray(t)){console.error(`\u{1F6A8} Stunk: Type mismatch at '${r||"root"}'. Expected ${Array.isArray(e)?"array":"object"}, got ${Array.isArray(t)?"array":"object"}.`);return}if(Array.isArray(e)&&Array.isArray(t)){if(e.length>0&&typeof e[0]=="object")for(let s=0;s<t.length;s++)R(e[0],t[s],`${r}[${s}]`,o);return}let a=Object.keys(e),n=Object.keys(t),u=n.filter(s=>!a.includes(s));if(u.length>0&&(console.error(`\u{1F6A8} Stunk: Unknown properties at '${r||"root"}': ${u.join(", ")}`),console.error("Expected keys:",a),console.error("Received keys:",n)),i){let s=a.filter(d=>!n.includes(d));s.length>0&&console.error(`\u{1F6A8} Stunk: Missing properties at '${r||"root"}': ${s.join(", ")}`);}for(let s of a){let d=e[s],P=t[s];d===void 0||P===void 0||P===null||(c&&typeof d!="object"&&typeof d!=typeof P&&console.error(`\u{1F6A8} Stunk: Type mismatch at '${r?r+".":""}${s}'. Expected ${typeof d}, got ${typeof P}.`),R(d,P,r?`${r}.${s}`:s,o));}}var q=new Set,w=new Map,z=0;function M(e,t={}){let r=z++,o=t.name||`chunk_${r}`,i=t.middleware||[],c=t.strict??false;if(e===void 0)throw new Error(`[${o}] Initial value cannot be undefined.`);let a=e!==null&&typeof e=="object"&&!Array.isArray(e)?new Set(Object.keys(e)):null,n=e,u=new Set,s=()=>{u.forEach(l=>l(n));};w.set(r,{notify:s});let d=()=>{if(u.size===0){w.delete(r);return}s();},P=()=>(n),k=()=>n,h=l=>{let y;if(typeof l=="function"?y=l(n):y=l,R(n,y),a&&y!==null&&typeof y=="object"&&!Array.isArray(y)){let x=Object.keys(y).filter(m=>!a.has(m));if(x.length>0){let m=`[${o}] Unexpected keys in set(): ${x.join(", ")}. These keys were not present in the initial shape.`;if(c)throw new Error(`\u{1F6A8} Stunk: ${m}`);console.error(`\u{1F6A8} Stunk: ${m}`);}}let T=_(y,i);T!==n&&(n=T,d());},g=l=>{if(typeof l!="function")throw new Error("Callback must be a function.");return u.add(l),()=>u.delete(l)},b={get:P,peek:k,set:h,subscribe:g,derive:l=>{if(typeof l!="function")throw new Error("Derive function must be a function.");let y=l(n),T=M(y),x=g(()=>{let f=l(n);T.set(f);}),m=T.destroy;return T.destroy=()=>{x(),m();},T},reset:()=>{n=e,d();},destroy:()=>{u.clear(),n=e,q.delete(r),w.delete(r);},[Symbol.for("stunk.meta")]:{name:o,id:r}};return b}function O(e,t,r={}){let{useShallowEqual:o=false}=r,i=e.get(),c=t(i),a=M(c),n=()=>{let k=e.get(),h=t(k);(o?!I(h,c):h!==c)&&(c=h,a.set(h));},u=e.subscribe(n),{set:s,reset:d,...P}=a;return {...P,derive:k=>O(a,k,r),destroy:()=>{u(),a.destroy();}}}function U(e,t){let r=t?O(e,t):e,[o,i]=react.useState(()=>r.get());react.useEffect(()=>{let u=r.subscribe(s=>{i(()=>s);});return ()=>u()},[r]);let c=react.useCallback(u=>{e.set(u);},[e]),a=react.useCallback(()=>{e.reset();},[e]),n=react.useCallback(()=>{e.destroy();},[e]);return [o,c,a,n]}function J(e,t){let[r]=U(e,t);return r}function v(e){return "nextPage"in e}function $(e){return "setParams"in e}function Z(e){return "clearParams"in e}function j(e,t={}){let{initialParams:r,fetchOnMount:o=false}=t,[i,c]=react.useState(()=>e.get()),a=react.useRef({initialParams:r,fetchOnMount:o});a.current={initialParams:r,fetchOnMount:o},react.useEffect(()=>{c(e.get());let f=e.subscribe(N=>{c(N);}),{initialParams:V,fetchOnMount:K}=a.current;return V&&$(e)?e.setParams(V):K&&e.reload(),()=>{f(),e.cleanup();}},[e]);let n=react.useCallback(f=>e.reload(f),[e]),u=react.useCallback(f=>e.refresh(f),[e]),s=react.useCallback(f=>e.mutate(f),[e]),d=react.useCallback(()=>e.reset(),[e]),P=react.useCallback(f=>{$(e)&&e.setParams(f);},[e]),k=react.useCallback(()=>{Z(e)&&e.clearParams();},[e]),h=react.useCallback(()=>v(e)?e.nextPage():Promise.resolve(),[e]),g=react.useCallback(()=>v(e)?e.prevPage():Promise.resolve(),[e]),E=react.useCallback(f=>v(e)?e.goToPage(f):Promise.resolve(),[e]),A=react.useCallback(()=>v(e)?e.resetPagination():Promise.resolve(),[e]),{data:C,loading:b,error:l,lastFetched:y,isPlaceholderData:T=false,pagination:x}=i,m={data:C,loading:b,error:l,lastFetched:y,isPlaceholderData:T,reload:n,refresh:u,mutate:s,reset:d};if($(e)&&(m.setParams=P,m.clearParams=k),v(e)){let f=m;f.pagination=x,f.nextPage=h,f.prevPage=g,f.goToPage=E,f.resetPagination=A;}return m}function re(e,t={}){let{initialParams:r,autoLoad:o=true,threshold:i=1,fetchOnMount:c}=t,a=j(e,{...r&&{initialParams:r},fetchOnMount:c}),{loading:n,pagination:u,nextPage:s,data:d,error:P,isPlaceholderData:k}=a,h=react.useRef(n),g=react.useRef(u?.hasMore??false),E=react.useRef(s);h.current=n,g.current=u?.hasMore??false,E.current=s;let A=react.useRef(null);react.useEffect(()=>{if(!o||typeof window>"u"||!("IntersectionObserver"in window))return;let l=new IntersectionObserver(T=>{T[0].isIntersecting&&!h.current&&g.current&&E.current();},{threshold:i}),y=A.current;return y&&l.observe(y),()=>{y&&l.unobserve(y),l.disconnect();}},[o,i]);let C=react.useCallback(()=>{!h.current&&g.current&&E.current();},[]),b=n&&d!==null&&d.length>0&&(u?.page??1)>1;return {...a,data:d,error:P,isPlaceholderData:k??false,isFetchingMore:b,hasMore:u?.hasMore??false,loadMore:C,observerTarget:A}}function oe(e){let[t,r]=react.useState(()=>e.get());react.useEffect(()=>(r(e.get()),e.subscribe(a=>{r(a);})),[e]);let o=react.useCallback((...c)=>e.mutate(...c),[e]),i=react.useCallback(()=>e.reset(),[e]);return {loading:t.loading,data:t.data,error:t.error,isSuccess:t.isSuccess,mutate:o,reset:i}}exports.useAsyncChunk=j;exports.useChunk=U;exports.useChunkValue=J;exports.useInfiniteAsyncChunk=re;exports.useMutation=oe;
1
+ 'use strict';var react=require('react');function _(e,t){if(e===void 0)throw new Error("Value cannot be undefined.");if(t.length===0)return e;let r=e;for(let o=0;o<t.length;o++){let i=t[o],c=typeof i=="function"?i:i.fn,a=typeof i=="function"?`index ${o}`:i.name||`index ${o}`;try{let n=c(r);if(n===void 0)break;if(n===null)throw new Error(`Middleware "${a}" returned null value.`);r=n;}catch(n){let u=n instanceof Error?n.message:String(n);throw new Error(`Middleware "${a}" threw an error: ${u}`)}}return r}function I(e,t){if(e===t)return true;if(!e||!t||typeof e!=typeof t)return false;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return false;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return false;return true}if(typeof e=="object"&&typeof t=="object"){let r=Object.keys(e),o=Object.keys(t);if(r.length!==o.length)return false;for(let i of r)if(!Object.prototype.hasOwnProperty.call(t,i)||e[i]!==t[i])return false;return true}return false}function R(e,t,r="",o={}){let{checkMissing:i=true,checkTypes:c=true}=o;if(e===null||t===null||e===void 0||t===void 0)return;if(typeof e!=typeof t){console.error(`\u{1F6A8} Stunk: Type mismatch at '${r||"root"}'. Expected ${typeof e}, got ${typeof t}.`);return}if(typeof e!="object"||typeof t!="object")return;if(Array.isArray(e)!==Array.isArray(t)){console.error(`\u{1F6A8} Stunk: Type mismatch at '${r||"root"}'. Expected ${Array.isArray(e)?"array":"object"}, got ${Array.isArray(t)?"array":"object"}.`);return}if(Array.isArray(e)&&Array.isArray(t)){if(e.length>0&&typeof e[0]=="object")for(let s=0;s<t.length;s++)R(e[0],t[s],`${r}[${s}]`,o);return}let a=Object.keys(e),n=Object.keys(t),u=n.filter(s=>!a.includes(s));if(u.length>0&&(console.error(`\u{1F6A8} Stunk: Unknown properties at '${r||"root"}': ${u.join(", ")}`),console.error("Expected keys:",a),console.error("Received keys:",n)),i){let s=a.filter(d=>!n.includes(d));s.length>0&&console.error(`\u{1F6A8} Stunk: Missing properties at '${r||"root"}': ${s.join(", ")}`);}for(let s of a){let d=e[s],y=t[s];d===void 0||y===void 0||y===null||(c&&typeof d!="object"&&typeof d!=typeof y&&console.error(`\u{1F6A8} Stunk: Type mismatch at '${r?r+".":""}${s}'. Expected ${typeof d}, got ${typeof y}.`),R(d,y,r?`${r}.${s}`:s,o));}}var q=new Set,w=new Map,z=0;function M(e,t={}){let r=z++,o=t.name||`chunk_${r}`,i=t.middleware||[],c=t.strict??false;if(e===void 0)throw new Error(`[${o}] Initial value cannot be undefined.`);let a=e!==null&&typeof e=="object"&&!Array.isArray(e)?new Set(Object.keys(e)):null,n=e,u=new Set,s=()=>{u.forEach(l=>l(n));};w.set(r,{notify:s});let d=()=>{if(u.size===0){w.delete(r);return}s();},y=()=>(n),k=()=>n,T=l=>{let P;if(typeof l=="function"?P=l(n):P=l,R(n,P),a&&P!==null&&typeof P=="object"&&!Array.isArray(P)){let x=Object.keys(P).filter(m=>!a.has(m));if(x.length>0){let m=`[${o}] Unexpected keys in set(): ${x.join(", ")}. These keys were not present in the initial shape.`;if(c)throw new Error(`\u{1F6A8} Stunk: ${m}`);console.error(`\u{1F6A8} Stunk: ${m}`);}}let h=_(P,i);h!==n&&(n=h,d());},g=l=>{if(typeof l!="function")throw new Error("Callback must be a function.");return u.add(l),()=>u.delete(l)},b={get:y,peek:k,set:T,subscribe:g,derive:l=>{if(typeof l!="function")throw new Error("Derive function must be a function.");let P=l(n),h=M(P),x=g(()=>{let f=l(n);h.set(f);}),m=h.destroy;return h.destroy=()=>{x(),m();},h},reset:()=>{n=e,d();},destroy:()=>{u.clear(),n=e,q.delete(r),w.delete(r);},[Symbol.for("stunk.meta")]:{name:o,id:r}};return b}function O(e,t,r={}){let{useShallowEqual:o=false}=r,i=e.get(),c=t(i),a=M(c),n=()=>{let k=e.get(),T=t(k);(o?!I(T,c):T!==c)&&(c=T,a.set(T));},u=e.subscribe(n),{set:s,reset:d,...y}=a;return {...y,derive:k=>O(a,k,r),destroy:()=>{u(),a.destroy();}}}function U(e,t){let r=t?O(e,t):e,[o,i]=react.useState(()=>r.get());react.useEffect(()=>{let u=r.subscribe(s=>{i(()=>s);});return ()=>u()},[r]);let c=react.useCallback(u=>{e.set(u);},[e]),a=react.useCallback(()=>{e.reset();},[e]),n=react.useCallback(()=>{e.destroy();},[e]);return [o,c,a,n]}function J(e,t){let[r]=U(e,t);return r}function v(e){return "nextPage"in e}function $(e){return "setParams"in e}function Z(e){return "clearParams"in e}function j(e,t={}){let{initialParams:r,fetchOnMount:o=false}=t,[i,c]=react.useState(()=>e.get()),a=react.useRef({initialParams:r,fetchOnMount:o});a.current={initialParams:r,fetchOnMount:o},react.useEffect(()=>{c(e.get());let f=e.subscribe(N=>{c(N);}),{initialParams:V,fetchOnMount:K}=a.current;return V&&$(e)?e.setParams(V):K&&e.reload(),()=>{f(),e.cleanup();}},[e]);let n=react.useCallback(f=>e.reload(f),[e]),u=react.useCallback(f=>e.refresh(f),[e]),s=react.useCallback(f=>e.mutate(f),[e]),d=react.useCallback(()=>e.reset(),[e]),y=react.useCallback(f=>{$(e)&&e.setParams(f);},[e]),k=react.useCallback(()=>{Z(e)&&e.clearParams();},[e]),T=react.useCallback(()=>v(e)?e.nextPage():Promise.resolve(),[e]),g=react.useCallback(()=>v(e)?e.prevPage():Promise.resolve(),[e]),E=react.useCallback(f=>v(e)?e.goToPage(f):Promise.resolve(),[e]),A=react.useCallback(()=>v(e)?e.resetPagination():Promise.resolve(),[e]),{data:C,loading:b,error:l,lastFetched:P,isPlaceholderData:h=false,pagination:x}=i,m={data:C,loading:b,error:l,lastFetched:P,isPlaceholderData:h,reload:n,refresh:u,mutate:s,reset:d};if($(e)&&(m.setParams=y,m.clearParams=k),v(e)){let f=m;f.pagination=x,f.nextPage=T,f.prevPage=g,f.goToPage=E,f.resetPagination=A;}return m}function re(e,t={}){let{initialParams:r,autoLoad:o=true,threshold:i=1,fetchOnMount:c}=t,a=j(e,{...r&&{initialParams:r},fetchOnMount:c}),{loading:n,pagination:u,nextPage:s,data:d,error:y,isPlaceholderData:k}=a,T=react.useRef(n),g=react.useRef(u?.hasMore??false),E=react.useRef(s);T.current=n,g.current=u?.hasMore??false,E.current=s;let A=react.useRef(null);react.useEffect(()=>{if(!o||typeof window>"u"||!("IntersectionObserver"in window))return;let l=new IntersectionObserver(h=>{h[0].isIntersecting&&!T.current&&g.current&&E.current();},{threshold:i}),P=A.current;return P&&l.observe(P),()=>{P&&l.unobserve(P),l.disconnect();}},[o,i]);let C=react.useCallback(()=>{!T.current&&g.current&&E.current();},[]),b=n&&d!==null&&d.length>0&&(u?.page??1)>1;return {...a,data:d,error:y,isPlaceholderData:k??false,isFetchingMore:b,hasMore:u?.hasMore??false,loadMore:C,observerTarget:A}}function oe(e){let[t,r]=react.useState(()=>e.get());react.useEffect(()=>(r(e.get()),e.subscribe(a=>{r(a);})),[e]);let o=react.useCallback((...c)=>e.mutate(...c),[e]),i=react.useCallback(()=>e.reset(),[e]);return {loading:t.loading,data:t.data,error:t.error,isSuccess:t.isSuccess,mutate:o,reset:i}}exports.useAsyncChunk=j;exports.useChunk=U;exports.useChunkValue=J;exports.useInfiniteAsyncChunk=re;exports.useMutation=oe;
@@ -1 +1 @@
1
- import {a}from'../chunk-KWDC37TK.js';import {b}from'../chunk-3DOB632D.js';import {useState,useEffect,useCallback,useRef}from'react';function k(e,s,t={}){let{useShallowEqual:i=false}=t,u=e.get(),n=s(u),a$1=a(n),P=()=>{let m=e.get(),l=s(m);(i?!b(l,n):l!==n)&&(n=l,a$1.set(l));},o=e.subscribe(P),{set:d,reset:T,...E}=a$1;return {...E,derive:m=>k(a$1,m,t),destroy:()=>{o(),a$1.destroy();}}}function U(e,s){let t=s?k(e,s):e,[i,u]=useState(()=>t.get());useEffect(()=>{let o=t.subscribe(d=>{u(()=>d);});return ()=>o()},[t]);let n=useCallback(o=>{e.set(o);},[e]),a=useCallback(()=>{e.reset();},[e]),P=useCallback(()=>{e.destroy();},[e]);return [i,n,a,P]}function _(e,s){let[t]=U(e,s);return t}function x(e){return "nextPage"in e}function M(e){return "setParams"in e}function G(e){return "clearParams"in e}function O(e,s={}){let{initialParams:t,fetchOnMount:i=false}=s,[u,n]=useState(()=>e.get()),a=useRef({initialParams:t,fetchOnMount:i});a.current={initialParams:t,fetchOnMount:i},useEffect(()=>{n(e.get());let r=e.subscribe(q=>{n(q);}),{initialParams:D,fetchOnMount:F}=a.current;return D&&M(e)?e.setParams(D):F&&e.reload(),()=>{r(),e.cleanup();}},[e]);let P=useCallback(r=>e.reload(r),[e]),o=useCallback(r=>e.refresh(r),[e]),d=useCallback(r=>e.mutate(r),[e]),T=useCallback(()=>e.reset(),[e]),E=useCallback(r=>{M(e)&&e.setParams(r);},[e]),m=useCallback(()=>{G(e)&&e.clearParams();},[e]),l=useCallback(()=>x(e)?e.nextPage():Promise.resolve(),[e]),f=useCallback(()=>x(e)?e.prevPage():Promise.resolve(),[e]),h=useCallback(r=>x(e)?e.goToPage(r):Promise.resolve(),[e]),y=useCallback(()=>x(e)?e.resetPagination():Promise.resolve(),[e]),{data:b,loading:v,error:p,lastFetched:g,isPlaceholderData:C=false,pagination:w}=u,A={data:b,loading:v,error:p,lastFetched:g,isPlaceholderData:C,reload:P,refresh:o,mutate:d,reset:T};if(M(e)&&(A.setParams=E,A.clearParams=m),x(e)){let r=A;r.pagination=w,r.nextPage=l,r.prevPage=f,r.goToPage=h,r.resetPagination=y;}return A}function N(e,s={}){let{initialParams:t,autoLoad:i=true,threshold:u=1,fetchOnMount:n}=s,a=O(e,{...t&&{initialParams:t},fetchOnMount:n}),{loading:P,pagination:o,nextPage:d,data:T,error:E,isPlaceholderData:m}=a,l=useRef(P),f=useRef(o?.hasMore??false),h=useRef(d);l.current=P,f.current=o?.hasMore??false,h.current=d;let y=useRef(null);useEffect(()=>{if(!i||typeof window>"u"||!("IntersectionObserver"in window))return;let p=new IntersectionObserver(C=>{C[0].isIntersecting&&!l.current&&f.current&&h.current();},{threshold:u}),g=y.current;return g&&p.observe(g),()=>{g&&p.unobserve(g),p.disconnect();}},[i,u]);let b=useCallback(()=>{!l.current&&f.current&&h.current();},[]),v=P&&T!==null&&T.length>0&&(o?.page??1)>1;return {...a,data:T,error:E,isPlaceholderData:m??false,isFetchingMore:v,hasMore:o?.hasMore??false,loadMore:b,observerTarget:y}}function Y(e){let[s,t]=useState(()=>e.get());useEffect(()=>(t(e.get()),e.subscribe(a=>{t(a);})),[e]);let i=useCallback((...n)=>e.mutate(...n),[e]),u=useCallback(()=>e.reset(),[e]);return {loading:s.loading,data:s.data,error:s.error,isSuccess:s.isSuccess,mutate:i,reset:u}}export{O as useAsyncChunk,U as useChunk,_ as useChunkValue,N as useInfiniteAsyncChunk,Y as useMutation};
1
+ import {a}from'../chunk-HPKV6WRO.js';import {b}from'../chunk-3DOB632D.js';import {useState,useEffect,useCallback,useRef}from'react';function k(e,s,t={}){let{useShallowEqual:i=false}=t,u=e.get(),n=s(u),a$1=a(n),P=()=>{let m=e.get(),l=s(m);(i?!b(l,n):l!==n)&&(n=l,a$1.set(l));},o=e.subscribe(P),{set:d,reset:T,...E}=a$1;return {...E,derive:m=>k(a$1,m,t),destroy:()=>{o(),a$1.destroy();}}}function U(e,s){let t=s?k(e,s):e,[i,u]=useState(()=>t.get());useEffect(()=>{let o=t.subscribe(d=>{u(()=>d);});return ()=>o()},[t]);let n=useCallback(o=>{e.set(o);},[e]),a=useCallback(()=>{e.reset();},[e]),P=useCallback(()=>{e.destroy();},[e]);return [i,n,a,P]}function _(e,s){let[t]=U(e,s);return t}function x(e){return "nextPage"in e}function M(e){return "setParams"in e}function G(e){return "clearParams"in e}function O(e,s={}){let{initialParams:t,fetchOnMount:i=false}=s,[u,n]=useState(()=>e.get()),a=useRef({initialParams:t,fetchOnMount:i});a.current={initialParams:t,fetchOnMount:i},useEffect(()=>{n(e.get());let r=e.subscribe(q=>{n(q);}),{initialParams:D,fetchOnMount:F}=a.current;return D&&M(e)?e.setParams(D):F&&e.reload(),()=>{r(),e.cleanup();}},[e]);let P=useCallback(r=>e.reload(r),[e]),o=useCallback(r=>e.refresh(r),[e]),d=useCallback(r=>e.mutate(r),[e]),T=useCallback(()=>e.reset(),[e]),E=useCallback(r=>{M(e)&&e.setParams(r);},[e]),m=useCallback(()=>{G(e)&&e.clearParams();},[e]),l=useCallback(()=>x(e)?e.nextPage():Promise.resolve(),[e]),f=useCallback(()=>x(e)?e.prevPage():Promise.resolve(),[e]),h=useCallback(r=>x(e)?e.goToPage(r):Promise.resolve(),[e]),y=useCallback(()=>x(e)?e.resetPagination():Promise.resolve(),[e]),{data:b,loading:v,error:p,lastFetched:g,isPlaceholderData:C=false,pagination:w}=u,A={data:b,loading:v,error:p,lastFetched:g,isPlaceholderData:C,reload:P,refresh:o,mutate:d,reset:T};if(M(e)&&(A.setParams=E,A.clearParams=m),x(e)){let r=A;r.pagination=w,r.nextPage=l,r.prevPage=f,r.goToPage=h,r.resetPagination=y;}return A}function N(e,s={}){let{initialParams:t,autoLoad:i=true,threshold:u=1,fetchOnMount:n}=s,a=O(e,{...t&&{initialParams:t},fetchOnMount:n}),{loading:P,pagination:o,nextPage:d,data:T,error:E,isPlaceholderData:m}=a,l=useRef(P),f=useRef(o?.hasMore??false),h=useRef(d);l.current=P,f.current=o?.hasMore??false,h.current=d;let y=useRef(null);useEffect(()=>{if(!i||typeof window>"u"||!("IntersectionObserver"in window))return;let p=new IntersectionObserver(C=>{C[0].isIntersecting&&!l.current&&f.current&&h.current();},{threshold:u}),g=y.current;return g&&p.observe(g),()=>{g&&p.unobserve(g),p.disconnect();}},[i,u]);let b=useCallback(()=>{!l.current&&f.current&&h.current();},[]),v=P&&T!==null&&T.length>0&&(o?.page??1)>1;return {...a,data:T,error:E,isPlaceholderData:m??false,isFetchingMore:v,hasMore:o?.hasMore??false,loadMore:b,observerTarget:y}}function Y(e){let[s,t]=useState(()=>e.get());useEffect(()=>(t(e.get()),e.subscribe(a=>{t(a);})),[e]);let i=useCallback((...n)=>e.mutate(...n),[e]),u=useCallback(()=>e.reset(),[e]);return {loading:s.loading,data:s.data,error:s.error,isSuccess:s.isSuccess,mutate:i,reset:u}}export{O as useAsyncChunk,U as useChunk,_ as useChunkValue,N as useInfiniteAsyncChunk,Y as useMutation};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stunk",
3
- "version": "3.0.0-beta.1",
3
+ "version": "3.0.0-beta.2",
4
4
  "description": "Stunk is a lightweight, framework-agnostic state management library for JavaScript and TypeScript. It uses chunk-based state units for efficient updates, reactivity, and performance optimization in React, Vue(WIP), Svelte(Coming soon), and Vanilla JS/TS applications.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import {c,a}from'./chunk-3DOB632D.js';var v=new Set,l=new Map,j=0;function A(t,a$1={}){let s=j++,d=a$1.name||`chunk_${s}`,m=a$1.middleware||[],C=a$1.strict??false;if(t===void 0)throw new Error(`[${d}] Initial value cannot be undefined.`);let f=t!==null&&typeof t=="object"&&!Array.isArray(t)?new Set(Object.keys(t)):null,n=t,u=new Set,y=()=>{u.forEach(e=>e(n));};l.set(s,{notify:y});let h=()=>{if(u.size===0){l.delete(s);return}y();},D=()=>(n),_=()=>n,S=e=>{let r;if(typeof e=="function"?r=e(n):r=e,c(n,r),f&&r!==null&&typeof r=="object"&&!Array.isArray(r)){let i=Object.keys(r).filter(c=>!f.has(c));if(i.length>0){let c=`[${d}] Unexpected keys in set(): ${i.join(", ")}. These keys were not present in the initial shape.`;if(C)throw new Error(`\u{1F6A8} Stunk: ${c}`);console.error(`\u{1F6A8} Stunk: ${c}`);}}let o=a(r,m);o!==n&&(n=o,h());},T=e=>{if(typeof e!="function")throw new Error("Callback must be a function.");return u.add(e),()=>u.delete(e)},k={get:D,peek:_,set:S,subscribe:T,derive:e=>{if(typeof e!="function")throw new Error("Derive function must be a function.");let r=e(n),o=A(r),i=T(()=>{let g=e(n);o.set(g);}),c=o.destroy;return o.destroy=()=>{i(),c();},o},reset:()=>{n=t,h();},destroy:()=>{u.clear(),n=t,v.delete(s),l.delete(s);},[Symbol.for("stunk.meta")]:{name:d,id:s}};return k}export{A as a};