stunk 3.0.0-rc.1 → 3.0.0-rc.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/dist/index.d.ts CHANGED
@@ -276,18 +276,30 @@ interface PaginationState {
276
276
  interface AsyncStateWithPagination<T, E extends Error> extends AsyncState<T, E> {
277
277
  pagination?: PaginationState;
278
278
  }
279
+ interface ParamAsyncChunk<T, E extends Error = Error, P extends Record<string, any> = {}> extends AsyncChunk<T, E> {
280
+ setParams: (params: Partial<Record<keyof P, P[keyof P] | null>>) => void;
281
+ clearParams: () => void;
282
+ reload: (params?: Partial<P>) => Promise<void>;
283
+ refresh: (params?: Partial<P>) => Promise<void>;
284
+ }
285
+ interface PaginatedParamAsyncChunk<T, E extends Error = Error, P extends Record<string, any> = {}> extends PaginatedAsyncChunk<T, E> {
286
+ setParams: (params: Partial<Record<keyof P, P[keyof P] | null>>) => void;
287
+ clearParams: () => void;
288
+ reload: (params?: Partial<P>) => Promise<void>;
289
+ refresh: (params?: Partial<P>) => Promise<void>;
290
+ }
279
291
  interface FetcherResponse<T> {
280
292
  data: T;
281
293
  total?: number;
282
294
  hasMore?: boolean;
283
295
  }
284
- interface AsyncChunkOptions<T, E extends Error = Error> {
296
+ interface AsyncChunkOptions<T, E extends Error = Error, P extends Record<string, any> = {}> {
285
297
  /** Deduplication key — concurrent calls with the same key share one in-flight request */
286
298
  key?: string;
287
299
  /** Seed data shown before the first fetch completes */
288
300
  initialData?: T | null;
289
301
  /** Disable fetching until ready — pass a function for dynamic evaluation */
290
- enabled?: boolean | (() => boolean);
302
+ enabled?: boolean | ((params: Partial<P>) => boolean);
291
303
  /** Called after every successful fetch */
292
304
  onSuccess?: (data: T) => void;
293
305
  /** Called when all retries are exhausted */
@@ -341,15 +353,14 @@ interface PaginatedAsyncChunk<T, E extends Error = Error> extends AsyncChunk<T,
341
353
  /** Reset pagination to page 1 and re-fetch */
342
354
  resetPagination: () => Promise<void>;
343
355
  }
344
- declare function asyncChunk<T, E extends Error = Error>(fetcher: () => Promise<T | FetcherResponse<T>>, options?: AsyncChunkOptions<T, E>): AsyncChunk<T, E> | PaginatedAsyncChunk<T, E>;
345
- declare function asyncChunk<T, E extends Error = Error, P extends Record<string, any> = {}>(fetcher: (params: P & {
346
- page?: number;
347
- pageSize?: number;
348
- }) => Promise<T | FetcherResponse<T>>, options?: AsyncChunkOptions<T, E>): (AsyncChunk<T, E> | PaginatedAsyncChunk<T, E>) & {
349
- setParams: (params: Partial<P>) => void;
350
- reload: (params?: Partial<P>) => Promise<void>;
351
- refresh: (params?: Partial<P>) => Promise<void>;
352
- };
356
+ declare function asyncChunk<T, E extends Error = Error>(fetcher: () => Promise<T | FetcherResponse<T>>, options?: AsyncChunkOptions<T, E>): AsyncChunk<T, E>;
357
+ declare function asyncChunk<T, E extends Error = Error>(fetcher: () => Promise<T | FetcherResponse<T>>, options: AsyncChunkOptions<T, E> & {
358
+ pagination: NonNullable<AsyncChunkOptions<T, E>['pagination']>;
359
+ }): PaginatedAsyncChunk<T, E>;
360
+ declare function asyncChunk<T, E extends Error = Error, P extends Record<string, any> = {}>(fetcher: (params: P) => Promise<T | FetcherResponse<T>>, options?: AsyncChunkOptions<T, E, P>): ParamAsyncChunk<T, E, P>;
361
+ declare function asyncChunk<T, E extends Error = Error, P extends Record<string, any> = {}>(fetcher: (params: P) => Promise<T | FetcherResponse<T>>, options: AsyncChunkOptions<T, E, P> & {
362
+ pagination: NonNullable<AsyncChunkOptions<T, E, P>['pagination']>;
363
+ }): PaginatedParamAsyncChunk<T, E, P>;
353
364
 
354
365
  type InfiniteAsyncChunkOptions<T, E extends Error = Error> = Omit<AsyncChunkOptions<T[], E>, 'pagination'> & {
355
366
  /** Items per page (default: 10) */
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var ke=Object.defineProperty;var ne=(e,r)=>{for(var t in r)ke(e,t,{get:r[t],enumerable:true});};function oe(e,r){if(e===void 0)throw new Error("Value cannot be undefined.");if(r.length===0)return e;let t=e;for(let c=0;c<r.length;c++){let o=r[c],i=typeof o=="function"?o:o.fn,p=typeof o=="function"?`index ${c}`:o.name||`index ${c}`;try{let s=i(t);if(s===void 0)break;if(s===null)throw new Error(`Middleware "${p}" returned null value.`);t=s;}catch(s){let a=s instanceof Error?s.message:String(s);throw new Error(`Middleware "${p}" threw an error: ${a}`)}}return t}function j(e,r){if(e===r)return true;if(!e||!r||typeof e!=typeof r)return false;if(Array.isArray(e)&&Array.isArray(r)){if(e.length!==r.length)return false;for(let t=0;t<e.length;t++)if(e[t]!==r[t])return false;return true}if(typeof e=="object"&&typeof r=="object"){let t=Object.keys(e),c=Object.keys(r);if(t.length!==c.length)return false;for(let o of t)if(!Object.prototype.hasOwnProperty.call(r,o)||e[o]!==r[o])return false;return true}return false}function Ee(e){return e[Symbol.for("stunk.meta")]}var I=null;function J(e){let r=new Set,t=I;I=r;try{return [e(),Array.from(r)]}finally{I=t;}}function ve(e){I&&I.add(e);}var Q=false,G=new Set,W=new Map,Ce=0;function Pe(e){let r=Q;Q=true;try{e();}finally{if(!r){Q=false;let t=[...G];G.clear(),t.forEach(c=>{let o=W.get(c);o&&o.notify();});}}}function x(e,r={}){let t=Ce++,c=`chunk_${t}`,o=r.middleware||[];r.strict??false;if(e===void 0)throw new Error(`[${c}] Initial value cannot be undefined.`);let s=o.length>0,a=false,h=e,u=new Set,n=()=>{u.forEach(b=>b(h));};W.set(t,{notify:n});let f=()=>{if(u.size===0){W.delete(t);return}Q?G.add(t):n();},l=()=>(ve(M),h),m=()=>h,v=b=>{let y;if(typeof b=="function"?y=b(h):y=b,a);let g=s?oe(y,o):y;g!==h&&(h=g,f());},T=b=>{if(typeof b!="function")throw new Error("Callback must be a function.");return u.add(b),()=>u.delete(b)},M={get:l,peek:m,set:v,subscribe:T,derive:b=>{if(typeof b!="function")throw new Error("Derive function must be a function.");let y=b(h),g=x(y),w=T(()=>{let V=b(h);g.set(V);}),C=g.destroy;return g.destroy=()=>{w(),C();},g},reset:()=>{h=e,f();},destroy:()=>{u.clear(),h=e,G.delete(t),W.delete(t);}};return M}function ae(e){let[r,t]=J(e),c=r,o=t,i=false,p=[],s=new Set,a=x(c),h=l=>l.map(m=>m.subscribe(()=>{i=true,(s.size>0||a.subscribe!==void 0)&&u();})),u=()=>{if(!i)return;i=false;let[l,m]=J(e);(m.length!==o.length||m.some((k,A)=>k!==o[A]))&&(p.forEach(k=>k()),p=h(m),o=m),(typeof l=="object"&&l!==null&&typeof c=="object"&&c!==null?!j(l,c):l!==c)&&(c=l,a.set(l),s.forEach(k=>k(c)));},n=()=>()=>{i=true,s.size>0&&u();};p=o.map(l=>l.subscribe(n()));let f;return f={get:()=>(i&&u(),a.get()),peek:()=>c,subscribe:l=>(s.add(l),()=>{s.delete(l);}),derive:l=>{let m=f.subscribe(()=>{}),v=ae(()=>l(f.get())),T=v.destroy;return v.destroy=()=>{m(),T();},v},recompute:()=>{i=true,u();},isDirty:()=>i,destroy:()=>{p.forEach(l=>l()),s.clear(),a.destroy();}},f}function ie(e,r,t={}){let{useShallowEqual:c=false}=t,o=e.get(),i=r(o),p=x(i),s=()=>{let f=e.get(),l=r(f);(c?!j(l,i):l!==i)&&(i=l,p.set(l));},a=e.subscribe(s),{set:h,reset:u,...n}=p;return {...n,derive:f=>ie(p,f,t),destroy:()=>{a(),p.destroy();}}}var de={};ne(de,{history:()=>le,logger:()=>se,nonNegativeValidator:()=>ue,persist:()=>ce});function se(){return e=>(console.log("Setting value:",e),e)}var ue=e=>{if(e<0)throw new Error("Value must be non-negative!");return e};function le(e,r={}){let{maxHistory:t=100,skipDuplicates:c=false}=r,o=[e.get()],i=0;return {...e,get:()=>e.get(),peek:()=>e.peek(),set:s=>{let a;if(typeof s=="function"?a=s(e.get()):a=s,c){let h=o[i];if(a===h||c==="shallow"&&typeof a=="object"&&typeof h=="object"&&a!==null&&h!==null&&j(a,h))return}if(o.splice(i+1),o.push(a),o.length>t){let h=o.length-t;o.splice(0,h);}i=o.length-1,e.set(a);},undo:()=>{i<=0||(i--,e.set(o[i]));},redo:()=>{i>=o.length-1||(i++,e.set(o[i]));},canUndo:()=>i>0,canRedo:()=>i<o.length-1,getHistory:()=>[...o],clearHistory:()=>{let s=e.get();o.length=0,o.push(s),i=0;},reset:()=>{e.reset(),o.length=0,o.push(e.get()),i=0;},destroy:()=>{o.length=0,e.destroy();},subscribe:s=>e.subscribe(s)}}function ce(e,r){let{key:t,serialize:c=JSON.stringify,deserialize:o=JSON.parse,onError:i}=r,p="storage"in r?r.storage:typeof window<"u"?localStorage:void 0;if(!p)return console.warn(`persist: Storage not available for key "${t}". Persistence disabled.`),{...e,clearStorage:()=>{}};let s=e.get();try{let u=p.getItem(t);if(u!==null){let n=o(u);if(n!==null&&s!==null&&(typeof n!=typeof s||Array.isArray(n)!==Array.isArray(s))){let m=`persist: Type mismatch for "${t}". Expected ${Array.isArray(s)?"array":typeof s}, got ${Array.isArray(n)?"array":typeof n}. Using initial value.`;console.warn(m),i?.(new Error(m),"load");}else e.set(n);}}catch(u){let n=u instanceof Error?u:new Error(String(u));console.error(`persist: Failed to load state for "${t}":`,n),i?.(n,"load");}let a=e.subscribe(u=>{try{p.setItem(t,c(u));}catch(n){let f=n instanceof Error?n:new Error(String(n));console.error(`persist: Failed to save state for "${t}":`,f),i?.(f,"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:()=>{a(),e.destroy();},clearStorage:()=>{try{p.removeItem(t);}catch(u){let n=u instanceof Error?u:new Error(String(u));console.error(`persist: Failed to clear storage for "${t}":`,n),i?.(n,"save");}}}}var me={};ne(me,{asyncChunk:()=>H,combineAsyncChunks:()=>he,configureQuery:()=>fe,getGlobalQueryConfig:()=>F,infiniteAsyncChunk:()=>pe,mutation:()=>ge,resetQueryConfig:()=>ye});var _={};function fe(e){_={...e.query!==void 0&&{query:{..._.query,...e.query}},...e.mutation!==void 0&&{mutation:{..._.mutation,...e.mutation}}};}function F(){return _}function ye(){_={};}var q=new Map,xe=0;function H(e,r={}){let t=F().query??{},{key:c,initialData:o=null,enabled:i=true,onSuccess:p=t.onSuccess,onError:s=t.onError,retryCount:a=t.retryCount??0,retryDelay:h=t.retryDelay??1e3,keepPreviousData:u=false,staleTime:n=t.staleTime??0,cacheTime:f=t.cacheTime??5*60*1e3,refetchInterval:l=t.refetchInterval,refetchOnWindowFocus:m=t.refetchOnWindowFocus??false,pagination:v}=r,T=c??`async_chunk_${xe++}`,k=()=>typeof i=="function"?i():i,A=!!v,K=v?.mode||"replace",M=e.length>0,b={loading:k()&&!M,error:null,data:o,lastFetched:void 0,isPlaceholderData:false,pagination:A?{page:v.initialPage||1,pageSize:v.pageSize||10,total:void 0,hasMore:void 0}:void 0},y=x(b),g={},w=null,C=null,V=null,U=0,X=()=>{let d=y.get();return !d.lastFetched||n===0?true:Date.now()-d.lastFetched>n},Te=()=>{y.set({...y.get(),data:o,lastFetched:void 0});},be=()=>{C&&clearTimeout(C),f>0&&(C=setTimeout(Te,f));},B=()=>{w&&(clearInterval(w),w=null),C&&(clearTimeout(C),C=null),V&&typeof window<"u"&&(window.removeEventListener("focus",V),V=null);},Y=()=>{k()&&(typeof window>"u"||(l&&l>0&&(w=setInterval(()=>{P(void 0,0,false);},l)),m&&(V=()=>{X()&&P(void 0,0,false);},window.addEventListener("focus",V))));},P=async(d,E=a,O=false)=>{if(!k()||(d!==void 0&&(g={...g,...d}),!O&&!X()&&y.get().data!==null))return;if(q.has(T))return q.get(T);let L=y.get();y.set({...L,loading:true,error:null,data:L.data,isPlaceholderData:u&&L.data!==null});let ee=(async()=>{try{let R={...g};if(A){let $=y.get().pagination;$&&(R.page=$.page,R.pageSize=$.pageSize);}let S=M?await e(R):await e(),D,te,re;if(S&&typeof S=="object"&&"data"in S){let $=S;D=$.data,te=$.total,re=$.hasMore;}else D=S;let z=y.get();A&&K==="accumulate"&&z.data&&Array.isArray(z.data)&&Array.isArray(D)&&(D=[...z.data,...D]),y.set({loading:!1,error:null,data:D,lastFetched:Date.now(),isPlaceholderData:!1,pagination:A?{...z.pagination,total:te,hasMore:re}:void 0}),be(),p&&p(D);}catch(R){if(E>0)return await new Promise(D=>setTimeout(D,h)),q.delete(T),P(d,E-1,O);let S=y.get();y.set({loading:false,error:R,data:S.data,lastFetched:S.lastFetched,isPlaceholderData:false,pagination:S.pagination}),s&&s(R);}finally{q.delete(T);}})();return q.set(T,ee),ee};Y(),k()&&!M&&P();let Z={...y,subscribe:d=>{U++;let E=y.subscribe(d);return ()=>{E(),U--;}},reload:async d=>{await P(d,a,true);},refresh:async d=>{await P(d,a,false);},mutate:d=>{let E=y.get();y.set({...E,data:d(E.data)});},reset:()=>{B(),g={},y.set({...b,loading:k()&&!M}),Y(),k()&&!M&&P();},cleanup:()=>{U<=0&&B();},forceCleanup:()=>{B();},setParams:d=>{let E={...g};for(let O in d)d[O]===null?delete E[O]:E[O]=d[O];g=E,k()&&P(g,a,true);},clearParams:()=>{g={},k()&&P(void 0,a,true);}};return A?{...Z,nextPage:async()=>{let d=y.get();!d.pagination||d.pagination.hasMore===false||(y.set({...d,pagination:{...d.pagination,page:d.pagination.page+1}}),await P(g,a,true));},prevPage:async()=>{let d=y.get();!d.pagination||d.pagination.page<=1||(y.set({...d,pagination:{...d.pagination,page:d.pagination.page-1}}),await P(g,a,true));},goToPage:async d=>{let E=y.get();!E.pagination||d<1||(y.set({...E,pagination:{...E.pagination,page:d}}),await P(g,a,true));},resetPagination:async()=>{let d=y.get();d.pagination&&(y.set({...d,data:K==="accumulate"?o:d.data,pagination:{...d.pagination,page:v?.initialPage||1}}),await P(g,a,true));}}:Z}function pe(e,r={}){let{pageSize:t=10,...c}=r;return H(e,{...c,pagination:{pageSize:t,mode:"accumulate",initialPage:1}})}function he(e){let r=Object.entries(e),t=r.reduce((a,[h,u])=>(a[h]=u.get().data,a),{}),c=r.reduce((a,[h,u])=>{let n=u.get().error;return n&&(a[h]=n),a},{}),o=r.some(([,a])=>a.get().loading),i=r.find(([,a])=>a.get().error)?.[1].get().error??null,s=x({loading:o,error:i,errors:c,data:t});return r.forEach(([a,h])=>{h.subscribe(()=>{let u=false,n=null,f={},l={...s.get().data};r.forEach(([m,v])=>{let T=v.get();T.loading&&(u=true),T.error&&(n||(n=T.error),f[m]=T.error),l[m]=T.data;}),s.set({loading:u,error:n,errors:f,data:l});});}),s}function ge(e,r={}){let t=F().mutation??{},{invalidates:c=[],onSuccess:o=t.onSuccess,onError:i=t.onError,onSettled:p}=r,s={loading:false,data:null,error:null,isSuccess:false},a=x(s);return {mutate:async(...u)=>{let n=u[0];a.set({loading:true,data:null,error:null,isSuccess:false});try{let f=await e(n);return a.set({loading:!1,data:f,error:null,isSuccess:!0}),c.length>0&&await Promise.all(c.map(l=>l.reload())),o&&o(f,n),p&&p(f,null,n),{data:f,error:null}}catch(f){let l=f;return a.set({loading:false,data:null,error:l,isSuccess:false}),i&&i(l,n),p&&p(null,l,n),{data:null,error:l}}},get:()=>a.get(),subscribe:u=>a.subscribe(u),reset:()=>a.set(s)}}export{Pe as batch,x as chunk,ae as computed,Ee as getChunkMeta,de as middleware,me as query,ie as select};
1
+ var Ee=Object.defineProperty;var ne=(e,r)=>{for(var t in r)Ee(e,t,{get:r[t],enumerable:true});};function oe(e,r){if(e===void 0)throw new Error("Value cannot be undefined.");if(r.length===0)return e;let t=e;for(let c=0;c<r.length;c++){let o=r[c],s=typeof o=="function"?o:o.fn,y=typeof o=="function"?`index ${c}`:o.name||`index ${c}`;try{let i=s(t);if(i===void 0)break;if(i===null)throw new Error(`Middleware "${y}" returned null value.`);t=i;}catch(i){let a=i instanceof Error?i.message:String(i);throw new Error(`Middleware "${y}" threw an error: ${a}`)}}return t}function j(e,r){if(e===r)return true;if(!e||!r||typeof e!=typeof r)return false;if(Array.isArray(e)&&Array.isArray(r)){if(e.length!==r.length)return false;for(let t=0;t<e.length;t++)if(e[t]!==r[t])return false;return true}if(typeof e=="object"&&typeof r=="object"){let t=Object.keys(e),c=Object.keys(r);if(t.length!==c.length)return false;for(let o of t)if(!Object.prototype.hasOwnProperty.call(r,o)||e[o]!==r[o])return false;return true}return false}function Pe(e){return e[Symbol.for("stunk.meta")]}var _=null;function J(e){let r=new Set,t=_;_=r;try{return [e(),Array.from(r)]}finally{_=t;}}function ve(e){_&&_.add(e);}var W=false,H=new Set,G=new Map,xe=0;function Ce(e){let r=W;W=true;try{e();}finally{if(!r){W=false;let t=[...H];H.clear(),t.forEach(c=>{let o=G.get(c);o&&o.notify();});}}}function C(e,r={}){let t=xe++,c=`chunk_${t}`,o=r.middleware||[];r.strict??false;if(e===void 0)throw new Error(`[${c}] Initial value cannot be undefined.`);let i=o.length>0,a=false,p=e,u=new Set,n=()=>{u.forEach(m=>m(p));};G.set(t,{notify:n});let f=()=>{if(u.size===0){G.delete(t);return}W?H.add(t):n();},l=()=>(ve(I),p),T=()=>p,k=m=>{let E;if(typeof m=="function"?E=m(p):E=m,a);let h=i?oe(E,o):E;h!==p&&(p=h,f());},g=m=>{if(typeof m!="function")throw new Error("Callback must be a function.");return u.add(m),()=>u.delete(m)},I={get:l,peek:T,set:k,subscribe:g,derive:m=>{if(typeof m!="function")throw new Error("Derive function must be a function.");let E=m(p),h=C(E),S=g(()=>{let V=m(p);h.set(V);}),P=h.destroy;return h.destroy=()=>{S(),P();},h},reset:()=>{p=e,f();},destroy:()=>{u.clear(),p=e,H.delete(t),G.delete(t);}};return I}function ae(e){let[r,t]=J(e),c=r,o=t,s=false,y=[],i=new Set,a=C(c),p=l=>l.map(T=>T.subscribe(()=>{s=true,(i.size>0||a.subscribe!==void 0)&&u();})),u=()=>{if(!s)return;s=false;let[l,T]=J(e);(T.length!==o.length||T.some((x,w)=>x!==o[w]))&&(y.forEach(x=>x()),y=p(T),o=T),(typeof l=="object"&&l!==null&&typeof c=="object"&&c!==null?!j(l,c):l!==c)&&(c=l,a.set(l),i.forEach(x=>x(c)));},n=()=>()=>{s=true,i.size>0&&u();};y=o.map(l=>l.subscribe(n()));let f;return f={get:()=>(s&&u(),a.get()),peek:()=>c,subscribe:l=>(i.add(l),()=>{i.delete(l);}),derive:l=>{let T=f.subscribe(()=>{}),k=ae(()=>l(f.get())),g=k.destroy;return k.destroy=()=>{T(),g();},k},recompute:()=>{s=true,u();},isDirty:()=>s,destroy:()=>{y.forEach(l=>l()),i.clear(),a.destroy();}},f}function se(e,r,t={}){let{useShallowEqual:c=false}=t,o=e.get(),s=r(o),y=C(s),i=()=>{let f=e.get(),l=r(f);(c?!j(l,s):l!==s)&&(s=l,y.set(l));},a=e.subscribe(i),{set:p,reset:u,...n}=y;return {...n,derive:f=>se(y,f,t),destroy:()=>{a(),y.destroy();}}}var de={};ne(de,{history:()=>le,logger:()=>ie,nonNegativeValidator:()=>ue,persist:()=>ce});function ie(){return e=>(console.log("Setting value:",e),e)}var ue=e=>{if(e<0)throw new Error("Value must be non-negative!");return e};function le(e,r={}){let{maxHistory:t=100,skipDuplicates:c=false}=r,o=[e.get()],s=0;return {...e,get:()=>e.get(),peek:()=>e.peek(),set:i=>{let a;if(typeof i=="function"?a=i(e.get()):a=i,c){let p=o[s];if(a===p||c==="shallow"&&typeof a=="object"&&typeof p=="object"&&a!==null&&p!==null&&j(a,p))return}if(o.splice(s+1),o.push(a),o.length>t){let p=o.length-t;o.splice(0,p);}s=o.length-1,e.set(a);},undo:()=>{s<=0||(s--,e.set(o[s]));},redo:()=>{s>=o.length-1||(s++,e.set(o[s]));},canUndo:()=>s>0,canRedo:()=>s<o.length-1,getHistory:()=>[...o],clearHistory:()=>{let i=e.get();o.length=0,o.push(i),s=0;},reset:()=>{e.reset(),o.length=0,o.push(e.get()),s=0;},destroy:()=>{o.length=0,e.destroy();},subscribe:i=>e.subscribe(i)}}function ce(e,r){let{key:t,serialize:c=JSON.stringify,deserialize:o=JSON.parse,onError:s}=r,y="storage"in r?r.storage:typeof window<"u"?localStorage:void 0;if(!y)return console.warn(`persist: Storage not available for key "${t}". Persistence disabled.`),{...e,clearStorage:()=>{}};let i=e.get();try{let u=y.getItem(t);if(u!==null){let n=o(u);if(n!==null&&i!==null&&(typeof n!=typeof i||Array.isArray(n)!==Array.isArray(i))){let T=`persist: Type mismatch for "${t}". Expected ${Array.isArray(i)?"array":typeof i}, got ${Array.isArray(n)?"array":typeof n}. Using initial value.`;console.warn(T),s?.(new Error(T),"load");}else e.set(n);}}catch(u){let n=u instanceof Error?u:new Error(String(u));console.error(`persist: Failed to load state for "${t}":`,n),s?.(n,"load");}let a=e.subscribe(u=>{try{y.setItem(t,c(u));}catch(n){let f=n instanceof Error?n:new Error(String(n));console.error(`persist: Failed to save state for "${t}":`,f),s?.(f,"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:()=>{a(),e.destroy();},clearStorage:()=>{try{y.removeItem(t);}catch(u){let n=u instanceof Error?u:new Error(String(u));console.error(`persist: Failed to clear storage for "${t}":`,n),s?.(n,"save");}}}}var me={};ne(me,{asyncChunk:()=>K,combineAsyncChunks:()=>he,configureQuery:()=>fe,getGlobalQueryConfig:()=>F,infiniteAsyncChunk:()=>pe,mutation:()=>ge,resetQueryConfig:()=>ye});var N={};function fe(e){N={...e.query!==void 0&&{query:{...N.query,...e.query}},...e.mutation!==void 0&&{mutation:{...N.mutation,...e.mutation}}};}function F(){return N}function ye(){N={};}var q=new Map,we=0;function K(e,r={}){let t=F().query??{},{key:c,initialData:o=null,enabled:s=true,onSuccess:y=t.onSuccess,onError:i=t.onError,retryCount:a=t.retryCount??0,retryDelay:p=t.retryDelay??1e3,keepPreviousData:u=false,staleTime:n=t.staleTime??0,cacheTime:f=t.cacheTime??5*60*1e3,refetchInterval:l=t.refetchInterval,refetchOnWindowFocus:T=t.refetchOnWindowFocus??false,pagination:k}=r,g={},x=c??`async_chunk_${we++}`,w=()=>typeof s=="function"?s(g):s??true,M=!!k,I=k?.mode||"replace",m=e.length>0,E={loading:w()&&!m,error:null,data:o,lastFetched:void 0,isPlaceholderData:false,pagination:M?{page:k.initialPage||1,pageSize:k.pageSize||10,total:void 0,hasMore:void 0}:void 0},h=C(E),S=null,P=null,V=null,U=0,X=()=>{let d=h.get();return !d.lastFetched||n===0?true:Date.now()-d.lastFetched>n},Te=()=>{h.set({...h.get(),data:o,lastFetched:void 0});},be=()=>{P&&clearTimeout(P),f>0&&(P=setTimeout(Te,f));},B=()=>{S&&(clearInterval(S),S=null),P&&(clearTimeout(P),P=null),V&&typeof window<"u"&&(window.removeEventListener("focus",V),V=null);},Y=()=>{w()&&(typeof window>"u"||(l&&l>0&&(S=setInterval(()=>{v(void 0,0,false);},l)),T&&(V=()=>{X()&&v(void 0,0,false);},window.addEventListener("focus",V))));},v=async(d,b=a,O=false)=>{if(!w()||(d!==void 0&&(g={...g,...d}),!O&&!X()&&h.get().data!==null))return;if(q.has(x))return q.get(x);let z=h.get(),L=z.data;h.set({...z,loading:true,error:null,data:z.data,isPlaceholderData:u&&z.data!==null});let ee=(async()=>{try{let $={...g};if(M){let R=h.get().pagination;R&&($.page=R.page,$.pageSize=R.pageSize);}let A=m?await e($):await e(),D,te,re;if(A&&typeof A=="object"&&"data"in A){let R=A;D=R.data,te=R.total,re=R.hasMore;}else D=A;let ke=h.get();M&&I==="accumulate"&&L&&Array.isArray(L)&&Array.isArray(D)&&(D=[...L,...D]),h.set({loading:!1,error:null,data:D,lastFetched:Date.now(),isPlaceholderData:!1,pagination:M?{...ke.pagination,total:te,hasMore:re}:void 0}),be(),y&&y(D);}catch($){if(b>0)return await new Promise(D=>setTimeout(D,p)),q.delete(x),v(d,b-1,O);let A=h.get();h.set({loading:false,error:$,data:A.data,lastFetched:A.lastFetched,isPlaceholderData:false,pagination:A.pagination}),i&&i($);}finally{q.delete(x);}})();return q.set(x,ee),ee};Y(),w()&&!m&&v();let Z={...h,subscribe:d=>{U++;let b=h.subscribe(d);return ()=>{b(),U--;}},reload:async d=>{m&&!M&&Object.keys(g).length===0||await v(d,a,true);},refresh:async d=>{await v(d,a,false);},mutate:d=>{let b=h.get();h.set({...b,data:d(b.data)});},reset:()=>{B(),g={},h.set({...E,loading:w()&&!m}),Y(),w()&&!m&&v();},cleanup:()=>{U<=0&&B();},forceCleanup:()=>{B();},setParams:d=>{let b={...g};for(let O in d)d[O]===null?delete b[O]:b[O]=d[O];g=b,w()&&v(g,a,true);},clearParams:()=>{g={},w()&&v(void 0,a,true);}};return M?{...Z,nextPage:async()=>{let d=h.get();!d.pagination||d.pagination.hasMore===false||(h.set({...d,pagination:{...d.pagination,page:d.pagination.page+1}}),await v(g,a,true));},prevPage:async()=>{let d=h.get();!d.pagination||d.pagination.page<=1||(h.set({...d,pagination:{...d.pagination,page:d.pagination.page-1}}),await v(g,a,true));},goToPage:async d=>{let b=h.get();!b.pagination||d<1||(h.set({...b,pagination:{...b.pagination,page:d}}),await v(g,a,true));},resetPagination:async()=>{let d=h.get();d.pagination&&(h.set({...d,data:I==="accumulate"?o:d.data,pagination:{...d.pagination,page:k?.initialPage||1}}),await v(g,a,true));}}:Z}function pe(e,r={}){let{pageSize:t=10,...c}=r;return K(e,{...c,pagination:{pageSize:t,mode:"accumulate",initialPage:1}})}function he(e){let r=Object.entries(e),t=r.reduce((a,[p,u])=>(a[p]=u.get().data,a),{}),c=r.reduce((a,[p,u])=>{let n=u.get().error;return n&&(a[p]=n),a},{}),o=r.some(([,a])=>a.get().loading),s=r.find(([,a])=>a.get().error)?.[1].get().error??null,i=C({loading:o,error:s,errors:c,data:t});return r.forEach(([a,p])=>{p.subscribe(()=>{let u=false,n=null,f={},l={...i.get().data};r.forEach(([T,k])=>{let g=k.get();g.loading&&(u=true),g.error&&(n||(n=g.error),f[T]=g.error),l[T]=g.data;}),i.set({loading:u,error:n,errors:f,data:l});});}),i}function ge(e,r={}){let t=F().mutation??{},{invalidates:c=[],onSuccess:o=t.onSuccess,onError:s=t.onError,onSettled:y}=r,i={loading:false,data:null,error:null,isSuccess:false},a=C(i);return {mutate:async(...u)=>{let n=u[0];a.set({loading:true,data:null,error:null,isSuccess:false});try{let f=await e(n);return a.set({loading:!1,data:f,error:null,isSuccess:!0}),c.length>0&&await Promise.all(c.map(l=>l.reload())),o&&o(f,n),y&&y(f,null,n),{data:f,error:null}}catch(f){let l=f;return a.set({loading:false,data:null,error:l,isSuccess:false}),s&&s(l,n),y&&y(null,l,n),{data:null,error:l}}},get:()=>a.get(),subscribe:u=>a.subscribe(u),reset:()=>a.set(i)}}export{Ce as batch,C as chunk,ae as computed,Pe as getChunkMeta,de as middleware,me as query,se as select};
@@ -17,18 +17,30 @@ interface PaginationState {
17
17
  interface AsyncStateWithPagination<T, E extends Error> extends AsyncState<T, E> {
18
18
  pagination?: PaginationState;
19
19
  }
20
+ interface ParamAsyncChunk<T, E extends Error = Error, P extends Record<string, any> = {}> extends AsyncChunk<T, E> {
21
+ setParams: (params: Partial<Record<keyof P, P[keyof P] | null>>) => void;
22
+ clearParams: () => void;
23
+ reload: (params?: Partial<P>) => Promise<void>;
24
+ refresh: (params?: Partial<P>) => Promise<void>;
25
+ }
26
+ interface PaginatedParamAsyncChunk<T, E extends Error = Error, P extends Record<string, any> = {}> extends PaginatedAsyncChunk<T, E> {
27
+ setParams: (params: Partial<Record<keyof P, P[keyof P] | null>>) => void;
28
+ clearParams: () => void;
29
+ reload: (params?: Partial<P>) => Promise<void>;
30
+ refresh: (params?: Partial<P>) => Promise<void>;
31
+ }
20
32
  interface FetcherResponse<T> {
21
33
  data: T;
22
34
  total?: number;
23
35
  hasMore?: boolean;
24
36
  }
25
- interface AsyncChunkOptions<T, E extends Error = Error> {
37
+ interface AsyncChunkOptions<T, E extends Error = Error, P extends Record<string, any> = {}> {
26
38
  /** Deduplication key — concurrent calls with the same key share one in-flight request */
27
39
  key?: string;
28
40
  /** Seed data shown before the first fetch completes */
29
41
  initialData?: T | null;
30
42
  /** Disable fetching until ready — pass a function for dynamic evaluation */
31
- enabled?: boolean | (() => boolean);
43
+ enabled?: boolean | ((params: Partial<P>) => boolean);
32
44
  /** Called after every successful fetch */
33
45
  onSuccess?: (data: T) => void;
34
46
  /** Called when all retries are exhausted */
@@ -82,15 +94,14 @@ interface PaginatedAsyncChunk<T, E extends Error = Error> extends AsyncChunk<T,
82
94
  /** Reset pagination to page 1 and re-fetch */
83
95
  resetPagination: () => Promise<void>;
84
96
  }
85
- declare function asyncChunk<T, E extends Error = Error>(fetcher: () => Promise<T | FetcherResponse<T>>, options?: AsyncChunkOptions<T, E>): AsyncChunk<T, E> | PaginatedAsyncChunk<T, E>;
86
- declare function asyncChunk<T, E extends Error = Error, P extends Record<string, any> = {}>(fetcher: (params: P & {
87
- page?: number;
88
- pageSize?: number;
89
- }) => Promise<T | FetcherResponse<T>>, options?: AsyncChunkOptions<T, E>): (AsyncChunk<T, E> | PaginatedAsyncChunk<T, E>) & {
90
- setParams: (params: Partial<P>) => void;
91
- reload: (params?: Partial<P>) => Promise<void>;
92
- refresh: (params?: Partial<P>) => Promise<void>;
93
- };
97
+ declare function asyncChunk<T, E extends Error = Error>(fetcher: () => Promise<T | FetcherResponse<T>>, options?: AsyncChunkOptions<T, E>): AsyncChunk<T, E>;
98
+ declare function asyncChunk<T, E extends Error = Error>(fetcher: () => Promise<T | FetcherResponse<T>>, options: AsyncChunkOptions<T, E> & {
99
+ pagination: NonNullable<AsyncChunkOptions<T, E>['pagination']>;
100
+ }): PaginatedAsyncChunk<T, E>;
101
+ declare function asyncChunk<T, E extends Error = Error, P extends Record<string, any> = {}>(fetcher: (params: P) => Promise<T | FetcherResponse<T>>, options?: AsyncChunkOptions<T, E, P>): ParamAsyncChunk<T, E, P>;
102
+ declare function asyncChunk<T, E extends Error = Error, P extends Record<string, any> = {}>(fetcher: (params: P) => Promise<T | FetcherResponse<T>>, options: AsyncChunkOptions<T, E, P> & {
103
+ pagination: NonNullable<AsyncChunkOptions<T, E, P>['pagination']>;
104
+ }): PaginatedParamAsyncChunk<T, E, P>;
94
105
 
95
106
  type InfiniteAsyncChunkOptions<T, E extends Error = Error> = Omit<AsyncChunkOptions<T[], E>, 'pagination'> & {
96
107
  /** Items per page (default: 10) */
@@ -1,5 +1,5 @@
1
- import { A as AsyncChunk } from '../mutation-CH7ZTMUa.js';
2
- export { c as AsyncState, d as AsyncStateWithPagination, M as Mutation, h as MutationFn, f as MutationOptions, b as MutationResult, g as MutationState, P as PaginatedAsyncChunk, e as asyncChunk, i as infiniteAsyncChunk, m as mutation } from '../mutation-CH7ZTMUa.js';
1
+ import { A as AsyncChunk } from '../mutation-Cz-E2NUk.js';
2
+ export { c as AsyncState, d as AsyncStateWithPagination, M as Mutation, h as MutationFn, f as MutationOptions, b as MutationResult, g as MutationState, P as PaginatedAsyncChunk, e as asyncChunk, i as infiniteAsyncChunk, m as mutation } from '../mutation-Cz-E2NUk.js';
3
3
  import { C as Chunk } from '../core-DAc7hZla.js';
4
4
 
5
5
  interface GlobalQueryConfig {
@@ -1 +1 @@
1
- import {a}from'../chunk-7PLFRQ2T.js';import'../chunk-PZ7A72TA.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-7PLFRQ2T.js';import'../chunk-PZ7A72TA.js';var R={};function Z(s){R={...s.query!==void 0&&{query:{...R.query,...s.query}},...s.mutation!==void 0&&{mutation:{...R.mutation,...s.mutation}}};}function O(){return R}function ee(){R={};}var V=new Map,ae=0;function N(s,c={}){let n=O().query??{},{key:m,initialData:T=null,enabled:P=true,onSuccess:h=n.onSuccess,onError:p=n.onError,retryCount:a$1=n.retryCount??0,retryDelay:E=n.retryDelay??1e3,keepPreviousData:d=false,staleTime:o=n.staleTime??0,cacheTime:f=n.cacheTime??5*60*1e3,refetchInterval:u=n.refetchInterval,refetchOnWindowFocus:Q=n.refetchOnWindowFocus??false,pagination:k}=c,t={},M=m??`async_chunk_${ae++}`,b=()=>typeof P=="function"?P(t):P??true,x=!!k,j=k?.mode||"replace",S=s.length>0,L={loading:b()&&!S,error:null,data:T,lastFetched:void 0,isPlaceholderData:false,pagination:x?{page:k.initialPage||1,pageSize:k.pageSize||10,total:void 0,hasMore:void 0}:void 0},r=a(L),I=null,A=null,F=null,q=0,K=()=>{let e=r.get();return !e.lastFetched||o===0?true:Date.now()-e.lastFetched>o},U=()=>{r.set({...r.get(),data:T,lastFetched:void 0});},X=()=>{A&&clearTimeout(A),f>0&&(A=setTimeout(U,f));},z=()=>{I&&(clearInterval(I),I=null),A&&(clearTimeout(A),A=null),F&&typeof window<"u"&&(window.removeEventListener("focus",F),F=null);},_=()=>{b()&&(typeof window>"u"||(u&&u>0&&(I=setInterval(()=>{l(void 0,0,false);},u)),Q&&(F=()=>{K()&&l(void 0,0,false);},window.addEventListener("focus",F))));},l=async(e,i=a$1,C=false)=>{if(!b()||(e!==void 0&&(t={...t,...e}),!C&&!K()&&r.get().data!==null))return;if(V.has(M))return V.get(M);let G=r.get(),W=G.data;r.set({...G,loading:true,error:null,data:G.data,isPlaceholderData:d&&G.data!==null});let $=(async()=>{try{let D={...t};if(x){let v=r.get().pagination;v&&(D.page=v.page,D.pageSize=v.pageSize);}let g=S?await s(D):await s(),y,B,J;if(g&&typeof g=="object"&&"data"in g){let v=g;y=v.data,B=v.total,J=v.hasMore;}else y=g;let Y=r.get();x&&j==="accumulate"&&W&&Array.isArray(W)&&Array.isArray(y)&&(y=[...W,...y]),r.set({loading:!1,error:null,data:y,lastFetched:Date.now(),isPlaceholderData:!1,pagination:x?{...Y.pagination,total:B,hasMore:J}:void 0}),X(),h&&h(y);}catch(D){if(i>0)return await new Promise(y=>setTimeout(y,E)),V.delete(M),l(e,i-1,C);let g=r.get();r.set({loading:false,error:D,data:g.data,lastFetched:g.lastFetched,isPlaceholderData:false,pagination:g.pagination}),p&&p(D);}finally{V.delete(M);}})();return V.set(M,$),$};_(),b()&&!S&&l();let H={...r,subscribe:e=>{q++;let i=r.subscribe(e);return ()=>{i(),q--;}},reload:async e=>{S&&!x&&Object.keys(t).length===0||await l(e,a$1,true);},refresh:async e=>{await l(e,a$1,false);},mutate:e=>{let i=r.get();r.set({...i,data:e(i.data)});},reset:()=>{z(),t={},r.set({...L,loading:b()&&!S}),_(),b()&&!S&&l();},cleanup:()=>{q<=0&&z();},forceCleanup:()=>{z();},setParams:e=>{let i={...t};for(let C in e)e[C]===null?delete i[C]:i[C]=e[C];t=i,b()&&l(t,a$1,true);},clearParams:()=>{t={},b()&&l(void 0,a$1,true);}};return x?{...H,nextPage:async()=>{let e=r.get();!e.pagination||e.pagination.hasMore===false||(r.set({...e,pagination:{...e.pagination,page:e.pagination.page+1}}),await l(t,a$1,true));},prevPage:async()=>{let e=r.get();!e.pagination||e.pagination.page<=1||(r.set({...e,pagination:{...e.pagination,page:e.pagination.page-1}}),await l(t,a$1,true));},goToPage:async e=>{let i=r.get();!i.pagination||e<1||(r.set({...i,pagination:{...i.pagination,page:e}}),await l(t,a$1,true));},resetPagination:async()=>{let e=r.get();e.pagination&&(r.set({...e,data:j==="accumulate"?T:e.data,pagination:{...e.pagination,page:k?.initialPage||1}}),await l(t,a$1,true));}}:H}function re(s,c={}){let{pageSize:n=10,...m}=c;return N(s,{...m,pagination:{pageSize:n,mode:"accumulate",initialPage:1}})}function te(s){let c=Object.entries(s),n=c.reduce((a,[E,d])=>(a[E]=d.get().data,a),{}),m=c.reduce((a,[E,d])=>{let o=d.get().error;return o&&(a[E]=o),a},{}),T=c.some(([,a])=>a.get().loading),P=c.find(([,a])=>a.get().error)?.[1].get().error??null,p=a({loading:T,error:P,errors:m,data:n});return c.forEach(([a,E])=>{E.subscribe(()=>{let d=false,o=null,f={},u={...p.get().data};c.forEach(([Q,k])=>{let t=k.get();t.loading&&(d=true),t.error&&(o||(o=t.error),f[Q]=t.error),u[Q]=t.data;}),p.set({loading:d,error:o,errors:f,data:u});});}),p}function ne(s,c={}){let n=O().mutation??{},{invalidates:m=[],onSuccess:T=n.onSuccess,onError:P=n.onError,onSettled:h}=c,p={loading:false,data:null,error:null,isSuccess:false},a$1=a(p);return {mutate:async(...d)=>{let o=d[0];a$1.set({loading:true,data:null,error:null,isSuccess:false});try{let f=await s(o);return a$1.set({loading:!1,data:f,error:null,isSuccess:!0}),m.length>0&&await Promise.all(m.map(u=>u.reload())),T&&T(f,o),h&&h(f,null,o),{data:f,error:null}}catch(f){let u=f;return a$1.set({loading:false,data:null,error:u,isSuccess:false}),P&&P(u,o),h&&h(null,u,o),{data:null,error:u}}},get:()=>a$1.get(),subscribe:d=>a$1.subscribe(d),reset:()=>a$1.set(p)}}export{N as asyncChunk,te as combineAsyncChunks,Z as configureQuery,O as getGlobalQueryConfig,re as infiniteAsyncChunk,ne as mutation,ee as resetQueryConfig};
@@ -1,5 +1,5 @@
1
1
  import { C as Chunk, R as ReadOnlyChunk } from '../core-DAc7hZla.js';
2
- import { P as PaginatedAsyncChunk, a as PaginationState, A as AsyncChunk, I as InfiniteAsyncChunk, M as Mutation, b as MutationResult } from '../mutation-CH7ZTMUa.js';
2
+ import { P as PaginatedAsyncChunk, a as PaginationState, A as AsyncChunk, I as InfiniteAsyncChunk, M as Mutation, b as MutationResult } from '../mutation-Cz-E2NUk.js';
3
3
 
4
4
  /**
5
5
  * Subscribes to a chunk and returns its current value along with setters,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stunk",
3
- "version": "3.0.0-rc.1",
3
+ "version": "3.0.0-rc.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": {