import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{h as t,t as n}from"./vendor-react-DyChr2BH.js";import{t as r}from"./db-D2Po16Ap.js";import{B as i,L as a,N as o,x as s}from"./Card-Cxq4Ee-X.js";import{n as c,r as l,t as u}from"./authConfig-BEMI_Xyz.js";import{a as d,i as f,n as p,r as m}from"./authSessionStore-DMywFnF3.js";import{t as h}from"./seed-9C4rKf7X.js";var g=e(t(),1),_=/^[a-z0-9_]{3,32}$/;function v(e){return e.trim().toLowerCase()}function y(e){return _.test(e)}function b(e){return e.length>=8&&e.length<=128}var x=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;function S(e){return i(`auth.errors.${e}`,void 0,a())}function C(e){return{authUserId:String(e.authUserId??``),accessToken:String(e.accessToken??``),refreshToken:String(e.refreshToken??``),expiresAtISO:String(e.expiresAtISO??``),provider:e.provider===`rms_universe`?`rms_universe`:`local_supabase`,displayLogin:typeof e.displayLogin==`string`?e.displayLogin:void 0,telegramUserId:typeof e.telegramUserId==`string`?e.telegramUserId:null,telegramUsername:typeof e.telegramUsername==`string`?e.telegramUsername:null,telegramDisplayName:typeof e.telegramDisplayName==`string`?e.telegramDisplayName:null}}async function w(e,t){let n=l();if(!n)return{ok:!1,error:S(`authNotConfigured`)};try{let r=await fetch(`${n}${e}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),i=await r.json().catch(()=>({}));return r.ok?{ok:!0,session:C(i)}:{ok:!1,error:typeof i.error==`string`?i.error:S(`loginError`),...typeof i.errorCode==`string`?{errorCode:i.errorCode}:{},...typeof i.subscribeUrl==`string`?{subscribeUrl:i.subscribeUrl}:{}}}catch{return{ok:!1,error:S(`noNetwork`)}}}async function T(e,t,n){let r=v(e);return y(r)?b(t)?w(`/api/auth-register`,{login:r,password:t,...n?.telegramUserId==null?{}:{telegramUserId:n.telegramUserId},...n?.telegramUsername?{telegramUsername:n.telegramUsername}:{},...n?.telegramDisplayName?{telegramDisplayName:n.telegramDisplayName}:{}}):{ok:!1,error:S(`passwordTooShort`)}:{ok:!1,error:S(`invalidLogin`)}}async function E(e,t,n){if(!t)return{ok:!1,error:S(`passwordRequired`)};if(c()){let r=e.trim().toLowerCase();return x.test(r)?w(`/api/auth-login`,{login:r,password:t,...n?.trim()?{totpCode:n.trim()}:{}}):{ok:!1,error:S(`invalidEmail`)}}let r=v(e);return y(r)?w(`/api/auth-login`,{login:r,password:t}):{ok:!1,error:S(`wrongCredentials`)}}async function D(e){return e?w(`/api/auth-refresh`,{refreshToken:e}):{ok:!1,error:S(`sessionExpired`)}}var O=r.tables.map(e=>e.name).filter(e=>e!==`authSession`),k=O.filter(e=>e!==`settings`);async function A(e){let t=(await s())?.app?.authUserId?.trim();return t?t!==e.authUserId:!1}async function j(){let e=await f();await r.transaction(`rw`,O,async()=>{for(let e of O)await r.table(e).clear()}),await h(),e&&await d(e)}async function M(){if((await s())?.app?.authUserId?.trim())return!1;for(let e of k)if(await r.table(e).count()>0)return!0;return!1}async function N(e){return await A(e)||await M()?(await j(),await o({app:{authUserId:e.authUserId,authProvider:e.provider,onboardingCompletedAtISO:null,cloudRestoreCompletedAtISO:null}}),{wiped:!0}):(await o({app:{authUserId:e.authUserId,authProvider:e.provider}}),{wiped:!1})}var P=n(),F=(0,g.createContext)(null);function I({children:e}){let t=u(),[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)(t),o=(0,g.useCallback)(async()=>{if(!t){r(null),a(!1);return}a(!0);try{let e=await f();if(e&&!m(e)){let t=await D(e.refreshToken);t.ok&&t.session?(e=t.session,await d(e)):(await p(),e=null)}r(e)}finally{a(!1)}},[t]);(0,g.useEffect)(()=>{o()},[o]);let s=(0,g.useCallback)(async e=>{await d(e),r(e),await N(e)},[]),c=(0,g.useCallback)(async(e,t,n)=>{let r=await E(e,t,n);return!r.ok||!r.session||await s(r.session),r},[s]),l=(0,g.useCallback)(async(e,t,n)=>{let r=await T(e,t,n);return!r.ok||!r.session||await s(r.session),r},[s]),h=(0,g.useCallback)(async()=>{await j(),await p(),r(null)},[]),_=(0,g.useMemo)(()=>({authEnabled:t,session:n,loading:i,isAuthenticated:!t||m(n),login:c,register:l,logout:h,reload:o}),[t,n,i,c,l,h,o]);return(0,P.jsx)(F.Provider,{value:_,children:e})}function L(){let e=(0,g.useContext)(F);if(!e)throw Error(`useAuthSession must be used within AuthSessionProvider`);return e}export{L as n,I as t};