@symbo.ls/fetch 3.14.7 → 3.14.9
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/CHANGELOG.md +16 -0
- package/dist/cjs/index.js +1 -1
- package/dist/esm/index.js +1 -1
- package/index.js +1172 -0
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @symbo.ls/fetch
|
|
2
2
|
|
|
3
|
+
## 3.14.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Auto-generated cross-repo patch release.
|
|
8
|
+
|
|
9
|
+
## 3.14.8
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Manual patch bump triggered via workflow_dispatch (scope: @symbo.ls).
|
|
14
|
+
No source change behind this bump — released to refresh dist or
|
|
15
|
+
coordinate a cross-package version line.
|
|
16
|
+
- Updated dependencies
|
|
17
|
+
- @symbo.ls/utils@3.14.11
|
|
18
|
+
|
|
3
19
|
## 3.14.7
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/dist/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Pt=Object.create;var st=Object.defineProperty;var At=Object.getOwnPropertyDescriptor;var kt=Object.getOwnPropertyNames;var Mt=Object.getPrototypeOf,$t=Object.prototype.hasOwnProperty;var Nt=(e,t)=>{for(var s in t)st(e,s,{get:t[s],enumerable:!0})},St=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of kt(t))!$t.call(e,n)&&n!==s&&st(e,n,{get:()=>t[n],enumerable:!(r=At(t,n))||r.enumerable});return e};var dt=(e,t,s)=>(s=e!=null?Pt(Mt(e)):{},St(t||!e||!e.__esModule?st(s,"default",{value:e,enumerable:!0}):s,e)),qt=e=>St(st({},"__esModule",{value:!0}),e);var Ht={};Nt(Ht,{createAdapter:()=>zt,default:()=>Gt,executeFetch:()=>yt,fetchPlugin:()=>Yt,initAdapterAuth:()=>nt,parseDuration:()=>B,queryClient:()=>Kt,registerAdapter:()=>Rt,resolveDb:()=>Et});module.exports=qt(Ht);var f=require("@symbo.ls/utils");const It=["select","rpc","insert","update","delete","subscribe"],wt={supabase:()=>import("./adapters/supabase.js"),rest:()=>import("./adapters/rest.js"),local:()=>import("./adapters/local.js")},Rt=(e,t)=>{wt[e]=t},zt=e=>{const t={};for(const s of It)e[s]&&(t[s]=e[s]);return t.name=e.name||"custom",t},Et=async e=>{if(!e)return null;if(typeof e.select=="function")return e;const{adapter:t,...s}=e,r=typeof t=="string"?t:typeof e=="string"?e:null;if(!r)return null;const n=wt[r];if(!n)throw new Error(`Unknown db adapter: "${r}". Use registerAdapter() for adapters with optional deps.`);return(await n()).setup(s)},B=e=>{if(!e)return 0;if(typeof e=="number")return e;const t=e.match(/^(\d+)(ms|s|m|h)$/);if(!t)return 0;const s=parseInt(t[1]),r=t[2];return r==="ms"?s:r==="s"?s*1e3:r==="m"?s*6e4:r==="h"?s*36e5:0},m=new Map,O=new Map,K=new Map,Ot=(e,t)=>{if(e.cache?.key)return e.cache.key;const s=Qt(e.params),r=`${e.from}:${e.method}:${JSON.stringify(s||"")}`;return t?`${r}:${t}`:r},Y=e=>m.get(e)||null,G=(e,t,s)=>{const r=m.get(e),n={data:t,error:s,time:Date.now(),stale:!1};m.set(e,n);const a=O.get(e);if(a)for(const i of a)(0,f.isFunction)(i)&&i(n);return n},H=e=>{if(e){const t=m.get(e);t&&(t.stale=!0);return}for(const[,t]of m)t.stale=!0},rt=e=>{if(e){m.delete(e);return}m.clear()},te=(e,t)=>(O.has(e)||O.set(e,new Set),O.get(e).add(t),()=>{const s=O.get(e);s&&(s.delete(t),s.size===0&&O.delete(e))}),lt=e=>!e&&e!==!1?{staleTime:6e4,gcTime:3e5}:e===!1?null:e===!0?{staleTime:6e4,gcTime:3e5}:typeof e=="number"?{staleTime:e,gcTime:Math.max(e*5,3e5)}:(0,f.isString)(e)?{staleTime:B(e),gcTime:3e5}:{staleTime:B(e.stale||e.staleTime)||6e4,gcTime:B(e.gc||e.gcTime||e.expire)||3e5,key:e.key};let at=null;const Ut=()=>{at||(at=setInterval(()=>{const e=Date.now();for(const[t,s]of m){const r=O.get(t);!(r&&r.size>0)&&e-s.time>(s.gcTime||3e5)&&m.delete(t)}},3e4),at.unref&&at.unref())};Ut();const mt=3,ht=e=>Math.min(1e3*2**e,3e4),vt=e=>{const t=e.retry;return t===!1?{count:0}:t===!0||t===void 0?{count:mt,delay:ht}:typeof t=="number"?{count:t,delay:ht}:{count:t.count??mt,delay:(0,f.isFunction)(t.delay)?t.delay:typeof t.delay=="number"?()=>t.delay:ht}},Ft=async(e,t)=>{const{count:s,delay:r}=t;let n;for(let a=0;a<=s;a++)try{const i=await e();if(i?.error){if(n=i.error,a<s){const c=(0,f.isFunction)(r)?r(a,n):r;await new Promise(o=>setTimeout(o,c));continue}return i}return i}catch(i){if(n=i,a<s){const c=(0,f.isFunction)(r)?r(a,i):r;await new Promise(o=>setTimeout(o,c));continue}throw i}return{data:null,error:n}},j={focus:new Set,online:new Set};let bt=!1;const xt=()=>{if(bt||typeof window>"u")return;bt=!0;const e=()=>{for(const s of j.focus)s()},t=()=>{for(const s of j.online)s()};window.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&e()}),window.addEventListener("focus",e),window.addEventListener("online",t)},Dt=(e,t)=>{const s=t.__ref;if(e===!0)return{from:s.__state||t.key,method:"select",query:!0,on:"create"};if((0,f.isString)(e))return{from:e,method:"select",query:!0,on:"create"};if((0,f.isObject)(e)){const r={...e};return r.from=r.from||s.__state||t.key,r.method=r.method||"select",r.on=r.on||"create",r.query===void 0&&(r.query=!0),r}return null},Qt=e=>(!e||(0,f.isFunction)(e),e),it=(e,t)=>{const s=e?.state?.root||t?.state?.root;if(s?.lang)return s.lang},Ct=(e,t,s)=>{let r;if(!e)r=void 0;else if((0,f.isFunction)(e))r=e(t,t.state);else{r={};for(const n in e){const a=e[n];r[n]=(0,f.isFunction)(a)?a(t,t.state):a}}return r},nt=async(e,t)=>{if(!e||e.__authInitialized||(e.__authInitialized=!0,!e.getSession))return;const s=(r,n)=>{const a=t.state?.root;a?.update&&a.update({auth:{user:r,session:n,loading:!1}})};try{const r=await e.getSession();s(r?.user||null,r)}catch(r){console.warn("[fetch] Failed to restore auth session:",r.message)}e.onAuthStateChange&&e.onAuthStateChange((r,n)=>{s(n?.user||null,n)})},pt=async(e,t)=>{if((0,f.isFunction)(e.select))return e.auth!==!1&&await nt(e,t),e;if(e.__resolved)return e.auth!==!1&&await nt(e.__resolved,t),e.__resolved;if(e.__resolving)return e.__resolving;e.__resolving=Et(e);const s=await e.__resolving;return delete e.__resolving,s?(s.auth=e.auth,s.url=e.url,s.key=e.key,e.__resolved=s,t.fetch=s,e.auth!==!1&&await nt(s,t),s):null},F=(e,t,...s)=>{const r=(0,f.isFunction)(e[t])?e[t]:null;r&&r.call(e,...s,e,e.state,e.context)},T=(e,t,s,...r)=>{const n=e&&(0,f.isFunction)(e[s])?e[s]:null;n&&n.call(t,...r,t,t.state,t.context)},V=e=>{const t={},s=e.node;if(!s)return t;if(s.tagName==="FORM"){const n=new FormData(s);for(const[a,i]of n.entries())t[a]=i;return t}const r=s.querySelectorAll("input, textarea, select");for(let n=0;n<r.length;n++){const a=r[n],i=a.name||a.getAttribute("name");i&&(a.type==="checkbox"?t[i]=a.checked:a.type==="file"?t[i]=a.files:t[i]=a.value)}return t},U=(e,t,s,r={})=>{const n=s&&s.startsWith("~/"),a=n&&e.state?.root||e.state;if(a?.update)if(n){const i=s.slice(2);t&&typeof t=="object"&&!Array.isArray(t)&&i in t?a.update(t,{preventFetch:!0,...r}):a.update({[i]:t},{preventFetch:!0,...r})}else{const i=s?{[s]:t}:t;a.update(i,{preventFetch:!0,...r})}},k=(e,t)=>{const s=e?.__ref;s&&(s.__fetchStatus=t,s.__fetching=t.isFetching,s.__fetchError=t.error)},I=async(e,t,s,r={})=>{const n=s?.fetch;if(!n||!t||!t.__ref||e.enabled===!1||(0,f.isFunction)(e.enabled)&&!e.enabled(t,t.state)||e.skip===!0||(0,f.isFunction)(e.skip)&&e.skip(t,t.state))return;const a=await pt(n,s);if(!a||!t.__ref)return;const i=t.__ref,{from:c,method:o,query:y,params:b,cache:X,transform:D,single:ot,auth:Z,fields:N,as:R,limit:J,offset:tt,order:x,headers:q,baseUrl:_,page:g,cursor:v,getNextPageParam:Q,getPreviousPageParam:S,infinite:L,placeholderData:z,initialData:W,select:P,keepPreviousData:M}=e;let C=(0,f.isString)(P)?P:void 0;if(y&&(0,f.isFunction)(t.getQuery)){const l=t.getQuery(a.name||"paths");l&&(C=l.select||l.length&&l.join(",")||C)}const A=Ct(b,t,s),E=lt(X),et=vt(e),ft=it(t,s),Tt=ft?`:${ft}`:"",p=E?X?.key||`${c}:${o}:${JSON.stringify(A||"")}${L?":infinite":""}${g?":p"+JSON.stringify(g):""}${Tt}`:null;if(!i.__fetchInitialized&&p&&(i.__fetchInitialized=!0,W!==void 0)){const l=(0,f.isFunction)(W)?W():W;G(p,l,null)}if((o==="select"||o==="rpc")&&p&&E){const l=Y(p);if(l&&!l.error){const d=Date.now()-l.time,h=l.stale||d>(E.staleTime||0);let u=l.data;if((0,f.isFunction)(P)&&(u=P(u,t,t.state)),D&&(u=D(u,t,t.state)),U(t,u,R),!h){k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!0,error:null,status:"success",fetchStatus:"idle"});return}}else if(z!==void 0){const d=(0,f.isFunction)(z)?z(t,t.state):z;d!==void 0&&U(t,d,R)}}if(p&&K.has(p)&&!r.force){const l=K.get(p);try{const d=await Promise.race([l,new Promise((h,u)=>setTimeout(()=>u("DEDUP_TIMEOUT"),15e3))]);if(d?.data!==void 0){let h=d.data;(0,f.isFunction)(P)&&(h=P(h,t,t.state)),D&&(h=D(h,t,t.state)),U(t,h,R),F(t,"onFetchComplete",h),T(e,t,"onFetchComplete",h)}}catch{}return}const Lt=!Y(p)?.data;k(t,{isFetching:!0,isLoading:Lt,isStale:!1,isSuccess:!1,error:null,status:"pending",fetchStatus:"fetching"}),F(t,"onFetchStart"),T(e,t,"onFetchStart");const $=s?.analyze?.emitNetwork,ct=$?typeof performance<"u"?performance.now():Date.now():0;$&&$({phase:"start",mode:"query",from:c,method:o,cacheKey:p,lang:ft});const gt=Ft(async()=>{if(Z!==!1&&a.auth!==!1&&a.getSession){const u=await a.getSession();if(Z===!0&&!u){const w={message:"Not authenticated"};return k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:w,status:"error",fetchStatus:"idle"}),F(t,"onFetchError",w),T(e,t,"onFetchError",w),{data:null,error:w}}}const l=a[o];if(!(0,f.isFunction)(l))return{data:null,error:{message:`Method "${o}" not found on adapter`}};const d={from:c,select:C,params:A,single:ot,limit:J,offset:tt,order:x,headers:q,baseUrl:_},h=it(t,s);if(h&&(d.headers={...d.headers,"Accept-Language":h}),g!==void 0){if((0,f.isObject)(g))g.offset!==void 0&&(d.offset=g.offset),g.limit!==void 0&&(d.limit=g.limit),g.cursor!==void 0&&(d.params={...d.params,cursor:g.cursor});else if(typeof g=="number"){const u=e.pageSize||J||20;d.offset=(g-1)*u,d.limit=u}}if(v!==void 0&&(d.params={...d.params,cursor:v}),o==="insert"||o==="update"||o==="upsert"){let u;if(N===!0||e.on==="submit")u=V(t);else if((0,f.isArray)(N)){const w=V(t);u={};for(const ut of N)u[ut]=w[ut]}else t.state?.parse?u=t.state.parse():(0,f.isObject)(t.state)&&(u={...t.state});D&&(u=D(u,t,t.state)),d.data=u}if(o==="rpc"){let u=A;if(e.on==="submit"){const w=V(t);u=e.transformParams?e.transformParams(w,t,t.state):w}d.params=u}if(o==="subscribe"){const u=a.subscribe({from:c,params:A,on:e.subscribeOn},(w,ut,Xt)=>{U(t,w,R),F(t,"onFetchComplete",w),T(e,t,"onFetchComplete",w)});return i.__unsubscribe=u,{data:null,error:null,subscribed:!0}}return l(d)},et);p&&K.set(p,gt);try{const l=await gt;if(l?.subscribed)return;const{data:d,error:h}=l||{};if(h){p&&G(p,null,h),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:h,status:"error",fetchStatus:"idle"}),F(t,"onFetchError",h),T(e,t,"onFetchError",h),$&&$({phase:"error",mode:"query",from:c,method:o,cacheKey:p,error:h.message||h,durationMs:(typeof performance<"u"?performance.now():Date.now())-ct});return}if(d!==void 0){if((o==="select"||o==="rpc")&&p){const w=G(p,d,null);w.gcTime=E?.gcTime||3e5}let u=d;L&&(0,f.isArray)(d)&&(i.__pages||(i.__pages=[]),r.direction==="previous"?i.__pages.unshift(d):i.__pages.push(d),u=i.__pages.flat(),Q&&(i.__nextPageParam=Q(d,i.__pages),i.__hasNextPage=i.__nextPageParam!=null),S&&(i.__prevPageParam=S(d,i.__pages),i.__hasPreviousPage=i.__prevPageParam!=null)),(0,f.isFunction)(P)&&(u=P(u,t,t.state)),D&&(u=D(u,t,t.state)),(!M||u!==void 0)&&U(t,u,R),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!0,error:null,status:"success",fetchStatus:"idle"}),F(t,"onFetchComplete",u),T(e,t,"onFetchComplete",u),$&&$({phase:"success",mode:"query",ok:!0,from:c,method:o,cacheKey:p,durationMs:(typeof performance<"u"?performance.now():Date.now())-ct})}}catch(l){k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:l,status:"error",fetchStatus:"idle"}),F(t,"onFetchError",l),T(e,t,"onFetchError",l),$&&$({phase:"error",mode:"query",from:c,method:o,cacheKey:p,error:l.message||String(l),durationMs:(typeof performance<"u"?performance.now():Date.now())-ct})}finally{p&&K.delete(p)}},Wt=(e,t,s)=>{const r=e.on,n=t.__ref;n.__fetchListeners||(n.__fetchListeners=[]);const a=e.__runner||I;if(r==="submit"){const i=o=>{o.preventDefault(),a(e,t,s)},c=t.node;c&&(c.addEventListener("submit",i),n.__fetchListeners.push(()=>c.removeEventListener("submit",i)))}else if(r==="click"){const i=()=>a(e,t,s),c=t.node;c&&(c.addEventListener("click",i),n.__fetchListeners.push(()=>c.removeEventListener("click",i)))}else r==="stateChange"&&(n.__fetchOnStateChange=()=>a(e,t,s))},jt=(e,t,s)=>{const r=t.__ref;r.__fetchCleanups||(r.__fetchCleanups=[]),xt();const n=e.refetchInterval;if(n){const a=typeof n=="number"?n:B(n);if(a>0){const i=setInterval(()=>{(e.refetchIntervalInBackground||typeof document>"u"||document.visibilityState==="visible")&&I(e,t,s,{force:!0})},a);r.__fetchCleanups.push(()=>clearInterval(i))}}if(e.refetchOnWindowFocus!==!1){const a=()=>{const i=it(t,s),c=Ot(e,i),o=Y(c),y=lt(e.cache);(!o||o.stale||Date.now()-o.time>(y?.staleTime||0))&&I(e,t,s,{force:!0})};j.focus.add(a),r.__fetchCleanups.push(()=>j.focus.delete(a))}if(e.refetchOnReconnect!==!1){const a=()=>I(e,t,s,{force:!0});j.online.add(a),r.__fetchCleanups.push(()=>j.online.delete(a))}},Bt=(e,t,s)=>{if(!t.optimistic)return null;const r=e.__ref,n=t.as,a=e.state?.parse?e.state.parse():(0,f.isObject)(e.state)?{...e.state}:e.state;r.__optimisticSnapshot=a;const i=(0,f.isFunction)(t.optimistic)?t.optimistic(s,a,e):t.optimistic;return i!==void 0&&U(e,i,n),a},_t=(e,t)=>{const s=e.__ref,r=s.__optimisticSnapshot;r!==void 0&&(U(e,r,t.as),delete s.__optimisticSnapshot)},Jt=async(e,t,s)=>{const r=s?.fetch;if(!r)return;const n=await pt(r,s);if(!n)return;const a=t.__ref,{method:i,from:c,fields:o,transform:y,as:b,on:X,auth:D,headers:ot,baseUrl:Z,invalidates:N,optimistic:R,onMutate:J,onSuccess:tt,onError:x,onSettled:q}=e;let _;if(o===!0||X==="submit")_=V(t);else if((0,f.isArray)(o)){const S=V(t);_={};for(const L of o)_[L]=S[L]}else t.state?.parse?_=t.state.parse():(0,f.isObject)(t.state)&&(_={...t.state});y&&(_=y(_,t,t.state)),(0,f.isFunction)(J)&&J(_,t,t.state);const g=R?Bt(t,e,_):null;a.__fetching=!0,k(t,{isFetching:!0,isLoading:!1,isStale:!1,isSuccess:!1,error:null,status:"pending",fetchStatus:"fetching"}),F(t,"onFetchStart"),T(e,t,"onFetchStart");const v=s?.analyze?.emitNetwork,Q=v?typeof performance<"u"?performance.now():Date.now():0;v&&v({phase:"start",mode:"mutation",from:c,method:i});try{if(D!==!1&&n.auth!==!1&&n.getSession){const A=await n.getSession();if(D===!0&&!A){g!==void 0&&_t(t,e);const E={message:"Not authenticated"};F(t,"onFetchError",E),T(e,t,"onFetchError",E);return}}const S=n[i];if(!(0,f.isFunction)(S))return;const L={from:c,data:_,headers:ot,baseUrl:Z};e.params&&(L.params=Ct(e.params,t,s));const z=it(t,s);z&&(L.headers={...L.headers,"Accept-Language":z});const W=vt(e),P=await Ft(()=>S(L),W),{data:M,error:C}=P||{};if(C){g!==void 0&&_t(t,e),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:C,status:"error",fetchStatus:"idle"}),F(t,"onFetchError",C),(0,f.isFunction)(x)&&x(C,_,t),(0,f.isFunction)(q)&&q(null,C,_,t),v&&v({phase:"error",mode:"mutation",from:c,method:i,error:C.message||String(C),durationMs:(typeof performance<"u"?performance.now():Date.now())-Q});return}if(delete a.__optimisticSnapshot,M!==void 0){const A=b?{[b]:M}:M;t.state?.update&&t.state.update(A,{preventFetch:!0})}if(k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!0,error:null,status:"success",fetchStatus:"idle"}),F(t,"onFetchComplete",M),T(e,t,"onFetchComplete",M),(0,f.isFunction)(tt)&&tt(M,_,t),(0,f.isFunction)(q)&&q(M,null,_,t),v&&v({phase:"success",mode:"mutation",ok:!0,from:c,method:i,durationMs:(typeof performance<"u"?performance.now():Date.now())-Q}),N){const A=(0,f.isArray)(N)?N:[N];for(const E of A)if(E===!0||E==="*")for(const[et]of m)et.startsWith(c+":")&&H(et);else H(E)}}catch(S){g!==void 0&&_t(t,e),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:S,status:"error",fetchStatus:"idle"}),F(t,"onFetchError",S),T(e,t,"onFetchError",S),(0,f.isFunction)(x)&&x(S,_,t),(0,f.isFunction)(q)&&q(null,S,_,t),v&&v({phase:"error",mode:"mutation",from:c,method:i,error:S.message||String(S),durationMs:(typeof performance<"u"?performance.now():Date.now())-Q})}finally{a.__fetching=!1}},yt=(e,t,s,r)=>{if(!e||!r?.fetch)return;const a=(0,f.exec)(e,t);if(!a)return;const i=(0,f.isArray)(a)?a.map(o=>Dt((0,f.exec)(o,t),t)).filter(Boolean):[Dt(a,t)].filter(Boolean);for(const o of i){const y=o.method==="insert"||o.method==="update"||o.method==="upsert"||o.method==="delete",b=y?Jt:I;o.on==="create"?b(o,t,r):Promise.resolve().then(()=>{Wt({...o,__runner:b},t,r)}),!y&&o.on==="create"&&(o.refetchInterval||o.refetchOnWindowFocus!==!1||o.refetchOnReconnect!==!1)&&jt(o,t,r)}const c=t.__ref;c.refetch=o=>{for(const y of i)I(y,t,r,{force:!0,...o})},c.fetchNextPage=()=>{const o=i[0];if(!o||!o.infinite)return;const y=c.__nextPageParam;if(y==null)return;const b={...o,cursor:y};I(b,t,r,{direction:"next",force:!0})},c.fetchPreviousPage=()=>{const o=i[0];if(!o||!o.infinite)return;const y=c.__prevPageParam;if(y==null)return;const b={...o,cursor:y};I(b,t,r,{direction:"previous",force:!0})}},Kt={invalidateQueries:e=>{if(!e){H();return}if((0,f.isString)(e))for(const[t]of m)(t.startsWith(e)||t.includes(e))&&H(t);else if((0,f.isArray)(e)){const t=e.join(":");for(const[s]of m)s.includes(t)&&H(s)}},removeQueries:e=>{if(!e){rt();return}if((0,f.isString)(e))for(const[t]of m)(t.startsWith(e)||t.includes(e))&&rt(t)},getQueryData:e=>Y(e)?.data??void 0,setQueryData:(e,t)=>{const s=Y(e),r=(0,f.isFunction)(t)?t(s?.data):t;G(e,r,null)},prefetchQuery:async(e,t)=>{const s=t?.fetch;if(!s)return;const r=await pt(s,t);if(!r)return;const n=e.cache?.key||`${e.from}:${e.method||"select"}:${JSON.stringify(e.params||"")}`,a=r[e.method||"select"];if(!(0,f.isFunction)(a))return;const i=await a({from:e.from,params:e.params,limit:e.limit,offset:e.offset,order:e.order,single:e.single});if(i?.data!==void 0&&!i?.error){const c=G(n,i.data,null);c.gcTime=lt(e.cache)?.gcTime||3e5}return i},getCache:()=>m,clear:()=>rt(),dropNonLang:e=>{if(!e)return;const t=`:${e}`;for(const[s]of m)s.match(/:([a-z]{2,3})$/i)&&(s.endsWith(t)||rt(s))}},Yt={name:"fetch",create(e){const t=e.fetch;t&&(e.parent||K.clear(),yt(t,e,e.state,e.context))}};var Gt=yt;
|
|
1
|
+
"use strict";var At=Object.create;var st=Object.defineProperty;var kt=Object.getOwnPropertyDescriptor;var Mt=Object.getOwnPropertyNames;var $t=Object.getPrototypeOf,It=Object.prototype.hasOwnProperty;var Nt=(e,t)=>{for(var s in t)st(e,s,{get:t[s],enumerable:!0})},wt=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Mt(t))!It.call(e,n)&&n!==s&&st(e,n,{get:()=>t[n],enumerable:!(r=kt(t,n))||r.enumerable});return e};var dt=(e,t,s)=>(s=e!=null?At($t(e)):{},wt(t||!e||!e.__esModule?st(s,"default",{value:e,enumerable:!0}):s,e)),Rt=e=>wt(st({},"__esModule",{value:!0}),e);var Vt={};Nt(Vt,{createAdapter:()=>Ot,default:()=>Ht,executeFetch:()=>gt,fetchPlugin:()=>Jt,initAdapterAuth:()=>ot,parseDuration:()=>j,queryClient:()=>Gt,registerAdapter:()=>zt,resolveDb:()=>Et});module.exports=Rt(Vt);var f=require("@symbo.ls/utils");const qt=["select","rpc","insert","update","delete","subscribe"],rt=Symbol.for("@symbo.ls/fetch:BUILTIN_ADAPTERS"),mt=(()=>{if(typeof globalThis<"u"&&globalThis[rt])return globalThis[rt];const e={supabase:()=>import("./adapters/supabase.js"),rest:()=>import("./adapters/rest.js"),local:()=>import("./adapters/local.js")};if(typeof globalThis<"u")try{return Object.defineProperty(globalThis,rt,{value:e,writable:!1,configurable:!1,enumerable:!1}),globalThis[rt]}catch{}return e})(),zt=(e,t)=>{mt[e]=t},Ot=e=>{const t={};for(const s of qt)e[s]&&(t[s]=e[s]);return t.name=e.name||"custom",t},Et=async e=>{if(!e)return null;if(typeof e.select=="function")return e;const{adapter:t,...s}=e,r=typeof t=="string"?t:typeof e=="string"?e:null;if(!r)return null;const n=mt[r];if(!n)throw new Error(`Unknown db adapter: "${r}". Use registerAdapter() for adapters with optional deps.`);return(await n()).setup(s)},j=e=>{if(!e)return 0;if(typeof e=="number")return e;const t=e.match(/^(\d+)(ms|s|m|h)$/);if(!t)return 0;const s=parseInt(t[1]),r=t[2];return r==="ms"?s:r==="s"?s*1e3:r==="m"?s*6e4:r==="h"?s*36e5:0},m=new Map,O=new Map,Y=new Map,Ut=(e,t)=>{if(e.cache?.key)return e.cache.key;const s=Wt(e.params),r=`${e.from}:${e.method}:${JSON.stringify(s||"")}`;return t?`${r}:${t}`:r},G=e=>m.get(e)||null,J=(e,t,s)=>{const r=m.get(e),n={data:t,error:s,time:Date.now(),stale:!1};m.set(e,n);const a=O.get(e);if(a)for(const i of a)(0,f.isFunction)(i)&&i(n);return n},H=e=>{if(e){const t=m.get(e);t&&(t.stale=!0);return}for(const[,t]of m)t.stale=!0},at=e=>{if(e){m.delete(e);return}m.clear()},ee=(e,t)=>(O.has(e)||O.set(e,new Set),O.get(e).add(t),()=>{const s=O.get(e);s&&(s.delete(t),s.size===0&&O.delete(e))}),ht=e=>!e&&e!==!1?{staleTime:6e4,gcTime:3e5}:e===!1?null:e===!0?{staleTime:6e4,gcTime:3e5}:typeof e=="number"?{staleTime:e,gcTime:Math.max(e*5,3e5)}:(0,f.isString)(e)?{staleTime:j(e),gcTime:3e5}:{staleTime:j(e.stale||e.staleTime)||6e4,gcTime:j(e.gc||e.gcTime||e.expire)||3e5,key:e.key};let it=null;const xt=()=>{it||(it=setInterval(()=>{const e=Date.now();for(const[t,s]of m){const r=O.get(t);!(r&&r.size>0)&&e-s.time>(s.gcTime||3e5)&&m.delete(t)}},3e4),it.unref&&it.unref())};xt();const bt=3,pt=e=>Math.min(1e3*2**e,3e4),vt=e=>{const t=e.retry;return t===!1?{count:0}:t===!0||t===void 0?{count:bt,delay:pt}:typeof t=="number"?{count:t,delay:pt}:{count:t.count??bt,delay:(0,f.isFunction)(t.delay)?t.delay:typeof t.delay=="number"?()=>t.delay:pt}},Ft=async(e,t)=>{const{count:s,delay:r}=t;let n;for(let a=0;a<=s;a++)try{const i=await e();if(i?.error){if(n=i.error,a<s){const c=(0,f.isFunction)(r)?r(a,n):r;await new Promise(o=>setTimeout(o,c));continue}return i}return i}catch(i){if(n=i,a<s){const c=(0,f.isFunction)(r)?r(a,i):r;await new Promise(o=>setTimeout(o,c));continue}throw i}return{data:null,error:n}},B={focus:new Set,online:new Set};let Tt=!1;const Qt=()=>{if(Tt||typeof window>"u")return;Tt=!0;const e=()=>{for(const s of B.focus)s()},t=()=>{for(const s of B.online)s()};window.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&e()}),window.addEventListener("focus",e),window.addEventListener("online",t)},Dt=(e,t)=>{const s=t.__ref;if(e===!0)return{from:s.__state||t.key,method:"select",query:!0,on:"create"};if((0,f.isString)(e))return{from:e,method:"select",query:!0,on:"create"};if((0,f.isObject)(e)){const r={...e};return r.from=r.from||s.__state||t.key,r.method=r.method||"select",r.on=r.on||"create",r.query===void 0&&(r.query=!0),r}return null},Wt=e=>(!e||(0,f.isFunction)(e),e),nt=(e,t)=>{const s=e?.state?.root||t?.state?.root;if(s?.lang)return s.lang},Ct=(e,t,s)=>{let r;if(!e)r=void 0;else if((0,f.isFunction)(e))r=e(t,t.state);else{r={};for(const n in e){const a=e[n];r[n]=(0,f.isFunction)(a)?a(t,t.state):a}}return r},ot=async(e,t)=>{if(!e||e.__authInitialized||(e.__authInitialized=!0,!e.getSession))return;const s=(r,n)=>{const a=t.state?.root;a?.update&&a.update({auth:{user:r,session:n,loading:!1}})};try{const r=await e.getSession();s(r?.user||null,r)}catch(r){console.warn("[fetch] Failed to restore auth session:",r.message)}e.onAuthStateChange&&e.onAuthStateChange((r,n)=>{s(n?.user||null,n)})},_t=async(e,t)=>{if((0,f.isFunction)(e.select))return e.auth!==!1&&await ot(e,t),e;if(e.__resolved)return e.auth!==!1&&await ot(e.__resolved,t),e.__resolved;if(e.__resolving)return e.__resolving;e.__resolving=Et(e);const s=await e.__resolving;return delete e.__resolving,s?(s.auth=e.auth,s.url=e.url,s.key=e.key,e.__resolved=s,t.fetch=s,e.auth!==!1&&await ot(s,t),s):null},v=(e,t,...s)=>{const r=(0,f.isFunction)(e[t])?e[t]:null;r&&r.call(e,...s,e,e.state,e.context)},E=(e,t,s,...r)=>{const n=e&&(0,f.isFunction)(e[s])?e[s]:null;n&&n.call(t,...r,t,t.state,t.context)},V=e=>{const t={},s=e.node;if(!s)return t;if(s.tagName==="FORM"){const n=new FormData(s);for(const[a,i]of n.entries())t[a]=i;return t}const r=s.querySelectorAll("input, textarea, select");for(let n=0;n<r.length;n++){const a=r[n],i=a.name||a.getAttribute("name");i&&(a.type==="checkbox"?t[i]=a.checked:a.type==="file"?t[i]=a.files:t[i]=a.value)}return t},U=(e,t,s,r={})=>{const n=s&&s.startsWith("~/"),a=n&&e.state?.root||e.state;if(a?.update)if(n){const i=s.slice(2);t&&typeof t=="object"&&!Array.isArray(t)&&i in t?a.update(t,{preventFetch:!0,...r}):a.update({[i]:t},{preventFetch:!0,...r})}else{const i=s?{[s]:t}:t;a.update(i,{preventFetch:!0,...r})}},k=(e,t)=>{const s=e?.__ref;s&&(s.__fetchStatus=t,s.__fetching=t.isFetching,s.__fetchError=t.error)},R=async(e,t,s,r={})=>{const n=s?.fetch;if(!n||!t||!t.__ref||e.enabled===!1||(0,f.isFunction)(e.enabled)&&!e.enabled(t,t.state)||e.skip===!0||(0,f.isFunction)(e.skip)&&e.skip(t,t.state))return;const a=await _t(n,s);if(!a||!t.__ref)return;const i=t.__ref,{from:c,method:o,query:y,params:F,cache:X,transform:T,single:ft,auth:Z,fields:I,as:q,limit:K,offset:tt,order:x,headers:N,baseUrl:_,page:g,cursor:b,getNextPageParam:Q,getPreviousPageParam:S,infinite:L,placeholderData:z,initialData:W,select:P,keepPreviousData:M}=e;let D=(0,f.isString)(P)?P:void 0;if(y&&(0,f.isFunction)(t.getQuery)){const d=t.getQuery(a.name||"paths");d&&(D=d.select||d.length&&d.join(",")||D)}const A=Ct(F,t,s),C=ht(X),et=vt(e),ct=nt(t,s),Lt=ct?`:${ct}`:"",p=C?X?.key||`${c}:${o}:${JSON.stringify(A||"")}${L?":infinite":""}${g?":p"+JSON.stringify(g):""}${Lt}`:null;if(!i.__fetchInitialized&&p&&(i.__fetchInitialized=!0,W!==void 0)){const d=(0,f.isFunction)(W)?W():W;J(p,d,null)}if((o==="select"||o==="rpc")&&p&&C){const d=G(p);if(d&&!d.error){const l=Date.now()-d.time,h=d.stale||l>(C.staleTime||0);let u=d.data;if((0,f.isFunction)(P)&&(u=P(u,t,t.state)),T&&(u=T(u,t,t.state)),U(t,u,q),!h){k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!0,error:null,status:"success",fetchStatus:"idle"});return}}else if(z!==void 0){const l=(0,f.isFunction)(z)?z(t,t.state):z;l!==void 0&&U(t,l,q)}}if(p&&Y.has(p)&&!r.force){const d=Y.get(p);try{const l=await Promise.race([d,new Promise((h,u)=>setTimeout(()=>u("DEDUP_TIMEOUT"),15e3))]);if(l?.data!==void 0){let h=l.data;(0,f.isFunction)(P)&&(h=P(h,t,t.state)),T&&(h=T(h,t,t.state)),U(t,h,q),v(t,"onFetchComplete",h),E(e,t,"onFetchComplete",h)}}catch{}return}const Pt=!G(p)?.data;k(t,{isFetching:!0,isLoading:Pt,isStale:!1,isSuccess:!1,error:null,status:"pending",fetchStatus:"fetching"}),v(t,"onFetchStart"),E(e,t,"onFetchStart");const $=s?.analyze?.emitNetwork,ut=$?typeof performance<"u"?performance.now():Date.now():0;$&&$({phase:"start",mode:"query",from:c,method:o,cacheKey:p,lang:ct});const St=Ft(async()=>{if(Z!==!1&&a.auth!==!1&&a.getSession){const u=await a.getSession();if(Z===!0&&!u){const w={message:"Not authenticated"};return k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:w,status:"error",fetchStatus:"idle"}),v(t,"onFetchError",w),E(e,t,"onFetchError",w),{data:null,error:w}}}const d=a[o];if(!(0,f.isFunction)(d))return{data:null,error:{message:`Method "${o}" not found on adapter`}};const l={from:c,select:D,params:A,single:ft,limit:K,offset:tt,order:x,headers:N,baseUrl:_},h=nt(t,s);if(h&&(l.headers={...l.headers,"Accept-Language":h}),g!==void 0){if((0,f.isObject)(g))g.offset!==void 0&&(l.offset=g.offset),g.limit!==void 0&&(l.limit=g.limit),g.cursor!==void 0&&(l.params={...l.params,cursor:g.cursor});else if(typeof g=="number"){const u=e.pageSize||K||20;l.offset=(g-1)*u,l.limit=u}}if(b!==void 0&&(l.params={...l.params,cursor:b}),o==="insert"||o==="update"||o==="upsert"){let u;if(I===!0||e.on==="submit")u=V(t);else if((0,f.isArray)(I)){const w=V(t);u={};for(const lt of I)u[lt]=w[lt]}else t.state?.parse?u=t.state.parse():(0,f.isObject)(t.state)&&(u={...t.state});T&&(u=T(u,t,t.state)),l.data=u}if(o==="rpc"){let u=A;if(e.on==="submit"){const w=V(t);u=e.transformParams?e.transformParams(w,t,t.state):w}l.params=u}if(o==="subscribe"){const u=a.subscribe({from:c,params:A,on:e.subscribeOn},(w,lt,Zt)=>{U(t,w,q),v(t,"onFetchComplete",w),E(e,t,"onFetchComplete",w)});return i.__unsubscribe=u,{data:null,error:null,subscribed:!0}}return d(l)},et);p&&Y.set(p,St);try{const d=await St;if(d?.subscribed)return;const{data:l,error:h}=d||{};if(h){p&&J(p,null,h),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:h,status:"error",fetchStatus:"idle"}),v(t,"onFetchError",h),E(e,t,"onFetchError",h),$&&$({phase:"error",mode:"query",from:c,method:o,cacheKey:p,error:h.message||h,durationMs:(typeof performance<"u"?performance.now():Date.now())-ut});return}if(l!==void 0){if((o==="select"||o==="rpc")&&p){const w=J(p,l,null);w.gcTime=C?.gcTime||3e5}let u=l;L&&(0,f.isArray)(l)&&(i.__pages||(i.__pages=[]),r.direction==="previous"?i.__pages.unshift(l):i.__pages.push(l),u=i.__pages.flat(),Q&&(i.__nextPageParam=Q(l,i.__pages),i.__hasNextPage=i.__nextPageParam!=null),S&&(i.__prevPageParam=S(l,i.__pages),i.__hasPreviousPage=i.__prevPageParam!=null)),(0,f.isFunction)(P)&&(u=P(u,t,t.state)),T&&(u=T(u,t,t.state)),(!M||u!==void 0)&&U(t,u,q),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!0,error:null,status:"success",fetchStatus:"idle"}),v(t,"onFetchComplete",u),E(e,t,"onFetchComplete",u),$&&$({phase:"success",mode:"query",ok:!0,from:c,method:o,cacheKey:p,durationMs:(typeof performance<"u"?performance.now():Date.now())-ut})}}catch(d){k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:d,status:"error",fetchStatus:"idle"}),v(t,"onFetchError",d),E(e,t,"onFetchError",d),$&&$({phase:"error",mode:"query",from:c,method:o,cacheKey:p,error:d.message||String(d),durationMs:(typeof performance<"u"?performance.now():Date.now())-ut})}finally{p&&Y.delete(p)}},Bt=(e,t,s)=>{const r=e.on,n=t.__ref;n.__fetchListeners||(n.__fetchListeners=[]);const a=e.__runner||R;if(r==="submit"){const i=o=>{o.preventDefault(),a(e,t,s)},c=t.node;c&&(c.addEventListener("submit",i),n.__fetchListeners.push(()=>c.removeEventListener("submit",i)))}else if(r==="click"){const i=()=>a(e,t,s),c=t.node;c&&(c.addEventListener("click",i),n.__fetchListeners.push(()=>c.removeEventListener("click",i)))}else r==="stateChange"&&(n.__fetchOnStateChange=()=>a(e,t,s))},jt=(e,t,s)=>{const r=t.__ref;r.__fetchCleanups||(r.__fetchCleanups=[]),Qt();const n=e.refetchInterval;if(n){const a=typeof n=="number"?n:j(n);if(a>0){const i=setInterval(()=>{(e.refetchIntervalInBackground||typeof document>"u"||document.visibilityState==="visible")&&R(e,t,s,{force:!0})},a);r.__fetchCleanups.push(()=>clearInterval(i))}}if(e.refetchOnWindowFocus!==!1){const a=()=>{const i=nt(t,s),c=Ut(e,i),o=G(c),y=ht(e.cache);(!o||o.stale||Date.now()-o.time>(y?.staleTime||0))&&R(e,t,s,{force:!0})};B.focus.add(a),r.__fetchCleanups.push(()=>B.focus.delete(a))}if(e.refetchOnReconnect!==!1){const a=()=>R(e,t,s,{force:!0});B.online.add(a),r.__fetchCleanups.push(()=>B.online.delete(a))}},Kt=(e,t,s)=>{if(!t.optimistic)return null;const r=e.__ref,n=t.as,a=e.state?.parse?e.state.parse():(0,f.isObject)(e.state)?{...e.state}:e.state;r.__optimisticSnapshot=a;const i=(0,f.isFunction)(t.optimistic)?t.optimistic(s,a,e):t.optimistic;return i!==void 0&&U(e,i,n),a},yt=(e,t)=>{const s=e.__ref,r=s.__optimisticSnapshot;r!==void 0&&(U(e,r,t.as),delete s.__optimisticSnapshot)},Yt=async(e,t,s)=>{const r=s?.fetch;if(!r)return;const n=await _t(r,s);if(!n)return;const a=t.__ref,{method:i,from:c,fields:o,transform:y,as:F,on:X,auth:T,headers:ft,baseUrl:Z,invalidates:I,optimistic:q,onMutate:K,onSuccess:tt,onError:x,onSettled:N}=e;let _;if(o===!0||X==="submit")_=V(t);else if((0,f.isArray)(o)){const S=V(t);_={};for(const L of o)_[L]=S[L]}else t.state?.parse?_=t.state.parse():(0,f.isObject)(t.state)&&(_={...t.state});y&&(_=y(_,t,t.state)),(0,f.isFunction)(K)&&K(_,t,t.state);const g=q?Kt(t,e,_):null;a.__fetching=!0,k(t,{isFetching:!0,isLoading:!1,isStale:!1,isSuccess:!1,error:null,status:"pending",fetchStatus:"fetching"}),v(t,"onFetchStart"),E(e,t,"onFetchStart");const b=s?.analyze?.emitNetwork,Q=b?typeof performance<"u"?performance.now():Date.now():0;b&&b({phase:"start",mode:"mutation",from:c,method:i});try{if(T!==!1&&n.auth!==!1&&n.getSession){const A=await n.getSession();if(T===!0&&!A){g!==void 0&&yt(t,e);const C={message:"Not authenticated"};v(t,"onFetchError",C),E(e,t,"onFetchError",C);return}}const S=n[i];if(!(0,f.isFunction)(S))return;const L={from:c,data:_,headers:ft,baseUrl:Z};e.params&&(L.params=Ct(e.params,t,s));const z=nt(t,s);z&&(L.headers={...L.headers,"Accept-Language":z});const W=vt(e),P=await Ft(()=>S(L),W),{data:M,error:D}=P||{};if(D){g!==void 0&&yt(t,e),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:D,status:"error",fetchStatus:"idle"}),v(t,"onFetchError",D),(0,f.isFunction)(x)&&x(D,_,t),(0,f.isFunction)(N)&&N(null,D,_,t),b&&b({phase:"error",mode:"mutation",from:c,method:i,error:D.message||String(D),durationMs:(typeof performance<"u"?performance.now():Date.now())-Q});return}if(delete a.__optimisticSnapshot,M!==void 0){const A=F?{[F]:M}:M;t.state?.update&&t.state.update(A,{preventFetch:!0})}if(k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!0,error:null,status:"success",fetchStatus:"idle"}),v(t,"onFetchComplete",M),E(e,t,"onFetchComplete",M),(0,f.isFunction)(tt)&&tt(M,_,t),(0,f.isFunction)(N)&&N(M,null,_,t),b&&b({phase:"success",mode:"mutation",ok:!0,from:c,method:i,durationMs:(typeof performance<"u"?performance.now():Date.now())-Q}),I){const A=(0,f.isArray)(I)?I:[I];for(const C of A)if(C===!0||C==="*")for(const[et]of m)et.startsWith(c+":")&&H(et);else H(C)}}catch(S){g!==void 0&&yt(t,e),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:S,status:"error",fetchStatus:"idle"}),v(t,"onFetchError",S),E(e,t,"onFetchError",S),(0,f.isFunction)(x)&&x(S,_,t),(0,f.isFunction)(N)&&N(null,S,_,t),b&&b({phase:"error",mode:"mutation",from:c,method:i,error:S.message||String(S),durationMs:(typeof performance<"u"?performance.now():Date.now())-Q})}finally{a.__fetching=!1}},gt=(e,t,s,r)=>{if(!e||!r?.fetch)return;const a=(0,f.exec)(e,t);if(!a)return;const i=(0,f.isArray)(a)?a.map(o=>Dt((0,f.exec)(o,t),t)).filter(Boolean):[Dt(a,t)].filter(Boolean);for(const o of i){const y=o.method==="insert"||o.method==="update"||o.method==="upsert"||o.method==="delete",F=y?Yt:R;o.on==="create"?F(o,t,r):Promise.resolve().then(()=>{Bt({...o,__runner:F},t,r)}),!y&&o.on==="create"&&(o.refetchInterval||o.refetchOnWindowFocus!==!1||o.refetchOnReconnect!==!1)&&jt(o,t,r)}const c=t.__ref;c.refetch=o=>{for(const y of i)R(y,t,r,{force:!0,...o})},c.fetchNextPage=()=>{const o=i[0];if(!o||!o.infinite)return;const y=c.__nextPageParam;if(y==null)return;const F={...o,cursor:y};R(F,t,r,{direction:"next",force:!0})},c.fetchPreviousPage=()=>{const o=i[0];if(!o||!o.infinite)return;const y=c.__prevPageParam;if(y==null)return;const F={...o,cursor:y};R(F,t,r,{direction:"previous",force:!0})}},Gt={invalidateQueries:e=>{if(!e){H();return}if((0,f.isString)(e))for(const[t]of m)(t.startsWith(e)||t.includes(e))&&H(t);else if((0,f.isArray)(e)){const t=e.join(":");for(const[s]of m)s.includes(t)&&H(s)}},removeQueries:e=>{if(!e){at();return}if((0,f.isString)(e))for(const[t]of m)(t.startsWith(e)||t.includes(e))&&at(t)},getQueryData:e=>G(e)?.data??void 0,setQueryData:(e,t)=>{const s=G(e),r=(0,f.isFunction)(t)?t(s?.data):t;J(e,r,null)},prefetchQuery:async(e,t)=>{const s=t?.fetch;if(!s)return;const r=await _t(s,t);if(!r)return;const n=e.cache?.key||`${e.from}:${e.method||"select"}:${JSON.stringify(e.params||"")}`,a=r[e.method||"select"];if(!(0,f.isFunction)(a))return;const i=await a({from:e.from,params:e.params,limit:e.limit,offset:e.offset,order:e.order,single:e.single});if(i?.data!==void 0&&!i?.error){const c=J(n,i.data,null);c.gcTime=ht(e.cache)?.gcTime||3e5}return i},getCache:()=>m,clear:()=>at(),dropNonLang:e=>{if(!e)return;const t=`:${e}`;for(const[s]of m)s.match(/:([a-z]{2,3})$/i)&&(s.endsWith(t)||at(s))}},Jt={name:"fetch",create(e){const t=e.fetch;t&&(e.parent||Y.clear(),gt(t,e,e.state,e.context))}};var Ht=gt;
|
package/dist/esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isArray as j,isFunction as d,isObject as K,isString as Y,exec as St}from"@symbo.ls/utils";const Pt=["select","rpc","insert","update","delete","subscribe"],wt={supabase:()=>import("./adapters/supabase.js"),rest:()=>import("./adapters/rest.js"),local:()=>import("./adapters/local.js")},Qt=(e,t)=>{wt[e]=t},Wt=e=>{const t={};for(const s of Pt)e[s]&&(t[s]=e[s]);return t.name=e.name||"custom",t},At=async e=>{if(!e)return null;if(typeof e.select=="function")return e;const{adapter:t,...s}=e,r=typeof t=="string"?t:typeof e=="string"?e:null;if(!r)return null;const n=wt[r];if(!n)throw new Error(`Unknown db adapter: "${r}". Use registerAdapter() for adapters with optional deps.`);return(await n()).setup(s)},G=e=>{if(!e)return 0;if(typeof e=="number")return e;const t=e.match(/^(\d+)(ms|s|m|h)$/);if(!t)return 0;const s=parseInt(t[1]),r=t[2];return r==="ms"?s:r==="s"?s*1e3:r==="m"?s*6e4:r==="h"?s*36e5:0},m=new Map,O=new Map,H=new Map,kt=(e,t)=>{if(e.cache?.key)return e.cache.key;const s=Nt(e.params),r=`${e.from}:${e.method}:${JSON.stringify(s||"")}`;return t?`${r}:${t}`:r},V=e=>m.get(e)||null,X=(e,t,s)=>{const r=m.get(e),n={data:t,error:s,time:Date.now(),stale:!1};m.set(e,n);const a=O.get(e);if(a)for(const i of a)d(i)&&i(n);return n},Z=e=>{if(e){const t=m.get(e);t&&(t.stale=!0);return}for(const[,t]of m)t.stale=!0},it=e=>{if(e){m.delete(e);return}m.clear()},jt=(e,t)=>(O.has(e)||O.set(e,new Set),O.get(e).add(t),()=>{const s=O.get(e);s&&(s.delete(t),s.size===0&&O.delete(e))}),lt=e=>!e&&e!==!1?{staleTime:6e4,gcTime:3e5}:e===!1?null:e===!0?{staleTime:6e4,gcTime:3e5}:typeof e=="number"?{staleTime:e,gcTime:Math.max(e*5,3e5)}:Y(e)?{staleTime:G(e),gcTime:3e5}:{staleTime:G(e.stale||e.staleTime)||6e4,gcTime:G(e.gc||e.gcTime||e.expire)||3e5,key:e.key};let nt=null;const Mt=()=>{nt||(nt=setInterval(()=>{const e=Date.now();for(const[t,s]of m){const r=O.get(t);!(r&&r.size>0)&&e-s.time>(s.gcTime||3e5)&&m.delete(t)}},3e4),nt.unref&&nt.unref())};Mt();const mt=3,ht=e=>Math.min(1e3*2**e,3e4),vt=e=>{const t=e.retry;return t===!1?{count:0}:t===!0||t===void 0?{count:mt,delay:ht}:typeof t=="number"?{count:t,delay:ht}:{count:t.count??mt,delay:d(t.delay)?t.delay:typeof t.delay=="number"?()=>t.delay:ht}},Ft=async(e,t)=>{const{count:s,delay:r}=t;let n;for(let a=0;a<=s;a++)try{const i=await e();if(i?.error){if(n=i.error,a<s){const f=d(r)?r(a,n):r;await new Promise(o=>setTimeout(o,f));continue}return i}return i}catch(i){if(n=i,a<s){const f=d(r)?r(a,i):r;await new Promise(o=>setTimeout(o,f));continue}throw i}return{data:null,error:n}},B={focus:new Set,online:new Set};let bt=!1;const $t=()=>{if(bt||typeof window>"u")return;bt=!0;const e=()=>{for(const s of B.focus)s()},t=()=>{for(const s of B.online)s()};window.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&e()}),window.addEventListener("focus",e),window.addEventListener("online",t)},Dt=(e,t)=>{const s=t.__ref;if(e===!0)return{from:s.__state||t.key,method:"select",query:!0,on:"create"};if(Y(e))return{from:e,method:"select",query:!0,on:"create"};if(K(e)){const r={...e};return r.from=r.from||s.__state||t.key,r.method=r.method||"select",r.on=r.on||"create",r.query===void 0&&(r.query=!0),r}return null},Nt=e=>(!e||d(e),e),ot=(e,t)=>{const s=e?.state?.root||t?.state?.root;if(s?.lang)return s.lang},Ct=(e,t,s)=>{let r;if(!e)r=void 0;else if(d(e))r=e(t,t.state);else{r={};for(const n in e){const a=e[n];r[n]=d(a)?a(t,t.state):a}}return r},pt=async(e,t)=>{if(!e||e.__authInitialized||(e.__authInitialized=!0,!e.getSession))return;const s=(r,n)=>{const a=t.state?.root;a?.update&&a.update({auth:{user:r,session:n,loading:!1}})};try{const r=await e.getSession();s(r?.user||null,r)}catch(r){console.warn("[fetch] Failed to restore auth session:",r.message)}e.onAuthStateChange&&e.onAuthStateChange((r,n)=>{s(n?.user||null,n)})},_t=async(e,t)=>{if(d(e.select))return e.auth!==!1&&await pt(e,t),e;if(e.__resolved)return e.auth!==!1&&await pt(e.__resolved,t),e.__resolved;if(e.__resolving)return e.__resolving;e.__resolving=At(e);const s=await e.__resolving;return delete e.__resolving,s?(s.auth=e.auth,s.url=e.url,s.key=e.key,e.__resolved=s,t.fetch=s,e.auth!==!1&&await pt(s,t),s):null},F=(e,t,...s)=>{const r=d(e[t])?e[t]:null;r&&r.call(e,...s,e,e.state,e.context)},T=(e,t,s,...r)=>{const n=e&&d(e[s])?e[s]:null;n&&n.call(t,...r,t,t.state,t.context)},tt=e=>{const t={},s=e.node;if(!s)return t;if(s.tagName==="FORM"){const n=new FormData(s);for(const[a,i]of n.entries())t[a]=i;return t}const r=s.querySelectorAll("input, textarea, select");for(let n=0;n<r.length;n++){const a=r[n],i=a.name||a.getAttribute("name");i&&(a.type==="checkbox"?t[i]=a.checked:a.type==="file"?t[i]=a.files:t[i]=a.value)}return t},U=(e,t,s,r={})=>{const n=s&&s.startsWith("~/"),a=n&&e.state?.root||e.state;if(a?.update)if(n){const i=s.slice(2);t&&typeof t=="object"&&!Array.isArray(t)&&i in t?a.update(t,{preventFetch:!0,...r}):a.update({[i]:t},{preventFetch:!0,...r})}else{const i=s?{[s]:t}:t;a.update(i,{preventFetch:!0,...r})}},k=(e,t)=>{const s=e?.__ref;s&&(s.__fetchStatus=t,s.__fetching=t.isFetching,s.__fetchError=t.error)},I=async(e,t,s,r={})=>{const n=s?.fetch;if(!n||!t||!t.__ref||e.enabled===!1||d(e.enabled)&&!e.enabled(t,t.state)||e.skip===!0||d(e.skip)&&e.skip(t,t.state))return;const a=await _t(n,s);if(!a||!t.__ref)return;const i=t.__ref,{from:f,method:o,query:y,params:b,cache:et,transform:D,single:ft,auth:st,fields:N,as:R,limit:J,offset:rt,order:x,headers:q,baseUrl:_,page:g,cursor:v,getNextPageParam:Q,getPreviousPageParam:S,infinite:L,placeholderData:z,initialData:W,select:P,keepPreviousData:M}=e;let C=Y(P)?P:void 0;if(y&&d(t.getQuery)){const l=t.getQuery(a.name||"paths");l&&(C=l.select||l.length&&l.join(",")||C)}const A=Ct(b,t,s),E=lt(et),at=vt(e),ct=ot(t,s),Tt=ct?`:${ct}`:"",p=E?et?.key||`${f}:${o}:${JSON.stringify(A||"")}${L?":infinite":""}${g?":p"+JSON.stringify(g):""}${Tt}`:null;if(!i.__fetchInitialized&&p&&(i.__fetchInitialized=!0,W!==void 0)){const l=d(W)?W():W;X(p,l,null)}if((o==="select"||o==="rpc")&&p&&E){const l=V(p);if(l&&!l.error){const u=Date.now()-l.time,h=l.stale||u>(E.staleTime||0);let c=l.data;if(d(P)&&(c=P(c,t,t.state)),D&&(c=D(c,t,t.state)),U(t,c,R),!h){k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!0,error:null,status:"success",fetchStatus:"idle"});return}}else if(z!==void 0){const u=d(z)?z(t,t.state):z;u!==void 0&&U(t,u,R)}}if(p&&H.has(p)&&!r.force){const l=H.get(p);try{const u=await Promise.race([l,new Promise((h,c)=>setTimeout(()=>c("DEDUP_TIMEOUT"),15e3))]);if(u?.data!==void 0){let h=u.data;d(P)&&(h=P(h,t,t.state)),D&&(h=D(h,t,t.state)),U(t,h,R),F(t,"onFetchComplete",h),T(e,t,"onFetchComplete",h)}}catch{}return}const Lt=!V(p)?.data;k(t,{isFetching:!0,isLoading:Lt,isStale:!1,isSuccess:!1,error:null,status:"pending",fetchStatus:"fetching"}),F(t,"onFetchStart"),T(e,t,"onFetchStart");const $=s?.analyze?.emitNetwork,ut=$?typeof performance<"u"?performance.now():Date.now():0;$&&$({phase:"start",mode:"query",from:f,method:o,cacheKey:p,lang:ct});const gt=Ft(async()=>{if(st!==!1&&a.auth!==!1&&a.getSession){const c=await a.getSession();if(st===!0&&!c){const w={message:"Not authenticated"};return k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:w,status:"error",fetchStatus:"idle"}),F(t,"onFetchError",w),T(e,t,"onFetchError",w),{data:null,error:w}}}const l=a[o];if(!d(l))return{data:null,error:{message:`Method "${o}" not found on adapter`}};const u={from:f,select:C,params:A,single:ft,limit:J,offset:rt,order:x,headers:q,baseUrl:_},h=ot(t,s);if(h&&(u.headers={...u.headers,"Accept-Language":h}),g!==void 0){if(K(g))g.offset!==void 0&&(u.offset=g.offset),g.limit!==void 0&&(u.limit=g.limit),g.cursor!==void 0&&(u.params={...u.params,cursor:g.cursor});else if(typeof g=="number"){const c=e.pageSize||J||20;u.offset=(g-1)*c,u.limit=c}}if(v!==void 0&&(u.params={...u.params,cursor:v}),o==="insert"||o==="update"||o==="upsert"){let c;if(N===!0||e.on==="submit")c=tt(t);else if(j(N)){const w=tt(t);c={};for(const dt of N)c[dt]=w[dt]}else t.state?.parse?c=t.state.parse():K(t.state)&&(c={...t.state});D&&(c=D(c,t,t.state)),u.data=c}if(o==="rpc"){let c=A;if(e.on==="submit"){const w=tt(t);c=e.transformParams?e.transformParams(w,t,t.state):w}u.params=c}if(o==="subscribe"){const c=a.subscribe({from:f,params:A,on:e.subscribeOn},(w,dt,Ut)=>{U(t,w,R),F(t,"onFetchComplete",w),T(e,t,"onFetchComplete",w)});return i.__unsubscribe=c,{data:null,error:null,subscribed:!0}}return l(u)},at);p&&H.set(p,gt);try{const l=await gt;if(l?.subscribed)return;const{data:u,error:h}=l||{};if(h){p&&X(p,null,h),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:h,status:"error",fetchStatus:"idle"}),F(t,"onFetchError",h),T(e,t,"onFetchError",h),$&&$({phase:"error",mode:"query",from:f,method:o,cacheKey:p,error:h.message||h,durationMs:(typeof performance<"u"?performance.now():Date.now())-ut});return}if(u!==void 0){if((o==="select"||o==="rpc")&&p){const w=X(p,u,null);w.gcTime=E?.gcTime||3e5}let c=u;L&&j(u)&&(i.__pages||(i.__pages=[]),r.direction==="previous"?i.__pages.unshift(u):i.__pages.push(u),c=i.__pages.flat(),Q&&(i.__nextPageParam=Q(u,i.__pages),i.__hasNextPage=i.__nextPageParam!=null),S&&(i.__prevPageParam=S(u,i.__pages),i.__hasPreviousPage=i.__prevPageParam!=null)),d(P)&&(c=P(c,t,t.state)),D&&(c=D(c,t,t.state)),(!M||c!==void 0)&&U(t,c,R),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!0,error:null,status:"success",fetchStatus:"idle"}),F(t,"onFetchComplete",c),T(e,t,"onFetchComplete",c),$&&$({phase:"success",mode:"query",ok:!0,from:f,method:o,cacheKey:p,durationMs:(typeof performance<"u"?performance.now():Date.now())-ut})}}catch(l){k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:l,status:"error",fetchStatus:"idle"}),F(t,"onFetchError",l),T(e,t,"onFetchError",l),$&&$({phase:"error",mode:"query",from:f,method:o,cacheKey:p,error:l.message||String(l),durationMs:(typeof performance<"u"?performance.now():Date.now())-ut})}finally{p&&H.delete(p)}},qt=(e,t,s)=>{const r=e.on,n=t.__ref;n.__fetchListeners||(n.__fetchListeners=[]);const a=e.__runner||I;if(r==="submit"){const i=o=>{o.preventDefault(),a(e,t,s)},f=t.node;f&&(f.addEventListener("submit",i),n.__fetchListeners.push(()=>f.removeEventListener("submit",i)))}else if(r==="click"){const i=()=>a(e,t,s),f=t.node;f&&(f.addEventListener("click",i),n.__fetchListeners.push(()=>f.removeEventListener("click",i)))}else r==="stateChange"&&(n.__fetchOnStateChange=()=>a(e,t,s))},It=(e,t,s)=>{const r=t.__ref;r.__fetchCleanups||(r.__fetchCleanups=[]),$t();const n=e.refetchInterval;if(n){const a=typeof n=="number"?n:G(n);if(a>0){const i=setInterval(()=>{(e.refetchIntervalInBackground||typeof document>"u"||document.visibilityState==="visible")&&I(e,t,s,{force:!0})},a);r.__fetchCleanups.push(()=>clearInterval(i))}}if(e.refetchOnWindowFocus!==!1){const a=()=>{const i=ot(t,s),f=kt(e,i),o=V(f),y=lt(e.cache);(!o||o.stale||Date.now()-o.time>(y?.staleTime||0))&&I(e,t,s,{force:!0})};B.focus.add(a),r.__fetchCleanups.push(()=>B.focus.delete(a))}if(e.refetchOnReconnect!==!1){const a=()=>I(e,t,s,{force:!0});B.online.add(a),r.__fetchCleanups.push(()=>B.online.delete(a))}},Rt=(e,t,s)=>{if(!t.optimistic)return null;const r=e.__ref,n=t.as,a=e.state?.parse?e.state.parse():K(e.state)?{...e.state}:e.state;r.__optimisticSnapshot=a;const i=d(t.optimistic)?t.optimistic(s,a,e):t.optimistic;return i!==void 0&&U(e,i,n),a},yt=(e,t)=>{const s=e.__ref,r=s.__optimisticSnapshot;r!==void 0&&(U(e,r,t.as),delete s.__optimisticSnapshot)},zt=async(e,t,s)=>{const r=s?.fetch;if(!r)return;const n=await _t(r,s);if(!n)return;const a=t.__ref,{method:i,from:f,fields:o,transform:y,as:b,on:et,auth:D,headers:ft,baseUrl:st,invalidates:N,optimistic:R,onMutate:J,onSuccess:rt,onError:x,onSettled:q}=e;let _;if(o===!0||et==="submit")_=tt(t);else if(j(o)){const S=tt(t);_={};for(const L of o)_[L]=S[L]}else t.state?.parse?_=t.state.parse():K(t.state)&&(_={...t.state});y&&(_=y(_,t,t.state)),d(J)&&J(_,t,t.state);const g=R?Rt(t,e,_):null;a.__fetching=!0,k(t,{isFetching:!0,isLoading:!1,isStale:!1,isSuccess:!1,error:null,status:"pending",fetchStatus:"fetching"}),F(t,"onFetchStart"),T(e,t,"onFetchStart");const v=s?.analyze?.emitNetwork,Q=v?typeof performance<"u"?performance.now():Date.now():0;v&&v({phase:"start",mode:"mutation",from:f,method:i});try{if(D!==!1&&n.auth!==!1&&n.getSession){const A=await n.getSession();if(D===!0&&!A){g!==void 0&&yt(t,e);const E={message:"Not authenticated"};F(t,"onFetchError",E),T(e,t,"onFetchError",E);return}}const S=n[i];if(!d(S))return;const L={from:f,data:_,headers:ft,baseUrl:st};e.params&&(L.params=Ct(e.params,t,s));const z=ot(t,s);z&&(L.headers={...L.headers,"Accept-Language":z});const W=vt(e),P=await Ft(()=>S(L),W),{data:M,error:C}=P||{};if(C){g!==void 0&&yt(t,e),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:C,status:"error",fetchStatus:"idle"}),F(t,"onFetchError",C),d(x)&&x(C,_,t),d(q)&&q(null,C,_,t),v&&v({phase:"error",mode:"mutation",from:f,method:i,error:C.message||String(C),durationMs:(typeof performance<"u"?performance.now():Date.now())-Q});return}if(delete a.__optimisticSnapshot,M!==void 0){const A=b?{[b]:M}:M;t.state?.update&&t.state.update(A,{preventFetch:!0})}if(k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!0,error:null,status:"success",fetchStatus:"idle"}),F(t,"onFetchComplete",M),T(e,t,"onFetchComplete",M),d(rt)&&rt(M,_,t),d(q)&&q(M,null,_,t),v&&v({phase:"success",mode:"mutation",ok:!0,from:f,method:i,durationMs:(typeof performance<"u"?performance.now():Date.now())-Q}),N){const A=j(N)?N:[N];for(const E of A)if(E===!0||E==="*")for(const[at]of m)at.startsWith(f+":")&&Z(at);else Z(E)}}catch(S){g!==void 0&&yt(t,e),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:S,status:"error",fetchStatus:"idle"}),F(t,"onFetchError",S),T(e,t,"onFetchError",S),d(x)&&x(S,_,t),d(q)&&q(null,S,_,t),v&&v({phase:"error",mode:"mutation",from:f,method:i,error:S.message||String(S),durationMs:(typeof performance<"u"?performance.now():Date.now())-Q})}finally{a.__fetching=!1}},Et=(e,t,s,r)=>{if(!e||!r?.fetch)return;const a=St(e,t);if(!a)return;const i=j(a)?a.map(o=>Dt(St(o,t),t)).filter(Boolean):[Dt(a,t)].filter(Boolean);for(const o of i){const y=o.method==="insert"||o.method==="update"||o.method==="upsert"||o.method==="delete",b=y?zt:I;o.on==="create"?b(o,t,r):Promise.resolve().then(()=>{qt({...o,__runner:b},t,r)}),!y&&o.on==="create"&&(o.refetchInterval||o.refetchOnWindowFocus!==!1||o.refetchOnReconnect!==!1)&&It(o,t,r)}const f=t.__ref;f.refetch=o=>{for(const y of i)I(y,t,r,{force:!0,...o})},f.fetchNextPage=()=>{const o=i[0];if(!o||!o.infinite)return;const y=f.__nextPageParam;if(y==null)return;const b={...o,cursor:y};I(b,t,r,{direction:"next",force:!0})},f.fetchPreviousPage=()=>{const o=i[0];if(!o||!o.infinite)return;const y=f.__prevPageParam;if(y==null)return;const b={...o,cursor:y};I(b,t,r,{direction:"previous",force:!0})}},Bt={invalidateQueries:e=>{if(!e){Z();return}if(Y(e))for(const[t]of m)(t.startsWith(e)||t.includes(e))&&Z(t);else if(j(e)){const t=e.join(":");for(const[s]of m)s.includes(t)&&Z(s)}},removeQueries:e=>{if(!e){it();return}if(Y(e))for(const[t]of m)(t.startsWith(e)||t.includes(e))&&it(t)},getQueryData:e=>V(e)?.data??void 0,setQueryData:(e,t)=>{const s=V(e),r=d(t)?t(s?.data):t;X(e,r,null)},prefetchQuery:async(e,t)=>{const s=t?.fetch;if(!s)return;const r=await _t(s,t);if(!r)return;const n=e.cache?.key||`${e.from}:${e.method||"select"}:${JSON.stringify(e.params||"")}`,a=r[e.method||"select"];if(!d(a))return;const i=await a({from:e.from,params:e.params,limit:e.limit,offset:e.offset,order:e.order,single:e.single});if(i?.data!==void 0&&!i?.error){const f=X(n,i.data,null);f.gcTime=lt(e.cache)?.gcTime||3e5}return i},getCache:()=>m,clear:()=>it(),dropNonLang:e=>{if(!e)return;const t=`:${e}`;for(const[s]of m)s.match(/:([a-z]{2,3})$/i)&&(s.endsWith(t)||it(s))}},Jt={name:"fetch",create(e){const t=e.fetch;t&&(e.parent||H.clear(),Et(t,e,e.state,e.context))}};var Kt=Et;export{Wt as createAdapter,Kt as default,Et as executeFetch,Jt as fetchPlugin,pt as initAdapterAuth,G as parseDuration,Bt as queryClient,Qt as registerAdapter,At as resolveDb};
|
|
1
|
+
import{isArray as B,isFunction as l,isObject as Y,isString as G,exec as wt}from"@symbo.ls/utils";const At=["select","rpc","insert","update","delete","subscribe"],it=Symbol.for("@symbo.ls/fetch:BUILTIN_ADAPTERS"),mt=(()=>{if(typeof globalThis<"u"&&globalThis[it])return globalThis[it];const e={supabase:()=>import("./adapters/supabase.js"),rest:()=>import("./adapters/rest.js"),local:()=>import("./adapters/local.js")};if(typeof globalThis<"u")try{return Object.defineProperty(globalThis,it,{value:e,writable:!1,configurable:!1,enumerable:!1}),globalThis[it]}catch{}return e})(),Wt=(e,t)=>{mt[e]=t},Bt=e=>{const t={};for(const s of At)e[s]&&(t[s]=e[s]);return t.name=e.name||"custom",t},kt=async e=>{if(!e)return null;if(typeof e.select=="function")return e;const{adapter:t,...s}=e,r=typeof t=="string"?t:typeof e=="string"?e:null;if(!r)return null;const n=mt[r];if(!n)throw new Error(`Unknown db adapter: "${r}". Use registerAdapter() for adapters with optional deps.`);return(await n()).setup(s)},J=e=>{if(!e)return 0;if(typeof e=="number")return e;const t=e.match(/^(\d+)(ms|s|m|h)$/);if(!t)return 0;const s=parseInt(t[1]),r=t[2];return r==="ms"?s:r==="s"?s*1e3:r==="m"?s*6e4:r==="h"?s*36e5:0},m=new Map,O=new Map,H=new Map,Mt=(e,t)=>{if(e.cache?.key)return e.cache.key;const s=Nt(e.params),r=`${e.from}:${e.method}:${JSON.stringify(s||"")}`;return t?`${r}:${t}`:r},V=e=>m.get(e)||null,X=(e,t,s)=>{const r=m.get(e),n={data:t,error:s,time:Date.now(),stale:!1};m.set(e,n);const a=O.get(e);if(a)for(const i of a)l(i)&&i(n);return n},Z=e=>{if(e){const t=m.get(e);t&&(t.stale=!0);return}for(const[,t]of m)t.stale=!0},nt=e=>{if(e){m.delete(e);return}m.clear()},jt=(e,t)=>(O.has(e)||O.set(e,new Set),O.get(e).add(t),()=>{const s=O.get(e);s&&(s.delete(t),s.size===0&&O.delete(e))}),ht=e=>!e&&e!==!1?{staleTime:6e4,gcTime:3e5}:e===!1?null:e===!0?{staleTime:6e4,gcTime:3e5}:typeof e=="number"?{staleTime:e,gcTime:Math.max(e*5,3e5)}:G(e)?{staleTime:J(e),gcTime:3e5}:{staleTime:J(e.stale||e.staleTime)||6e4,gcTime:J(e.gc||e.gcTime||e.expire)||3e5,key:e.key};let ot=null;const $t=()=>{ot||(ot=setInterval(()=>{const e=Date.now();for(const[t,s]of m){const r=O.get(t);!(r&&r.size>0)&&e-s.time>(s.gcTime||3e5)&&m.delete(t)}},3e4),ot.unref&&ot.unref())};$t();const bt=3,pt=e=>Math.min(1e3*2**e,3e4),vt=e=>{const t=e.retry;return t===!1?{count:0}:t===!0||t===void 0?{count:bt,delay:pt}:typeof t=="number"?{count:t,delay:pt}:{count:t.count??bt,delay:l(t.delay)?t.delay:typeof t.delay=="number"?()=>t.delay:pt}},Ft=async(e,t)=>{const{count:s,delay:r}=t;let n;for(let a=0;a<=s;a++)try{const i=await e();if(i?.error){if(n=i.error,a<s){const f=l(r)?r(a,n):r;await new Promise(o=>setTimeout(o,f));continue}return i}return i}catch(i){if(n=i,a<s){const f=l(r)?r(a,i):r;await new Promise(o=>setTimeout(o,f));continue}throw i}return{data:null,error:n}},j={focus:new Set,online:new Set};let Tt=!1;const It=()=>{if(Tt||typeof window>"u")return;Tt=!0;const e=()=>{for(const s of j.focus)s()},t=()=>{for(const s of j.online)s()};window.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&e()}),window.addEventListener("focus",e),window.addEventListener("online",t)},Dt=(e,t)=>{const s=t.__ref;if(e===!0)return{from:s.__state||t.key,method:"select",query:!0,on:"create"};if(G(e))return{from:e,method:"select",query:!0,on:"create"};if(Y(e)){const r={...e};return r.from=r.from||s.__state||t.key,r.method=r.method||"select",r.on=r.on||"create",r.query===void 0&&(r.query=!0),r}return null},Nt=e=>(!e||l(e),e),ft=(e,t)=>{const s=e?.state?.root||t?.state?.root;if(s?.lang)return s.lang},Ct=(e,t,s)=>{let r;if(!e)r=void 0;else if(l(e))r=e(t,t.state);else{r={};for(const n in e){const a=e[n];r[n]=l(a)?a(t,t.state):a}}return r},_t=async(e,t)=>{if(!e||e.__authInitialized||(e.__authInitialized=!0,!e.getSession))return;const s=(r,n)=>{const a=t.state?.root;a?.update&&a.update({auth:{user:r,session:n,loading:!1}})};try{const r=await e.getSession();s(r?.user||null,r)}catch(r){console.warn("[fetch] Failed to restore auth session:",r.message)}e.onAuthStateChange&&e.onAuthStateChange((r,n)=>{s(n?.user||null,n)})},yt=async(e,t)=>{if(l(e.select))return e.auth!==!1&&await _t(e,t),e;if(e.__resolved)return e.auth!==!1&&await _t(e.__resolved,t),e.__resolved;if(e.__resolving)return e.__resolving;e.__resolving=kt(e);const s=await e.__resolving;return delete e.__resolving,s?(s.auth=e.auth,s.url=e.url,s.key=e.key,e.__resolved=s,t.fetch=s,e.auth!==!1&&await _t(s,t),s):null},v=(e,t,...s)=>{const r=l(e[t])?e[t]:null;r&&r.call(e,...s,e,e.state,e.context)},E=(e,t,s,...r)=>{const n=e&&l(e[s])?e[s]:null;n&&n.call(t,...r,t,t.state,t.context)},tt=e=>{const t={},s=e.node;if(!s)return t;if(s.tagName==="FORM"){const n=new FormData(s);for(const[a,i]of n.entries())t[a]=i;return t}const r=s.querySelectorAll("input, textarea, select");for(let n=0;n<r.length;n++){const a=r[n],i=a.name||a.getAttribute("name");i&&(a.type==="checkbox"?t[i]=a.checked:a.type==="file"?t[i]=a.files:t[i]=a.value)}return t},U=(e,t,s,r={})=>{const n=s&&s.startsWith("~/"),a=n&&e.state?.root||e.state;if(a?.update)if(n){const i=s.slice(2);t&&typeof t=="object"&&!Array.isArray(t)&&i in t?a.update(t,{preventFetch:!0,...r}):a.update({[i]:t},{preventFetch:!0,...r})}else{const i=s?{[s]:t}:t;a.update(i,{preventFetch:!0,...r})}},k=(e,t)=>{const s=e?.__ref;s&&(s.__fetchStatus=t,s.__fetching=t.isFetching,s.__fetchError=t.error)},R=async(e,t,s,r={})=>{const n=s?.fetch;if(!n||!t||!t.__ref||e.enabled===!1||l(e.enabled)&&!e.enabled(t,t.state)||e.skip===!0||l(e.skip)&&e.skip(t,t.state))return;const a=await yt(n,s);if(!a||!t.__ref)return;const i=t.__ref,{from:f,method:o,query:y,params:F,cache:et,transform:T,single:ct,auth:st,fields:I,as:q,limit:K,offset:rt,order:x,headers:N,baseUrl:_,page:g,cursor:b,getNextPageParam:Q,getPreviousPageParam:S,infinite:L,placeholderData:z,initialData:W,select:P,keepPreviousData:M}=e;let D=G(P)?P:void 0;if(y&&l(t.getQuery)){const d=t.getQuery(a.name||"paths");d&&(D=d.select||d.length&&d.join(",")||D)}const A=Ct(F,t,s),C=ht(et),at=vt(e),ut=ft(t,s),Lt=ut?`:${ut}`:"",p=C?et?.key||`${f}:${o}:${JSON.stringify(A||"")}${L?":infinite":""}${g?":p"+JSON.stringify(g):""}${Lt}`:null;if(!i.__fetchInitialized&&p&&(i.__fetchInitialized=!0,W!==void 0)){const d=l(W)?W():W;X(p,d,null)}if((o==="select"||o==="rpc")&&p&&C){const d=V(p);if(d&&!d.error){const u=Date.now()-d.time,h=d.stale||u>(C.staleTime||0);let c=d.data;if(l(P)&&(c=P(c,t,t.state)),T&&(c=T(c,t,t.state)),U(t,c,q),!h){k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!0,error:null,status:"success",fetchStatus:"idle"});return}}else if(z!==void 0){const u=l(z)?z(t,t.state):z;u!==void 0&&U(t,u,q)}}if(p&&H.has(p)&&!r.force){const d=H.get(p);try{const u=await Promise.race([d,new Promise((h,c)=>setTimeout(()=>c("DEDUP_TIMEOUT"),15e3))]);if(u?.data!==void 0){let h=u.data;l(P)&&(h=P(h,t,t.state)),T&&(h=T(h,t,t.state)),U(t,h,q),v(t,"onFetchComplete",h),E(e,t,"onFetchComplete",h)}}catch{}return}const Pt=!V(p)?.data;k(t,{isFetching:!0,isLoading:Pt,isStale:!1,isSuccess:!1,error:null,status:"pending",fetchStatus:"fetching"}),v(t,"onFetchStart"),E(e,t,"onFetchStart");const $=s?.analyze?.emitNetwork,lt=$?typeof performance<"u"?performance.now():Date.now():0;$&&$({phase:"start",mode:"query",from:f,method:o,cacheKey:p,lang:ut});const St=Ft(async()=>{if(st!==!1&&a.auth!==!1&&a.getSession){const c=await a.getSession();if(st===!0&&!c){const w={message:"Not authenticated"};return k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:w,status:"error",fetchStatus:"idle"}),v(t,"onFetchError",w),E(e,t,"onFetchError",w),{data:null,error:w}}}const d=a[o];if(!l(d))return{data:null,error:{message:`Method "${o}" not found on adapter`}};const u={from:f,select:D,params:A,single:ct,limit:K,offset:rt,order:x,headers:N,baseUrl:_},h=ft(t,s);if(h&&(u.headers={...u.headers,"Accept-Language":h}),g!==void 0){if(Y(g))g.offset!==void 0&&(u.offset=g.offset),g.limit!==void 0&&(u.limit=g.limit),g.cursor!==void 0&&(u.params={...u.params,cursor:g.cursor});else if(typeof g=="number"){const c=e.pageSize||K||20;u.offset=(g-1)*c,u.limit=c}}if(b!==void 0&&(u.params={...u.params,cursor:b}),o==="insert"||o==="update"||o==="upsert"){let c;if(I===!0||e.on==="submit")c=tt(t);else if(B(I)){const w=tt(t);c={};for(const dt of I)c[dt]=w[dt]}else t.state?.parse?c=t.state.parse():Y(t.state)&&(c={...t.state});T&&(c=T(c,t,t.state)),u.data=c}if(o==="rpc"){let c=A;if(e.on==="submit"){const w=tt(t);c=e.transformParams?e.transformParams(w,t,t.state):w}u.params=c}if(o==="subscribe"){const c=a.subscribe({from:f,params:A,on:e.subscribeOn},(w,dt,xt)=>{U(t,w,q),v(t,"onFetchComplete",w),E(e,t,"onFetchComplete",w)});return i.__unsubscribe=c,{data:null,error:null,subscribed:!0}}return d(u)},at);p&&H.set(p,St);try{const d=await St;if(d?.subscribed)return;const{data:u,error:h}=d||{};if(h){p&&X(p,null,h),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:h,status:"error",fetchStatus:"idle"}),v(t,"onFetchError",h),E(e,t,"onFetchError",h),$&&$({phase:"error",mode:"query",from:f,method:o,cacheKey:p,error:h.message||h,durationMs:(typeof performance<"u"?performance.now():Date.now())-lt});return}if(u!==void 0){if((o==="select"||o==="rpc")&&p){const w=X(p,u,null);w.gcTime=C?.gcTime||3e5}let c=u;L&&B(u)&&(i.__pages||(i.__pages=[]),r.direction==="previous"?i.__pages.unshift(u):i.__pages.push(u),c=i.__pages.flat(),Q&&(i.__nextPageParam=Q(u,i.__pages),i.__hasNextPage=i.__nextPageParam!=null),S&&(i.__prevPageParam=S(u,i.__pages),i.__hasPreviousPage=i.__prevPageParam!=null)),l(P)&&(c=P(c,t,t.state)),T&&(c=T(c,t,t.state)),(!M||c!==void 0)&&U(t,c,q),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!0,error:null,status:"success",fetchStatus:"idle"}),v(t,"onFetchComplete",c),E(e,t,"onFetchComplete",c),$&&$({phase:"success",mode:"query",ok:!0,from:f,method:o,cacheKey:p,durationMs:(typeof performance<"u"?performance.now():Date.now())-lt})}}catch(d){k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:d,status:"error",fetchStatus:"idle"}),v(t,"onFetchError",d),E(e,t,"onFetchError",d),$&&$({phase:"error",mode:"query",from:f,method:o,cacheKey:p,error:d.message||String(d),durationMs:(typeof performance<"u"?performance.now():Date.now())-lt})}finally{p&&H.delete(p)}},Rt=(e,t,s)=>{const r=e.on,n=t.__ref;n.__fetchListeners||(n.__fetchListeners=[]);const a=e.__runner||R;if(r==="submit"){const i=o=>{o.preventDefault(),a(e,t,s)},f=t.node;f&&(f.addEventListener("submit",i),n.__fetchListeners.push(()=>f.removeEventListener("submit",i)))}else if(r==="click"){const i=()=>a(e,t,s),f=t.node;f&&(f.addEventListener("click",i),n.__fetchListeners.push(()=>f.removeEventListener("click",i)))}else r==="stateChange"&&(n.__fetchOnStateChange=()=>a(e,t,s))},qt=(e,t,s)=>{const r=t.__ref;r.__fetchCleanups||(r.__fetchCleanups=[]),It();const n=e.refetchInterval;if(n){const a=typeof n=="number"?n:J(n);if(a>0){const i=setInterval(()=>{(e.refetchIntervalInBackground||typeof document>"u"||document.visibilityState==="visible")&&R(e,t,s,{force:!0})},a);r.__fetchCleanups.push(()=>clearInterval(i))}}if(e.refetchOnWindowFocus!==!1){const a=()=>{const i=ft(t,s),f=Mt(e,i),o=V(f),y=ht(e.cache);(!o||o.stale||Date.now()-o.time>(y?.staleTime||0))&&R(e,t,s,{force:!0})};j.focus.add(a),r.__fetchCleanups.push(()=>j.focus.delete(a))}if(e.refetchOnReconnect!==!1){const a=()=>R(e,t,s,{force:!0});j.online.add(a),r.__fetchCleanups.push(()=>j.online.delete(a))}},zt=(e,t,s)=>{if(!t.optimistic)return null;const r=e.__ref,n=t.as,a=e.state?.parse?e.state.parse():Y(e.state)?{...e.state}:e.state;r.__optimisticSnapshot=a;const i=l(t.optimistic)?t.optimistic(s,a,e):t.optimistic;return i!==void 0&&U(e,i,n),a},gt=(e,t)=>{const s=e.__ref,r=s.__optimisticSnapshot;r!==void 0&&(U(e,r,t.as),delete s.__optimisticSnapshot)},Ot=async(e,t,s)=>{const r=s?.fetch;if(!r)return;const n=await yt(r,s);if(!n)return;const a=t.__ref,{method:i,from:f,fields:o,transform:y,as:F,on:et,auth:T,headers:ct,baseUrl:st,invalidates:I,optimistic:q,onMutate:K,onSuccess:rt,onError:x,onSettled:N}=e;let _;if(o===!0||et==="submit")_=tt(t);else if(B(o)){const S=tt(t);_={};for(const L of o)_[L]=S[L]}else t.state?.parse?_=t.state.parse():Y(t.state)&&(_={...t.state});y&&(_=y(_,t,t.state)),l(K)&&K(_,t,t.state);const g=q?zt(t,e,_):null;a.__fetching=!0,k(t,{isFetching:!0,isLoading:!1,isStale:!1,isSuccess:!1,error:null,status:"pending",fetchStatus:"fetching"}),v(t,"onFetchStart"),E(e,t,"onFetchStart");const b=s?.analyze?.emitNetwork,Q=b?typeof performance<"u"?performance.now():Date.now():0;b&&b({phase:"start",mode:"mutation",from:f,method:i});try{if(T!==!1&&n.auth!==!1&&n.getSession){const A=await n.getSession();if(T===!0&&!A){g!==void 0&>(t,e);const C={message:"Not authenticated"};v(t,"onFetchError",C),E(e,t,"onFetchError",C);return}}const S=n[i];if(!l(S))return;const L={from:f,data:_,headers:ct,baseUrl:st};e.params&&(L.params=Ct(e.params,t,s));const z=ft(t,s);z&&(L.headers={...L.headers,"Accept-Language":z});const W=vt(e),P=await Ft(()=>S(L),W),{data:M,error:D}=P||{};if(D){g!==void 0&>(t,e),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:D,status:"error",fetchStatus:"idle"}),v(t,"onFetchError",D),l(x)&&x(D,_,t),l(N)&&N(null,D,_,t),b&&b({phase:"error",mode:"mutation",from:f,method:i,error:D.message||String(D),durationMs:(typeof performance<"u"?performance.now():Date.now())-Q});return}if(delete a.__optimisticSnapshot,M!==void 0){const A=F?{[F]:M}:M;t.state?.update&&t.state.update(A,{preventFetch:!0})}if(k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!0,error:null,status:"success",fetchStatus:"idle"}),v(t,"onFetchComplete",M),E(e,t,"onFetchComplete",M),l(rt)&&rt(M,_,t),l(N)&&N(M,null,_,t),b&&b({phase:"success",mode:"mutation",ok:!0,from:f,method:i,durationMs:(typeof performance<"u"?performance.now():Date.now())-Q}),I){const A=B(I)?I:[I];for(const C of A)if(C===!0||C==="*")for(const[at]of m)at.startsWith(f+":")&&Z(at);else Z(C)}}catch(S){g!==void 0&>(t,e),k(t,{isFetching:!1,isLoading:!1,isStale:!1,isSuccess:!1,error:S,status:"error",fetchStatus:"idle"}),v(t,"onFetchError",S),E(e,t,"onFetchError",S),l(x)&&x(S,_,t),l(N)&&N(null,S,_,t),b&&b({phase:"error",mode:"mutation",from:f,method:i,error:S.message||String(S),durationMs:(typeof performance<"u"?performance.now():Date.now())-Q})}finally{a.__fetching=!1}},Et=(e,t,s,r)=>{if(!e||!r?.fetch)return;const a=wt(e,t);if(!a)return;const i=B(a)?a.map(o=>Dt(wt(o,t),t)).filter(Boolean):[Dt(a,t)].filter(Boolean);for(const o of i){const y=o.method==="insert"||o.method==="update"||o.method==="upsert"||o.method==="delete",F=y?Ot:R;o.on==="create"?F(o,t,r):Promise.resolve().then(()=>{Rt({...o,__runner:F},t,r)}),!y&&o.on==="create"&&(o.refetchInterval||o.refetchOnWindowFocus!==!1||o.refetchOnReconnect!==!1)&&qt(o,t,r)}const f=t.__ref;f.refetch=o=>{for(const y of i)R(y,t,r,{force:!0,...o})},f.fetchNextPage=()=>{const o=i[0];if(!o||!o.infinite)return;const y=f.__nextPageParam;if(y==null)return;const F={...o,cursor:y};R(F,t,r,{direction:"next",force:!0})},f.fetchPreviousPage=()=>{const o=i[0];if(!o||!o.infinite)return;const y=f.__prevPageParam;if(y==null)return;const F={...o,cursor:y};R(F,t,r,{direction:"previous",force:!0})}},Kt={invalidateQueries:e=>{if(!e){Z();return}if(G(e))for(const[t]of m)(t.startsWith(e)||t.includes(e))&&Z(t);else if(B(e)){const t=e.join(":");for(const[s]of m)s.includes(t)&&Z(s)}},removeQueries:e=>{if(!e){nt();return}if(G(e))for(const[t]of m)(t.startsWith(e)||t.includes(e))&&nt(t)},getQueryData:e=>V(e)?.data??void 0,setQueryData:(e,t)=>{const s=V(e),r=l(t)?t(s?.data):t;X(e,r,null)},prefetchQuery:async(e,t)=>{const s=t?.fetch;if(!s)return;const r=await yt(s,t);if(!r)return;const n=e.cache?.key||`${e.from}:${e.method||"select"}:${JSON.stringify(e.params||"")}`,a=r[e.method||"select"];if(!l(a))return;const i=await a({from:e.from,params:e.params,limit:e.limit,offset:e.offset,order:e.order,single:e.single});if(i?.data!==void 0&&!i?.error){const f=X(n,i.data,null);f.gcTime=ht(e.cache)?.gcTime||3e5}return i},getCache:()=>m,clear:()=>nt(),dropNonLang:e=>{if(!e)return;const t=`:${e}`;for(const[s]of m)s.match(/:([a-z]{2,3})$/i)&&(s.endsWith(t)||nt(s))}},Yt={name:"fetch",create(e){const t=e.fetch;t&&(e.parent||H.clear(),Et(t,e,e.state,e.context))}};var Gt=Et;export{Bt as createAdapter,Gt as default,Et as executeFetch,Yt as fetchPlugin,_t as initAdapterAuth,J as parseDuration,Kt as queryClient,Wt as registerAdapter,kt as resolveDb};
|