PageSourceSearch

https://autolinks.pro/assets/AuthContext-AnACH3Wq.js

js autolinks.pro collected 2026-10-02 02:06:11 UTC 5,005 bytes, 1 lines download raw bytes

1import{a as e,n as t}from"./rolldown-runtime-Cyuzqnbw.js";import{i as n,t as r}from"./vendor-react-U38zKVGV.js";import{a as i,n as a}from"./client-d82lJYPF.js";import{a as o,n as s,o as c,r as l}from"./local-core-BCkCdqnR.js";function u(e){return e?.expires_at?e.expires_at*1e3<=Date.now()+x:!1}function d(e){return e?u(e)?null:e:null}function f(e){if(!e)return null;let t=typeof e.role==`string`?e.role.trim().toLowerCase():``;if(t===`admin`)return!0;if(t===`user`)return!1;let n=typeof e.app_metadata?.role==`string`?e.app_metadata.role.trim().toLowerCase():``;return n===`admin`?!0:n===`user`?!1:null}function p({children:e}){let[t,n]=(0,h.useState)(null),[r,i]=(0,h.useState)(null),[s,u]=(0,h.useState)(!0),[p,m]=(0,h.useState)(!1),[T,E]=(0,h.useState)(!1),[D,O]=(0,h.useState)(!1),k=(0,h.useRef)(!1),A=(0,h.useRef)(null),j=(0,h.useRef)({userId:null,at:0}),M=(0,h.useRef)(0),N=(0,h.useCallback)(async e=>{try{let{data:t}=await a.from(`user_roles`).select(`role`).eq(`user_id`,e).eq(`role`,`admin`).maybeSingle();return!!t}catch{return!1}},[]),P=(0,h.useCallback)(e=>{let t=Date.now(),n=j.current;if(n.userId===e&&t-n.at<v){O(!1);return}j.current={userId:e,at:t},O(!0),N(e).then(E).finally(()=>{O(!1)})},[N]),F=(0,h.useCallback)(e=>{let t=f(e);
1if(t!==null){E(t),O(!1),j.current={userId:e.id,at:Date.now()};return}O(!0),P(e.id)},[P]);(0,h.useEffect)(()=>{let e=window.setTimeout(()=>{k.current||console.warn(`[Auth] initial session bootstrap is still pending`)},w),{data:{subscription:t}}=a.auth.onAuthStateChange((e,t)=>{let r=d(t??null);if(!k.current&&e===`INITIAL_SESSION`&&!r)return;let a=r?.user??null;if(n(a),i(r),u(!1),k.current=!0,a){let e=A.current===a.id,t=f(a);t===null?e||(E(!1),O(!0)):(E(t),O(!1),j.current={userId:a.id,at:Date.now()}),e||m(!1),setTimeout(()=>{if(F(a),!e&&A.current!==a.id){A.current=a.id;let e=++M.current;l({emit:!0}).catch(console.error).finally(()=>{M.current===e&&m(!0)});return}m(!0)},0);return}A.current=null,M.current+=1,m(!1),j.current={userId:null,at:0},E(!1),O(!1)});return a.auth.getSession().then(({data:{session:e}})=>{if(!k.current){let t=d(e),r=t?.user??null;if(n(r),i(t),u(!1),k.current=!0,r){let e=A.current===r.id,t=f(r);if(t===null?e||(E(!1),O(!0)):(E(t),O(!1),j.current={userId:r.id,at:Date.now()}),e||m(!1),F(r),!e&&A.current!==r.id){A.current=r.id;let e=++M.current;l({emit:!0}).catch(console.error).finally(()=>{M.current===e&&m(!0)});return}m(!0);return}A.current=null,M.current+=1,m(!1),j.current={userId:null,at:0},E(!1),O(!1)}}).catch(e=>{console.error(`[Auth] getSession failed:`,e),k.current||(n(null),i(null),E(!1),O(!1),u(!1),k.current=!0,A.current=null,M.current+=1,m(!1),j.current={userId:null,at:0})}),()=>{window.clearTimeout(e),t.unsubscribe()}},[F]),(0,h.useEffect)(()=>{let e=null,t=()=>{a.auth.getSession().then(({data:{session:e}})=>{let t=d(e),r=t?.user??null;if(i(t),n(r),u(!1),!r){A.current=null,M.current+=1,m(!1),j.current={userId:null,at:0},E(!1),O(!1);return}m(!0);let a=f(r);a!==null&&(E(a),O(!1),j.current={userId:r.id,at:Date.now()}),F(r)}).catch(e=>{console.error(`[Auth] local db sync getSession failed:`,e),A.current=null,M.current+=1,m(!1),j.current={userId:null,at:0},i(null),n(null),E(!1),O(!1),u(!1)})},r=c(()=>{e!==null&&window.clearTimeout(e),e=window.setTimeout(t,y)});return()=>{e!==null&&window.clearTimeout(e),r()}},[F]),(0,h.useEffect)(()=>{if(!t?.id)return;let e=window.setInterval(()=>{o({emitOnChange:!0}).catch(()=>void 0)},b);return()=>{window.clearInterval(e)}},[t?.id]),(0,h.useEffect)(()=>{if(!r?.expires_at)return;let e=!1,t=!1,o=null,s=r.expires_at*1e3;function c(){e||t||Date.now()+x<s||(t=!0,a.auth.signOut())}function l(){if(e)return;let t=s-Date.now();if(t>x){let e=Math.max(1e3,Math.min(C,t-x));o=window.setTimeout(()=>{f()},e);return}c()}async function f(){try{let{data:{session:t}}=await a.auth.refresh();if(e)return;let r=d(t);if(r){let e=r.user??null;i(r),n(e),u(!1),e&&(m(!0),F(e));return}}catch(e){console.error(`[Auth] scheduled session refresh failed:`,e)}l()}let p=Math.max(0,s-Date.now()-S),h=window.setTimeout(()=>{f()},p),g=window.setTimeout(c,Math.max(0,s-Date.now()+x));return window.addEventListener(`focus`,c),window.addEventListener(`pageshow`,c),document.addEventListener(`visibilitychange`,c),()=>{e=!0,window.clearTimeout(h),window.clearTimeout(g),window.removeEventListener(`focus`,c),window.removeEventListener(`pageshow`,c),document.removeEventListener(`visibilitychange`,c),o!==null&&window.clearTimeout(o)}},[F,r?.access_token,r?.expires_at]);let I=(0,h.useCallback)(async()=>{await a.auth.signOut()},[]),L=(0,h.useMemo)(()=>({user:t,session:r,isLoading:s,isLocalCoreReady:p,isAdmin:T,isAdminLoading:D,signOut:I}),[T,D,p,s,r,I,t]);return(0,g.jsx)(_.Provider,{value:L,children:e})}function m(){let e=(0,h.useContext)(_);if(e===void 0)throw Error(`useAuth must be used within an AuthProvider`);return e}var h,g,_,v,y,b,x,S,C,w,T=t((()=>{h=e(n(),1),i(),s(),g=r(),_=(0,h.createContext)(void 0),v=3e4,y=120,b=6e4,x=1e3,S=300*1e3,C=3e4,w=1e4}));export{T as n,m as r,p as t};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.