nucleus-core-ts 0.8.87 → 0.8.89

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.
Files changed (2) hide show
  1. package/dist/index.js +7 -7
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -74,15 +74,15 @@ var D2=Object.create;var{getPrototypeOf:H2,defineProperty:oc,getOwnPropertyNames
74
74
  AND ccu.table_name = 'users'
75
75
  AND ccu.column_name = 'id'
76
76
  AND tc.table_schema = 'public'
77
- `)).rows||[];return await R.transaction(async(C)=>{for(let N of M)await C.execute(Dl.raw(`UPDATE "${N.table_name}" SET "${N.column_name}" = '${b}' WHERE "${N.column_name}" = '${d}'`));await C.execute(Dl.raw(`UPDATE users SET id = '${b}' WHERE id = '${d}'`))}),a.info("[AUTH] User ID changed",{godminId:s,currentId:d,newId:b,email:_.email,affectedTables:M.map((C)=>C.table_name)}),await a.audit({entityName:"users",entityId:b,operation:"CHANGE_USER_ID",userId:s,summary:`Godmin changed user ID: ${d} \u2192 ${b} (${_.email})`,oldValues:{id:d},newValues:{id:b},ipAddress:i.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",userAgent:i.request.headers.get("user-agent")||"unknown",path:new URL(i.request.url).pathname,query:""}),{success:!0,data:{oldId:d,newId:b,email:_.email,affectedTables:M.map((C)=>C.table_name)}}}catch(R){return a.error("[AUTH] Failed to change user ID",{error:R instanceof Error?R.message:String(R),currentId:d,newId:b}),{success:!1,message:R instanceof Error?R.message:"Failed to change user ID"}}},{body:Hl.Object({currentId:Hl.String(),newId:Hl.String()}),detail:{tags:["Authentication"],summary:"Change User ID",description:"Godmin: change a user's UUID while preserving all FK relations"}}),e}var zl=()=>{};import{eq as Ul}from"drizzle-orm";import{Elysia as lA,t as e_}from"elysia";function si(n,r,t,o,a,c){let{db:e,logger:i,usersTable:s}=n,f=new lA,l={accessTokenName:c?.accessTokenName||"access_token",refreshTokenName:c?.refreshTokenName||"refresh_token",sessionTokenName:c?.sessionTokenName||"session_token",accessTokenMaxAge:c?.accessTokenMaxAge||900,refreshTokenMaxAge:c?.refreshTokenMaxAge||604800,sessionTokenMaxAge:c?.sessionTokenMaxAge||900,secure:c?.secure??!0,sameSite:c?.sameSite||"strict",path:c?.path||"/"};return f.post("/auth/admin/impersonate",async(d)=>{if(!e||!s)return{success:!1,message:"Database not configured"};let b=d.request.headers.get("x-user-id");if(!b)return d.set.status=401,{success:!1,message:"Unauthorized"};let{targetUserId:w}=d.body,_=(await e.select().from(s).where(Ul(s.id,b)).limit(1))[0];if(!_||!_.isGod)return d.set.status=403,{success:!1,message:"Forbidden: godmin privileges required"};if(b===w)return d.set.status=400,{success:!1,message:"Cannot impersonate yourself"};let R=(await e.select().from(s).where(Ul(s.id,w)).limit(1))[0];if(!R)return d.set.status=404,{success:!1,message:"Target user not found"};let k=r(w),M=t(w),C=d.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",N={userId:w,deviceInfo:{deviceName:"Impersonation Session",browserName:"Admin",osName:"Admin",ipAddress:C},loginMethod:"impersonation"},m=await o(N);if(a)await a(m,N);i.info("[AUTH] Impersonation started",{godminId:b,targetUserId:w,targetEmail:R.email}),await i.audit({entityName:"users",entityId:w,operation:"IMPERSONATE_START",userId:b,summary:`Godmin ${_.email} started impersonating ${R.email}`,ipAddress:d.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",userAgent:d.request.headers.get("user-agent")||"unknown",path:new URL(d.request.url).pathname,query:""});let A=l.secure?"; Secure":"",H=`; Path=${l.path}; HttpOnly; SameSite=${l.sameSite}${A}`,D=[`${l.accessTokenName}=${k}${H}; Max-Age=${l.accessTokenMaxAge}`,`${l.refreshTokenName}=${M}${H}; Max-Age=${l.refreshTokenMaxAge}`,`${l.sessionTokenName}=${m}${H}; Max-Age=${l.sessionTokenMaxAge}`,`nucleus_impersonating_as=${w}${H}; Max-Age=${l.sessionTokenMaxAge}`,`nucleus_godmin_id=${b}${H}; Max-Age=${l.sessionTokenMaxAge}`],E=JSON.stringify({success:!0,data:{targetUser:{id:R.id,email:R.email},godminId:b,sessionId:m}}),S=new Headers;S.set("Content-Type","application/json");for(let z of D)S.append("Set-Cookie",z);return new Response(E,{status:200,headers:S})},{body:e_.Object({targetUserId:e_.String()}),detail:{tags:["Authentication"],summary:"Impersonate User",description:"Godmin: start a session as another user"}}),f.post("/auth/admin/impersonate/stop",async(d)=>{if(!e||!s)return{success:!1,message:"Database not configured"};let b=d.request.headers.get("cookie")||"",h=Object.fromEntries(b.split(";").map((z)=>{let[U,...P]=z.trim().split("=");return[U?.trim(),P.join("=")]})).nucleus_godmin_id;if(!h)return d.set.status=400,{success:!1,message:"No active impersonation session"};let g=(await e.select().from(s).where(Ul(s.id,h)).limit(1))[0];if(!g)return d.set.status=404,{success:!1,message:"Godmin user not found"};let R=r(h),k=t(h),M=d.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",C={userId:h,deviceInfo:{deviceName:"Restored Admin Session",browserName:"Admin",osName:"Admin",ipAddress:M},loginMethod:"impersonation_stop"},N=await o(C);if(a)await a(N,C);i.info("[AUTH] Impersonation stopped",{godminId:h}),await i.audit({entityName:"users",entityId:h,operation:"IMPERSONATE_STOP",userId:h,summary:`Godmin ${g.email} stopped impersonation`,ipAddress:d.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",userAgent:d.request.headers.get("user-agent")||"unknown",path:new URL(d.request.url).pathname,query:""});let m=l.secure?"; Secure":"",A=`; Path=${l.path}; HttpOnly; SameSite=${l.sameSite}${m}`,H=`; Path=${l.path}; HttpOnly; SameSite=${l.sameSite}${m}; Max-Age=0`,D=[`${l.accessTokenName}=${R}${A}; Max-Age=${l.accessTokenMaxAge}`,`${l.refreshTokenName}=${k}${A}; Max-Age=${l.refreshTokenMaxAge}`,`${l.sessionTokenName}=${N}${A}; Max-Age=${l.sessionTokenMaxAge}`,`nucleus_impersonating_as=deleted${H}`,`nucleus_godmin_id=deleted${H}`],E=JSON.stringify({success:!0,data:{godminUser:{id:g.id,email:g.email},sessionId:N}}),S=new Headers;S.set("Content-Type","application/json");for(let z of D)S.append("Set-Cookie",z);return new Response(E,{status:200,headers:S})},{detail:{tags:["Authentication"],summary:"Stop Impersonation",description:"Godmin: restore own session after impersonation"}}),f}var Bl=()=>{};import{Elysia as dA,t as Hr}from"elysia";function i_(n){let{captchaService:r,logger:t,basePath:o="/auth/captcha"}=n,a=new dA;if(!r.isEnabled())return a;return a.get(`${o}/generate`,async(c)=>{let{type:e,difficulty:i}=c.query,s=c.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||c.request.headers.get("x-real-ip")?.trim()||c.request.headers.get("cf-connecting-ip")?.trim()||"unknown",f=await r.generate(e,i,s);if(f.rateLimited)return c.set.status=429,{success:!1,message:f.message??"Too many requests. Please try again later."};return t.info("[CAPTCHA] Challenge generated via endpoint",{challengeId:f.challengeId,type:f.type,ipAddress:s}),{success:!0,data:{challengeId:f.challengeId,type:f.type,question:f.question,expiresAt:f.expiresAt,...f.imageData?{imageData:f.imageData}:{},...f.puzzleData?{puzzleData:{pieces:f.puzzleData.pieces}}:{}}}},{query:uA,detail:{tags:["Captcha"],summary:"Generate Captcha",description:"Generate a new captcha challenge"}}),a.post(`${o}/validate`,async(c)=>{let{challengeId:e,answer:i}=c.body,s=await r.validate(e,i);if(!s.valid)c.set.status=400;return s},{body:bA,detail:{tags:["Captcha"],summary:"Validate Captcha",description:"Validate a captcha answer"}}),a}var uA,bA;var s_=u(()=>{uA=Hr.Object({type:Hr.Optional(Hr.Union([Hr.Literal("math"),Hr.Literal("image"),Hr.Literal("puzzle"),Hr.Literal("text")])),difficulty:Hr.Optional(Hr.Union([Hr.Literal("easy"),Hr.Literal("medium"),Hr.Literal("hard")]))}),bA=Hr.Object({challengeId:Hr.String(),answer:Hr.String()})});function f_(n,r){let{db:t,logger:o}=n,a=r.route||"/auth/check";return(c)=>c.post(a,async(e)=>{let{body:i,request:s,set:f}=e,l=s.headers.get("x-user-id");if(!l)return f.status=401,{isSuccess:!1,message:"Unauthenticated",data:null};if(!t)return f.status=503,{isSuccess:!1,message:"Authorization service unavailable",data:null};let d=n.schemaTables;if(!d)return f.status=503,{isSuccess:!1,message:"Authorization tables not available",data:null};let{entity:b,method:w,fields:h,relations:_}=i;if(!b||!w)return f.status=400,{isSuccess:!1,message:"entity and method are required",data:null};let g=await _c({userId:l,method:w,entity:b,requestedFields:h,requestedRelations:_,db:t,schemaTables:d,logger:o});return{isSuccess:!0,message:g.authorized?"Authorized":"Forbidden",data:{authorized:g.authorized,reason:g.reason,allowedFields:g.allowedFields,allowedRelations:g.allowedRelations,scopeFilters:g.scopeFilters}}},{detail:{tags:["Auth"],summary:"Check authorization for a given entity and method",description:"Allows consumer/resource servers to perform full claim checks (including scope) against the IDP's authorization system."}})}var l_=u(()=>{zf()});import gA from"crypto";var{password:_A}=globalThis.Bun;async function Ao(n){return await _A.hash(n,{algorithm:"bcrypt",cost:10})}function fi(){return gA.randomBytes(32).toString("hex")}function Ja(n){let r=n.match(/^(\d+)(s|m|h|d)$/);if(!r||!r[1]||!r[2])return 86400000;let t=Number.parseInt(r[1],10);switch(r[2]){case"s":return t*1000;case"m":return t*60*1000;case"h":return t*60*60*1000;case"d":return t*24*60*60*1000;default:return 86400000}}function d_(n){let r=[];if(n.length<8)r.push("Password must be at least 8 characters");if(!/[A-Z]/.test(n))r.push("Password must contain uppercase letter");if(!/[a-z]/.test(n))r.push("Password must contain lowercase letter");if(!/[0-9]/.test(n))r.push("Password must contain a number");return{valid:r.length===0,errors:r}}var Xa=()=>{};import{sql as li}from"drizzle-orm";import{Elysia as mA,t as di}from"elysia";function ui(n){let{authConfig:r,registerConfig:t,emailService:o,appName:a}=n,{db:c,logger:e,usersTable:i}=r,s=new mA;if(!t.enabled||!t.emailVerification?.enabled)return s;let f="/verify-email",l="/resend-verification";return s.get(f,async(d)=>{if(!c||!i)return{success:!1,message:"Database not configured"};let b=d.query.token;if(!b)return{success:!1,message:"Verification token is required"};let w=await c.select().from(i).where(li`email_verification_token = ${b}`).limit(1);if(w.length===0)return e.warn("[AUTH] Email verification failed - invalid token"),{success:!1,message:"Invalid or expired verification token"};let h=w[0],_=h.emailVerificationTokenExpiresAt;if(_&&new Date>new Date(_))return e.warn("[AUTH] Email verification failed - token expired",{userId:h.id,email:h.email}),{success:!1,message:"Verification token has expired. Please request a new one."};if(await c.update(i).set({verifiedAt:new Date,emailVerificationToken:null,emailVerificationTokenExpiresAt:null}).where(li`id = ${h.id}`),e.info("[AUTH] Email verified successfully",{userId:h.id,email:h.email}),t.emailVerification?.templates?.welcome?.enabled&&o?.isAvailable())o.sendWelcomeEmail(h.email,h.email.split("@")[0]||"User",a||"Nucleus").catch((R)=>{e.error("[AUTH] Failed to send welcome email after verification",{email:h.email,error:R})});return{success:!0,message:"Email verified successfully. You can now log in.",data:{redirectUrl:t.emailVerification?.redirectUrl||"/login",verified:!0}}},{query:di.Object({token:di.String()}),detail:{tags:["Authentication"],summary:"Verify Email",description:"Verify user email address using the verification token"}}),s.post(l,async(d)=>{if(!c||!i)return{success:!1,message:"Database not configured"};if(!o?.isAvailable())return{success:!1,message:"Email service not available"};let{email:b}=d.body,w=await c.select().from(i).where(li`email = ${b}`).limit(1);if(w.length===0)return{success:!0,message:"If your email is registered, you will receive a verification email."};let h=w[0];if(h.verifiedAt)return{success:!1,message:"Email is already verified"};let _=t.emailVerification?.maxResendAttempts||3,g=h.emailVerificationAttempts||0;if(g>=_)return e.warn("[AUTH] Resend verification failed - max attempts reached",{email:b,attempts:g}),{success:!1,message:"Maximum resend attempts reached. Please contact support.",data:{maxAttemptsReached:!0,attemptsUsed:g,maxAttempts:_}};let R=t.emailVerification?.resendCooldown||"60s",k=Ja(R),M=h.emailVerificationSentAt;if(M){let E=Date.now()-new Date(M).getTime();if(E<k){let S=Math.ceil((k-E)/1000);return{success:!1,message:`Please wait ${S} seconds before requesting another verification email.`,data:{cooldownRemaining:S,canResendAt:new Date(Date.now()+S*1000).toISOString()}}}}let C=fi(),N=t.emailVerification?.tokenExpiresIn||"24h",m=new Date(Date.now()+Ja(N));await c.update(i).set({emailVerificationToken:C,emailVerificationTokenExpiresAt:m,emailVerificationSentAt:new Date,emailVerificationAttempts:g+1}).where(li`id = ${h.id}`);let H=`${(t.emailVerification?.redirectUrl||"http://localhost:3000/login").replace("/login","/verify-email")}?token=${C}`,D=await o.sendVerificationEmail(b,b.split("@")[0]||"User",H,a||"Nucleus");if(D.success)return e.info("[AUTH] Verification email resent",{email:b}),{success:!0,message:"Verification email sent. Please check your inbox.",data:{cooldownSeconds:Math.ceil(k/1000),canResendAt:new Date(Date.now()+k).toISOString(),attemptsRemaining:_-(g+1)}};return e.error("[AUTH] Failed to resend verification email",{email:b,error:D.error}),{success:!1,message:"Failed to send verification email. Please try again later."}},{body:di.Object({email:di.String({format:"email"})}),detail:{tags:["Authentication"],summary:"Resend Verification Email",description:"Resend the email verification link to the user"}}),s}var Wl=u(()=>{Xa()});import u_ from"crypto";function La(){return u_.randomBytes(32).toString("hex")}function gt(n){return u_.createHash("sha256").update(n).digest("hex")}function Va(n){let r=n.match(/^(\d+)(s|m|h|d)$/);if(!r?.[1]||!r[2])return 900000;let t=parseInt(r[1],10);switch(r[2]){case"s":return t*1000;case"m":return t*60*1000;case"h":return t*60*60*1000;case"d":return t*24*60*60*1000;default:return 900000}}var Yc=()=>{};import{eq as wA}from"drizzle-orm";import{Elysia as hA,t as bi}from"elysia";function gi(n,r,t,o,a,c){let{db:e,logger:i,usersTable:s}=n,f=r.route||"/auth/invite",l=r.tokenExpiresIn||"7d",d=r.redirectUrl||"",b=new hA;if(!r.enabled)return b;if(b.post(f,async(w)=>{if(!e||!s)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return i.error("[AUTH] Invite requested but email service not available"),{success:!1,message:"Email service not available"};let{email:h}=w.body,_=await e.select().from(s).where(wA(s.email,h)).limit(1),g;if(_.length>0){let m=_[0];if(m.verifiedAt||m.password)return i.warn("[AUTH] Invite failed - user already verified",{email:h}),{success:!1,message:"User with this email is already verified"};g=m.id,i.info("[AUTH] Resending invitation to existing unverified user",{userId:g,email:h})}else{let m={email:h,password:null,emailVerified:!1,isLocked:!1,createdAt:new Date,updatedAt:new Date},H=(await e.insert(s).values(m).returning())[0];if(!H)return i.error("[AUTH] Failed to create invited user",{email:h}),{success:!1,message:"Failed to create user"};g=H.id,i.info("[AUTH] Invited user created",{userId:g,email:h})}let R=La(),k=gt(R),M=new Date(Date.now()+Va(l));await o({userId:g,email:h,tokenHash:k,expiresAt:M});let C=d?`${d}?token=${R}&invite=true`:`/auth/magic-link/verify?token=${R}`,N=await t.sendInvitationEmail(h,C,a||"Nucleus");if(!N.success)return i.error("[AUTH] Failed to send invitation email",{email:h,error:N.error}),{success:!0,message:"User created but failed to send invitation email",data:{id:g,email:h}};return i.info("[AUTH] Invitation email sent",{email:h,userId:g}),{success:!0,message:"Invitation sent successfully",data:{id:g,email:h}}},{body:$A,detail:{tags:["Authentication"],summary:"Invite User",description:"Invite a new user by sending them an email with a magic link to set their password"}}),c)b.post(`${f}/verify`,async(w)=>{let{token:h}=w.body;if(!h)return{success:!1,message:"Token is required"};let _=gt(h),g=await c(_);if(!g)return i.warn("[AUTH] Invalid invite verify token"),{success:!1,message:"Invalid or expired token"};if(new Date>g.expiresAt)return i.warn("[AUTH] Expired invite verify token",{email:g.email}),{success:!1,message:"Invalid or expired token"};return i.info("[AUTH] Invite token verified (not consumed)",{email:g.email,userId:g.userId}),{success:!0,data:{userId:g.userId,email:g.email}}},{body:bi.Object({token:bi.String()}),detail:{tags:["Authentication"],summary:"Verify Invite Token",description:"Validate an invite token without consuming it. Returns user info if valid."}});return b}var $A;var Yl=u(()=>{Yc();$A=bi.Object({email:bi.String({format:"email"})})});import{t as nr}from"elysia";var Jl,AA;var Xl=u(()=>{Jl=nr.Object({email:nr.String({format:"email"}),password:nr.String({minLength:1}),rememberMe:nr.Optional(nr.Boolean()),captchaId:nr.Optional(nr.String()),captchaAnswer:nr.Optional(nr.String())}),AA=nr.Object({success:nr.Boolean(),message:nr.Optional(nr.String()),data:nr.Optional(nr.Object({user:nr.Object({id:nr.String(),email:nr.String()}),accessToken:nr.String(),refreshToken:nr.String()}))})});var{password:RA}=globalThis.Bun;async function _i(n,r){try{return await RA.verify(n,r)}catch{return!1}}function mi(n,r){let t=n.toLowerCase(),o=["headlesschrome","headless","phantomjs","nightmare","selenium","webdriver","puppeteer","playwright"],a=["bot","crawler","spider","scraper","curl","wget","python-requests","python-urllib","java/","httpclient","go-http-client","node-fetch","axios","postman","insomnia","httpie"],c=o.some((_)=>t.includes(_)),e=a.some((_)=>t.includes(_)),i=c||e,s=[];if(c)s.push("headless_browser");if(e)s.push("bot_user_agent");if(!t||t.length<10)s.push("missing_or_short_ua");if(t==="mozilla/5.0")s.push("generic_ua");if(t.includes("nucleusserveraction")||t.includes("serveraction"))s.push("server_action");let f="unknown";if(t.includes("mobile")||t.includes("android")&&!t.includes("tablet"))f="mobile";else if(t.includes("tablet")||t.includes("ipad"))f="tablet";else if(t.includes("windows")||t.includes("macintosh")||t.includes("linux"))f="desktop";let l,d;if(c)l="Headless Browser";else if(e)l="Bot/Crawler";else if(t.includes("chrome")&&!t.includes("edg")){l="Chrome";let _=n.match(/Chrome\/(\d+\.\d+)/i);if(_?.[1])d=_[1]}else if(t.includes("firefox")){l="Firefox";let _=n.match(/Firefox\/(\d+\.\d+)/i);if(_?.[1])d=_[1]}else if(t.includes("safari")&&!t.includes("chrome")){l="Safari";let _=n.match(/Version\/(\d+\.\d+)/i);if(_?.[1])d=_[1]}else if(t.includes("edg")){l="Edge";let _=n.match(/Edg\/(\d+\.\d+)/i);if(_?.[1])d=_[1]}let b,w;if(t.includes("windows nt 10"))b="Windows",w="10/11";else if(t.includes("windows nt"))b="Windows";else if(t.includes("mac os x")){b="macOS";let _=n.match(/Mac OS X (\d+[._]\d+)/i);if(_?.[1])w=_[1].replace("_",".")}else if(t.includes("android")){b="Android";let _=n.match(/Android (\d+\.?\d*)/i);if(_?.[1])w=_[1]}else if(t.includes("iphone")||t.includes("ipad")){b="iOS";let _=n.match(/OS (\d+[._]\d+)/i);if(_?.[1])w=_[1].replace("_",".")}else if(t.includes("linux"))b="Linux";return{deviceName:l&&b?`${l} on ${b}`:"Unknown Device",deviceType:f,browserName:l,browserVersion:d,osName:b,osVersion:w,ipAddress:r,userAgent:n,locationCountry:void 0,locationCity:void 0,isHeadless:c,isBot:e,isSuspicious:i,suspiciousPatterns:s}}var wi=()=>{};import{eq as Ll}from"drizzle-orm";import{Elysia as kA}from"elysia";function hi(n,r,t,o,a,c,e,i,s){let{db:f,logger:l,usersTable:d}=n,b=r.route||"/auth/login",w={accessTokenName:e?.accessTokenName||"access_token",refreshTokenName:e?.refreshTokenName||"refresh_token",sessionTokenName:e?.sessionTokenName||"session_token",accessTokenMaxAge:e?.accessTokenMaxAge||900,refreshTokenMaxAge:e?.refreshTokenMaxAge||604800,sessionTokenMaxAge:e?.sessionTokenMaxAge||900,secure:e?.secure??!0,httpOnly:e?.httpOnly??!0,sameSite:e?.sameSite||"strict",path:e?.path||"/"},h=new kA;if(!r.enabled)return h;return h.post(b,async(_)=>{if(!f||!d)return{success:!1,message:"Database not configured"};let{email:g,password:R,rememberMe:k,captchaId:M,captchaAnswer:C}=_.body;if(s?.isEnabled()){if(!M||!C)return _.set.status=400,{success:!1,message:"Captcha is required"};let T=await s.validate(M,C);if(!T.valid)return _.set.status=400,{success:!1,message:T.message||"Invalid captcha",attemptsRemaining:T.attemptsRemaining}}let m=(await f.select().from(d).where(Ll(d.email,g)).limit(1))[0],A=new URL(_.request.url),H=_.request.headers.get("cf-connecting-ip")?.trim()||_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||_.request.headers.get("x-real-ip")?.trim()||"unknown",D=_.request.headers.get("user-agent")||"unknown";if(!m)return l.warn("[AUTH] Login failed - user not found",{email:g}),await l.audit({entityName:"users",operation:"LOGIN_FAILED",summary:`Login failed: user not found (${g})`,ipAddress:H,userAgent:D,path:A.pathname,query:A.search}),{success:!1,message:"Invalid email or password"};if(m.isLocked)return l.warn("[AUTH] Login failed - account locked",{email:g,userId:m.id}),await l.audit({entityName:"users",entityId:m.id,operation:"LOGIN_FAILED",userId:m.id,summary:`Login failed: account locked (${g})`,ipAddress:H,userAgent:D,path:A.pathname,query:A.search}),{success:!1,message:"Account is locked"};if(!await _i(R,m.password)){let T=(m.failedLoginAttempts||0)+1;return await f.update(d).set({failedLoginAttempts:T,isLocked:T>=5,lockedUntil:T>=5?new Date(Date.now()+1800000):null}).where(Ll(d.id,m.id)),l.warn("[AUTH] Login failed - invalid password",{email:g,failedAttempts:T}),await l.audit({entityName:"users",entityId:m.id,operation:"LOGIN_FAILED",userId:m.id,summary:`Login failed: invalid password (${g}, attempt ${T})`,ipAddress:H,userAgent:D,path:A.pathname,query:A.search}),{success:!1,message:"Invalid email or password"}}await f.update(d).set({failedLoginAttempts:0,lastLoginAt:new Date,loginCount:(m.loginCount||0)+1}).where(Ll(d.id,m.id));let S={};_.request.headers.forEach((T,Jn)=>{S[Jn]=T}),l.info("[AUTH] Login request headers",{headers:S});let z=_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim(),U=(T)=>!T||T==="127.0.0.1"||T==="::1"||T==="localhost"||T.startsWith("10.")||T.startsWith("192.168.")||T.startsWith("172."),P=_.request.headers.get("cf-connecting-ip")?.trim()||_.request.headers.get("true-client-ip")?.trim()||(!U(z)?z:void 0)||_.request.headers.get("x-real-ip")?.trim()||_.request.headers.get("x-client-ip")?.trim()||z||"127.0.0.1",p=_.request.headers.get("user-agent")||"Unknown Browser";l.info("[AUTH] Parsed device info",{ipAddress:P,userAgent:p});let K=mi(p,P);try{if(!U(P)){let T=await fetch(`http://ip-api.com/json/${P}?fields=country,city`);if(T.ok){let Jn=await T.json();if(Jn.country)K.locationCountry=Jn.country;if(Jn.city)K.locationCity=Jn.city}}}catch{}let B=[],L=[],Y=n.userRolesTable,Q=n.rolesTable,V=n.roleClaimsTable,q=n.claimsTable;if(f&&Y&&Q)try{let{eq:T,inArray:Jn}=await import("drizzle-orm"),qn=(await f.select().from(Y).where(T(Y.userId,m.id))).map((gr)=>gr.roleId);if(qn.length>0){if(B=(await f.select().from(Q).where(Jn(Q.id,qn))).map((Ar)=>Ar.name),V&&q){let Ar=await f.select().from(V).innerJoin(q,T(V.claimId,q.id)).where(Jn(V.roleId,qn)),Mt=new Set;for(let er of Ar){let lr=er.claims?.action;if(lr)Mt.add(lr)}L=Array.from(Mt)}}}catch{}let F=t(m.id,B.length>0?B:void 0,L.length>0?L:void 0),v=o(m.id),dn={userId:m.id,deviceInfo:K,loginMethod:"password",rememberMe:k},tn=await a(dn);if(c)await c(tn,dn);l.info("[AUTH] Login successful",{userId:m.id,email:g,rememberMe:k}),await l.audit({entityName:"users",entityId:m.id,operation:"LOGIN",userId:m.id,summary:`${g} logged in successfully`,ipAddress:P,userAgent:p,path:A.pathname,query:A.search});let un={accessToken:{setHeadersEnabled:i?.accessToken?.setHeadersEnabled??!0,returnJson:i?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:i?.refreshToken?.setHeadersEnabled??!0,returnJson:i?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:i?.sessionToken?.setHeadersEnabled??!0,returnJson:i?.sessionToken?.returnJson??!0}},sn=w.secure?"; Secure":"",Yn=`; Path=${w.path}; HttpOnly; SameSite=${w.sameSite}${sn}`,fr=[];if(un.accessToken.setHeadersEnabled)fr.push(`${w.accessTokenName}=${F}${Yn}; Max-Age=${w.accessTokenMaxAge}`);if(un.refreshToken.setHeadersEnabled)fr.push(`${w.refreshTokenName}=${v}${Yn}; Max-Age=${w.refreshTokenMaxAge}`);if(un.sessionToken.setHeadersEnabled)fr.push(`${w.sessionTokenName}=${tn}${Yn}; Max-Age=${w.sessionTokenMaxAge}`);_.set.headers["x-session-id"]=tn;let gn={user:{id:m.id,email:m.email}};if(un.accessToken.returnJson)gn.accessToken=F;if(un.refreshToken.returnJson)gn.refreshToken=v;if(un.sessionToken.returnJson)gn.sessionId=tn;let et=JSON.stringify({success:!0,data:gn}),_n=new Headers;_n.set("Content-Type","application/json"),_n.set("x-session-id",tn);for(let T of fr)_n.append("Set-Cookie",T);return new Response(et,{status:200,headers:_n})},{body:Jl,detail:{tags:["Authentication"],summary:"Login",description:"Authenticate user with email and password"}}),h}var Vl=u(()=>{Xl();wi();Xl()});function b_(){return{"Set-Cookie":["access_token=; Path=/; HttpOnly; SameSite=Strict; Max-Age=0","refresh_token=; Path=/; HttpOnly; SameSite=Strict; Max-Age=0","session_token=; Path=/; HttpOnly; SameSite=Strict; Max-Age=0"].join(", ")}}import{t as $i}from"elysia";var EA;var g_=u(()=>{EA=$i.Object({success:$i.Boolean(),message:$i.Optional($i.String())})});import{Elysia as SA}from"elysia";function Ai(n,r,t,o){let{logger:a}=n,c=r.route||"/auth/logout",e=new SA;if(!r.enabled)return e;return e.post(c,async(i)=>{let s=i.request.headers.get("x-session-id"),f=i.request.headers.get("x-user-id");if(s){if(await t(s),o)await o(s,"user_logout")}let l=b_();for(let[b,w]of Object.entries(l))i.set.headers[b]=w;a.info("[AUTH] Logout successful",{userId:f,sessionId:s});let d=new URL(i.request.url);return a.audit({entityName:"users",entityId:f||void 0,operation:"LOGOUT",userId:f||void 0,summary:`User logged out${s?` (session: ${s.substring(0,8)}...)`:""}`,ipAddress:i.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||i.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:i.request.headers.get("user-agent")||"unknown",path:d.pathname,query:d.search}),{success:!0,message:"Logged out successfully"}},{detail:{tags:["Authentication"],summary:"Logout",description:"Logout and invalidate session"}}),e}var Cl=u(()=>{g_()});var Er={};co(Er,{IsUndefined:()=>Zn,IsUint8Array:()=>vt,IsSymbol:()=>Nl,IsString:()=>Ln,IsRegExp:()=>Xc,IsObject:()=>zn,IsNumber:()=>Or,IsNull:()=>Ol,IsIterator:()=>Gl,IsFunction:()=>Pl,IsDate:()=>Ko,IsBoolean:()=>Kt,IsBigInt:()=>Jc,IsAsyncIterator:()=>Ql,IsArray:()=>In,HasPropertyKey:()=>Ri});function Ri(n,r){return r in n}function Ql(n){return zn(n)&&!In(n)&&!vt(n)&&Symbol.asyncIterator in n}function In(n){return Array.isArray(n)}function Jc(n){return typeof n==="bigint"}function Kt(n){return typeof n==="boolean"}function Ko(n){return n instanceof globalThis.Date}function Pl(n){return typeof n==="function"}function Gl(n){return zn(n)&&!In(n)&&!vt(n)&&Symbol.iterator in n}function Ol(n){return n===null}function Or(n){return typeof n==="number"}function zn(n){return typeof n==="object"&&n!==null}function Xc(n){return n instanceof globalThis.RegExp}function Ln(n){return typeof n==="string"}function Nl(n){return typeof n==="symbol"}function vt(n){return n instanceof globalThis.Uint8Array}function Zn(n){return n===void 0}function MA(n){return n.map((r)=>ki(r))}function DA(n){return new Date(n.getTime())}function HA(n){return new Uint8Array(n)}function zA(n){return new RegExp(n.source,n.flags)}function UA(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=ki(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=ki(n[t]);return r}function ki(n){return In(n)?MA(n):Ko(n)?DA(n):vt(n)?HA(n):Xc(n)?zA(n):zn(n)?UA(n):n}function Qn(n){return ki(n)}var Br=()=>{};function Ca(n,r){return r===void 0?Qn(n):Qn({...r,...n})}var Ei=u(()=>{Br()});var xl=u(()=>{Ei();Br()});function __(n){return n!==null&&typeof n==="object"}function m_(n){return globalThis.Array.isArray(n)&&!globalThis.ArrayBuffer.isView(n)}function w_(n){return n===void 0}function h_(n){return typeof n==="number"}var $_=()=>{};var Si;var A_=u(()=>{$_();(function(n){n.InstanceMode="default",n.ExactOptionalPropertyTypes=!1,n.AllowArrayObject=!1,n.AllowNaN=!1,n.AllowNullVoid=!1;function r(e,i){return n.ExactOptionalPropertyTypes?i in e:e[i]!==void 0}n.IsExactOptionalProperty=r;function t(e){let i=__(e);return n.AllowArrayObject?i:i&&!m_(e)}n.IsObjectLike=t;function o(e){return t(e)&&!(e instanceof Date)&&!(e instanceof Uint8Array)}n.IsRecordLike=o;function a(e){return n.AllowNaN?h_(e):Number.isFinite(e)}n.IsNumberLike=a;function c(e){let i=w_(e);return n.AllowNullVoid?i||e===null:i}n.IsVoidLike=c})(Si||(Si={}))});function BA(n){return globalThis.Object.freeze(n).map((r)=>Lc(r))}function WA(n){return n}function YA(n){return n}function JA(n){return n}function XA(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=Lc(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=Lc(n[t]);return globalThis.Object.freeze(r)}function Lc(n){return In(n)?BA(n):Ko(n)?WA(n):vt(n)?YA(n):Xc(n)?JA(n):zn(n)?XA(n):n}var R_=()=>{};function J(n,r){let t=r!==void 0?{...r,...n}:n;switch(Si.InstanceMode){case"freeze":return Lc(t);case"clone":return Qn(t);default:return t}}var y=u(()=>{A_();R_();Br()});var Tt=u(()=>{y()});var mr;var k_=u(()=>{mr=class mr extends Error{constructor(n){super(n)}}});var Yt=u(()=>{k_()});var rr,_t,wr,yr,O;var Vc=u(()=>{rr=Symbol.for("TypeBox.Transform"),_t=Symbol.for("TypeBox.Readonly"),wr=Symbol.for("TypeBox.Optional"),yr=Symbol.for("TypeBox.Hint"),O=Symbol.for("TypeBox.Kind")});var rn=u(()=>{Vc()});function Qa(n){return zn(n)&&n[_t]==="Readonly"}function Wr(n){return zn(n)&&n[wr]==="Optional"}function ql(n){return mn(n,"Any")}function Fl(n){return mn(n,"Argument")}function mt(n){return mn(n,"Array")}function vo(n){return mn(n,"AsyncIterator")}function To(n){return mn(n,"BigInt")}function It(n){return mn(n,"Boolean")}function wt(n){return mn(n,"Computed")}function ht(n){return mn(n,"Constructor")}function LA(n){return mn(n,"Date")}function $t(n){return mn(n,"Function")}function At(n){return mn(n,"Integer")}function Nn(n){return mn(n,"Intersect")}function Io(n){return mn(n,"Iterator")}function mn(n,r){return zn(n)&&O in n&&n[O]===r}function Mi(n){return Kt(n)||Or(n)||Ln(n)}function Nr(n){return mn(n,"Literal")}function xr(n){return mn(n,"MappedKey")}function Pn(n){return mn(n,"MappedResult")}function Ro(n){return mn(n,"Never")}function VA(n){return mn(n,"Not")}function Cc(n){return mn(n,"Null")}function Rt(n){return mn(n,"Number")}function yn(n){return mn(n,"Object")}function Zo(n){return mn(n,"Promise")}function yo(n){return mn(n,"Record")}function jn(n){return mn(n,"Ref")}function jl(n){return mn(n,"RegExp")}function Zt(n){return mn(n,"String")}function Qc(n){return mn(n,"Symbol")}function qr(n){return mn(n,"TemplateLiteral")}function CA(n){return mn(n,"This")}function ko(n){return zn(n)&&rr in n}function Fr(n){return mn(n,"Tuple")}function Pc(n){return mn(n,"Undefined")}function wn(n){return mn(n,"Union")}function QA(n){return mn(n,"Uint8Array")}function PA(n){return mn(n,"Unknown")}function GA(n){return mn(n,"Unsafe")}function OA(n){return mn(n,"Void")}function NA(n){return zn(n)&&O in n&&Ln(n[O])}function jr(n){return ql(n)||Fl(n)||mt(n)||It(n)||To(n)||vo(n)||wt(n)||ht(n)||LA(n)||$t(n)||At(n)||Nn(n)||Io(n)||Nr(n)||xr(n)||Pn(n)||Ro(n)||VA(n)||Cc(n)||Rt(n)||yn(n)||Zo(n)||yo(n)||jn(n)||jl(n)||Zt(n)||Qc(n)||qr(n)||CA(n)||Fr(n)||Pc(n)||wn(n)||QA(n)||PA(n)||GA(n)||OA(n)||NA(n)}var Rn=u(()=>{rn()});var $={};co($,{TypeGuardUnknownTypeError:()=>E_,IsVoid:()=>lm,IsUnsafe:()=>fm,IsUnknown:()=>sm,IsUnionLiteral:()=>IA,IsUnion:()=>vl,IsUndefined:()=>em,IsUint8Array:()=>im,IsTuple:()=>cm,IsTransform:()=>am,IsThis:()=>om,IsTemplateLiteral:()=>tm,IsSymbol:()=>rm,IsString:()=>nm,IsSchema:()=>br,IsRegExp:()=>y_,IsRef:()=>Z_,IsRecursive:()=>TA,IsRecord:()=>I_,IsReadonly:()=>jA,IsProperties:()=>Di,IsPromise:()=>T_,IsOptional:()=>pA,IsObject:()=>v_,IsNumber:()=>K_,IsNull:()=>p_,IsNot:()=>j_,IsNever:()=>F_,IsMappedResult:()=>q_,IsMappedKey:()=>x_,IsLiteralValue:()=>N_,IsLiteralString:()=>G_,IsLiteralNumber:()=>O_,IsLiteralBoolean:()=>vA,IsLiteral:()=>Oc,IsKindOf:()=>ln,IsKind:()=>dm,IsIterator:()=>P_,IsIntersect:()=>Q_,IsInteger:()=>C_,IsImport:()=>KA,IsFunction:()=>V_,IsDate:()=>L_,IsConstructor:()=>X_,IsComputed:()=>J_,IsBoolean:()=>Y_,IsBigInt:()=>W_,IsAsyncIterator:()=>B_,IsArray:()=>U_,IsArgument:()=>z_,IsAny:()=>H_});function S_(n){try{return new RegExp(n),!0}catch{return!1}}function pl(n){if(!Ln(n))return!1;for(let r=0;r<n.length;r++){let t=n.charCodeAt(r);if(t>=7&&t<=13||t===27||t===127)return!1}return!0}function M_(n){return Kl(n)||br(n)}function Gc(n){return Zn(n)||Jc(n)}function Vn(n){return Zn(n)||Or(n)}function Kl(n){return Zn(n)||Kt(n)}function Un(n){return Zn(n)||Ln(n)}function qA(n){return Zn(n)||Ln(n)&&pl(n)&&S_(n)}function FA(n){return Zn(n)||Ln(n)&&pl(n)}function D_(n){return Zn(n)||br(n)}function jA(n){return zn(n)&&n[_t]==="Readonly"}function pA(n){return zn(n)&&n[wr]==="Optional"}function H_(n){return ln(n,"Any")&&Un(n.$id)}function z_(n){return ln(n,"Argument")&&Or(n.index)}function U_(n){return ln(n,"Array")&&n.type==="array"&&Un(n.$id)&&br(n.items)&&Vn(n.minItems)&&Vn(n.maxItems)&&Kl(n.uniqueItems)&&D_(n.contains)&&Vn(n.minContains)&&Vn(n.maxContains)}function B_(n){return ln(n,"AsyncIterator")&&n.type==="AsyncIterator"&&Un(n.$id)&&br(n.items)}function W_(n){return ln(n,"BigInt")&&n.type==="bigint"&&Un(n.$id)&&Gc(n.exclusiveMaximum)&&Gc(n.exclusiveMinimum)&&Gc(n.maximum)&&Gc(n.minimum)&&Gc(n.multipleOf)}function Y_(n){return ln(n,"Boolean")&&n.type==="boolean"&&Un(n.$id)}function J_(n){return ln(n,"Computed")&&Ln(n.target)&&In(n.parameters)&&n.parameters.every((r)=>br(r))}function X_(n){return ln(n,"Constructor")&&n.type==="Constructor"&&Un(n.$id)&&In(n.parameters)&&n.parameters.every((r)=>br(r))&&br(n.returns)}function L_(n){return ln(n,"Date")&&n.type==="Date"&&Un(n.$id)&&Vn(n.exclusiveMaximumTimestamp)&&Vn(n.exclusiveMinimumTimestamp)&&Vn(n.maximumTimestamp)&&Vn(n.minimumTimestamp)&&Vn(n.multipleOfTimestamp)}function V_(n){return ln(n,"Function")&&n.type==="Function"&&Un(n.$id)&&In(n.parameters)&&n.parameters.every((r)=>br(r))&&br(n.returns)}function KA(n){return ln(n,"Import")&&Ri(n,"$defs")&&zn(n.$defs)&&Di(n.$defs)&&Ri(n,"$ref")&&Ln(n.$ref)&&n.$ref in n.$defs}function C_(n){return ln(n,"Integer")&&n.type==="integer"&&Un(n.$id)&&Vn(n.exclusiveMaximum)&&Vn(n.exclusiveMinimum)&&Vn(n.maximum)&&Vn(n.minimum)&&Vn(n.multipleOf)}function Di(n){return zn(n)&&Object.entries(n).every(([r,t])=>pl(r)&&br(t))}function Q_(n){return ln(n,"Intersect")&&(Ln(n.type)&&n.type!=="object"?!1:!0)&&In(n.allOf)&&n.allOf.every((r)=>br(r)&&!am(r))&&Un(n.type)&&(Kl(n.unevaluatedProperties)||D_(n.unevaluatedProperties))&&Un(n.$id)}function P_(n){return ln(n,"Iterator")&&n.type==="Iterator"&&Un(n.$id)&&br(n.items)}function ln(n,r){return zn(n)&&O in n&&n[O]===r}function G_(n){return Oc(n)&&Ln(n.const)}function O_(n){return Oc(n)&&Or(n.const)}function vA(n){return Oc(n)&&Kt(n.const)}function Oc(n){return ln(n,"Literal")&&Un(n.$id)&&N_(n.const)}function N_(n){return Kt(n)||Or(n)||Ln(n)}function x_(n){return ln(n,"MappedKey")&&In(n.keys)&&n.keys.every((r)=>Or(r)||Ln(r))}function q_(n){return ln(n,"MappedResult")&&Di(n.properties)}function F_(n){return ln(n,"Never")&&zn(n.not)&&Object.getOwnPropertyNames(n.not).length===0}function j_(n){return ln(n,"Not")&&br(n.not)}function p_(n){return ln(n,"Null")&&n.type==="null"&&Un(n.$id)}function K_(n){return ln(n,"Number")&&n.type==="number"&&Un(n.$id)&&Vn(n.exclusiveMaximum)&&Vn(n.exclusiveMinimum)&&Vn(n.maximum)&&Vn(n.minimum)&&Vn(n.multipleOf)}function v_(n){return ln(n,"Object")&&n.type==="object"&&Un(n.$id)&&Di(n.properties)&&M_(n.additionalProperties)&&Vn(n.minProperties)&&Vn(n.maxProperties)}function T_(n){return ln(n,"Promise")&&n.type==="Promise"&&Un(n.$id)&&br(n.item)}function I_(n){return ln(n,"Record")&&n.type==="object"&&Un(n.$id)&&M_(n.additionalProperties)&&zn(n.patternProperties)&&((r)=>{let t=Object.getOwnPropertyNames(r.patternProperties);return t.length===1&&S_(t[0])&&zn(r.patternProperties)&&br(r.patternProperties[t[0]])})(n)}function TA(n){return zn(n)&&yr in n&&n[yr]==="Recursive"}function Z_(n){return ln(n,"Ref")&&Un(n.$id)&&Ln(n.$ref)}function y_(n){return ln(n,"RegExp")&&Un(n.$id)&&Ln(n.source)&&Ln(n.flags)&&Vn(n.maxLength)&&Vn(n.minLength)}function nm(n){return ln(n,"String")&&n.type==="string"&&Un(n.$id)&&Vn(n.minLength)&&Vn(n.maxLength)&&qA(n.pattern)&&FA(n.format)}function rm(n){return ln(n,"Symbol")&&n.type==="symbol"&&Un(n.$id)}function tm(n){return ln(n,"TemplateLiteral")&&n.type==="string"&&Ln(n.pattern)&&n.pattern[0]==="^"&&n.pattern[n.pattern.length-1]==="$"}function om(n){return ln(n,"This")&&Un(n.$id)&&Ln(n.$ref)}function am(n){return zn(n)&&rr in n}function cm(n){return ln(n,"Tuple")&&n.type==="array"&&Un(n.$id)&&Or(n.minItems)&&Or(n.maxItems)&&n.minItems===n.maxItems&&(Zn(n.items)&&Zn(n.additionalItems)&&n.minItems===0||In(n.items)&&n.items.every((r)=>br(r)))}function em(n){return ln(n,"Undefined")&&n.type==="undefined"&&Un(n.$id)}function IA(n){return vl(n)&&n.anyOf.every((r)=>G_(r)||O_(r))}function vl(n){return ln(n,"Union")&&Un(n.$id)&&zn(n)&&In(n.anyOf)&&n.anyOf.every((r)=>br(r))}function im(n){return ln(n,"Uint8Array")&&n.type==="Uint8Array"&&Un(n.$id)&&Vn(n.minByteLength)&&Vn(n.maxByteLength)}function sm(n){return ln(n,"Unknown")&&Un(n.$id)}function fm(n){return ln(n,"Unsafe")}function lm(n){return ln(n,"Void")&&n.type==="void"&&Un(n.$id)}function dm(n){return zn(n)&&O in n&&Ln(n[O])&&!xA.includes(n[O])}function br(n){return zn(n)&&(H_(n)||z_(n)||U_(n)||Y_(n)||W_(n)||B_(n)||J_(n)||X_(n)||L_(n)||V_(n)||C_(n)||Q_(n)||P_(n)||Oc(n)||x_(n)||q_(n)||F_(n)||j_(n)||p_(n)||K_(n)||v_(n)||T_(n)||I_(n)||Z_(n)||y_(n)||nm(n)||rm(n)||tm(n)||om(n)||cm(n)||em(n)||vl(n)||im(n)||sm(n)||fm(n)||lm(n)||dm(n))}var E_,xA;var um=u(()=>{rn();Yt();E_=class E_ extends mr{};xA=["Argument","Any","Array","AsyncIterator","BigInt","Boolean","Computed","Constructor","Date","Enum","Function","Integer","Intersect","Iterator","Literal","MappedKey","MappedResult","Not","Null","Number","Object","Promise","Record","Ref","RegExp","String","Symbol","TemplateLiteral","This","Tuple","Undefined","Union","Uint8Array","Unknown","Void"]});var Tl=u(()=>{Rn();um()});var bm=()=>{};var gm="(true|false)",Hi="(0|[1-9][0-9]*)",_m="(.*)",Eo="^(0|[1-9][0-9]*)$",So="^(.*)$",mm="^(?!.*)$";var Nc=()=>{};var wm=()=>{};var hm=()=>{};var $m=u(()=>{wm();hm()});function Am(n,r){return n.includes(r)}function Rm(n){return[...new Set(n)]}function nR(n,r){return n.filter((t)=>r.includes(t))}function rR(n,r){return n.reduce((t,o)=>{return nR(t,o)},r)}function km(n){return n.length===1?n[0]:n.length>1?rR(n.slice(1),n[0]):[]}function Em(n){let r=[];for(let t of n)r.push(...t);return r}var xc=()=>{};function Mo(n){return J({[O]:"Any"},n)}var Sm=u(()=>{Tt();rn()});var qc=u(()=>{Sm()});function Pa(n,r){return J({[O]:"Array",type:"array",items:n},r)}var Mm=u(()=>{y();rn()});var Fc=u(()=>{Mm()});function Dm(n){return J({[O]:"Argument",index:n})}var Hm=u(()=>{y();rn()});var Il=u(()=>{Hm()});function Ga(n,r){return J({[O]:"AsyncIterator",type:"AsyncIterator",items:n},r)}var zm=u(()=>{rn();y()});var jc=u(()=>{zm()});function Cn(n,r,t){return J({[O]:"Computed",target:n,parameters:r},t)}var Um=u(()=>{Tt();Vc()});var Do=u(()=>{Um()});function tR(n,r){let{[r]:t,...o}=n;return o}function xn(n,r){return r.reduce((t,o)=>tR(t,o),n)}var no=()=>{};function hn(n){return J({[O]:"Never",not:{}},n)}var Bm=u(()=>{y();rn()});var hr=u(()=>{Bm()});var Wm=()=>{};function kn(n){return J({[O]:"MappedResult",properties:n})}var Zl=u(()=>{y();rn()});function Oa(n,r,t){return J({[O]:"Constructor",type:"Constructor",parameters:n,returns:r},t)}var Ym=u(()=>{y();rn()});var pc=u(()=>{Ym()});function Jt(n,r,t){return J({[O]:"Function",type:"Function",parameters:n,returns:r},t)}var Jm=u(()=>{y();rn()});var na=u(()=>{Jm()});function Kc(n,r){return J({[O]:"Union",anyOf:n},r)}var yl=u(()=>{y();rn()});function oR(n){return n.some((r)=>Wr(r))}function Xm(n){return n.map((r)=>Wr(r)?aR(r):r)}function aR(n){return xn(n,[wr])}function cR(n,r){return oR(n)?Sr(Kc(Xm(n),r)):Kc(Xm(n),r)}function Xt(n,r){return n.length===1?J(n[0],r):n.length===0?hn(r):cR(n,r)}var Lm=u(()=>{y();rn();no();hr();ro();yl();Rn()});var Vm=()=>{};function Dn(n,r){return n.length===0?hn(r):n.length===1?J(n[0],r):Kc(n,r)}var Cm=u(()=>{hr();y();yl()});var tr=u(()=>{Lm();Vm();Cm()});function eR(n){return n.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function r0(n,r,t){return n[r]===t&&n.charCodeAt(r-1)!==92}function to(n,r){return r0(n,r,"(")}function vc(n,r){return r0(n,r,")")}function Qm(n,r){return r0(n,r,"|")}function iR(n){if(!(to(n,0)&&vc(n,n.length-1)))return!1;let r=0;for(let t=0;t<n.length;t++){if(to(n,t))r+=1;if(vc(n,t))r-=1;if(r===0&&t!==n.length-1)return!1}return!0}function sR(n){return n.slice(1,n.length-1)}function fR(n){let r=0;for(let t=0;t<n.length;t++){if(to(n,t))r+=1;if(vc(n,t))r-=1;if(Qm(n,t)&&r===0)return!0}return!1}function lR(n){for(let r=0;r<n.length;r++)if(to(n,r))return!0;return!1}function dR(n){let[r,t]=[0,0],o=[];for(let c=0;c<n.length;c++){if(to(n,c))r+=1;if(vc(n,c))r-=1;if(Qm(n,c)&&r===0){let e=n.slice(t,c);if(e.length>0)o.push(Na(e));t=c+1}}let a=n.slice(t);if(a.length>0)o.push(Na(a));if(o.length===0)return{type:"const",const:""};if(o.length===1)return o[0];return{type:"or",expr:o}}function uR(n){function r(a,c){if(!to(a,c))throw new n0("TemplateLiteralParser: Index must point to open parens");let e=0;for(let i=c;i<a.length;i++){if(to(a,i))e+=1;if(vc(a,i))e-=1;if(e===0)return[c,i]}throw new n0("TemplateLiteralParser: Unclosed group parens in expression")}function t(a,c){for(let e=c;e<a.length;e++)if(to(a,e))return[c,e];return[c,a.length]}let o=[];for(let a=0;a<n.length;a++)if(to(n,a)){let[c,e]=r(n,a),i=n.slice(c,e+1);o.push(Na(i)),a=e}else{let[c,e]=t(n,a),i=n.slice(c,e);if(i.length>0)o.push(Na(i));a=e-1}return o.length===0?{type:"const",const:""}:o.length===1?o[0]:{type:"and",expr:o}}function Na(n){return iR(n)?Na(sR(n)):fR(n)?dR(n):lR(n)?uR(n):{type:"const",const:eR(n)}}function xa(n){return Na(n.slice(1,n.length-1))}var n0;var zi=u(()=>{Yt();n0=class n0 extends mr{}});function bR(n){return n.type==="or"&&n.expr.length===2&&n.expr[0].type==="const"&&n.expr[0].const==="0"&&n.expr[1].type==="const"&&n.expr[1].const==="[1-9][0-9]*"}function gR(n){return n.type==="or"&&n.expr.length===2&&n.expr[0].type==="const"&&n.expr[0].const==="true"&&n.expr[1].type==="const"&&n.expr[1].const==="false"}function _R(n){return n.type==="const"&&n.const===".*"}function ra(n){return bR(n)||_R(n)?!1:gR(n)?!0:n.type==="and"?n.expr.every((r)=>ra(r)):n.type==="or"?n.expr.every((r)=>ra(r)):n.type==="const"?!0:(()=>{throw new Pm("Unknown expression type")})()}function Gm(n){let r=xa(n.pattern);return ra(r)}var Pm;var t0=u(()=>{zi();Yt();Pm=class Pm extends mr{}});function*Nm(n){if(n.length===1)return yield*n[0];for(let r of n[0])for(let t of Nm(n.slice(1)))yield`${r}${t}`}function*mR(n){return yield*Nm(n.expr.map((r)=>[...Tc(r)]))}function*wR(n){for(let r of n.expr)yield*Tc(r)}function*hR(n){return yield n.const}function*Tc(n){return n.type==="and"?yield*mR(n):n.type==="or"?yield*wR(n):n.type==="const"?yield*hR(n):(()=>{throw new Om("Unknown expression")})()}function Ui(n){let r=xa(n.pattern);return ra(r)?[...Tc(r)]:[]}var Om;var o0=u(()=>{t0();zi();Yt();Om=class Om extends mr{}});function En(n,r){return J({[O]:"Literal",const:n,type:typeof n},r)}var xm=u(()=>{y();rn()});var Yr=u(()=>{xm()});function Bi(n){return J({[O]:"Boolean",type:"boolean"},n)}var qm=u(()=>{rn();Tt()});var Wi=u(()=>{qm()});function qa(n){return J({[O]:"BigInt",type:"bigint"},n)}var Fm=u(()=>{rn();Tt()});var Ic=u(()=>{Fm()});function nt(n){return J({[O]:"Number",type:"number"},n)}var jm=u(()=>{y();rn()});var ta=u(()=>{jm()});function kt(n){return J({[O]:"String",type:"string"},n)}var pm=u(()=>{y();rn()});var Fa=u(()=>{pm()});function*$R(n){let r=n.trim().replace(/"|'/g,"");return r==="boolean"?yield Bi():r==="number"?yield nt():r==="bigint"?yield qa():r==="string"?yield kt():yield(()=>{let t=r.split("|").map((o)=>En(o.trim()));return t.length===0?hn():t.length===1?t[0]:Xt(t)})()}function*AR(n){if(n[1]!=="{"){let r=En("$"),t=a0(n.slice(1));return yield*[r,...t]}for(let r=2;r<n.length;r++)if(n[r]==="}"){let t=$R(n.slice(2,r)),o=a0(n.slice(r+1));return yield*[...t,...o]}yield En(n)}function*a0(n){for(let r=0;r<n.length;r++)if(n[r]==="$"){let t=En(n.slice(0,r)),o=AR(n.slice(r));return yield*[t,...o]}yield En(n)}function Km(n){return[...a0(n)]}var c0=u(()=>{Yr();Wi();Ic();ta();Fa();tr();hr()});function RR(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Tm(n,r){return qr(n)?n.pattern.slice(1,n.pattern.length-1):wn(n)?`(${n.anyOf.map((t)=>Tm(t,r)).join("|")})`:Rt(n)?`${r}${Hi}`:At(n)?`${r}${Hi}`:To(n)?`${r}${Hi}`:Zt(n)?`${r}${_m}`:Nr(n)?`${r}${RR(n.const.toString())}`:It(n)?`${r}${gm}`:(()=>{throw new vm(`Unexpected Kind '${n[O]}'`)})()}function e0(n){return`^${n.map((r)=>Tm(r,"")).join("")}$`}var vm;var i0=u(()=>{Nc();rn();Yt();Rn();vm=class vm extends mr{}});function oa(n){let t=Ui(n).map((o)=>En(o));return Xt(t)}var Im=u(()=>{tr();Yr();o0()});function Yi(n,r){let t=Ln(n)?e0(Km(n)):e0(n);return J({[O]:"TemplateLiteral",type:"string",pattern:t},r)}var Zm=u(()=>{y();c0();i0();rn()});var oo=u(()=>{t0();o0();c0();zi();i0();Im();Zm()});function kR(n){return Ui(n).map((t)=>t.toString())}function ER(n){let r=[];for(let t of n)r.push(...Jr(t));return r}function SR(n){return[n.toString()]}function Jr(n){return[...new Set(qr(n)?kR(n):wn(n)?ER(n.anyOf):Nr(n)?SR(n.const):Rt(n)?["[number]"]:At(n)?["[number]"]:[])]}var Ji=u(()=>{oo();Rn()});function MR(n,r,t){let o={};for(let a of Object.getOwnPropertyNames(r))o[a]=Ho(n,Jr(r[a]),t);return o}function DR(n,r,t){return MR(n,r.properties,t)}function ym(n,r,t){let o=DR(n,r,t);return kn(o)}var s0=u(()=>{sr();Ji();Lt()});function rw(n,r){return n.map((t)=>tw(t,r))}function HR(n){return n.filter((r)=>!Ro(r))}function zR(n,r){return Xi(HR(rw(n,r)))}function UR(n){return n.some((r)=>Ro(r))?[]:n}function BR(n,r){return Xt(UR(rw(n,r)))}function WR(n,r){return r in n?n[r]:r==="[number]"?Xt(n):hn()}function YR(n,r){return r==="[number]"?n:hn()}function JR(n,r){return r in n?n[r]:hn()}function tw(n,r){return Nn(n)?zR(n.allOf,r):wn(n)?BR(n.anyOf,r):Fr(n)?WR(n.items??[],r):mt(n)?YR(n.items,r):yn(n)?JR(n.properties,r):hn()}function f0(n,r){return r.map((t)=>tw(n,t))}function nw(n,r){return Xt(f0(n,r))}function Ho(n,r,t){if(jn(n)||jn(r)){if(!jr(n)||!jr(r))throw new mr("Index types using Ref parameters require both Type and Key to be of TSchema");return Cn("Index",[n,r])}if(Pn(r))return ym(n,r,t);if(xr(r))return ow(n,r,t);return J(jr(r)?nw(n,Jr(r)):nw(n,r),t)}var l0=u(()=>{y();Yt();Do();hr();rt();tr();Ji();d0();s0();Rn()});function XR(n,r,t){return{[r]:Ho(n,[r],Qn(t))}}function LR(n,r,t){return r.reduce((o,a)=>{return{...o,...XR(n,a,t)}},{})}function VR(n,r,t){return LR(n,r.keys,t)}function ow(n,r,t){let o=VR(n,r,t);return kn(o)}var d0=u(()=>{l0();sr();Br()});var Lt=u(()=>{d0();s0();Ji();l0()});function ja(n,r){return J({[O]:"Iterator",type:"Iterator",items:n},r)}var aw=u(()=>{y();rn()});var Zc=u(()=>{aw()});function CR(n){return globalThis.Object.keys(n).filter((r)=>!Wr(n[r]))}function QR(n,r){let t=CR(n),o=t.length>0?{[O]:"Object",type:"object",required:t,properties:n}:{[O]:"Object",type:"object",properties:n};return J(o,r)}var Bn;var cw=u(()=>{y();rn();Rn();Bn=QR});var pr=u(()=>{cw()});function Li(n,r){return J({[O]:"Promise",type:"Promise",item:n},r)}var ew=u(()=>{y();rn()});var Vi=u(()=>{ew()});function PR(n){return J(xn(n,[_t]))}function GR(n){return J({...n,[_t]:"Readonly"})}function OR(n,r){return r===!1?PR(n):GR(n)}function Xr(n,r){let t=r??!0;return Pn(n)?iw(n,t):OR(n,t)}var u0=u(()=>{y();rn();no();b0();Rn()});function NR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Xr(n[o],r);return t}function xR(n,r){return NR(n.properties,r)}function iw(n,r){let t=xR(n,r);return kn(t)}var b0=u(()=>{sr();u0()});var aa=u(()=>{b0();u0()});function tt(n,r){return J(n.length>0?{[O]:"Tuple",type:"array",items:n,additionalItems:!1,minItems:n.length,maxItems:n.length}:{[O]:"Tuple",type:"array",minItems:n.length,maxItems:n.length},r)}var sw=u(()=>{y();rn()});var zo=u(()=>{sw()});function fw(n,r){return n in r?ot(n,r[n]):kn(r)}function qR(n){return{[n]:En(n)}}function FR(n){let r={};for(let t of n)r[t]=En(t);return r}function jR(n,r){return Am(r,n)?qR(n):FR(r)}function pR(n,r){let t=jR(n,r);return fw(n,t)}function yc(n,r){return r.map((t)=>ot(n,t))}function KR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(r))t[o]=ot(n,r[o]);return t}function ot(n,r){let t={...r};return Wr(r)?Sr(ot(n,xn(r,[wr]))):Qa(r)?Xr(ot(n,xn(r,[_t]))):Pn(r)?fw(n,r.properties):xr(r)?pR(n,r.keys):ht(r)?Oa(yc(n,r.parameters),ot(n,r.returns),t):$t(r)?Jt(yc(n,r.parameters),ot(n,r.returns),t):vo(r)?Ga(ot(n,r.items),t):Io(r)?ja(ot(n,r.items),t):Nn(r)?Mr(yc(n,r.allOf),t):wn(r)?Dn(yc(n,r.anyOf),t):Fr(r)?tt(yc(n,r.items??[]),t):yn(r)?Bn(KR(n,r.properties),t):mt(r)?Pa(ot(n,r.items),t):Zo(r)?Li(ot(n,r.item),t):r}function vR(n,r){let t={};for(let o of n)t[o]=ot(o,r);return t}function lw(n,r,t){let o=jr(n)?Jr(n):n,a=r({[O]:"MappedKey",keys:o}),c=vR(o,a);return Bn(c,t)}var dw=u(()=>{rn();no();Fc();jc();pc();na();Lt();rt();Zc();Yr();pr();ro();Vi();aa();zo();tr();xc();Zl();Rn()});var sr=u(()=>{Wm();Zl();dw()});function TR(n){return J(xn(n,[wr]))}function IR(n){return J({...n,[wr]:"Optional"})}function ZR(n,r){return r===!1?TR(n):IR(n)}function Sr(n,r){let t=r??!0;return Pn(n)?uw(n,t):ZR(n,t)}var g0=u(()=>{y();rn();no();_0();Rn()});function yR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Sr(n[o],r);return t}function n3(n,r){return yR(n.properties,r)}function uw(n,r){let t=n3(n,r);return kn(t)}var _0=u(()=>{sr();g0()});var ro=u(()=>{_0();g0()});function ne(n,r={}){let t=n.every((a)=>yn(a)),o=jr(r.unevaluatedProperties)?{unevaluatedProperties:r.unevaluatedProperties}:{};return J(r.unevaluatedProperties===!1||jr(r.unevaluatedProperties)||t?{...o,[O]:"Intersect",type:"object",allOf:n}:{...o,[O]:"Intersect",allOf:n},r)}var m0=u(()=>{y();rn();Rn()});function r3(n){return n.every((r)=>Wr(r))}function t3(n){return xn(n,[wr])}function bw(n){return n.map((r)=>Wr(r)?t3(r):r)}function o3(n,r){return r3(n)?Sr(ne(bw(n),r)):ne(bw(n),r)}function Xi(n,r={}){if(n.length===1)return J(n[0],r);if(n.length===0)return hn(r);if(n.some((t)=>ko(t)))throw Error("Cannot intersect transform types");return o3(n,r)}var gw=u(()=>{rn();y();no();hr();ro();m0();Rn()});var _w=()=>{};function Mr(n,r){if(n.length===1)return J(n[0],r);if(n.length===0)return hn(r);if(n.some((t)=>ko(t)))throw Error("Cannot intersect transform types");return ne(n,r)}var mw=u(()=>{y();hr();m0();Rn()});var rt=u(()=>{gw();_w();mw()});function Vt(...n){let[r,t]=typeof n[0]==="string"?[n[0],n[1]]:[n[0].$id,n[1]];if(typeof r!=="string")throw new mr("Ref: $ref must be a string");return J({[O]:"Ref",$ref:r},t)}var ww=u(()=>{Yt();y();rn()});var ca=u(()=>{ww()});function a3(n,r){return Cn("Awaited",[Cn(n,r)])}function c3(n){return Cn("Awaited",[Vt(n)])}function e3(n){return Mr(hw(n))}function i3(n){return Dn(hw(n))}function s3(n){return pa(n)}function hw(n){return n.map((r)=>pa(r))}function pa(n,r){return J(wt(n)?a3(n.target,n.parameters):Nn(n)?e3(n.allOf):wn(n)?i3(n.anyOf):Zo(n)?s3(n.item):jn(n)?c3(n.$ref):n,r)}var $w=u(()=>{y();Do();rt();tr();ca();Rn()});var Ci=u(()=>{$w()});function Aw(n){let r=[];for(let t of n)r.push(re(t));return r}function f3(n){let r=Aw(n);return Em(r)}function l3(n){let r=Aw(n);return km(r)}function d3(n){return n.map((r,t)=>t.toString())}function u3(n){return["[number]"]}function b3(n){return globalThis.Object.getOwnPropertyNames(n)}function g3(n){if(!_3)return[];return globalThis.Object.getOwnPropertyNames(n).map((t)=>{return t[0]==="^"&&t[t.length-1]==="$"?t.slice(1,t.length-1):t})}function re(n){return Nn(n)?f3(n.allOf):wn(n)?l3(n.anyOf):Fr(n)?d3(n.items??[]):mt(n)?u3(n.items):yn(n)?b3(n.properties):yo(n)?g3(n.patternProperties):[]}var _3=!1;var w0=u(()=>{xc();Rn()});function m3(n,r){return Cn("KeyOf",[Cn(n,r)])}function w3(n){return Cn("KeyOf",[Vt(n)])}function h3(n,r){let t=re(n),o=$3(t),a=Xt(o);return J(a,r)}function $3(n){return n.map((r)=>r==="[number]"?nt():En(r))}function Ka(n,r){return wt(n)?m3(n.target,n.parameters):jn(n)?w3(n.$ref):Pn(n)?Rw(n,r):h3(n,r)}var h0=u(()=>{y();Yr();ta();Do();ca();w0();tr();$0();Rn()});function A3(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Ka(n[o],Qn(r));return t}function R3(n,r){return A3(n.properties,r)}function Rw(n,r){let t=R3(n,r);return kn(t)}var $0=u(()=>{sr();h0();Br()});var kw=()=>{};var te=u(()=>{$0();kw();w0();h0()});function k3(n){let r=[];for(let t of n)r.push(...re(t));return Rm(r)}function E3(n){return n.filter((r)=>!Ro(r))}function S3(n,r){let t=[];for(let o of n)t.push(...f0(o,[r]));return E3(t)}function M3(n,r){let t={};for(let o of r)t[o]=Xi(S3(n,o));return t}function Ew(n,r){let t=k3(n),o=M3(n,t);return Bn(o,r)}var Sw=u(()=>{rt();Lt();te();pr();xc();Rn()});var A0=u(()=>{Sw()});function Qi(n){return J({[O]:"Date",type:"Date"},n)}var Mw=u(()=>{rn();y()});var Pi=u(()=>{Mw()});function Gi(n){return J({[O]:"Null",type:"null"},n)}var Dw=u(()=>{y();rn()});var Oi=u(()=>{Dw()});function Ni(n){return J({[O]:"Symbol",type:"symbol"},n)}var Hw=u(()=>{y();rn()});var xi=u(()=>{Hw()});function qi(n){return J({[O]:"Undefined",type:"undefined"},n)}var zw=u(()=>{y();rn()});var Fi=u(()=>{zw()});function ji(n){return J({[O]:"Uint8Array",type:"Uint8Array"},n)}var Uw=u(()=>{y();rn()});var pi=u(()=>{Uw()});function Uo(n){return J({[O]:"Unknown"},n)}var Bw=u(()=>{y();rn()});var va=u(()=>{Bw()});function D3(n){return n.map((r)=>R0(r,!1))}function H3(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=Xr(R0(n[t],!1));return r}function Ki(n,r){return r===!0?n:Xr(n)}function R0(n,r){return Ql(n)?Ki(Mo(),r):Gl(n)?Ki(Mo(),r):In(n)?Xr(tt(D3(n))):vt(n)?ji():Ko(n)?Qi():zn(n)?Ki(Bn(H3(n)),r):Pl(n)?Ki(Jt([],Uo()),r):Zn(n)?qi():Ol(n)?Gi():Nl(n)?Ni():Jc(n)?qa():Or(n)?En(n):Kt(n)?En(n):Ln(n)?En(n):Bn({})}function Ww(n,r){return J(R0(n,!0),r)}var Yw=u(()=>{qc();Ic();Pi();na();Yr();Oi();pr();xi();zo();aa();Fi();pi();va();Tt()});var k0=u(()=>{Yw()});function Jw(n,r){return ht(n)?tt(n.parameters,r):hn(r)}var Xw=u(()=>{zo();hr();Rn()});var E0=u(()=>{Xw()});function Lw(n,r){if(Zn(n))throw Error("Enum undefined or empty");let t=globalThis.Object.getOwnPropertyNames(n).filter((c)=>isNaN(c)).map((c)=>n[c]),a=[...new Set(t)].map((c)=>En(c));return Dn(a,{...r,[yr]:"Enum"})}var Vw=u(()=>{Yr();rn();tr()});var S0=u(()=>{Vw()});function at(n){return n===X.False?n:X.True}function Ta(n){throw new Ow(n)}function or(n){return $.IsNever(n)||$.IsIntersect(n)||$.IsUnion(n)||$.IsUnknown(n)||$.IsAny(n)}function ar(n,r){return $.IsNever(r)?qw(n,r):$.IsIntersect(r)?vi(n,r):$.IsUnion(r)?U0(n,r):$.IsUnknown(r)?Kw(n,r):$.IsAny(r)?z0(n,r):Ta("StructuralRight")}function z0(n,r){return X.True}function z3(n,r){return $.IsIntersect(r)?vi(n,r):$.IsUnion(r)&&r.anyOf.some((t)=>$.IsAny(t)||$.IsUnknown(t))?X.True:$.IsUnion(r)?X.Union:$.IsUnknown(r)?X.True:$.IsAny(r)?X.True:X.Union}function U3(n,r){return $.IsUnknown(n)?X.False:$.IsAny(n)?X.Union:$.IsNever(n)?X.True:X.False}function B3(n,r){return $.IsObject(r)&&Ti(r)?X.True:or(r)?ar(n,r):!$.IsArray(r)?X.False:at(Wn(n.items,r.items))}function W3(n,r){return or(r)?ar(n,r):!$.IsAsyncIterator(r)?X.False:at(Wn(n.items,r.items))}function Y3(n,r){return or(r)?ar(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsBigInt(r)?X.True:X.False}function Nw(n,r){return $.IsLiteralBoolean(n)?X.True:$.IsBoolean(n)?X.True:X.False}function J3(n,r){return or(r)?ar(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsBoolean(r)?X.True:X.False}function X3(n,r){return or(r)?ar(n,r):$.IsObject(r)?Dr(n,r):!$.IsConstructor(r)?X.False:n.parameters.length>r.parameters.length?X.False:!n.parameters.every((t,o)=>at(Wn(r.parameters[o],t))===X.True)?X.False:at(Wn(n.returns,r.returns))}function L3(n,r){return or(r)?ar(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsDate(r)?X.True:X.False}function V3(n,r){return or(r)?ar(n,r):$.IsObject(r)?Dr(n,r):!$.IsFunction(r)?X.False:n.parameters.length>r.parameters.length?X.False:!n.parameters.every((t,o)=>at(Wn(r.parameters[o],t))===X.True)?X.False:at(Wn(n.returns,r.returns))}function xw(n,r){return $.IsLiteral(n)&&Er.IsNumber(n.const)?X.True:$.IsNumber(n)||$.IsInteger(n)?X.True:X.False}function C3(n,r){return $.IsInteger(r)||$.IsNumber(r)?X.True:or(r)?ar(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):X.False}function vi(n,r){return r.allOf.every((t)=>Wn(n,t)===X.True)?X.True:X.False}function Q3(n,r){return n.allOf.some((t)=>Wn(t,r)===X.True)?X.True:X.False}function P3(n,r){return or(r)?ar(n,r):!$.IsIterator(r)?X.False:at(Wn(n.items,r.items))}function G3(n,r){return $.IsLiteral(r)&&r.const===n.const?X.True:or(r)?ar(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsString(r)?pw(n,r):$.IsNumber(r)?Fw(n,r):$.IsInteger(r)?xw(n,r):$.IsBoolean(r)?Nw(n,r):X.False}function qw(n,r){return X.False}function O3(n,r){return X.True}function Cw(n){let[r,t]=[n,0];while(!0){if(!$.IsNot(r))break;r=r.not,t+=1}return t%2===0?r:Uo()}function N3(n,r){return $.IsNot(n)?Wn(Cw(n),r):$.IsNot(r)?Wn(n,Cw(r)):Ta("Invalid fallthrough for Not")}function x3(n,r){return or(r)?ar(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsNull(r)?X.True:X.False}function Fw(n,r){return $.IsLiteralNumber(n)?X.True:$.IsNumber(n)||$.IsInteger(n)?X.True:X.False}function q3(n,r){return or(r)?ar(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsInteger(r)||$.IsNumber(r)?X.True:X.False}function Lr(n,r){return Object.getOwnPropertyNames(n.properties).length===r}function Qw(n){return Ti(n)}function Pw(n){return Lr(n,0)||Lr(n,1)&&"description"in n.properties&&$.IsUnion(n.properties.description)&&n.properties.description.anyOf.length===2&&($.IsString(n.properties.description.anyOf[0])&&$.IsUndefined(n.properties.description.anyOf[1])||$.IsString(n.properties.description.anyOf[1])&&$.IsUndefined(n.properties.description.anyOf[0]))}function M0(n){return Lr(n,0)}function Gw(n){return Lr(n,0)}function F3(n){return Lr(n,0)}function j3(n){return Lr(n,0)}function p3(n){return Ti(n)}function K3(n){let r=nt();return Lr(n,0)||Lr(n,1)&&"length"in n.properties&&at(Wn(n.properties.length,r))===X.True}function v3(n){return Lr(n,0)}function Ti(n){let r=nt();return Lr(n,0)||Lr(n,1)&&"length"in n.properties&&at(Wn(n.properties.length,r))===X.True}function T3(n){let r=Jt([Mo()],Mo());return Lr(n,0)||Lr(n,1)&&"then"in n.properties&&at(Wn(n.properties.then,r))===X.True}function jw(n,r){return Wn(n,r)===X.False?X.False:$.IsOptional(n)&&!$.IsOptional(r)?X.False:X.True}function Dr(n,r){return $.IsUnknown(n)?X.False:$.IsAny(n)?X.Union:$.IsNever(n)||$.IsLiteralString(n)&&Qw(r)||$.IsLiteralNumber(n)&&M0(r)||$.IsLiteralBoolean(n)&&Gw(r)||$.IsSymbol(n)&&Pw(r)||$.IsBigInt(n)&&F3(r)||$.IsString(n)&&Qw(r)||$.IsSymbol(n)&&Pw(r)||$.IsNumber(n)&&M0(r)||$.IsInteger(n)&&M0(r)||$.IsBoolean(n)&&Gw(r)||$.IsUint8Array(n)&&p3(r)||$.IsDate(n)&&j3(r)||$.IsConstructor(n)&&v3(r)||$.IsFunction(n)&&K3(r)?X.True:$.IsRecord(n)&&$.IsString(D0(n))?(()=>{return r[yr]==="Record"?X.True:X.False})():$.IsRecord(n)&&$.IsNumber(D0(n))?(()=>{return Lr(r,0)?X.True:X.False})():X.False}function I3(n,r){return or(r)?ar(n,r):$.IsRecord(r)?ct(n,r):!$.IsObject(r)?X.False:(()=>{for(let t of Object.getOwnPropertyNames(r.properties)){if(!(t in n.properties)&&!$.IsOptional(r.properties[t]))return X.False;if($.IsOptional(r.properties[t]))return X.True;if(jw(n.properties[t],r.properties[t])===X.False)return X.False}return X.True})()}function Z3(n,r){return or(r)?ar(n,r):$.IsObject(r)&&T3(r)?X.True:!$.IsPromise(r)?X.False:at(Wn(n.item,r.item))}function D0(n){return Eo in n.patternProperties?nt():(So in n.patternProperties)?kt():Ta("Unknown record key pattern")}function H0(n){return Eo in n.patternProperties?n.patternProperties[Eo]:(So in n.patternProperties)?n.patternProperties[So]:Ta("Unable to get record value schema")}function ct(n,r){let[t,o]=[D0(r),H0(r)];return $.IsLiteralString(n)&&$.IsNumber(t)&&at(Wn(n,o))===X.True?X.True:$.IsUint8Array(n)&&$.IsNumber(t)?Wn(n,o):$.IsString(n)&&$.IsNumber(t)?Wn(n,o):$.IsArray(n)&&$.IsNumber(t)?Wn(n,o):$.IsObject(n)?(()=>{for(let a of Object.getOwnPropertyNames(n.properties))if(jw(o,n.properties[a])===X.False)return X.False;return X.True})():X.False}function y3(n,r){return or(r)?ar(n,r):$.IsObject(r)?Dr(n,r):!$.IsRecord(r)?X.False:Wn(H0(n),H0(r))}function nk(n,r){let t=$.IsRegExp(n)?kt():n,o=$.IsRegExp(r)?kt():r;return Wn(t,o)}function pw(n,r){return $.IsLiteral(n)&&Er.IsString(n.const)?X.True:$.IsString(n)?X.True:X.False}function rk(n,r){return or(r)?ar(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsString(r)?X.True:X.False}function tk(n,r){return or(r)?ar(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsSymbol(r)?X.True:X.False}function ok(n,r){return $.IsTemplateLiteral(n)?Wn(oa(n),r):$.IsTemplateLiteral(r)?Wn(n,oa(r)):Ta("Invalid fallthrough for TemplateLiteral")}function ak(n,r){return $.IsArray(r)&&n.items!==void 0&&n.items.every((t)=>Wn(t,r.items)===X.True)}function ck(n,r){return $.IsNever(n)?X.True:$.IsUnknown(n)?X.False:$.IsAny(n)?X.Union:X.False}function ek(n,r){return or(r)?ar(n,r):$.IsObject(r)&&Ti(r)?X.True:$.IsArray(r)&&ak(n,r)?X.True:!$.IsTuple(r)?X.False:Er.IsUndefined(n.items)&&!Er.IsUndefined(r.items)||!Er.IsUndefined(n.items)&&Er.IsUndefined(r.items)?X.False:Er.IsUndefined(n.items)&&!Er.IsUndefined(r.items)?X.True:n.items.every((t,o)=>Wn(t,r.items[o])===X.True)?X.True:X.False}function ik(n,r){return or(r)?ar(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsUint8Array(r)?X.True:X.False}function sk(n,r){return or(r)?ar(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsVoid(r)?dk(n,r):$.IsUndefined(r)?X.True:X.False}function U0(n,r){return r.anyOf.some((t)=>Wn(n,t)===X.True)?X.True:X.False}function fk(n,r){return n.anyOf.every((t)=>Wn(t,r)===X.True)?X.True:X.False}function Kw(n,r){return X.True}function lk(n,r){return $.IsNever(r)?qw(n,r):$.IsIntersect(r)?vi(n,r):$.IsUnion(r)?U0(n,r):$.IsAny(r)?z0(n,r):$.IsString(r)?pw(n,r):$.IsNumber(r)?Fw(n,r):$.IsInteger(r)?xw(n,r):$.IsBoolean(r)?Nw(n,r):$.IsArray(r)?U3(n,r):$.IsTuple(r)?ck(n,r):$.IsObject(r)?Dr(n,r):$.IsUnknown(r)?X.True:X.False}function dk(n,r){return $.IsUndefined(n)?X.True:$.IsUndefined(n)?X.True:X.False}function uk(n,r){return $.IsIntersect(r)?vi(n,r):$.IsUnion(r)?U0(n,r):$.IsUnknown(r)?Kw(n,r):$.IsAny(r)?z0(n,r):$.IsObject(r)?Dr(n,r):$.IsVoid(r)?X.True:X.False}function Wn(n,r){return $.IsTemplateLiteral(n)||$.IsTemplateLiteral(r)?ok(n,r):$.IsRegExp(n)||$.IsRegExp(r)?nk(n,r):$.IsNot(n)||$.IsNot(r)?N3(n,r):$.IsAny(n)?z3(n,r):$.IsArray(n)?B3(n,r):$.IsBigInt(n)?Y3(n,r):$.IsBoolean(n)?J3(n,r):$.IsAsyncIterator(n)?W3(n,r):$.IsConstructor(n)?X3(n,r):$.IsDate(n)?L3(n,r):$.IsFunction(n)?V3(n,r):$.IsInteger(n)?C3(n,r):$.IsIntersect(n)?Q3(n,r):$.IsIterator(n)?P3(n,r):$.IsLiteral(n)?G3(n,r):$.IsNever(n)?O3(n,r):$.IsNull(n)?x3(n,r):$.IsNumber(n)?q3(n,r):$.IsObject(n)?I3(n,r):$.IsRecord(n)?y3(n,r):$.IsString(n)?rk(n,r):$.IsSymbol(n)?tk(n,r):$.IsTuple(n)?ek(n,r):$.IsPromise(n)?Z3(n,r):$.IsUint8Array(n)?ik(n,r):$.IsUndefined(n)?sk(n,r):$.IsUnion(n)?fk(n,r):$.IsUnknown(n)?lk(n,r):$.IsVoid(n)?uk(n,r):Ta(`Unknown left type operand '${n[O]}'`)}function Bo(n,r){return Wn(n,r)}var Ow,X;var B0=u(()=>{qc();na();ta();Fa();va();oo();Nc();rn();Yt();Tl();Ow=class Ow extends mr{};(function(n){n[n.Union=0]="Union",n[n.True=1]="True",n[n.False=2]="False"})(X||(X={}))});function bk(n,r,t,o,a){let c={};for(let e of globalThis.Object.getOwnPropertyNames(n))c[e]=Ia(n[e],r,t,o,Qn(a));return c}function gk(n,r,t,o,a){return bk(n.properties,r,t,o,a)}function vw(n,r,t,o,a){let c=gk(n,r,t,o,a);return kn(c)}var W0=u(()=>{sr();Ii();Br()});function _k(n,r,t,o){let a=Bo(n,r);return a===X.Union?Dn([t,o]):a===X.True?t:o}function Ia(n,r,t,o,a){return Pn(n)?vw(n,r,t,o,a):xr(n)?J(Tw(n,r,t,o,a)):J(_k(n,r,t,o),a)}var Ii=u(()=>{y();tr();B0();Y0();W0();Rn()});function mk(n,r,t,o,a){return{[n]:Ia(En(n),r,t,o,Qn(a))}}function wk(n,r,t,o,a){return n.reduce((c,e)=>{return{...c,...mk(e,r,t,o,a)}},{})}function hk(n,r,t,o,a){return wk(n.keys,r,t,o,a)}function Tw(n,r,t,o,a){let c=hk(n,r,t,o,a);return kn(c)}var Y0=u(()=>{sr();Yr();Ii();Br()});var Iw=()=>{};var oe=u(()=>{B0();Y0();W0();Iw();Ii()});function Zw(n,r){return Za(oa(n),r)}var J0=u(()=>{Zi();oo()});function $k(n,r){let t=n.filter((o)=>Bo(o,r)===X.False);return t.length===1?t[0]:Dn(t)}function Za(n,r,t={}){if(qr(n))return J(Zw(n,r),t);if(Pn(n))return J(yw(n,r),t);return J(wn(n)?$k(n.anyOf,r):Bo(n,r)!==X.False?hn():n,t)}var Zi=u(()=>{y();tr();hr();oe();X0();J0();Rn()});function Ak(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Za(n[o],r);return t}function Rk(n,r){return Ak(n.properties,r)}function yw(n,r){let t=Rk(n,r);return kn(t)}var X0=u(()=>{sr();Zi()});var L0=u(()=>{X0();J0();Zi()});function n1(n,r){return ya(oa(n),r)}var V0=u(()=>{yi();oo()});function kk(n,r){let t=n.filter((o)=>Bo(o,r)!==X.False);return t.length===1?t[0]:Dn(t)}function ya(n,r,t){if(qr(n))return J(n1(n,r),t);if(Pn(n))return J(r1(n,r),t);return J(wn(n)?kk(n.anyOf,r):Bo(n,r)!==X.False?n:hn(),t)}var yi=u(()=>{y();tr();hr();oe();C0();V0();Rn()});function Ek(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=ya(n[o],r);return t}function Sk(n,r){return Ek(n.properties,r)}function r1(n,r){let t=Sk(n,r);return kn(t)}var C0=u(()=>{sr();yi()});var Q0=u(()=>{C0();V0();yi()});function t1(n,r){return ht(n)?J(n.returns,r):hn(r)}var o1=u(()=>{y();hr();Rn()});var P0=u(()=>{o1()});function ns(n){return Xr(Sr(n))}var a1=u(()=>{aa();ro()});var rs=u(()=>{a1()});function ea(n,r,t){return J({[O]:"Record",type:"object",patternProperties:{[n]:r}},t)}function G0(n,r,t){let o={};for(let a of n)o[a]=r;return Bn(o,{...t,[yr]:"Record"})}function Mk(n,r,t){return Gm(n)?G0(Jr(n),r,t):ea(n.pattern,r,t)}function Dk(n,r,t){return G0(Jr(Dn(n)),r,t)}function Hk(n,r,t){return G0([n.toString()],r,t)}function zk(n,r,t){return ea(n.source,r,t)}function Uk(n,r,t){let o=Zn(n.pattern)?So:n.pattern;return ea(o,r,t)}function Bk(n,r,t){return ea(So,r,t)}function Wk(n,r,t){return ea(mm,r,t)}function Yk(n,r,t){return Bn({true:r,false:r},t)}function Jk(n,r,t){return ea(Eo,r,t)}function Xk(n,r,t){return ea(Eo,r,t)}function ts(n,r,t={}){return wn(n)?Dk(n.anyOf,r,t):qr(n)?Mk(n,r,t):Nr(n)?Hk(n.const,r,t):It(n)?Yk(n,r,t):At(n)?Jk(n,r,t):Rt(n)?Xk(n,r,t):jl(n)?zk(n,r,t):Zt(n)?Uk(n,r,t):ql(n)?Bk(n,r,t):Ro(n)?Wk(n,r,t):hn(t)}function os(n){return globalThis.Object.getOwnPropertyNames(n.patternProperties)[0]}function c1(n){let r=os(n);return r===So?kt():r===Eo?nt():kt({pattern:r})}function as(n){return n.patternProperties[os(n)]}var e1=u(()=>{y();rn();hr();ta();pr();Fa();tr();oo();Nc();Lt();Rn()});var ae=u(()=>{e1()});function Lk(n,r){return r.parameters=ce(n,r.parameters),r.returns=Et(n,r.returns),r}function Vk(n,r){return r.parameters=ce(n,r.parameters),r.returns=Et(n,r.returns),r}function Ck(n,r){return r.allOf=ce(n,r.allOf),r}function Qk(n,r){return r.anyOf=ce(n,r.anyOf),r}function Pk(n,r){if(Zn(r.items))return r;return r.items=ce(n,r.items),r}function Gk(n,r){return r.items=Et(n,r.items),r}function Ok(n,r){return r.items=Et(n,r.items),r}function Nk(n,r){return r.items=Et(n,r.items),r}function xk(n,r){return r.item=Et(n,r.item),r}function qk(n,r){let t=Kk(n,r.properties);return{...r,...Bn(t)}}function Fk(n,r){let t=Et(n,c1(r)),o=Et(n,as(r)),a=ts(t,o);return{...r,...a}}function jk(n,r){return r.index in n?n[r.index]:Uo()}function pk(n,r){let t=Qa(r),o=Wr(r),a=Et(n,r);return t&&o?ns(a):t&&!o?Xr(a):!t&&o?Sr(a):a}function Kk(n,r){return globalThis.Object.getOwnPropertyNames(r).reduce((t,o)=>{return{...t,[o]:pk(n,r[o])}},{})}function ce(n,r){return r.map((t)=>Et(n,t))}function Et(n,r){return ht(r)?Lk(n,r):$t(r)?Vk(n,r):Nn(r)?Ck(n,r):wn(r)?Qk(n,r):Fr(r)?Pk(n,r):mt(r)?Gk(n,r):vo(r)?Ok(n,r):Io(r)?Nk(n,r):Zo(r)?xk(n,r):yn(r)?qk(n,r):yo(r)?Fk(n,r):Fl(r)?jk(n,r):r}function i1(n,r){return Et(r,Ca(n))}var s1=u(()=>{Ei();va();rs();aa();ro();pr();ae();Rn()});var O0=u(()=>{s1()});function f1(n){return J({[O]:"Integer",type:"integer"},n)}var l1=u(()=>{y();rn()});var N0=u(()=>{l1()});function vk(n,r,t){return{[n]:St(En(n),r,Qn(t))}}function Tk(n,r,t){return n.reduce((a,c)=>{return{...a,...vk(c,r,t)}},{})}function Ik(n,r,t){return Tk(n.keys,r,t)}function d1(n,r,t){let o=Ik(n,r,t);return kn(o)}var x0=u(()=>{sr();ia();Yr();Br()});function Zk(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toLowerCase(),t].join("")}function yk(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toUpperCase(),t].join("")}function n4(n){return n.toUpperCase()}function r4(n){return n.toLowerCase()}function t4(n,r,t){let o=xa(n.pattern);if(!ra(o))return{...n,pattern:u1(n.pattern,r)};let e=[...Tc(o)].map((f)=>En(f)),i=b1(e,r),s=Dn(i);return Yi([s],t)}function u1(n,r){return typeof n==="string"?r==="Uncapitalize"?Zk(n):r==="Capitalize"?yk(n):r==="Uppercase"?n4(n):r==="Lowercase"?r4(n):n:n.toString()}function b1(n,r){return n.map((t)=>St(t,r))}function St(n,r,t={}){return xr(n)?d1(n,r,t):qr(n)?t4(n,r,t):wn(n)?Dn(b1(n.anyOf,r),t):Nr(n)?En(u1(n.const,r),t):J(n,t)}var ia=u(()=>{y();oo();x0();Yr();tr();Rn()});function g1(n,r={}){return St(n,"Capitalize",r)}var _1=u(()=>{ia()});function m1(n,r={}){return St(n,"Lowercase",r)}var w1=u(()=>{ia()});function h1(n,r={}){return St(n,"Uncapitalize",r)}var $1=u(()=>{ia()});function A1(n,r={}){return St(n,"Uppercase",r)}var R1=u(()=>{ia()});var q0=u(()=>{_1();x0();ia();w1();$1();R1()});function o4(n,r,t){let o={};for(let a of globalThis.Object.getOwnPropertyNames(n))o[a]=Wo(n[a],r,Qn(t));return o}function a4(n,r,t){return o4(n.properties,r,t)}function k1(n,r,t){let o=a4(n,r,t);return kn(o)}var F0=u(()=>{sr();cs();Br()});function c4(n,r){return n.map((t)=>j0(t,r))}function e4(n,r){return n.map((t)=>j0(t,r))}function i4(n,r){let{[r]:t,...o}=n;return o}function s4(n,r){return r.reduce((t,o)=>i4(t,o),n)}function f4(n,r,t){let o=xn(n,[rr,"$id","required","properties"]),a=s4(t,r);return Bn(a,o)}function l4(n){let r=n.reduce((t,o)=>Mi(o)?[...t,En(o)]:t,[]);return Dn(r)}function j0(n,r){return Nn(n)?Mr(c4(n.allOf,r)):wn(n)?Dn(e4(n.anyOf,r)):yn(n)?f4(n,r,n.properties):Bn({})}function Wo(n,r,t){let o=In(r)?l4(r):r,a=jr(r)?Jr(r):r,c=jn(n),e=jn(r);return Pn(n)?k1(n,a,t):xr(r)?E1(n,r,t):c&&e?Cn("Omit",[n,o],t):!c&&e?Cn("Omit",[n,o],t):c&&!e?Cn("Omit",[n,o],t):J({...j0(n,a),...t})}var cs=u(()=>{y();Vc();Do();Yr();Lt();rt();tr();pr();p0();F0();Rn()});function d4(n,r,t){return{[r]:Wo(n,[r],Qn(t))}}function u4(n,r,t){return r.reduce((o,a)=>{return{...o,...d4(n,a,t)}},{})}function b4(n,r,t){return u4(n,r.keys,t)}function E1(n,r,t){let o=b4(n,r,t);return kn(o)}var p0=u(()=>{sr();cs();Br()});var es=u(()=>{p0();F0();cs()});function g4(n,r,t){let o={};for(let a of globalThis.Object.getOwnPropertyNames(n))o[a]=Yo(n[a],r,Qn(t));return o}function _4(n,r,t){return g4(n.properties,r,t)}function S1(n,r,t){let o=_4(n,r,t);return kn(o)}var K0=u(()=>{sr();is();Br()});function m4(n,r){return n.map((t)=>v0(t,r))}function w4(n,r){return n.map((t)=>v0(t,r))}function h4(n,r){let t={};for(let o of r)if(o in n)t[o]=n[o];return t}function $4(n,r,t){let o=xn(n,[rr,"$id","required","properties"]),a=h4(t,r);return Bn(a,o)}function A4(n){let r=n.reduce((t,o)=>Mi(o)?[...t,En(o)]:t,[]);return Dn(r)}function v0(n,r){return Nn(n)?Mr(m4(n.allOf,r)):wn(n)?Dn(w4(n.anyOf,r)):yn(n)?$4(n,r,n.properties):Bn({})}function Yo(n,r,t){let o=In(r)?A4(r):r,a=jr(r)?Jr(r):r,c=jn(n),e=jn(r);return Pn(n)?S1(n,a,t):xr(r)?M1(n,r,t):c&&e?Cn("Pick",[n,o],t):!c&&e?Cn("Pick",[n,o],t):c&&!e?Cn("Pick",[n,o],t):J({...v0(n,a),...t})}var is=u(()=>{y();Do();rt();Yr();pr();tr();Lt();Vc();Rn();T0();K0()});function R4(n,r,t){return{[r]:Yo(n,[r],Qn(t))}}function k4(n,r,t){return r.reduce((o,a)=>{return{...o,...R4(n,a,t)}},{})}function E4(n,r,t){return k4(n,r.keys,t)}function M1(n,r,t){let o=E4(n,r,t);return kn(o)}var T0=u(()=>{sr();is();Br()});var ss=u(()=>{T0();K0();is()});function S4(n,r){return Cn("Partial",[Cn(n,r)])}function M4(n){return Cn("Partial",[Vt(n)])}function D4(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=Sr(n[t]);return r}function H4(n,r){let t=xn(n,[rr,"$id","required","properties"]),o=D4(r);return Bn(o,t)}function D1(n){return n.map((r)=>H1(r))}function H1(n){return wt(n)?S4(n.target,n.parameters):jn(n)?M4(n.$ref):Nn(n)?Mr(D1(n.allOf)):wn(n)?Dn(D1(n.anyOf)):yn(n)?H4(n,n.properties):To(n)?n:It(n)?n:At(n)?n:Nr(n)?n:Cc(n)?n:Rt(n)?n:Zt(n)?n:Qc(n)?n:Pc(n)?n:Bn({})}function nc(n,r){if(Pn(n))return z1(n,r);else return J({...H1(n),...r})}var I0=u(()=>{y();Do();ro();pr();rt();tr();ca();no();rn();Z0();Rn()});function z4(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=nc(n[o],Qn(r));return t}function U4(n,r){return z4(n.properties,r)}function z1(n,r){let t=U4(n,r);return kn(t)}var Z0=u(()=>{sr();I0();Br()});var fs=u(()=>{Z0();I0()});function B4(n,r){return Cn("Required",[Cn(n,r)])}function W4(n){return Cn("Required",[Vt(n)])}function Y4(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=xn(n[t],[wr]);return r}function J4(n,r){let t=xn(n,[rr,"$id","required","properties"]),o=Y4(r);return Bn(o,t)}function U1(n){return n.map((r)=>B1(r))}function B1(n){return wt(n)?B4(n.target,n.parameters):jn(n)?W4(n.$ref):Nn(n)?Mr(U1(n.allOf)):wn(n)?Dn(U1(n.anyOf)):yn(n)?J4(n,n.properties):To(n)?n:It(n)?n:At(n)?n:Nr(n)?n:Cc(n)?n:Rt(n)?n:Zt(n)?n:Qc(n)?n:Pc(n)?n:Bn({})}function rc(n,r){if(Pn(n))return W1(n,r);else return J({...B1(n),...r})}var y0=u(()=>{y();Do();pr();rt();tr();ca();rn();no();nd();Rn()});function X4(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=rc(n[o],r);return t}function L4(n,r){return X4(n.properties,r)}function W1(n,r){let t=L4(n,r);return kn(t)}var nd=u(()=>{sr();y0()});var ls=u(()=>{nd();y0()});function V4(n,r){return r.map((t)=>{return jn(t)?rd(n,t.$ref):Kr(n,t)})}function rd(n,r){return r in n?jn(n[r])?rd(n,n[r].$ref):Kr(n,n[r]):hn()}function C4(n){return pa(n[0])}function Q4(n){return Ho(n[0],n[1])}function P4(n){return Ka(n[0])}function G4(n){return nc(n[0])}function O4(n){return Wo(n[0],n[1])}function N4(n){return Yo(n[0],n[1])}function x4(n){return rc(n[0])}function q4(n,r,t){let o=V4(n,t);return r==="Awaited"?C4(o):r==="Index"?Q4(o):r==="KeyOf"?P4(o):r==="Partial"?G4(o):r==="Omit"?O4(o):r==="Pick"?N4(o):r==="Required"?x4(o):hn()}function F4(n,r){return Pa(Kr(n,r))}function j4(n,r){return Ga(Kr(n,r))}function p4(n,r,t){return Oa(ee(n,r),Kr(n,t))}function K4(n,r,t){return Jt(ee(n,r),Kr(n,t))}function v4(n,r){return Mr(ee(n,r))}function T4(n,r){return ja(Kr(n,r))}function I4(n,r){return Bn(globalThis.Object.keys(r).reduce((t,o)=>{return{...t,[o]:Kr(n,r[o])}},{}))}function Z4(n,r){let[t,o]=[Kr(n,as(r)),os(r)],a=Ca(r);return a.patternProperties[o]=t,a}function y4(n,r){return jn(r)?{...rd(n,r.$ref),[rr]:r[rr]}:r}function nE(n,r){return tt(ee(n,r))}function rE(n,r){return Dn(ee(n,r))}function ee(n,r){return r.map((t)=>Kr(n,t))}function Kr(n,r){return Wr(r)?J(Kr(n,xn(r,[wr])),r):Qa(r)?J(Kr(n,xn(r,[_t])),r):ko(r)?J(y4(n,r),r):mt(r)?J(F4(n,r.items),r):vo(r)?J(j4(n,r.items),r):wt(r)?J(q4(n,r.target,r.parameters)):ht(r)?J(p4(n,r.parameters,r.returns),r):$t(r)?J(K4(n,r.parameters,r.returns),r):Nn(r)?J(v4(n,r.allOf),r):Io(r)?J(T4(n,r.items),r):yn(r)?J(I4(n,r.properties),r):yo(r)?J(Z4(n,r)):Fr(r)?J(nE(n,r.items||[]),r):wn(r)?J(rE(n,r.anyOf),r):r}function tE(n,r){return r in n?Kr(n,n[r]):hn()}function Y1(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:tE(n,t)}},{})}var J1=u(()=>{Tt();xl();no();Fc();Ci();jc();pc();Lt();na();rt();Zc();te();pr();es();ss();hr();fs();ae();ls();zo();tr();rn();Rn()});class X1{constructor(n){let r=Y1(n),t=this.WithIdentifiers(r);this.$defs=t}Import(n,r){let t={...this.$defs,[n]:J(this.$defs[n],r)};return J({[O]:"Import",$defs:t,$ref:n})}WithIdentifiers(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:{...n[t],$id:t}}},{})}}function L1(n){return new X1(n)}var V1=u(()=>{Tt();rn();J1()});var td=u(()=>{V1()});function C1(n,r){return J({[O]:"Not",not:n},r)}var Q1=u(()=>{y();rn()});var od=u(()=>{Q1()});function P1(n,r){return $t(n)?tt(n.parameters,r):hn()}var G1=u(()=>{zo();hr();Rn()});var ad=u(()=>{G1()});function O1(n,r={}){if(Zn(r.$id))r.$id=`T${oE++}`;let t=Ca(n({[O]:"This",$ref:`${r.$id}`}));return t.$id=r.$id,J({[yr]:"Recursive",...t},r)}var oE=0;var N1=u(()=>{Ei();y();rn()});var cd=u(()=>{N1()});function x1(n,r){let t=Ln(n)?new globalThis.RegExp(n):n;return J({[O]:"RegExp",type:"RegExp",source:t.source,flags:t.flags},r)}var q1=u(()=>{y();rn()});var ed=u(()=>{q1()});function aE(n){return Nn(n)?n.allOf:wn(n)?n.anyOf:Fr(n)?n.items??[]:[]}function F1(n){return aE(n)}var j1=u(()=>{Rn()});var id=u(()=>{j1()});function p1(n,r){return $t(n)?J(n.returns,r):hn(r)}var K1=u(()=>{y();hr();Rn()});var sd=u(()=>{K1()});var v1=()=>{};var T1=()=>{};var I1=u(()=>{v1();T1()});var Z1=()=>{};var y1=u(()=>{Z1()});class n2{constructor(n){this.schema=n}Decode(n){return new r2(this.schema,n)}}class r2{constructor(n,r){this.schema=n,this.decode=r}EncodeTransform(n,r){let a={Encode:(c)=>r[rr].Encode(n(c)),Decode:(c)=>this.decode(r[rr].Decode(c))};return{...r,[rr]:a}}EncodeSchema(n,r){let t={Decode:this.decode,Encode:n};return{...r,[rr]:t}}Encode(n){return ko(this.schema)?this.EncodeTransform(n,this.schema):this.EncodeSchema(n,this.schema)}}function t2(n){return new n2(n)}var o2=u(()=>{rn();Rn()});var fd=u(()=>{o2()});function a2(n={}){return J({[O]:n[O]??"Unsafe"},n)}var c2=u(()=>{y();rn()});var ld=u(()=>{c2()});function e2(n){return J({[O]:"Void",type:"void"},n)}var i2=u(()=>{y();rn()});var dd=u(()=>{i2()});var ud={};co(ud,{Void:()=>e2,Uppercase:()=>A1,Unsafe:()=>a2,Unknown:()=>Uo,Union:()=>Dn,Undefined:()=>qi,Uncapitalize:()=>h1,Uint8Array:()=>ji,Tuple:()=>tt,Transform:()=>t2,TemplateLiteral:()=>Yi,Symbol:()=>Ni,String:()=>kt,ReturnType:()=>p1,Rest:()=>F1,Required:()=>rc,RegExp:()=>x1,Ref:()=>Vt,Recursive:()=>O1,Record:()=>ts,ReadonlyOptional:()=>ns,Readonly:()=>Xr,Promise:()=>Li,Pick:()=>Yo,Partial:()=>nc,Parameters:()=>P1,Optional:()=>Sr,Omit:()=>Wo,Object:()=>Bn,Number:()=>nt,Null:()=>Gi,Not:()=>C1,Never:()=>hn,Module:()=>L1,Mapped:()=>lw,Lowercase:()=>m1,Literal:()=>En,KeyOf:()=>Ka,Iterator:()=>ja,Intersect:()=>Mr,Integer:()=>f1,Instantiate:()=>i1,InstanceType:()=>t1,Index:()=>Ho,Function:()=>Jt,Extract:()=>ya,Extends:()=>Ia,Exclude:()=>Za,Enum:()=>Lw,Date:()=>Qi,ConstructorParameters:()=>Jw,Constructor:()=>Oa,Const:()=>Ww,Composite:()=>Ew,Capitalize:()=>g1,Boolean:()=>Bi,BigInt:()=>qa,Awaited:()=>pa,AsyncIterator:()=>Ga,Array:()=>Pa,Argument:()=>Dm,Any:()=>Mo});var s2=u(()=>{qc();Il();Fc();jc();Ci();Ic();Wi();A0();k0();pc();E0();Pi();S0();L0();oe();Q0();na();Lt();P0();O0();N0();rt();q0();Zc();te();Yr();sr();td();hr();od();Oi();ta();pr();es();ro();ad();fs();ss();Vi();aa();rs();ae();cd();ca();ed();ls();id();sd();Fa();xi();oo();fd();zo();pi();Fi();tr();va();ld();dd()});var cr;var f2=u(()=>{s2();cr=ud});var l2=u(()=>{xl();Tt();Yt();Tl();bm();Nc();$m();xc();rn();qc();Fc();Il();jc();Ci();Ic();Wi();A0();k0();pc();E0();Pi();S0();L0();oe();Q0();na();Lt();P0();O0();N0();rt();Zc();q0();te();Yr();td();sr();hr();od();Oi();ta();pr();es();ro();ad();fs();ss();Vi();aa();rs();ae();cd();ca();ed();ls();id();sd();I1();y1();Fa();xi();oo();fd();zo();pi();Fi();tr();va();ld();dd();f2()});var bd,gd,jx,px;var _d=u(()=>{l2();bd=cr.Object({email:cr.String({format:"email"})}),gd=cr.Object({token:cr.String()}),jx=cr.Object({success:cr.Boolean(),message:cr.Optional(cr.String())}),px=cr.Object({success:cr.Boolean(),message:cr.Optional(cr.String()),data:cr.Optional(cr.Object({user:cr.Object({id:cr.String(),email:cr.String()}),accessToken:cr.String(),refreshToken:cr.String()}))})});import{eq as md}from"drizzle-orm";import{Elysia as cE}from"elysia";function ds(n,r,t,o,a,c,e,i,s,f){let{db:l,logger:d,usersTable:b}=n,w=r.route||"/auth/magic-link",h=r.verifyRoute||"/auth/magic-link/verify",_=r.expiresIn||"15m",g=r.redirectUrl||"",R=new cE;if(!r.enabled)return R;return R.post(w,async(k)=>{if(!l||!b)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return d.error("[AUTH] Magic link requested but email service not available"),{success:!1,message:"Email service not available"};let{email:M}=k.body,N=(await l.select().from(b).where(md(b.email,M)).limit(1))[0];if(!N)return d.info("[AUTH] Magic link requested for non-existent email",{email:M}),{success:!0,message:"If an account exists, a magic link has been sent"};if(N.isLocked)return d.warn("[AUTH] Magic link requested for locked account",{email:M}),{success:!0,message:"If an account exists, a magic link has been sent"};let m=La(),A=gt(m),H=new Date(Date.now()+Va(_));await e({userId:N.id,email:M,tokenHash:A,expiresAt:H});let D=g?`${g}?token=${m}`:`${h}?token=${m}`,E=await t.sendMagicLinkEmail(M,D,f);if(!E.success)return d.error("[AUTH] Failed to send magic link email",{email:M,error:E.error}),{success:!1,message:"Failed to send email"};return d.info("[AUTH] Magic link sent",{email:M,userId:N.id}),{success:!0,message:"If an account exists, a magic link has been sent"}},{body:bd,detail:{tags:["Authentication"],summary:"Request Magic Link",description:"Send a magic link to the user's email for passwordless login"}}),R.get(h,async(k)=>{if(!l||!b)return{success:!1,message:"Database not configured"};let M=k.query.token;if(!M)return{success:!1,message:"Token is required"};let C=gt(M),N=await i(C);if(!N)return d.warn("[AUTH] Invalid magic link token"),{success:!1,message:"Invalid or expired token"};if(new Date>N.expiresAt)return await s(C),d.warn("[AUTH] Expired magic link token",{email:N.email}),{success:!1,message:"Invalid or expired token"};let A=(await l.select().from(b).where(md(b.id,N.userId)).limit(1))[0];if(!A)return await s(C),{success:!1,message:"User not found"};await s(C),await l.update(b).set({lastLoginAt:new Date,loginCount:(A.loginCount||0)+1,emailVerified:!0}).where(md(b.id,A.id));let H=k.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||k.request.headers.get("x-real-ip")?.trim()||"unknown",D=k.request.headers.get("user-agent")||"",E=o(A.id),S=a(A.id),z=await c({userId:A.id,deviceInfo:{ipAddress:H,userAgent:D,deviceType:"unknown"},loginMethod:"magic_link"});return d.info("[AUTH] Magic link login successful",{userId:A.id,email:A.email}),k.set.headers["x-session-id"]=z,{success:!0,data:{user:{id:A.id,email:A.email},accessToken:E,refreshToken:S}}},{query:gd,detail:{tags:["Authentication"],summary:"Verify Magic Link",description:"Verify magic link token and login user"}}),R}var wd=u(()=>{_d();Yc();_d()});import{eq as tc}from"drizzle-orm";import{Elysia as eE}from"elysia";function us(n,r,t,o,a){let{db:c,logger:e,usersTable:i}=n,s=r.route||"/auth/me",f=new eE;if(!r.enabled)return f;return f.get(s,async(l)=>{if(!c||!i)return{success:!1,message:"Database not configured"};let d=l.request.headers.get("x-user-id");if(!d)return l.set.status=401,{success:!1,message:"Unauthorized"};let w=(await c.select().from(i).where(tc(i.id,d)).limit(1))[0];if(!w)return l.set.status=404,{success:!1,message:"User not found"};let{password:h,..._}=w,g=null,R=[],k=[],M=[],C=[];if(r.includeProfile&&t){let m=t.profiles;if(m&&c)g=(await c.select().from(m).where(tc(m.userId,d)).limit(1))[0]||null}if(r.includeAddresses&&t){let m=t.addresses;if(m&&c)R=await c.select().from(m).where(tc(m.ownerId,d))}if(r.includePhones&&t){let m=t.phones;if(m&&c)k=await c.select().from(m).where(tc(m.ownerId,d))}if(r.includeFiles&&t){let m=t.files;if(m&&c)M=await c.select().from(m).where(tc(m.uploadedBy,d))}if(r.includeRoles&&t){let{userRoles:m,roles:A}=t;if(m&&A&&c){let D=(await c.select().from(m).where(tc(m.userId,d))).map((E)=>E.roleId);if(D.length>0){let{inArray:E}=await import("drizzle-orm");C=await c.select().from(A).where(E(A.id,D))}}}return e.info("[AUTH] Me endpoint accessed",{userId:d}),JSON.parse(JSON.stringify({success:!0,data:{user:_,profile:g,addresses:R,phones:k,files:M,roles:C}},(m,A)=>typeof A==="bigint"?Number(A):A))},{detail:{tags:["Authentication"],summary:"Get current user",description:"Get the currently authenticated user with profile, addresses, phones and files"}}),f}var hd=()=>{};import{eq as zr,and as bs}from"drizzle-orm";import{Elysia as iE}from"elysia";function d2(n,r,t,o,a,c,e,i,s,f,l){let{db:d,logger:b,usersTable:w}=n,h=r.basePath,_={accessTokenName:e?.accessTokenName||"access_token",refreshTokenName:e?.refreshTokenName||"refresh_token",sessionTokenName:e?.sessionTokenName||"session_token",accessTokenMaxAge:e?.accessTokenMaxAge||900,refreshTokenMaxAge:e?.refreshTokenMaxAge||604800,sessionTokenMaxAge:e?.sessionTokenMaxAge||900,secure:e?.secure??!0,httpOnly:e?.httpOnly??!0,sameSite:e?.sameSite||"lax",path:e?.path||"/"},g={accessToken:{setHeadersEnabled:i?.accessToken?.setHeadersEnabled??!0,returnJson:i?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:i?.refreshToken?.setHeadersEnabled??!0,returnJson:i?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:i?.sessionToken?.setHeadersEnabled??!0,returnJson:i?.sessionToken?.returnJson??!0}},R=new iE;return R.get(`${h}/:provider`,async(k)=>{let M=k.params.provider;if(!r.isProviderEnabled(M))return k.set.status=404,{success:!1,message:`OAuth provider "${M}" is not enabled`};let C=k.query.link_user_id,N=k.query.redirect_url,m=r.buildAuthorizationUrl(M,C,N);return k.set.status=302,k.set.headers.Location=m,null},{detail:{tags:["Authentication"],summary:"OAuth Redirect",description:"Redirects to the OAuth provider authorization page"}}),R.get(`${h}/:provider/callback`,async(k)=>{let M=k.params.provider,C=k.query,{code:N,state:m,error:A,error_description:H}=C,D=r.errorRedirectUrl;if(A)return b.warn("[OAUTH] Provider returned error",{provider:M,error:A,error_description:H}),k.set.status=302,k.set.headers.Location=`${D}?error=${encodeURIComponent(H||A)}`,null;if(!N||!m)return k.set.status=302,k.set.headers.Location=`${D}?error=missing_code_or_state`,null;let E=r.consumeState(m);if(!E)return b.warn("[OAUTH] Invalid or expired state",{provider:M,state:m}),k.set.status=302,k.set.headers.Location=`${D}?error=invalid_state`,null;if(E.provider!==M)return b.warn("[OAUTH] State provider mismatch",{expected:E.provider,got:M}),k.set.status=302,k.set.headers.Location=`${D}?error=provider_mismatch`,null;if(!d||!w)return k.set.status=302,k.set.headers.Location=`${D}?error=server_error`,null;let S;try{S=await r.exchangeCode(M,N)}catch(sn){return b.error("[OAUTH] Code exchange failed",{provider:M,error:sn}),k.set.status=302,k.set.headers.Location=`${D}?error=token_exchange_failed`,null}let{profile:z,tokens:U}=S,P=n.oauthAccountsTable,p=null;if(E.linkUserId&&r.allowAccountLinking){if(p=E.linkUserId,P){let Yn=await d.select().from(P).where(bs(zr(P.provider,M),zr(P.providerAccountId,z.providerAccountId))).limit(1);if(Yn.length>0){let fr=Yn[0];if(fr.userId!==p)return k.set.status=302,k.set.headers.Location=`${D}?error=account_already_linked_to_another_user`,null;await d.update(P).set({accessToken:U.accessToken,refreshToken:U.refreshToken??null,tokenExpiresAt:U.expiresAt??null,scope:U.scope??null,rawProfile:z.rawProfile,lastUsedAt:new Date}).where(zr(P.id,fr.id))}else await d.insert(P).values({userId:p,provider:M,providerAccountId:z.providerAccountId,providerEmail:z.email??null,providerName:z.name??null,providerAvatarUrl:z.avatarUrl??null,accessToken:U.accessToken,refreshToken:U.refreshToken??null,tokenExpiresAt:U.expiresAt??null,scope:U.scope??null,rawProfile:z.rawProfile,isPrimary:!1,lastUsedAt:new Date})}b.info("[OAUTH] Account linked successfully",{userId:p,provider:M});let sn=E.redirectUrl||r.successRedirectUrl;return k.set.status=302,k.set.headers.Location=`${sn}?linked=true&provider=${M}`,null}if(P){let sn=await d.select().from(P).where(bs(zr(P.provider,M),zr(P.providerAccountId,z.providerAccountId))).limit(1);if(sn.length>0){let Yn=sn[0];p=Yn.userId,await d.update(P).set({accessToken:U.accessToken,refreshToken:U.refreshToken??null,tokenExpiresAt:U.expiresAt??null,scope:U.scope??null,rawProfile:z.rawProfile,lastUsedAt:new Date}).where(zr(P.id,Yn.id))}}if(!p&&z.email){let sn=await d.select().from(w).where(zr(w.email,z.email)).limit(1);if(sn.length>0){if(p=sn[0].id,P)await d.insert(P).values({userId:p,provider:M,providerAccountId:z.providerAccountId,providerEmail:z.email??null,providerName:z.name??null,providerAvatarUrl:z.avatarUrl??null,accessToken:U.accessToken,refreshToken:U.refreshToken??null,tokenExpiresAt:U.expiresAt??null,scope:U.scope??null,rawProfile:z.rawProfile,isPrimary:!1,lastUsedAt:new Date}).onConflictDoNothing();b.info("[OAUTH] Merged OAuth account with existing user by email",{userId:p,provider:M,email:z.email})}}if(!p){if(!r.autoCreateUser)return k.set.status=302,k.set.headers.Location=`${D}?error=user_not_found`,null;let sn=z.email??`${M}_${z.providerAccountId}@oauth.local`;if(p=(await d.insert(w).values({email:sn,password:null,verifiedAt:z.email?new Date:null,isActive:!0}).returning())[0].id,P)await d.insert(P).values({userId:p,provider:M,providerAccountId:z.providerAccountId,providerEmail:z.email??null,providerName:z.name??null,providerAvatarUrl:z.avatarUrl??null,accessToken:U.accessToken,refreshToken:U.refreshToken??null,tokenExpiresAt:U.expiresAt??null,scope:U.scope??null,rawProfile:z.rawProfile,isPrimary:!0,lastUsedAt:new Date});if(b.info("[OAUTH] Created new user via OAuth",{userId:p,provider:M,email:z.email}),r.sendInviteOnCreate&&z.email&&s?.isAvailable()&&f)try{let gn=La(),et=gt(gn),_n=new Date(Date.now()+Va("7d"));await f({userId:p,email:z.email,tokenHash:et,expiresAt:_n});let Jn=`${r.successRedirectUrl.replace(/\/$/,"").replace(/\/[^/]+$/,"/set-password")}?token=${gn}`;await s.sendEmail({to:z.email,subject:`Welcome to ${l??"the platform"} \u2014 Set your password`,html:`
77
+ `)).rows||[];return await R.transaction(async(C)=>{for(let N of M)await C.execute(Dl.raw(`UPDATE "${N.table_name}" SET "${N.column_name}" = '${b}' WHERE "${N.column_name}" = '${d}'`));await C.execute(Dl.raw(`UPDATE users SET id = '${b}' WHERE id = '${d}'`))}),a.info("[AUTH] User ID changed",{godminId:s,currentId:d,newId:b,email:_.email,affectedTables:M.map((C)=>C.table_name)}),await a.audit({entityName:"users",entityId:b,operation:"CHANGE_USER_ID",userId:s,summary:`Godmin changed user ID: ${d} \u2192 ${b} (${_.email})`,oldValues:{id:d},newValues:{id:b},ipAddress:i.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",userAgent:i.request.headers.get("user-agent")||"unknown",path:new URL(i.request.url).pathname,query:""}),{success:!0,data:{oldId:d,newId:b,email:_.email,affectedTables:M.map((C)=>C.table_name)}}}catch(R){return a.error("[AUTH] Failed to change user ID",{error:R instanceof Error?R.message:String(R),currentId:d,newId:b}),{success:!1,message:R instanceof Error?R.message:"Failed to change user ID"}}},{body:Hl.Object({currentId:Hl.String(),newId:Hl.String()}),detail:{tags:["Authentication"],summary:"Change User ID",description:"Godmin: change a user's UUID while preserving all FK relations"}}),e}var zl=()=>{};import{eq as Ul}from"drizzle-orm";import{Elysia as lA,t as e_}from"elysia";function si(n,r,t,o,a,c){let{db:e,logger:i,usersTable:s}=n,f=new lA,l={accessTokenName:c?.accessTokenName||"access_token",refreshTokenName:c?.refreshTokenName||"refresh_token",sessionTokenName:c?.sessionTokenName||"session_token",accessTokenMaxAge:c?.accessTokenMaxAge||900,refreshTokenMaxAge:c?.refreshTokenMaxAge||604800,sessionTokenMaxAge:c?.sessionTokenMaxAge||900,secure:c?.secure??!0,sameSite:c?.sameSite||"strict",path:c?.path||"/"};return f.post("/auth/admin/impersonate",async(d)=>{if(!e||!s)return{success:!1,message:"Database not configured"};let b=d.request.headers.get("x-user-id");if(!b)return d.set.status=401,{success:!1,message:"Unauthorized"};let{targetUserId:w}=d.body,_=(await e.select().from(s).where(Ul(s.id,b)).limit(1))[0];if(!_||!_.isGod)return d.set.status=403,{success:!1,message:"Forbidden: godmin privileges required"};if(b===w)return d.set.status=400,{success:!1,message:"Cannot impersonate yourself"};let R=(await e.select().from(s).where(Ul(s.id,w)).limit(1))[0];if(!R)return d.set.status=404,{success:!1,message:"Target user not found"};let k=r(w),M=t(w),C=d.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",N={userId:w,deviceInfo:{deviceName:"Impersonation Session",browserName:"Admin",osName:"Admin",ipAddress:C},loginMethod:"impersonation"},m=await o(N);if(a)await a(m,N);i.info("[AUTH] Impersonation started",{godminId:b,targetUserId:w,targetEmail:R.email}),await i.audit({entityName:"users",entityId:w,operation:"IMPERSONATE_START",userId:b,summary:`Godmin ${_.email} started impersonating ${R.email}`,ipAddress:d.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",userAgent:d.request.headers.get("user-agent")||"unknown",path:new URL(d.request.url).pathname,query:""});let A=l.secure?"; Secure":"",H=`; Path=${l.path}; HttpOnly; SameSite=${l.sameSite}${A}`,D=[`${l.accessTokenName}=${k}${H}; Max-Age=${l.accessTokenMaxAge}`,`${l.refreshTokenName}=${M}${H}; Max-Age=${l.refreshTokenMaxAge}`,`${l.sessionTokenName}=${m}${H}; Max-Age=${l.sessionTokenMaxAge}`,`nucleus_impersonating_as=${w}${H}; Max-Age=${l.sessionTokenMaxAge}`,`nucleus_godmin_id=${b}${H}; Max-Age=${l.sessionTokenMaxAge}`],E=JSON.stringify({success:!0,data:{targetUser:{id:R.id,email:R.email},godminId:b,sessionId:m}}),S=new Headers;S.set("Content-Type","application/json");for(let z of D)S.append("Set-Cookie",z);return new Response(E,{status:200,headers:S})},{body:e_.Object({targetUserId:e_.String()}),detail:{tags:["Authentication"],summary:"Impersonate User",description:"Godmin: start a session as another user"}}),f.post("/auth/admin/impersonate/stop",async(d)=>{if(!e||!s)return{success:!1,message:"Database not configured"};let b=d.request.headers.get("cookie")||"",h=Object.fromEntries(b.split(";").map((z)=>{let[U,...P]=z.trim().split("=");return[U?.trim(),P.join("=")]})).nucleus_godmin_id;if(!h)return d.set.status=400,{success:!1,message:"No active impersonation session"};let g=(await e.select().from(s).where(Ul(s.id,h)).limit(1))[0];if(!g)return d.set.status=404,{success:!1,message:"Godmin user not found"};let R=r(h),k=t(h),M=d.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",C={userId:h,deviceInfo:{deviceName:"Restored Admin Session",browserName:"Admin",osName:"Admin",ipAddress:M},loginMethod:"impersonation_stop"},N=await o(C);if(a)await a(N,C);i.info("[AUTH] Impersonation stopped",{godminId:h}),await i.audit({entityName:"users",entityId:h,operation:"IMPERSONATE_STOP",userId:h,summary:`Godmin ${g.email} stopped impersonation`,ipAddress:d.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",userAgent:d.request.headers.get("user-agent")||"unknown",path:new URL(d.request.url).pathname,query:""});let m=l.secure?"; Secure":"",A=`; Path=${l.path}; HttpOnly; SameSite=${l.sameSite}${m}`,H=`; Path=${l.path}; HttpOnly; SameSite=${l.sameSite}${m}; Max-Age=0`,D=[`${l.accessTokenName}=${R}${A}; Max-Age=${l.accessTokenMaxAge}`,`${l.refreshTokenName}=${k}${A}; Max-Age=${l.refreshTokenMaxAge}`,`${l.sessionTokenName}=${N}${A}; Max-Age=${l.sessionTokenMaxAge}`,`nucleus_impersonating_as=deleted${H}`,`nucleus_godmin_id=deleted${H}`],E=JSON.stringify({success:!0,data:{godminUser:{id:g.id,email:g.email},sessionId:N}}),S=new Headers;S.set("Content-Type","application/json");for(let z of D)S.append("Set-Cookie",z);return new Response(E,{status:200,headers:S})},{detail:{tags:["Authentication"],summary:"Stop Impersonation",description:"Godmin: restore own session after impersonation"}}),f}var Bl=()=>{};import{Elysia as dA,t as Hr}from"elysia";function i_(n){let{captchaService:r,logger:t,basePath:o="/auth/captcha"}=n,a=new dA;if(!r.isEnabled())return a;return a.get(`${o}/generate`,async(c)=>{let{type:e,difficulty:i}=c.query,s=c.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||c.request.headers.get("x-real-ip")?.trim()||c.request.headers.get("cf-connecting-ip")?.trim()||"unknown",f=await r.generate(e,i,s);if(f.rateLimited)return c.set.status=429,{success:!1,message:f.message??"Too many requests. Please try again later."};return t.info("[CAPTCHA] Challenge generated via endpoint",{challengeId:f.challengeId,type:f.type,ipAddress:s}),{success:!0,data:{challengeId:f.challengeId,type:f.type,question:f.question,expiresAt:f.expiresAt,...f.imageData?{imageData:f.imageData}:{},...f.puzzleData?{puzzleData:{pieces:f.puzzleData.pieces}}:{}}}},{query:uA,detail:{tags:["Captcha"],summary:"Generate Captcha",description:"Generate a new captcha challenge"}}),a.post(`${o}/validate`,async(c)=>{let{challengeId:e,answer:i}=c.body,s=await r.validate(e,i);if(!s.valid)c.set.status=400;return s},{body:bA,detail:{tags:["Captcha"],summary:"Validate Captcha",description:"Validate a captcha answer"}}),a}var uA,bA;var s_=u(()=>{uA=Hr.Object({type:Hr.Optional(Hr.Union([Hr.Literal("math"),Hr.Literal("image"),Hr.Literal("puzzle"),Hr.Literal("text")])),difficulty:Hr.Optional(Hr.Union([Hr.Literal("easy"),Hr.Literal("medium"),Hr.Literal("hard")]))}),bA=Hr.Object({challengeId:Hr.String(),answer:Hr.String()})});function f_(n,r){let{db:t,logger:o}=n,a=r.route||"/auth/check";return(c)=>c.post(a,async(e)=>{let{body:i,request:s,set:f}=e,l=s.headers.get("x-user-id");if(!l)return f.status=401,{isSuccess:!1,message:"Unauthenticated",data:null};if(!t)return f.status=503,{isSuccess:!1,message:"Authorization service unavailable",data:null};let d=n.schemaTables;if(!d)return f.status=503,{isSuccess:!1,message:"Authorization tables not available",data:null};let{entity:b,method:w,fields:h,relations:_}=i;if(!b||!w)return f.status=400,{isSuccess:!1,message:"entity and method are required",data:null};let g=await _c({userId:l,method:w,entity:b,requestedFields:h,requestedRelations:_,db:t,schemaTables:d,logger:o});return{isSuccess:!0,message:g.authorized?"Authorized":"Forbidden",data:{authorized:g.authorized,reason:g.reason,allowedFields:g.allowedFields,allowedRelations:g.allowedRelations,scopeFilters:g.scopeFilters}}},{detail:{tags:["Auth"],summary:"Check authorization for a given entity and method",description:"Allows consumer/resource servers to perform full claim checks (including scope) against the IDP's authorization system."}})}var l_=u(()=>{zf()});import gA from"crypto";var{password:_A}=globalThis.Bun;async function Ao(n){return await _A.hash(n,{algorithm:"bcrypt",cost:10})}function fi(){return gA.randomBytes(32).toString("hex")}function Ja(n){let r=n.match(/^(\d+)(s|m|h|d)$/);if(!r||!r[1]||!r[2])return 86400000;let t=Number.parseInt(r[1],10);switch(r[2]){case"s":return t*1000;case"m":return t*60*1000;case"h":return t*60*60*1000;case"d":return t*24*60*60*1000;default:return 86400000}}function d_(n){let r=[];if(n.length<8)r.push("Password must be at least 8 characters");if(!/[A-Z]/.test(n))r.push("Password must contain uppercase letter");if(!/[a-z]/.test(n))r.push("Password must contain lowercase letter");if(!/[0-9]/.test(n))r.push("Password must contain a number");return{valid:r.length===0,errors:r}}var Xa=()=>{};import{sql as li}from"drizzle-orm";import{Elysia as mA,t as di}from"elysia";function ui(n){let{authConfig:r,registerConfig:t,emailService:o,appName:a}=n,{db:c,logger:e,usersTable:i}=r,s=new mA;if(!t.enabled||!t.emailVerification?.enabled)return s;let f="/verify-email",l="/resend-verification";return s.get(f,async(d)=>{if(!c||!i)return{success:!1,message:"Database not configured"};let b=d.query.token;if(!b)return{success:!1,message:"Verification token is required"};let w=await c.select().from(i).where(li`email_verification_token = ${b}`).limit(1);if(w.length===0)return e.warn("[AUTH] Email verification failed - invalid token"),{success:!1,message:"Invalid or expired verification token"};let h=w[0],_=h.emailVerificationTokenExpiresAt;if(_&&new Date>new Date(_))return e.warn("[AUTH] Email verification failed - token expired",{userId:h.id,email:h.email}),{success:!1,message:"Verification token has expired. Please request a new one."};if(await c.update(i).set({verifiedAt:new Date,emailVerificationToken:null,emailVerificationTokenExpiresAt:null}).where(li`id = ${h.id}`),e.info("[AUTH] Email verified successfully",{userId:h.id,email:h.email}),t.emailVerification?.templates?.welcome?.enabled&&o?.isAvailable())o.sendWelcomeEmail(h.email,h.email.split("@")[0]||"User",a||"Nucleus").catch((R)=>{e.error("[AUTH] Failed to send welcome email after verification",{email:h.email,error:R})});return{success:!0,message:"Email verified successfully. You can now log in.",data:{redirectUrl:t.emailVerification?.redirectUrl||"/login",verified:!0}}},{query:di.Object({token:di.String()}),detail:{tags:["Authentication"],summary:"Verify Email",description:"Verify user email address using the verification token"}}),s.post(l,async(d)=>{if(!c||!i)return{success:!1,message:"Database not configured"};if(!o?.isAvailable())return{success:!1,message:"Email service not available"};let{email:b}=d.body,w=await c.select().from(i).where(li`email = ${b}`).limit(1);if(w.length===0)return{success:!0,message:"If your email is registered, you will receive a verification email."};let h=w[0];if(h.verifiedAt)return{success:!1,message:"Email is already verified"};let _=t.emailVerification?.maxResendAttempts||3,g=h.emailVerificationAttempts||0;if(g>=_)return e.warn("[AUTH] Resend verification failed - max attempts reached",{email:b,attempts:g}),{success:!1,message:"Maximum resend attempts reached. Please contact support.",data:{maxAttemptsReached:!0,attemptsUsed:g,maxAttempts:_}};let R=t.emailVerification?.resendCooldown||"60s",k=Ja(R),M=h.emailVerificationSentAt;if(M){let E=Date.now()-new Date(M).getTime();if(E<k){let S=Math.ceil((k-E)/1000);return{success:!1,message:`Please wait ${S} seconds before requesting another verification email.`,data:{cooldownRemaining:S,canResendAt:new Date(Date.now()+S*1000).toISOString()}}}}let C=fi(),N=t.emailVerification?.tokenExpiresIn||"24h",m=new Date(Date.now()+Ja(N));await c.update(i).set({emailVerificationToken:C,emailVerificationTokenExpiresAt:m,emailVerificationSentAt:new Date,emailVerificationAttempts:g+1}).where(li`id = ${h.id}`);let H=`${(t.emailVerification?.redirectUrl||"http://localhost:3000/login").replace("/login","/verify-email")}?token=${C}`,D=await o.sendVerificationEmail(b,b.split("@")[0]||"User",H,a||"Nucleus");if(D.success)return e.info("[AUTH] Verification email resent",{email:b}),{success:!0,message:"Verification email sent. Please check your inbox.",data:{cooldownSeconds:Math.ceil(k/1000),canResendAt:new Date(Date.now()+k).toISOString(),attemptsRemaining:_-(g+1)}};return e.error("[AUTH] Failed to resend verification email",{email:b,error:D.error}),{success:!1,message:"Failed to send verification email. Please try again later."}},{body:di.Object({email:di.String({format:"email"})}),detail:{tags:["Authentication"],summary:"Resend Verification Email",description:"Resend the email verification link to the user"}}),s}var Wl=u(()=>{Xa()});import u_ from"crypto";function La(){return u_.randomBytes(32).toString("hex")}function gt(n){return u_.createHash("sha256").update(n).digest("hex")}function Va(n){let r=n.match(/^(\d+)(s|m|h|d)$/);if(!r?.[1]||!r[2])return 900000;let t=parseInt(r[1],10);switch(r[2]){case"s":return t*1000;case"m":return t*60*1000;case"h":return t*60*60*1000;case"d":return t*24*60*60*1000;default:return 900000}}var Yc=()=>{};import{eq as wA}from"drizzle-orm";import{Elysia as hA,t as bi}from"elysia";function gi(n,r,t,o,a,c){let{db:e,logger:i,usersTable:s}=n,f=r.route||"/auth/invite",l=r.tokenExpiresIn||"7d",d=r.redirectUrl||"",b=new hA;if(!r.enabled)return b;if(b.post(f,async(w)=>{if(!e||!s)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return i.error("[AUTH] Invite requested but email service not available"),{success:!1,message:"Email service not available"};let{email:h}=w.body,_=await e.select().from(s).where(wA(s.email,h)).limit(1),g;if(_.length>0){let m=_[0];if(m.verifiedAt||m.password)return i.warn("[AUTH] Invite failed - user already verified",{email:h}),{success:!1,message:"User with this email is already verified"};g=m.id,i.info("[AUTH] Resending invitation to existing unverified user",{userId:g,email:h})}else{let m={email:h,password:null,emailVerified:!1,isLocked:!1,createdAt:new Date,updatedAt:new Date},H=(await e.insert(s).values(m).returning())[0];if(!H)return i.error("[AUTH] Failed to create invited user",{email:h}),{success:!1,message:"Failed to create user"};g=H.id,i.info("[AUTH] Invited user created",{userId:g,email:h})}let R=La(),k=gt(R),M=new Date(Date.now()+Va(l));await o({userId:g,email:h,tokenHash:k,expiresAt:M});let C=d?`${d}?token=${R}&invite=true`:`/auth/magic-link/verify?token=${R}`,N=await t.sendInvitationEmail(h,C,a||"Nucleus");if(!N.success)return i.error("[AUTH] Failed to send invitation email",{email:h,error:N.error}),{success:!0,message:"User created but failed to send invitation email",data:{id:g,email:h}};return i.info("[AUTH] Invitation email sent",{email:h,userId:g}),{success:!0,message:"Invitation sent successfully",data:{id:g,email:h}}},{body:$A,detail:{tags:["Authentication"],summary:"Invite User",description:"Invite a new user by sending them an email with a magic link to set their password"}}),c)b.post(`${f}/verify`,async(w)=>{let{token:h}=w.body;if(!h)return{success:!1,message:"Token is required"};let _=gt(h),g=await c(_);if(!g)return i.warn("[AUTH] Invalid invite verify token"),{success:!1,message:"Invalid or expired token"};if(new Date>g.expiresAt)return i.warn("[AUTH] Expired invite verify token",{email:g.email}),{success:!1,message:"Invalid or expired token"};return i.info("[AUTH] Invite token verified (not consumed)",{email:g.email,userId:g.userId}),{success:!0,data:{userId:g.userId,email:g.email}}},{body:bi.Object({token:bi.String()}),detail:{tags:["Authentication"],summary:"Verify Invite Token",description:"Validate an invite token without consuming it. Returns user info if valid."}});return b}var $A;var Yl=u(()=>{Yc();$A=bi.Object({email:bi.String({format:"email"})})});import{t as rr}from"elysia";var Jl,AA;var Xl=u(()=>{Jl=rr.Object({email:rr.String({format:"email"}),password:rr.String({minLength:1}),rememberMe:rr.Optional(rr.Boolean()),captchaId:rr.Optional(rr.String()),captchaAnswer:rr.Optional(rr.String())}),AA=rr.Object({success:rr.Boolean(),message:rr.Optional(rr.String()),data:rr.Optional(rr.Object({user:rr.Object({id:rr.String(),email:rr.String()}),accessToken:rr.String(),refreshToken:rr.String()}))})});var{password:RA}=globalThis.Bun;async function _i(n,r){try{return await RA.verify(n,r)}catch{return!1}}function mi(n,r){let t=n.toLowerCase(),o=["headlesschrome","headless","phantomjs","nightmare","selenium","webdriver","puppeteer","playwright"],a=["bot","crawler","spider","scraper","curl","wget","python-requests","python-urllib","java/","httpclient","go-http-client","node-fetch","axios","postman","insomnia","httpie"],c=o.some((_)=>t.includes(_)),e=a.some((_)=>t.includes(_)),i=c||e,s=[];if(c)s.push("headless_browser");if(e)s.push("bot_user_agent");if(!t||t.length<10)s.push("missing_or_short_ua");if(t==="mozilla/5.0")s.push("generic_ua");if(t.includes("nucleusserveraction")||t.includes("serveraction"))s.push("server_action");let f="unknown";if(t.includes("mobile")||t.includes("android")&&!t.includes("tablet"))f="mobile";else if(t.includes("tablet")||t.includes("ipad"))f="tablet";else if(t.includes("windows")||t.includes("macintosh")||t.includes("linux"))f="desktop";let l,d;if(c)l="Headless Browser";else if(e)l="Bot/Crawler";else if(t.includes("chrome")&&!t.includes("edg")){l="Chrome";let _=n.match(/Chrome\/(\d+\.\d+)/i);if(_?.[1])d=_[1]}else if(t.includes("firefox")){l="Firefox";let _=n.match(/Firefox\/(\d+\.\d+)/i);if(_?.[1])d=_[1]}else if(t.includes("safari")&&!t.includes("chrome")){l="Safari";let _=n.match(/Version\/(\d+\.\d+)/i);if(_?.[1])d=_[1]}else if(t.includes("edg")){l="Edge";let _=n.match(/Edg\/(\d+\.\d+)/i);if(_?.[1])d=_[1]}let b,w;if(t.includes("windows nt 10"))b="Windows",w="10/11";else if(t.includes("windows nt"))b="Windows";else if(t.includes("mac os x")){b="macOS";let _=n.match(/Mac OS X (\d+[._]\d+)/i);if(_?.[1])w=_[1].replace("_",".")}else if(t.includes("android")){b="Android";let _=n.match(/Android (\d+\.?\d*)/i);if(_?.[1])w=_[1]}else if(t.includes("iphone")||t.includes("ipad")){b="iOS";let _=n.match(/OS (\d+[._]\d+)/i);if(_?.[1])w=_[1].replace("_",".")}else if(t.includes("linux"))b="Linux";return{deviceName:l&&b?`${l} on ${b}`:"Unknown Device",deviceType:f,browserName:l,browserVersion:d,osName:b,osVersion:w,ipAddress:r,userAgent:n,locationCountry:void 0,locationCity:void 0,isHeadless:c,isBot:e,isSuspicious:i,suspiciousPatterns:s}}var wi=()=>{};import{eq as Ll}from"drizzle-orm";import{Elysia as kA}from"elysia";function hi(n,r,t,o,a,c,e,i,s){let{db:f,logger:l,usersTable:d}=n,b=r.route||"/auth/login",w={accessTokenName:e?.accessTokenName||"access_token",refreshTokenName:e?.refreshTokenName||"refresh_token",sessionTokenName:e?.sessionTokenName||"session_token",accessTokenMaxAge:e?.accessTokenMaxAge||900,refreshTokenMaxAge:e?.refreshTokenMaxAge||604800,sessionTokenMaxAge:e?.sessionTokenMaxAge||900,secure:e?.secure??!0,httpOnly:e?.httpOnly??!0,sameSite:e?.sameSite||"strict",path:e?.path||"/"},h=new kA;if(!r.enabled)return h;return h.post(b,async(_)=>{if(!f||!d)return{success:!1,message:"Database not configured"};let{email:g,password:R,rememberMe:k,captchaId:M,captchaAnswer:C}=_.body;if(s?.isEnabled()){if(!M||!C)return _.set.status=400,{success:!1,message:"Captcha is required"};let T=await s.validate(M,C);if(!T.valid)return _.set.status=400,{success:!1,message:T.message||"Invalid captcha",attemptsRemaining:T.attemptsRemaining}}let m=(await f.select().from(d).where(Ll(d.email,g)).limit(1))[0],A=new URL(_.request.url),H=_.request.headers.get("cf-connecting-ip")?.trim()||_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||_.request.headers.get("x-real-ip")?.trim()||"unknown",D=_.request.headers.get("user-agent")||"unknown";if(!m)return l.warn("[AUTH] Login failed - user not found",{email:g}),await l.audit({entityName:"users",operation:"LOGIN_FAILED",summary:`Login failed: user not found (${g})`,ipAddress:H,userAgent:D,path:A.pathname,query:A.search}),{success:!1,message:"Invalid email or password"};if(m.isLocked)return l.warn("[AUTH] Login failed - account locked",{email:g,userId:m.id}),await l.audit({entityName:"users",entityId:m.id,operation:"LOGIN_FAILED",userId:m.id,summary:`Login failed: account locked (${g})`,ipAddress:H,userAgent:D,path:A.pathname,query:A.search}),{success:!1,message:"Account is locked"};if(!await _i(R,m.password)){let T=(m.failedLoginAttempts||0)+1;return await f.update(d).set({failedLoginAttempts:T,isLocked:T>=5,lockedUntil:T>=5?new Date(Date.now()+1800000):null}).where(Ll(d.id,m.id)),l.warn("[AUTH] Login failed - invalid password",{email:g,failedAttempts:T}),await l.audit({entityName:"users",entityId:m.id,operation:"LOGIN_FAILED",userId:m.id,summary:`Login failed: invalid password (${g}, attempt ${T})`,ipAddress:H,userAgent:D,path:A.pathname,query:A.search}),{success:!1,message:"Invalid email or password"}}await f.update(d).set({failedLoginAttempts:0,lastLoginAt:new Date,loginCount:(m.loginCount||0)+1}).where(Ll(d.id,m.id));let S={};_.request.headers.forEach((T,Jn)=>{S[Jn]=T}),l.info("[AUTH] Login request headers",{headers:S});let z=_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim(),U=(T)=>!T||T==="127.0.0.1"||T==="::1"||T==="localhost"||T.startsWith("10.")||T.startsWith("192.168.")||T.startsWith("172."),P=_.request.headers.get("cf-connecting-ip")?.trim()||_.request.headers.get("true-client-ip")?.trim()||(!U(z)?z:void 0)||_.request.headers.get("x-real-ip")?.trim()||_.request.headers.get("x-client-ip")?.trim()||z||"127.0.0.1",p=_.request.headers.get("user-agent")||"Unknown Browser";l.info("[AUTH] Parsed device info",{ipAddress:P,userAgent:p});let K=mi(p,P);try{if(!U(P)){let T=await fetch(`http://ip-api.com/json/${P}?fields=country,city`);if(T.ok){let Jn=await T.json();if(Jn.country)K.locationCountry=Jn.country;if(Jn.city)K.locationCity=Jn.city}}}catch{}let B=[],L=[],Y=n.userRolesTable,Q=n.rolesTable,V=n.roleClaimsTable,q=n.claimsTable;if(f&&Y&&Q)try{let{eq:T,inArray:Jn}=await import("drizzle-orm"),qn=(await f.select().from(Y).where(T(Y.userId,m.id))).map((gr)=>gr.roleId);if(qn.length>0){if(B=(await f.select().from(Q).where(Jn(Q.id,qn))).map((Ar)=>Ar.name),V&&q){let Ar=await f.select().from(V).innerJoin(q,T(V.claimId,q.id)).where(Jn(V.roleId,qn)),Mt=new Set;for(let ir of Ar){let lr=ir.claims?.action;if(lr)Mt.add(lr)}L=Array.from(Mt)}}}catch{}let F=t(m.id,B.length>0?B:void 0,L.length>0?L:void 0),v=o(m.id),dn={userId:m.id,deviceInfo:K,loginMethod:"password",rememberMe:k},on=await a(dn);if(c)await c(on,dn);l.info("[AUTH] Login successful",{userId:m.id,email:g,rememberMe:k}),await l.audit({entityName:"users",entityId:m.id,operation:"LOGIN",userId:m.id,summary:`${g} logged in successfully`,ipAddress:P,userAgent:p,path:A.pathname,query:A.search});let un={accessToken:{setHeadersEnabled:i?.accessToken?.setHeadersEnabled??!0,returnJson:i?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:i?.refreshToken?.setHeadersEnabled??!0,returnJson:i?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:i?.sessionToken?.setHeadersEnabled??!0,returnJson:i?.sessionToken?.returnJson??!0}},en=w.secure?"; Secure":"",Yn=`; Path=${w.path}; HttpOnly; SameSite=${w.sameSite}${en}`,nr=[];if(un.accessToken.setHeadersEnabled)nr.push(`${w.accessTokenName}=${F}${Yn}; Max-Age=${w.accessTokenMaxAge}`);if(un.refreshToken.setHeadersEnabled)nr.push(`${w.refreshTokenName}=${v}${Yn}; Max-Age=${w.refreshTokenMaxAge}`);if(un.sessionToken.setHeadersEnabled)nr.push(`${w.sessionTokenName}=${on}${Yn}; Max-Age=${w.sessionTokenMaxAge}`);_.set.headers["x-session-id"]=on;let gn={user:{id:m.id,email:m.email}};if(un.accessToken.returnJson)gn.accessToken=F;if(un.refreshToken.returnJson)gn.refreshToken=v;if(un.sessionToken.returnJson)gn.sessionId=on;let et=JSON.stringify({success:!0,data:gn}),_n=new Headers;_n.set("Content-Type","application/json"),_n.set("x-session-id",on);for(let T of nr)_n.append("Set-Cookie",T);return new Response(et,{status:200,headers:_n})},{body:Jl,detail:{tags:["Authentication"],summary:"Login",description:"Authenticate user with email and password"}}),h}var Vl=u(()=>{Xl();wi();Xl()});function b_(){return{"Set-Cookie":["access_token=; Path=/; HttpOnly; SameSite=Strict; Max-Age=0","refresh_token=; Path=/; HttpOnly; SameSite=Strict; Max-Age=0","session_token=; Path=/; HttpOnly; SameSite=Strict; Max-Age=0"].join(", ")}}import{t as $i}from"elysia";var EA;var g_=u(()=>{EA=$i.Object({success:$i.Boolean(),message:$i.Optional($i.String())})});import{Elysia as SA}from"elysia";function Ai(n,r,t,o){let{logger:a}=n,c=r.route||"/auth/logout",e=new SA;if(!r.enabled)return e;return e.post(c,async(i)=>{let s=i.request.headers.get("x-session-id"),f=i.request.headers.get("x-user-id");if(s){if(await t(s),o)await o(s,"user_logout")}let l=b_();for(let[b,w]of Object.entries(l))i.set.headers[b]=w;a.info("[AUTH] Logout successful",{userId:f,sessionId:s});let d=new URL(i.request.url);return a.audit({entityName:"users",entityId:f||void 0,operation:"LOGOUT",userId:f||void 0,summary:`User logged out${s?` (session: ${s.substring(0,8)}...)`:""}`,ipAddress:i.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||i.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:i.request.headers.get("user-agent")||"unknown",path:d.pathname,query:d.search}),{success:!0,message:"Logged out successfully"}},{detail:{tags:["Authentication"],summary:"Logout",description:"Logout and invalidate session"}}),e}var Cl=u(()=>{g_()});var Er={};co(Er,{IsUndefined:()=>Zn,IsUint8Array:()=>vt,IsSymbol:()=>Nl,IsString:()=>Ln,IsRegExp:()=>Xc,IsObject:()=>zn,IsNumber:()=>Or,IsNull:()=>Ol,IsIterator:()=>Gl,IsFunction:()=>Pl,IsDate:()=>Ko,IsBoolean:()=>Kt,IsBigInt:()=>Jc,IsAsyncIterator:()=>Ql,IsArray:()=>In,HasPropertyKey:()=>Ri});function Ri(n,r){return r in n}function Ql(n){return zn(n)&&!In(n)&&!vt(n)&&Symbol.asyncIterator in n}function In(n){return Array.isArray(n)}function Jc(n){return typeof n==="bigint"}function Kt(n){return typeof n==="boolean"}function Ko(n){return n instanceof globalThis.Date}function Pl(n){return typeof n==="function"}function Gl(n){return zn(n)&&!In(n)&&!vt(n)&&Symbol.iterator in n}function Ol(n){return n===null}function Or(n){return typeof n==="number"}function zn(n){return typeof n==="object"&&n!==null}function Xc(n){return n instanceof globalThis.RegExp}function Ln(n){return typeof n==="string"}function Nl(n){return typeof n==="symbol"}function vt(n){return n instanceof globalThis.Uint8Array}function Zn(n){return n===void 0}function MA(n){return n.map((r)=>ki(r))}function DA(n){return new Date(n.getTime())}function HA(n){return new Uint8Array(n)}function zA(n){return new RegExp(n.source,n.flags)}function UA(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=ki(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=ki(n[t]);return r}function ki(n){return In(n)?MA(n):Ko(n)?DA(n):vt(n)?HA(n):Xc(n)?zA(n):zn(n)?UA(n):n}function Qn(n){return ki(n)}var Br=()=>{};function Ca(n,r){return r===void 0?Qn(n):Qn({...r,...n})}var Ei=u(()=>{Br()});var xl=u(()=>{Ei();Br()});function __(n){return n!==null&&typeof n==="object"}function m_(n){return globalThis.Array.isArray(n)&&!globalThis.ArrayBuffer.isView(n)}function w_(n){return n===void 0}function h_(n){return typeof n==="number"}var $_=()=>{};var Si;var A_=u(()=>{$_();(function(n){n.InstanceMode="default",n.ExactOptionalPropertyTypes=!1,n.AllowArrayObject=!1,n.AllowNaN=!1,n.AllowNullVoid=!1;function r(e,i){return n.ExactOptionalPropertyTypes?i in e:e[i]!==void 0}n.IsExactOptionalProperty=r;function t(e){let i=__(e);return n.AllowArrayObject?i:i&&!m_(e)}n.IsObjectLike=t;function o(e){return t(e)&&!(e instanceof Date)&&!(e instanceof Uint8Array)}n.IsRecordLike=o;function a(e){return n.AllowNaN?h_(e):Number.isFinite(e)}n.IsNumberLike=a;function c(e){let i=w_(e);return n.AllowNullVoid?i||e===null:i}n.IsVoidLike=c})(Si||(Si={}))});function BA(n){return globalThis.Object.freeze(n).map((r)=>Lc(r))}function WA(n){return n}function YA(n){return n}function JA(n){return n}function XA(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=Lc(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=Lc(n[t]);return globalThis.Object.freeze(r)}function Lc(n){return In(n)?BA(n):Ko(n)?WA(n):vt(n)?YA(n):Xc(n)?JA(n):zn(n)?XA(n):n}var R_=()=>{};function J(n,r){let t=r!==void 0?{...r,...n}:n;switch(Si.InstanceMode){case"freeze":return Lc(t);case"clone":return Qn(t);default:return t}}var y=u(()=>{A_();R_();Br()});var Tt=u(()=>{y()});var mr;var k_=u(()=>{mr=class mr extends Error{constructor(n){super(n)}}});var Yt=u(()=>{k_()});var tr,_t,wr,yr,O;var Vc=u(()=>{tr=Symbol.for("TypeBox.Transform"),_t=Symbol.for("TypeBox.Readonly"),wr=Symbol.for("TypeBox.Optional"),yr=Symbol.for("TypeBox.Hint"),O=Symbol.for("TypeBox.Kind")});var rn=u(()=>{Vc()});function Qa(n){return zn(n)&&n[_t]==="Readonly"}function Wr(n){return zn(n)&&n[wr]==="Optional"}function ql(n){return mn(n,"Any")}function Fl(n){return mn(n,"Argument")}function mt(n){return mn(n,"Array")}function vo(n){return mn(n,"AsyncIterator")}function To(n){return mn(n,"BigInt")}function It(n){return mn(n,"Boolean")}function wt(n){return mn(n,"Computed")}function ht(n){return mn(n,"Constructor")}function LA(n){return mn(n,"Date")}function $t(n){return mn(n,"Function")}function At(n){return mn(n,"Integer")}function Nn(n){return mn(n,"Intersect")}function Io(n){return mn(n,"Iterator")}function mn(n,r){return zn(n)&&O in n&&n[O]===r}function Mi(n){return Kt(n)||Or(n)||Ln(n)}function Nr(n){return mn(n,"Literal")}function xr(n){return mn(n,"MappedKey")}function Pn(n){return mn(n,"MappedResult")}function Ro(n){return mn(n,"Never")}function VA(n){return mn(n,"Not")}function Cc(n){return mn(n,"Null")}function Rt(n){return mn(n,"Number")}function yn(n){return mn(n,"Object")}function Zo(n){return mn(n,"Promise")}function yo(n){return mn(n,"Record")}function jn(n){return mn(n,"Ref")}function jl(n){return mn(n,"RegExp")}function Zt(n){return mn(n,"String")}function Qc(n){return mn(n,"Symbol")}function qr(n){return mn(n,"TemplateLiteral")}function CA(n){return mn(n,"This")}function ko(n){return zn(n)&&tr in n}function Fr(n){return mn(n,"Tuple")}function Pc(n){return mn(n,"Undefined")}function wn(n){return mn(n,"Union")}function QA(n){return mn(n,"Uint8Array")}function PA(n){return mn(n,"Unknown")}function GA(n){return mn(n,"Unsafe")}function OA(n){return mn(n,"Void")}function NA(n){return zn(n)&&O in n&&Ln(n[O])}function jr(n){return ql(n)||Fl(n)||mt(n)||It(n)||To(n)||vo(n)||wt(n)||ht(n)||LA(n)||$t(n)||At(n)||Nn(n)||Io(n)||Nr(n)||xr(n)||Pn(n)||Ro(n)||VA(n)||Cc(n)||Rt(n)||yn(n)||Zo(n)||yo(n)||jn(n)||jl(n)||Zt(n)||Qc(n)||qr(n)||CA(n)||Fr(n)||Pc(n)||wn(n)||QA(n)||PA(n)||GA(n)||OA(n)||NA(n)}var Rn=u(()=>{rn()});var $={};co($,{TypeGuardUnknownTypeError:()=>E_,IsVoid:()=>lm,IsUnsafe:()=>fm,IsUnknown:()=>sm,IsUnionLiteral:()=>IA,IsUnion:()=>vl,IsUndefined:()=>em,IsUint8Array:()=>im,IsTuple:()=>cm,IsTransform:()=>am,IsThis:()=>om,IsTemplateLiteral:()=>tm,IsSymbol:()=>rm,IsString:()=>nm,IsSchema:()=>br,IsRegExp:()=>y_,IsRef:()=>Z_,IsRecursive:()=>TA,IsRecord:()=>I_,IsReadonly:()=>jA,IsProperties:()=>Di,IsPromise:()=>T_,IsOptional:()=>pA,IsObject:()=>v_,IsNumber:()=>K_,IsNull:()=>p_,IsNot:()=>j_,IsNever:()=>F_,IsMappedResult:()=>q_,IsMappedKey:()=>x_,IsLiteralValue:()=>N_,IsLiteralString:()=>G_,IsLiteralNumber:()=>O_,IsLiteralBoolean:()=>vA,IsLiteral:()=>Oc,IsKindOf:()=>ln,IsKind:()=>dm,IsIterator:()=>P_,IsIntersect:()=>Q_,IsInteger:()=>C_,IsImport:()=>KA,IsFunction:()=>V_,IsDate:()=>L_,IsConstructor:()=>X_,IsComputed:()=>J_,IsBoolean:()=>Y_,IsBigInt:()=>W_,IsAsyncIterator:()=>B_,IsArray:()=>U_,IsArgument:()=>z_,IsAny:()=>H_});function S_(n){try{return new RegExp(n),!0}catch{return!1}}function pl(n){if(!Ln(n))return!1;for(let r=0;r<n.length;r++){let t=n.charCodeAt(r);if(t>=7&&t<=13||t===27||t===127)return!1}return!0}function M_(n){return Kl(n)||br(n)}function Gc(n){return Zn(n)||Jc(n)}function Vn(n){return Zn(n)||Or(n)}function Kl(n){return Zn(n)||Kt(n)}function Un(n){return Zn(n)||Ln(n)}function qA(n){return Zn(n)||Ln(n)&&pl(n)&&S_(n)}function FA(n){return Zn(n)||Ln(n)&&pl(n)}function D_(n){return Zn(n)||br(n)}function jA(n){return zn(n)&&n[_t]==="Readonly"}function pA(n){return zn(n)&&n[wr]==="Optional"}function H_(n){return ln(n,"Any")&&Un(n.$id)}function z_(n){return ln(n,"Argument")&&Or(n.index)}function U_(n){return ln(n,"Array")&&n.type==="array"&&Un(n.$id)&&br(n.items)&&Vn(n.minItems)&&Vn(n.maxItems)&&Kl(n.uniqueItems)&&D_(n.contains)&&Vn(n.minContains)&&Vn(n.maxContains)}function B_(n){return ln(n,"AsyncIterator")&&n.type==="AsyncIterator"&&Un(n.$id)&&br(n.items)}function W_(n){return ln(n,"BigInt")&&n.type==="bigint"&&Un(n.$id)&&Gc(n.exclusiveMaximum)&&Gc(n.exclusiveMinimum)&&Gc(n.maximum)&&Gc(n.minimum)&&Gc(n.multipleOf)}function Y_(n){return ln(n,"Boolean")&&n.type==="boolean"&&Un(n.$id)}function J_(n){return ln(n,"Computed")&&Ln(n.target)&&In(n.parameters)&&n.parameters.every((r)=>br(r))}function X_(n){return ln(n,"Constructor")&&n.type==="Constructor"&&Un(n.$id)&&In(n.parameters)&&n.parameters.every((r)=>br(r))&&br(n.returns)}function L_(n){return ln(n,"Date")&&n.type==="Date"&&Un(n.$id)&&Vn(n.exclusiveMaximumTimestamp)&&Vn(n.exclusiveMinimumTimestamp)&&Vn(n.maximumTimestamp)&&Vn(n.minimumTimestamp)&&Vn(n.multipleOfTimestamp)}function V_(n){return ln(n,"Function")&&n.type==="Function"&&Un(n.$id)&&In(n.parameters)&&n.parameters.every((r)=>br(r))&&br(n.returns)}function KA(n){return ln(n,"Import")&&Ri(n,"$defs")&&zn(n.$defs)&&Di(n.$defs)&&Ri(n,"$ref")&&Ln(n.$ref)&&n.$ref in n.$defs}function C_(n){return ln(n,"Integer")&&n.type==="integer"&&Un(n.$id)&&Vn(n.exclusiveMaximum)&&Vn(n.exclusiveMinimum)&&Vn(n.maximum)&&Vn(n.minimum)&&Vn(n.multipleOf)}function Di(n){return zn(n)&&Object.entries(n).every(([r,t])=>pl(r)&&br(t))}function Q_(n){return ln(n,"Intersect")&&(Ln(n.type)&&n.type!=="object"?!1:!0)&&In(n.allOf)&&n.allOf.every((r)=>br(r)&&!am(r))&&Un(n.type)&&(Kl(n.unevaluatedProperties)||D_(n.unevaluatedProperties))&&Un(n.$id)}function P_(n){return ln(n,"Iterator")&&n.type==="Iterator"&&Un(n.$id)&&br(n.items)}function ln(n,r){return zn(n)&&O in n&&n[O]===r}function G_(n){return Oc(n)&&Ln(n.const)}function O_(n){return Oc(n)&&Or(n.const)}function vA(n){return Oc(n)&&Kt(n.const)}function Oc(n){return ln(n,"Literal")&&Un(n.$id)&&N_(n.const)}function N_(n){return Kt(n)||Or(n)||Ln(n)}function x_(n){return ln(n,"MappedKey")&&In(n.keys)&&n.keys.every((r)=>Or(r)||Ln(r))}function q_(n){return ln(n,"MappedResult")&&Di(n.properties)}function F_(n){return ln(n,"Never")&&zn(n.not)&&Object.getOwnPropertyNames(n.not).length===0}function j_(n){return ln(n,"Not")&&br(n.not)}function p_(n){return ln(n,"Null")&&n.type==="null"&&Un(n.$id)}function K_(n){return ln(n,"Number")&&n.type==="number"&&Un(n.$id)&&Vn(n.exclusiveMaximum)&&Vn(n.exclusiveMinimum)&&Vn(n.maximum)&&Vn(n.minimum)&&Vn(n.multipleOf)}function v_(n){return ln(n,"Object")&&n.type==="object"&&Un(n.$id)&&Di(n.properties)&&M_(n.additionalProperties)&&Vn(n.minProperties)&&Vn(n.maxProperties)}function T_(n){return ln(n,"Promise")&&n.type==="Promise"&&Un(n.$id)&&br(n.item)}function I_(n){return ln(n,"Record")&&n.type==="object"&&Un(n.$id)&&M_(n.additionalProperties)&&zn(n.patternProperties)&&((r)=>{let t=Object.getOwnPropertyNames(r.patternProperties);return t.length===1&&S_(t[0])&&zn(r.patternProperties)&&br(r.patternProperties[t[0]])})(n)}function TA(n){return zn(n)&&yr in n&&n[yr]==="Recursive"}function Z_(n){return ln(n,"Ref")&&Un(n.$id)&&Ln(n.$ref)}function y_(n){return ln(n,"RegExp")&&Un(n.$id)&&Ln(n.source)&&Ln(n.flags)&&Vn(n.maxLength)&&Vn(n.minLength)}function nm(n){return ln(n,"String")&&n.type==="string"&&Un(n.$id)&&Vn(n.minLength)&&Vn(n.maxLength)&&qA(n.pattern)&&FA(n.format)}function rm(n){return ln(n,"Symbol")&&n.type==="symbol"&&Un(n.$id)}function tm(n){return ln(n,"TemplateLiteral")&&n.type==="string"&&Ln(n.pattern)&&n.pattern[0]==="^"&&n.pattern[n.pattern.length-1]==="$"}function om(n){return ln(n,"This")&&Un(n.$id)&&Ln(n.$ref)}function am(n){return zn(n)&&tr in n}function cm(n){return ln(n,"Tuple")&&n.type==="array"&&Un(n.$id)&&Or(n.minItems)&&Or(n.maxItems)&&n.minItems===n.maxItems&&(Zn(n.items)&&Zn(n.additionalItems)&&n.minItems===0||In(n.items)&&n.items.every((r)=>br(r)))}function em(n){return ln(n,"Undefined")&&n.type==="undefined"&&Un(n.$id)}function IA(n){return vl(n)&&n.anyOf.every((r)=>G_(r)||O_(r))}function vl(n){return ln(n,"Union")&&Un(n.$id)&&zn(n)&&In(n.anyOf)&&n.anyOf.every((r)=>br(r))}function im(n){return ln(n,"Uint8Array")&&n.type==="Uint8Array"&&Un(n.$id)&&Vn(n.minByteLength)&&Vn(n.maxByteLength)}function sm(n){return ln(n,"Unknown")&&Un(n.$id)}function fm(n){return ln(n,"Unsafe")}function lm(n){return ln(n,"Void")&&n.type==="void"&&Un(n.$id)}function dm(n){return zn(n)&&O in n&&Ln(n[O])&&!xA.includes(n[O])}function br(n){return zn(n)&&(H_(n)||z_(n)||U_(n)||Y_(n)||W_(n)||B_(n)||J_(n)||X_(n)||L_(n)||V_(n)||C_(n)||Q_(n)||P_(n)||Oc(n)||x_(n)||q_(n)||F_(n)||j_(n)||p_(n)||K_(n)||v_(n)||T_(n)||I_(n)||Z_(n)||y_(n)||nm(n)||rm(n)||tm(n)||om(n)||cm(n)||em(n)||vl(n)||im(n)||sm(n)||fm(n)||lm(n)||dm(n))}var E_,xA;var um=u(()=>{rn();Yt();E_=class E_ extends mr{};xA=["Argument","Any","Array","AsyncIterator","BigInt","Boolean","Computed","Constructor","Date","Enum","Function","Integer","Intersect","Iterator","Literal","MappedKey","MappedResult","Not","Null","Number","Object","Promise","Record","Ref","RegExp","String","Symbol","TemplateLiteral","This","Tuple","Undefined","Union","Uint8Array","Unknown","Void"]});var Tl=u(()=>{Rn();um()});var bm=()=>{};var gm="(true|false)",Hi="(0|[1-9][0-9]*)",_m="(.*)",Eo="^(0|[1-9][0-9]*)$",So="^(.*)$",mm="^(?!.*)$";var Nc=()=>{};var wm=()=>{};var hm=()=>{};var $m=u(()=>{wm();hm()});function Am(n,r){return n.includes(r)}function Rm(n){return[...new Set(n)]}function nR(n,r){return n.filter((t)=>r.includes(t))}function rR(n,r){return n.reduce((t,o)=>{return nR(t,o)},r)}function km(n){return n.length===1?n[0]:n.length>1?rR(n.slice(1),n[0]):[]}function Em(n){let r=[];for(let t of n)r.push(...t);return r}var xc=()=>{};function Mo(n){return J({[O]:"Any"},n)}var Sm=u(()=>{Tt();rn()});var qc=u(()=>{Sm()});function Pa(n,r){return J({[O]:"Array",type:"array",items:n},r)}var Mm=u(()=>{y();rn()});var Fc=u(()=>{Mm()});function Dm(n){return J({[O]:"Argument",index:n})}var Hm=u(()=>{y();rn()});var Il=u(()=>{Hm()});function Ga(n,r){return J({[O]:"AsyncIterator",type:"AsyncIterator",items:n},r)}var zm=u(()=>{rn();y()});var jc=u(()=>{zm()});function Cn(n,r,t){return J({[O]:"Computed",target:n,parameters:r},t)}var Um=u(()=>{Tt();Vc()});var Do=u(()=>{Um()});function tR(n,r){let{[r]:t,...o}=n;return o}function xn(n,r){return r.reduce((t,o)=>tR(t,o),n)}var no=()=>{};function hn(n){return J({[O]:"Never",not:{}},n)}var Bm=u(()=>{y();rn()});var hr=u(()=>{Bm()});var Wm=()=>{};function kn(n){return J({[O]:"MappedResult",properties:n})}var Zl=u(()=>{y();rn()});function Oa(n,r,t){return J({[O]:"Constructor",type:"Constructor",parameters:n,returns:r},t)}var Ym=u(()=>{y();rn()});var pc=u(()=>{Ym()});function Jt(n,r,t){return J({[O]:"Function",type:"Function",parameters:n,returns:r},t)}var Jm=u(()=>{y();rn()});var na=u(()=>{Jm()});function Kc(n,r){return J({[O]:"Union",anyOf:n},r)}var yl=u(()=>{y();rn()});function oR(n){return n.some((r)=>Wr(r))}function Xm(n){return n.map((r)=>Wr(r)?aR(r):r)}function aR(n){return xn(n,[wr])}function cR(n,r){return oR(n)?Sr(Kc(Xm(n),r)):Kc(Xm(n),r)}function Xt(n,r){return n.length===1?J(n[0],r):n.length===0?hn(r):cR(n,r)}var Lm=u(()=>{y();rn();no();hr();ro();yl();Rn()});var Vm=()=>{};function Dn(n,r){return n.length===0?hn(r):n.length===1?J(n[0],r):Kc(n,r)}var Cm=u(()=>{hr();y();yl()});var or=u(()=>{Lm();Vm();Cm()});function eR(n){return n.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function r0(n,r,t){return n[r]===t&&n.charCodeAt(r-1)!==92}function to(n,r){return r0(n,r,"(")}function vc(n,r){return r0(n,r,")")}function Qm(n,r){return r0(n,r,"|")}function iR(n){if(!(to(n,0)&&vc(n,n.length-1)))return!1;let r=0;for(let t=0;t<n.length;t++){if(to(n,t))r+=1;if(vc(n,t))r-=1;if(r===0&&t!==n.length-1)return!1}return!0}function sR(n){return n.slice(1,n.length-1)}function fR(n){let r=0;for(let t=0;t<n.length;t++){if(to(n,t))r+=1;if(vc(n,t))r-=1;if(Qm(n,t)&&r===0)return!0}return!1}function lR(n){for(let r=0;r<n.length;r++)if(to(n,r))return!0;return!1}function dR(n){let[r,t]=[0,0],o=[];for(let c=0;c<n.length;c++){if(to(n,c))r+=1;if(vc(n,c))r-=1;if(Qm(n,c)&&r===0){let e=n.slice(t,c);if(e.length>0)o.push(Na(e));t=c+1}}let a=n.slice(t);if(a.length>0)o.push(Na(a));if(o.length===0)return{type:"const",const:""};if(o.length===1)return o[0];return{type:"or",expr:o}}function uR(n){function r(a,c){if(!to(a,c))throw new n0("TemplateLiteralParser: Index must point to open parens");let e=0;for(let i=c;i<a.length;i++){if(to(a,i))e+=1;if(vc(a,i))e-=1;if(e===0)return[c,i]}throw new n0("TemplateLiteralParser: Unclosed group parens in expression")}function t(a,c){for(let e=c;e<a.length;e++)if(to(a,e))return[c,e];return[c,a.length]}let o=[];for(let a=0;a<n.length;a++)if(to(n,a)){let[c,e]=r(n,a),i=n.slice(c,e+1);o.push(Na(i)),a=e}else{let[c,e]=t(n,a),i=n.slice(c,e);if(i.length>0)o.push(Na(i));a=e-1}return o.length===0?{type:"const",const:""}:o.length===1?o[0]:{type:"and",expr:o}}function Na(n){return iR(n)?Na(sR(n)):fR(n)?dR(n):lR(n)?uR(n):{type:"const",const:eR(n)}}function xa(n){return Na(n.slice(1,n.length-1))}var n0;var zi=u(()=>{Yt();n0=class n0 extends mr{}});function bR(n){return n.type==="or"&&n.expr.length===2&&n.expr[0].type==="const"&&n.expr[0].const==="0"&&n.expr[1].type==="const"&&n.expr[1].const==="[1-9][0-9]*"}function gR(n){return n.type==="or"&&n.expr.length===2&&n.expr[0].type==="const"&&n.expr[0].const==="true"&&n.expr[1].type==="const"&&n.expr[1].const==="false"}function _R(n){return n.type==="const"&&n.const===".*"}function ra(n){return bR(n)||_R(n)?!1:gR(n)?!0:n.type==="and"?n.expr.every((r)=>ra(r)):n.type==="or"?n.expr.every((r)=>ra(r)):n.type==="const"?!0:(()=>{throw new Pm("Unknown expression type")})()}function Gm(n){let r=xa(n.pattern);return ra(r)}var Pm;var t0=u(()=>{zi();Yt();Pm=class Pm extends mr{}});function*Nm(n){if(n.length===1)return yield*n[0];for(let r of n[0])for(let t of Nm(n.slice(1)))yield`${r}${t}`}function*mR(n){return yield*Nm(n.expr.map((r)=>[...Tc(r)]))}function*wR(n){for(let r of n.expr)yield*Tc(r)}function*hR(n){return yield n.const}function*Tc(n){return n.type==="and"?yield*mR(n):n.type==="or"?yield*wR(n):n.type==="const"?yield*hR(n):(()=>{throw new Om("Unknown expression")})()}function Ui(n){let r=xa(n.pattern);return ra(r)?[...Tc(r)]:[]}var Om;var o0=u(()=>{t0();zi();Yt();Om=class Om extends mr{}});function En(n,r){return J({[O]:"Literal",const:n,type:typeof n},r)}var xm=u(()=>{y();rn()});var Yr=u(()=>{xm()});function Bi(n){return J({[O]:"Boolean",type:"boolean"},n)}var qm=u(()=>{rn();Tt()});var Wi=u(()=>{qm()});function qa(n){return J({[O]:"BigInt",type:"bigint"},n)}var Fm=u(()=>{rn();Tt()});var Ic=u(()=>{Fm()});function nt(n){return J({[O]:"Number",type:"number"},n)}var jm=u(()=>{y();rn()});var ta=u(()=>{jm()});function kt(n){return J({[O]:"String",type:"string"},n)}var pm=u(()=>{y();rn()});var Fa=u(()=>{pm()});function*$R(n){let r=n.trim().replace(/"|'/g,"");return r==="boolean"?yield Bi():r==="number"?yield nt():r==="bigint"?yield qa():r==="string"?yield kt():yield(()=>{let t=r.split("|").map((o)=>En(o.trim()));return t.length===0?hn():t.length===1?t[0]:Xt(t)})()}function*AR(n){if(n[1]!=="{"){let r=En("$"),t=a0(n.slice(1));return yield*[r,...t]}for(let r=2;r<n.length;r++)if(n[r]==="}"){let t=$R(n.slice(2,r)),o=a0(n.slice(r+1));return yield*[...t,...o]}yield En(n)}function*a0(n){for(let r=0;r<n.length;r++)if(n[r]==="$"){let t=En(n.slice(0,r)),o=AR(n.slice(r));return yield*[t,...o]}yield En(n)}function Km(n){return[...a0(n)]}var c0=u(()=>{Yr();Wi();Ic();ta();Fa();or();hr()});function RR(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Tm(n,r){return qr(n)?n.pattern.slice(1,n.pattern.length-1):wn(n)?`(${n.anyOf.map((t)=>Tm(t,r)).join("|")})`:Rt(n)?`${r}${Hi}`:At(n)?`${r}${Hi}`:To(n)?`${r}${Hi}`:Zt(n)?`${r}${_m}`:Nr(n)?`${r}${RR(n.const.toString())}`:It(n)?`${r}${gm}`:(()=>{throw new vm(`Unexpected Kind '${n[O]}'`)})()}function e0(n){return`^${n.map((r)=>Tm(r,"")).join("")}$`}var vm;var i0=u(()=>{Nc();rn();Yt();Rn();vm=class vm extends mr{}});function oa(n){let t=Ui(n).map((o)=>En(o));return Xt(t)}var Im=u(()=>{or();Yr();o0()});function Yi(n,r){let t=Ln(n)?e0(Km(n)):e0(n);return J({[O]:"TemplateLiteral",type:"string",pattern:t},r)}var Zm=u(()=>{y();c0();i0();rn()});var oo=u(()=>{t0();o0();c0();zi();i0();Im();Zm()});function kR(n){return Ui(n).map((t)=>t.toString())}function ER(n){let r=[];for(let t of n)r.push(...Jr(t));return r}function SR(n){return[n.toString()]}function Jr(n){return[...new Set(qr(n)?kR(n):wn(n)?ER(n.anyOf):Nr(n)?SR(n.const):Rt(n)?["[number]"]:At(n)?["[number]"]:[])]}var Ji=u(()=>{oo();Rn()});function MR(n,r,t){let o={};for(let a of Object.getOwnPropertyNames(r))o[a]=Ho(n,Jr(r[a]),t);return o}function DR(n,r,t){return MR(n,r.properties,t)}function ym(n,r,t){let o=DR(n,r,t);return kn(o)}var s0=u(()=>{fr();Ji();Lt()});function rw(n,r){return n.map((t)=>tw(t,r))}function HR(n){return n.filter((r)=>!Ro(r))}function zR(n,r){return Xi(HR(rw(n,r)))}function UR(n){return n.some((r)=>Ro(r))?[]:n}function BR(n,r){return Xt(UR(rw(n,r)))}function WR(n,r){return r in n?n[r]:r==="[number]"?Xt(n):hn()}function YR(n,r){return r==="[number]"?n:hn()}function JR(n,r){return r in n?n[r]:hn()}function tw(n,r){return Nn(n)?zR(n.allOf,r):wn(n)?BR(n.anyOf,r):Fr(n)?WR(n.items??[],r):mt(n)?YR(n.items,r):yn(n)?JR(n.properties,r):hn()}function f0(n,r){return r.map((t)=>tw(n,t))}function nw(n,r){return Xt(f0(n,r))}function Ho(n,r,t){if(jn(n)||jn(r)){if(!jr(n)||!jr(r))throw new mr("Index types using Ref parameters require both Type and Key to be of TSchema");return Cn("Index",[n,r])}if(Pn(r))return ym(n,r,t);if(xr(r))return ow(n,r,t);return J(jr(r)?nw(n,Jr(r)):nw(n,r),t)}var l0=u(()=>{y();Yt();Do();hr();rt();or();Ji();d0();s0();Rn()});function XR(n,r,t){return{[r]:Ho(n,[r],Qn(t))}}function LR(n,r,t){return r.reduce((o,a)=>{return{...o,...XR(n,a,t)}},{})}function VR(n,r,t){return LR(n,r.keys,t)}function ow(n,r,t){let o=VR(n,r,t);return kn(o)}var d0=u(()=>{l0();fr();Br()});var Lt=u(()=>{d0();s0();Ji();l0()});function ja(n,r){return J({[O]:"Iterator",type:"Iterator",items:n},r)}var aw=u(()=>{y();rn()});var Zc=u(()=>{aw()});function CR(n){return globalThis.Object.keys(n).filter((r)=>!Wr(n[r]))}function QR(n,r){let t=CR(n),o=t.length>0?{[O]:"Object",type:"object",required:t,properties:n}:{[O]:"Object",type:"object",properties:n};return J(o,r)}var Bn;var cw=u(()=>{y();rn();Rn();Bn=QR});var pr=u(()=>{cw()});function Li(n,r){return J({[O]:"Promise",type:"Promise",item:n},r)}var ew=u(()=>{y();rn()});var Vi=u(()=>{ew()});function PR(n){return J(xn(n,[_t]))}function GR(n){return J({...n,[_t]:"Readonly"})}function OR(n,r){return r===!1?PR(n):GR(n)}function Xr(n,r){let t=r??!0;return Pn(n)?iw(n,t):OR(n,t)}var u0=u(()=>{y();rn();no();b0();Rn()});function NR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Xr(n[o],r);return t}function xR(n,r){return NR(n.properties,r)}function iw(n,r){let t=xR(n,r);return kn(t)}var b0=u(()=>{fr();u0()});var aa=u(()=>{b0();u0()});function tt(n,r){return J(n.length>0?{[O]:"Tuple",type:"array",items:n,additionalItems:!1,minItems:n.length,maxItems:n.length}:{[O]:"Tuple",type:"array",minItems:n.length,maxItems:n.length},r)}var sw=u(()=>{y();rn()});var zo=u(()=>{sw()});function fw(n,r){return n in r?ot(n,r[n]):kn(r)}function qR(n){return{[n]:En(n)}}function FR(n){let r={};for(let t of n)r[t]=En(t);return r}function jR(n,r){return Am(r,n)?qR(n):FR(r)}function pR(n,r){let t=jR(n,r);return fw(n,t)}function yc(n,r){return r.map((t)=>ot(n,t))}function KR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(r))t[o]=ot(n,r[o]);return t}function ot(n,r){let t={...r};return Wr(r)?Sr(ot(n,xn(r,[wr]))):Qa(r)?Xr(ot(n,xn(r,[_t]))):Pn(r)?fw(n,r.properties):xr(r)?pR(n,r.keys):ht(r)?Oa(yc(n,r.parameters),ot(n,r.returns),t):$t(r)?Jt(yc(n,r.parameters),ot(n,r.returns),t):vo(r)?Ga(ot(n,r.items),t):Io(r)?ja(ot(n,r.items),t):Nn(r)?Mr(yc(n,r.allOf),t):wn(r)?Dn(yc(n,r.anyOf),t):Fr(r)?tt(yc(n,r.items??[]),t):yn(r)?Bn(KR(n,r.properties),t):mt(r)?Pa(ot(n,r.items),t):Zo(r)?Li(ot(n,r.item),t):r}function vR(n,r){let t={};for(let o of n)t[o]=ot(o,r);return t}function lw(n,r,t){let o=jr(n)?Jr(n):n,a=r({[O]:"MappedKey",keys:o}),c=vR(o,a);return Bn(c,t)}var dw=u(()=>{rn();no();Fc();jc();pc();na();Lt();rt();Zc();Yr();pr();ro();Vi();aa();zo();or();xc();Zl();Rn()});var fr=u(()=>{Wm();Zl();dw()});function TR(n){return J(xn(n,[wr]))}function IR(n){return J({...n,[wr]:"Optional"})}function ZR(n,r){return r===!1?TR(n):IR(n)}function Sr(n,r){let t=r??!0;return Pn(n)?uw(n,t):ZR(n,t)}var g0=u(()=>{y();rn();no();_0();Rn()});function yR(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Sr(n[o],r);return t}function n3(n,r){return yR(n.properties,r)}function uw(n,r){let t=n3(n,r);return kn(t)}var _0=u(()=>{fr();g0()});var ro=u(()=>{_0();g0()});function ne(n,r={}){let t=n.every((a)=>yn(a)),o=jr(r.unevaluatedProperties)?{unevaluatedProperties:r.unevaluatedProperties}:{};return J(r.unevaluatedProperties===!1||jr(r.unevaluatedProperties)||t?{...o,[O]:"Intersect",type:"object",allOf:n}:{...o,[O]:"Intersect",allOf:n},r)}var m0=u(()=>{y();rn();Rn()});function r3(n){return n.every((r)=>Wr(r))}function t3(n){return xn(n,[wr])}function bw(n){return n.map((r)=>Wr(r)?t3(r):r)}function o3(n,r){return r3(n)?Sr(ne(bw(n),r)):ne(bw(n),r)}function Xi(n,r={}){if(n.length===1)return J(n[0],r);if(n.length===0)return hn(r);if(n.some((t)=>ko(t)))throw Error("Cannot intersect transform types");return o3(n,r)}var gw=u(()=>{rn();y();no();hr();ro();m0();Rn()});var _w=()=>{};function Mr(n,r){if(n.length===1)return J(n[0],r);if(n.length===0)return hn(r);if(n.some((t)=>ko(t)))throw Error("Cannot intersect transform types");return ne(n,r)}var mw=u(()=>{y();hr();m0();Rn()});var rt=u(()=>{gw();_w();mw()});function Vt(...n){let[r,t]=typeof n[0]==="string"?[n[0],n[1]]:[n[0].$id,n[1]];if(typeof r!=="string")throw new mr("Ref: $ref must be a string");return J({[O]:"Ref",$ref:r},t)}var ww=u(()=>{Yt();y();rn()});var ca=u(()=>{ww()});function a3(n,r){return Cn("Awaited",[Cn(n,r)])}function c3(n){return Cn("Awaited",[Vt(n)])}function e3(n){return Mr(hw(n))}function i3(n){return Dn(hw(n))}function s3(n){return pa(n)}function hw(n){return n.map((r)=>pa(r))}function pa(n,r){return J(wt(n)?a3(n.target,n.parameters):Nn(n)?e3(n.allOf):wn(n)?i3(n.anyOf):Zo(n)?s3(n.item):jn(n)?c3(n.$ref):n,r)}var $w=u(()=>{y();Do();rt();or();ca();Rn()});var Ci=u(()=>{$w()});function Aw(n){let r=[];for(let t of n)r.push(re(t));return r}function f3(n){let r=Aw(n);return Em(r)}function l3(n){let r=Aw(n);return km(r)}function d3(n){return n.map((r,t)=>t.toString())}function u3(n){return["[number]"]}function b3(n){return globalThis.Object.getOwnPropertyNames(n)}function g3(n){if(!_3)return[];return globalThis.Object.getOwnPropertyNames(n).map((t)=>{return t[0]==="^"&&t[t.length-1]==="$"?t.slice(1,t.length-1):t})}function re(n){return Nn(n)?f3(n.allOf):wn(n)?l3(n.anyOf):Fr(n)?d3(n.items??[]):mt(n)?u3(n.items):yn(n)?b3(n.properties):yo(n)?g3(n.patternProperties):[]}var _3=!1;var w0=u(()=>{xc();Rn()});function m3(n,r){return Cn("KeyOf",[Cn(n,r)])}function w3(n){return Cn("KeyOf",[Vt(n)])}function h3(n,r){let t=re(n),o=$3(t),a=Xt(o);return J(a,r)}function $3(n){return n.map((r)=>r==="[number]"?nt():En(r))}function Ka(n,r){return wt(n)?m3(n.target,n.parameters):jn(n)?w3(n.$ref):Pn(n)?Rw(n,r):h3(n,r)}var h0=u(()=>{y();Yr();ta();Do();ca();w0();or();$0();Rn()});function A3(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Ka(n[o],Qn(r));return t}function R3(n,r){return A3(n.properties,r)}function Rw(n,r){let t=R3(n,r);return kn(t)}var $0=u(()=>{fr();h0();Br()});var kw=()=>{};var te=u(()=>{$0();kw();w0();h0()});function k3(n){let r=[];for(let t of n)r.push(...re(t));return Rm(r)}function E3(n){return n.filter((r)=>!Ro(r))}function S3(n,r){let t=[];for(let o of n)t.push(...f0(o,[r]));return E3(t)}function M3(n,r){let t={};for(let o of r)t[o]=Xi(S3(n,o));return t}function Ew(n,r){let t=k3(n),o=M3(n,t);return Bn(o,r)}var Sw=u(()=>{rt();Lt();te();pr();xc();Rn()});var A0=u(()=>{Sw()});function Qi(n){return J({[O]:"Date",type:"Date"},n)}var Mw=u(()=>{rn();y()});var Pi=u(()=>{Mw()});function Gi(n){return J({[O]:"Null",type:"null"},n)}var Dw=u(()=>{y();rn()});var Oi=u(()=>{Dw()});function Ni(n){return J({[O]:"Symbol",type:"symbol"},n)}var Hw=u(()=>{y();rn()});var xi=u(()=>{Hw()});function qi(n){return J({[O]:"Undefined",type:"undefined"},n)}var zw=u(()=>{y();rn()});var Fi=u(()=>{zw()});function ji(n){return J({[O]:"Uint8Array",type:"Uint8Array"},n)}var Uw=u(()=>{y();rn()});var pi=u(()=>{Uw()});function Uo(n){return J({[O]:"Unknown"},n)}var Bw=u(()=>{y();rn()});var va=u(()=>{Bw()});function D3(n){return n.map((r)=>R0(r,!1))}function H3(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=Xr(R0(n[t],!1));return r}function Ki(n,r){return r===!0?n:Xr(n)}function R0(n,r){return Ql(n)?Ki(Mo(),r):Gl(n)?Ki(Mo(),r):In(n)?Xr(tt(D3(n))):vt(n)?ji():Ko(n)?Qi():zn(n)?Ki(Bn(H3(n)),r):Pl(n)?Ki(Jt([],Uo()),r):Zn(n)?qi():Ol(n)?Gi():Nl(n)?Ni():Jc(n)?qa():Or(n)?En(n):Kt(n)?En(n):Ln(n)?En(n):Bn({})}function Ww(n,r){return J(R0(n,!0),r)}var Yw=u(()=>{qc();Ic();Pi();na();Yr();Oi();pr();xi();zo();aa();Fi();pi();va();Tt()});var k0=u(()=>{Yw()});function Jw(n,r){return ht(n)?tt(n.parameters,r):hn(r)}var Xw=u(()=>{zo();hr();Rn()});var E0=u(()=>{Xw()});function Lw(n,r){if(Zn(n))throw Error("Enum undefined or empty");let t=globalThis.Object.getOwnPropertyNames(n).filter((c)=>isNaN(c)).map((c)=>n[c]),a=[...new Set(t)].map((c)=>En(c));return Dn(a,{...r,[yr]:"Enum"})}var Vw=u(()=>{Yr();rn();or()});var S0=u(()=>{Vw()});function at(n){return n===X.False?n:X.True}function Ta(n){throw new Ow(n)}function ar(n){return $.IsNever(n)||$.IsIntersect(n)||$.IsUnion(n)||$.IsUnknown(n)||$.IsAny(n)}function cr(n,r){return $.IsNever(r)?qw(n,r):$.IsIntersect(r)?vi(n,r):$.IsUnion(r)?U0(n,r):$.IsUnknown(r)?Kw(n,r):$.IsAny(r)?z0(n,r):Ta("StructuralRight")}function z0(n,r){return X.True}function z3(n,r){return $.IsIntersect(r)?vi(n,r):$.IsUnion(r)&&r.anyOf.some((t)=>$.IsAny(t)||$.IsUnknown(t))?X.True:$.IsUnion(r)?X.Union:$.IsUnknown(r)?X.True:$.IsAny(r)?X.True:X.Union}function U3(n,r){return $.IsUnknown(n)?X.False:$.IsAny(n)?X.Union:$.IsNever(n)?X.True:X.False}function B3(n,r){return $.IsObject(r)&&Ti(r)?X.True:ar(r)?cr(n,r):!$.IsArray(r)?X.False:at(Wn(n.items,r.items))}function W3(n,r){return ar(r)?cr(n,r):!$.IsAsyncIterator(r)?X.False:at(Wn(n.items,r.items))}function Y3(n,r){return ar(r)?cr(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsBigInt(r)?X.True:X.False}function Nw(n,r){return $.IsLiteralBoolean(n)?X.True:$.IsBoolean(n)?X.True:X.False}function J3(n,r){return ar(r)?cr(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsBoolean(r)?X.True:X.False}function X3(n,r){return ar(r)?cr(n,r):$.IsObject(r)?Dr(n,r):!$.IsConstructor(r)?X.False:n.parameters.length>r.parameters.length?X.False:!n.parameters.every((t,o)=>at(Wn(r.parameters[o],t))===X.True)?X.False:at(Wn(n.returns,r.returns))}function L3(n,r){return ar(r)?cr(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsDate(r)?X.True:X.False}function V3(n,r){return ar(r)?cr(n,r):$.IsObject(r)?Dr(n,r):!$.IsFunction(r)?X.False:n.parameters.length>r.parameters.length?X.False:!n.parameters.every((t,o)=>at(Wn(r.parameters[o],t))===X.True)?X.False:at(Wn(n.returns,r.returns))}function xw(n,r){return $.IsLiteral(n)&&Er.IsNumber(n.const)?X.True:$.IsNumber(n)||$.IsInteger(n)?X.True:X.False}function C3(n,r){return $.IsInteger(r)||$.IsNumber(r)?X.True:ar(r)?cr(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):X.False}function vi(n,r){return r.allOf.every((t)=>Wn(n,t)===X.True)?X.True:X.False}function Q3(n,r){return n.allOf.some((t)=>Wn(t,r)===X.True)?X.True:X.False}function P3(n,r){return ar(r)?cr(n,r):!$.IsIterator(r)?X.False:at(Wn(n.items,r.items))}function G3(n,r){return $.IsLiteral(r)&&r.const===n.const?X.True:ar(r)?cr(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsString(r)?pw(n,r):$.IsNumber(r)?Fw(n,r):$.IsInteger(r)?xw(n,r):$.IsBoolean(r)?Nw(n,r):X.False}function qw(n,r){return X.False}function O3(n,r){return X.True}function Cw(n){let[r,t]=[n,0];while(!0){if(!$.IsNot(r))break;r=r.not,t+=1}return t%2===0?r:Uo()}function N3(n,r){return $.IsNot(n)?Wn(Cw(n),r):$.IsNot(r)?Wn(n,Cw(r)):Ta("Invalid fallthrough for Not")}function x3(n,r){return ar(r)?cr(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsNull(r)?X.True:X.False}function Fw(n,r){return $.IsLiteralNumber(n)?X.True:$.IsNumber(n)||$.IsInteger(n)?X.True:X.False}function q3(n,r){return ar(r)?cr(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsInteger(r)||$.IsNumber(r)?X.True:X.False}function Lr(n,r){return Object.getOwnPropertyNames(n.properties).length===r}function Qw(n){return Ti(n)}function Pw(n){return Lr(n,0)||Lr(n,1)&&"description"in n.properties&&$.IsUnion(n.properties.description)&&n.properties.description.anyOf.length===2&&($.IsString(n.properties.description.anyOf[0])&&$.IsUndefined(n.properties.description.anyOf[1])||$.IsString(n.properties.description.anyOf[1])&&$.IsUndefined(n.properties.description.anyOf[0]))}function M0(n){return Lr(n,0)}function Gw(n){return Lr(n,0)}function F3(n){return Lr(n,0)}function j3(n){return Lr(n,0)}function p3(n){return Ti(n)}function K3(n){let r=nt();return Lr(n,0)||Lr(n,1)&&"length"in n.properties&&at(Wn(n.properties.length,r))===X.True}function v3(n){return Lr(n,0)}function Ti(n){let r=nt();return Lr(n,0)||Lr(n,1)&&"length"in n.properties&&at(Wn(n.properties.length,r))===X.True}function T3(n){let r=Jt([Mo()],Mo());return Lr(n,0)||Lr(n,1)&&"then"in n.properties&&at(Wn(n.properties.then,r))===X.True}function jw(n,r){return Wn(n,r)===X.False?X.False:$.IsOptional(n)&&!$.IsOptional(r)?X.False:X.True}function Dr(n,r){return $.IsUnknown(n)?X.False:$.IsAny(n)?X.Union:$.IsNever(n)||$.IsLiteralString(n)&&Qw(r)||$.IsLiteralNumber(n)&&M0(r)||$.IsLiteralBoolean(n)&&Gw(r)||$.IsSymbol(n)&&Pw(r)||$.IsBigInt(n)&&F3(r)||$.IsString(n)&&Qw(r)||$.IsSymbol(n)&&Pw(r)||$.IsNumber(n)&&M0(r)||$.IsInteger(n)&&M0(r)||$.IsBoolean(n)&&Gw(r)||$.IsUint8Array(n)&&p3(r)||$.IsDate(n)&&j3(r)||$.IsConstructor(n)&&v3(r)||$.IsFunction(n)&&K3(r)?X.True:$.IsRecord(n)&&$.IsString(D0(n))?(()=>{return r[yr]==="Record"?X.True:X.False})():$.IsRecord(n)&&$.IsNumber(D0(n))?(()=>{return Lr(r,0)?X.True:X.False})():X.False}function I3(n,r){return ar(r)?cr(n,r):$.IsRecord(r)?ct(n,r):!$.IsObject(r)?X.False:(()=>{for(let t of Object.getOwnPropertyNames(r.properties)){if(!(t in n.properties)&&!$.IsOptional(r.properties[t]))return X.False;if($.IsOptional(r.properties[t]))return X.True;if(jw(n.properties[t],r.properties[t])===X.False)return X.False}return X.True})()}function Z3(n,r){return ar(r)?cr(n,r):$.IsObject(r)&&T3(r)?X.True:!$.IsPromise(r)?X.False:at(Wn(n.item,r.item))}function D0(n){return Eo in n.patternProperties?nt():(So in n.patternProperties)?kt():Ta("Unknown record key pattern")}function H0(n){return Eo in n.patternProperties?n.patternProperties[Eo]:(So in n.patternProperties)?n.patternProperties[So]:Ta("Unable to get record value schema")}function ct(n,r){let[t,o]=[D0(r),H0(r)];return $.IsLiteralString(n)&&$.IsNumber(t)&&at(Wn(n,o))===X.True?X.True:$.IsUint8Array(n)&&$.IsNumber(t)?Wn(n,o):$.IsString(n)&&$.IsNumber(t)?Wn(n,o):$.IsArray(n)&&$.IsNumber(t)?Wn(n,o):$.IsObject(n)?(()=>{for(let a of Object.getOwnPropertyNames(n.properties))if(jw(o,n.properties[a])===X.False)return X.False;return X.True})():X.False}function y3(n,r){return ar(r)?cr(n,r):$.IsObject(r)?Dr(n,r):!$.IsRecord(r)?X.False:Wn(H0(n),H0(r))}function nk(n,r){let t=$.IsRegExp(n)?kt():n,o=$.IsRegExp(r)?kt():r;return Wn(t,o)}function pw(n,r){return $.IsLiteral(n)&&Er.IsString(n.const)?X.True:$.IsString(n)?X.True:X.False}function rk(n,r){return ar(r)?cr(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsString(r)?X.True:X.False}function tk(n,r){return ar(r)?cr(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsSymbol(r)?X.True:X.False}function ok(n,r){return $.IsTemplateLiteral(n)?Wn(oa(n),r):$.IsTemplateLiteral(r)?Wn(n,oa(r)):Ta("Invalid fallthrough for TemplateLiteral")}function ak(n,r){return $.IsArray(r)&&n.items!==void 0&&n.items.every((t)=>Wn(t,r.items)===X.True)}function ck(n,r){return $.IsNever(n)?X.True:$.IsUnknown(n)?X.False:$.IsAny(n)?X.Union:X.False}function ek(n,r){return ar(r)?cr(n,r):$.IsObject(r)&&Ti(r)?X.True:$.IsArray(r)&&ak(n,r)?X.True:!$.IsTuple(r)?X.False:Er.IsUndefined(n.items)&&!Er.IsUndefined(r.items)||!Er.IsUndefined(n.items)&&Er.IsUndefined(r.items)?X.False:Er.IsUndefined(n.items)&&!Er.IsUndefined(r.items)?X.True:n.items.every((t,o)=>Wn(t,r.items[o])===X.True)?X.True:X.False}function ik(n,r){return ar(r)?cr(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsUint8Array(r)?X.True:X.False}function sk(n,r){return ar(r)?cr(n,r):$.IsObject(r)?Dr(n,r):$.IsRecord(r)?ct(n,r):$.IsVoid(r)?dk(n,r):$.IsUndefined(r)?X.True:X.False}function U0(n,r){return r.anyOf.some((t)=>Wn(n,t)===X.True)?X.True:X.False}function fk(n,r){return n.anyOf.every((t)=>Wn(t,r)===X.True)?X.True:X.False}function Kw(n,r){return X.True}function lk(n,r){return $.IsNever(r)?qw(n,r):$.IsIntersect(r)?vi(n,r):$.IsUnion(r)?U0(n,r):$.IsAny(r)?z0(n,r):$.IsString(r)?pw(n,r):$.IsNumber(r)?Fw(n,r):$.IsInteger(r)?xw(n,r):$.IsBoolean(r)?Nw(n,r):$.IsArray(r)?U3(n,r):$.IsTuple(r)?ck(n,r):$.IsObject(r)?Dr(n,r):$.IsUnknown(r)?X.True:X.False}function dk(n,r){return $.IsUndefined(n)?X.True:$.IsUndefined(n)?X.True:X.False}function uk(n,r){return $.IsIntersect(r)?vi(n,r):$.IsUnion(r)?U0(n,r):$.IsUnknown(r)?Kw(n,r):$.IsAny(r)?z0(n,r):$.IsObject(r)?Dr(n,r):$.IsVoid(r)?X.True:X.False}function Wn(n,r){return $.IsTemplateLiteral(n)||$.IsTemplateLiteral(r)?ok(n,r):$.IsRegExp(n)||$.IsRegExp(r)?nk(n,r):$.IsNot(n)||$.IsNot(r)?N3(n,r):$.IsAny(n)?z3(n,r):$.IsArray(n)?B3(n,r):$.IsBigInt(n)?Y3(n,r):$.IsBoolean(n)?J3(n,r):$.IsAsyncIterator(n)?W3(n,r):$.IsConstructor(n)?X3(n,r):$.IsDate(n)?L3(n,r):$.IsFunction(n)?V3(n,r):$.IsInteger(n)?C3(n,r):$.IsIntersect(n)?Q3(n,r):$.IsIterator(n)?P3(n,r):$.IsLiteral(n)?G3(n,r):$.IsNever(n)?O3(n,r):$.IsNull(n)?x3(n,r):$.IsNumber(n)?q3(n,r):$.IsObject(n)?I3(n,r):$.IsRecord(n)?y3(n,r):$.IsString(n)?rk(n,r):$.IsSymbol(n)?tk(n,r):$.IsTuple(n)?ek(n,r):$.IsPromise(n)?Z3(n,r):$.IsUint8Array(n)?ik(n,r):$.IsUndefined(n)?sk(n,r):$.IsUnion(n)?fk(n,r):$.IsUnknown(n)?lk(n,r):$.IsVoid(n)?uk(n,r):Ta(`Unknown left type operand '${n[O]}'`)}function Bo(n,r){return Wn(n,r)}var Ow,X;var B0=u(()=>{qc();na();ta();Fa();va();oo();Nc();rn();Yt();Tl();Ow=class Ow extends mr{};(function(n){n[n.Union=0]="Union",n[n.True=1]="True",n[n.False=2]="False"})(X||(X={}))});function bk(n,r,t,o,a){let c={};for(let e of globalThis.Object.getOwnPropertyNames(n))c[e]=Ia(n[e],r,t,o,Qn(a));return c}function gk(n,r,t,o,a){return bk(n.properties,r,t,o,a)}function vw(n,r,t,o,a){let c=gk(n,r,t,o,a);return kn(c)}var W0=u(()=>{fr();Ii();Br()});function _k(n,r,t,o){let a=Bo(n,r);return a===X.Union?Dn([t,o]):a===X.True?t:o}function Ia(n,r,t,o,a){return Pn(n)?vw(n,r,t,o,a):xr(n)?J(Tw(n,r,t,o,a)):J(_k(n,r,t,o),a)}var Ii=u(()=>{y();or();B0();Y0();W0();Rn()});function mk(n,r,t,o,a){return{[n]:Ia(En(n),r,t,o,Qn(a))}}function wk(n,r,t,o,a){return n.reduce((c,e)=>{return{...c,...mk(e,r,t,o,a)}},{})}function hk(n,r,t,o,a){return wk(n.keys,r,t,o,a)}function Tw(n,r,t,o,a){let c=hk(n,r,t,o,a);return kn(c)}var Y0=u(()=>{fr();Yr();Ii();Br()});var Iw=()=>{};var oe=u(()=>{B0();Y0();W0();Iw();Ii()});function Zw(n,r){return Za(oa(n),r)}var J0=u(()=>{Zi();oo()});function $k(n,r){let t=n.filter((o)=>Bo(o,r)===X.False);return t.length===1?t[0]:Dn(t)}function Za(n,r,t={}){if(qr(n))return J(Zw(n,r),t);if(Pn(n))return J(yw(n,r),t);return J(wn(n)?$k(n.anyOf,r):Bo(n,r)!==X.False?hn():n,t)}var Zi=u(()=>{y();or();hr();oe();X0();J0();Rn()});function Ak(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Za(n[o],r);return t}function Rk(n,r){return Ak(n.properties,r)}function yw(n,r){let t=Rk(n,r);return kn(t)}var X0=u(()=>{fr();Zi()});var L0=u(()=>{X0();J0();Zi()});function n1(n,r){return ya(oa(n),r)}var V0=u(()=>{yi();oo()});function kk(n,r){let t=n.filter((o)=>Bo(o,r)!==X.False);return t.length===1?t[0]:Dn(t)}function ya(n,r,t){if(qr(n))return J(n1(n,r),t);if(Pn(n))return J(r1(n,r),t);return J(wn(n)?kk(n.anyOf,r):Bo(n,r)!==X.False?n:hn(),t)}var yi=u(()=>{y();or();hr();oe();C0();V0();Rn()});function Ek(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=ya(n[o],r);return t}function Sk(n,r){return Ek(n.properties,r)}function r1(n,r){let t=Sk(n,r);return kn(t)}var C0=u(()=>{fr();yi()});var Q0=u(()=>{C0();V0();yi()});function t1(n,r){return ht(n)?J(n.returns,r):hn(r)}var o1=u(()=>{y();hr();Rn()});var P0=u(()=>{o1()});function ns(n){return Xr(Sr(n))}var a1=u(()=>{aa();ro()});var rs=u(()=>{a1()});function ea(n,r,t){return J({[O]:"Record",type:"object",patternProperties:{[n]:r}},t)}function G0(n,r,t){let o={};for(let a of n)o[a]=r;return Bn(o,{...t,[yr]:"Record"})}function Mk(n,r,t){return Gm(n)?G0(Jr(n),r,t):ea(n.pattern,r,t)}function Dk(n,r,t){return G0(Jr(Dn(n)),r,t)}function Hk(n,r,t){return G0([n.toString()],r,t)}function zk(n,r,t){return ea(n.source,r,t)}function Uk(n,r,t){let o=Zn(n.pattern)?So:n.pattern;return ea(o,r,t)}function Bk(n,r,t){return ea(So,r,t)}function Wk(n,r,t){return ea(mm,r,t)}function Yk(n,r,t){return Bn({true:r,false:r},t)}function Jk(n,r,t){return ea(Eo,r,t)}function Xk(n,r,t){return ea(Eo,r,t)}function ts(n,r,t={}){return wn(n)?Dk(n.anyOf,r,t):qr(n)?Mk(n,r,t):Nr(n)?Hk(n.const,r,t):It(n)?Yk(n,r,t):At(n)?Jk(n,r,t):Rt(n)?Xk(n,r,t):jl(n)?zk(n,r,t):Zt(n)?Uk(n,r,t):ql(n)?Bk(n,r,t):Ro(n)?Wk(n,r,t):hn(t)}function os(n){return globalThis.Object.getOwnPropertyNames(n.patternProperties)[0]}function c1(n){let r=os(n);return r===So?kt():r===Eo?nt():kt({pattern:r})}function as(n){return n.patternProperties[os(n)]}var e1=u(()=>{y();rn();hr();ta();pr();Fa();or();oo();Nc();Lt();Rn()});var ae=u(()=>{e1()});function Lk(n,r){return r.parameters=ce(n,r.parameters),r.returns=Et(n,r.returns),r}function Vk(n,r){return r.parameters=ce(n,r.parameters),r.returns=Et(n,r.returns),r}function Ck(n,r){return r.allOf=ce(n,r.allOf),r}function Qk(n,r){return r.anyOf=ce(n,r.anyOf),r}function Pk(n,r){if(Zn(r.items))return r;return r.items=ce(n,r.items),r}function Gk(n,r){return r.items=Et(n,r.items),r}function Ok(n,r){return r.items=Et(n,r.items),r}function Nk(n,r){return r.items=Et(n,r.items),r}function xk(n,r){return r.item=Et(n,r.item),r}function qk(n,r){let t=Kk(n,r.properties);return{...r,...Bn(t)}}function Fk(n,r){let t=Et(n,c1(r)),o=Et(n,as(r)),a=ts(t,o);return{...r,...a}}function jk(n,r){return r.index in n?n[r.index]:Uo()}function pk(n,r){let t=Qa(r),o=Wr(r),a=Et(n,r);return t&&o?ns(a):t&&!o?Xr(a):!t&&o?Sr(a):a}function Kk(n,r){return globalThis.Object.getOwnPropertyNames(r).reduce((t,o)=>{return{...t,[o]:pk(n,r[o])}},{})}function ce(n,r){return r.map((t)=>Et(n,t))}function Et(n,r){return ht(r)?Lk(n,r):$t(r)?Vk(n,r):Nn(r)?Ck(n,r):wn(r)?Qk(n,r):Fr(r)?Pk(n,r):mt(r)?Gk(n,r):vo(r)?Ok(n,r):Io(r)?Nk(n,r):Zo(r)?xk(n,r):yn(r)?qk(n,r):yo(r)?Fk(n,r):Fl(r)?jk(n,r):r}function i1(n,r){return Et(r,Ca(n))}var s1=u(()=>{Ei();va();rs();aa();ro();pr();ae();Rn()});var O0=u(()=>{s1()});function f1(n){return J({[O]:"Integer",type:"integer"},n)}var l1=u(()=>{y();rn()});var N0=u(()=>{l1()});function vk(n,r,t){return{[n]:St(En(n),r,Qn(t))}}function Tk(n,r,t){return n.reduce((a,c)=>{return{...a,...vk(c,r,t)}},{})}function Ik(n,r,t){return Tk(n.keys,r,t)}function d1(n,r,t){let o=Ik(n,r,t);return kn(o)}var x0=u(()=>{fr();ia();Yr();Br()});function Zk(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toLowerCase(),t].join("")}function yk(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toUpperCase(),t].join("")}function n4(n){return n.toUpperCase()}function r4(n){return n.toLowerCase()}function t4(n,r,t){let o=xa(n.pattern);if(!ra(o))return{...n,pattern:u1(n.pattern,r)};let e=[...Tc(o)].map((f)=>En(f)),i=b1(e,r),s=Dn(i);return Yi([s],t)}function u1(n,r){return typeof n==="string"?r==="Uncapitalize"?Zk(n):r==="Capitalize"?yk(n):r==="Uppercase"?n4(n):r==="Lowercase"?r4(n):n:n.toString()}function b1(n,r){return n.map((t)=>St(t,r))}function St(n,r,t={}){return xr(n)?d1(n,r,t):qr(n)?t4(n,r,t):wn(n)?Dn(b1(n.anyOf,r),t):Nr(n)?En(u1(n.const,r),t):J(n,t)}var ia=u(()=>{y();oo();x0();Yr();or();Rn()});function g1(n,r={}){return St(n,"Capitalize",r)}var _1=u(()=>{ia()});function m1(n,r={}){return St(n,"Lowercase",r)}var w1=u(()=>{ia()});function h1(n,r={}){return St(n,"Uncapitalize",r)}var $1=u(()=>{ia()});function A1(n,r={}){return St(n,"Uppercase",r)}var R1=u(()=>{ia()});var q0=u(()=>{_1();x0();ia();w1();$1();R1()});function o4(n,r,t){let o={};for(let a of globalThis.Object.getOwnPropertyNames(n))o[a]=Wo(n[a],r,Qn(t));return o}function a4(n,r,t){return o4(n.properties,r,t)}function k1(n,r,t){let o=a4(n,r,t);return kn(o)}var F0=u(()=>{fr();cs();Br()});function c4(n,r){return n.map((t)=>j0(t,r))}function e4(n,r){return n.map((t)=>j0(t,r))}function i4(n,r){let{[r]:t,...o}=n;return o}function s4(n,r){return r.reduce((t,o)=>i4(t,o),n)}function f4(n,r,t){let o=xn(n,[tr,"$id","required","properties"]),a=s4(t,r);return Bn(a,o)}function l4(n){let r=n.reduce((t,o)=>Mi(o)?[...t,En(o)]:t,[]);return Dn(r)}function j0(n,r){return Nn(n)?Mr(c4(n.allOf,r)):wn(n)?Dn(e4(n.anyOf,r)):yn(n)?f4(n,r,n.properties):Bn({})}function Wo(n,r,t){let o=In(r)?l4(r):r,a=jr(r)?Jr(r):r,c=jn(n),e=jn(r);return Pn(n)?k1(n,a,t):xr(r)?E1(n,r,t):c&&e?Cn("Omit",[n,o],t):!c&&e?Cn("Omit",[n,o],t):c&&!e?Cn("Omit",[n,o],t):J({...j0(n,a),...t})}var cs=u(()=>{y();Vc();Do();Yr();Lt();rt();or();pr();p0();F0();Rn()});function d4(n,r,t){return{[r]:Wo(n,[r],Qn(t))}}function u4(n,r,t){return r.reduce((o,a)=>{return{...o,...d4(n,a,t)}},{})}function b4(n,r,t){return u4(n,r.keys,t)}function E1(n,r,t){let o=b4(n,r,t);return kn(o)}var p0=u(()=>{fr();cs();Br()});var es=u(()=>{p0();F0();cs()});function g4(n,r,t){let o={};for(let a of globalThis.Object.getOwnPropertyNames(n))o[a]=Yo(n[a],r,Qn(t));return o}function _4(n,r,t){return g4(n.properties,r,t)}function S1(n,r,t){let o=_4(n,r,t);return kn(o)}var K0=u(()=>{fr();is();Br()});function m4(n,r){return n.map((t)=>v0(t,r))}function w4(n,r){return n.map((t)=>v0(t,r))}function h4(n,r){let t={};for(let o of r)if(o in n)t[o]=n[o];return t}function $4(n,r,t){let o=xn(n,[tr,"$id","required","properties"]),a=h4(t,r);return Bn(a,o)}function A4(n){let r=n.reduce((t,o)=>Mi(o)?[...t,En(o)]:t,[]);return Dn(r)}function v0(n,r){return Nn(n)?Mr(m4(n.allOf,r)):wn(n)?Dn(w4(n.anyOf,r)):yn(n)?$4(n,r,n.properties):Bn({})}function Yo(n,r,t){let o=In(r)?A4(r):r,a=jr(r)?Jr(r):r,c=jn(n),e=jn(r);return Pn(n)?S1(n,a,t):xr(r)?M1(n,r,t):c&&e?Cn("Pick",[n,o],t):!c&&e?Cn("Pick",[n,o],t):c&&!e?Cn("Pick",[n,o],t):J({...v0(n,a),...t})}var is=u(()=>{y();Do();rt();Yr();pr();or();Lt();Vc();Rn();T0();K0()});function R4(n,r,t){return{[r]:Yo(n,[r],Qn(t))}}function k4(n,r,t){return r.reduce((o,a)=>{return{...o,...R4(n,a,t)}},{})}function E4(n,r,t){return k4(n,r.keys,t)}function M1(n,r,t){let o=E4(n,r,t);return kn(o)}var T0=u(()=>{fr();is();Br()});var ss=u(()=>{T0();K0();is()});function S4(n,r){return Cn("Partial",[Cn(n,r)])}function M4(n){return Cn("Partial",[Vt(n)])}function D4(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=Sr(n[t]);return r}function H4(n,r){let t=xn(n,[tr,"$id","required","properties"]),o=D4(r);return Bn(o,t)}function D1(n){return n.map((r)=>H1(r))}function H1(n){return wt(n)?S4(n.target,n.parameters):jn(n)?M4(n.$ref):Nn(n)?Mr(D1(n.allOf)):wn(n)?Dn(D1(n.anyOf)):yn(n)?H4(n,n.properties):To(n)?n:It(n)?n:At(n)?n:Nr(n)?n:Cc(n)?n:Rt(n)?n:Zt(n)?n:Qc(n)?n:Pc(n)?n:Bn({})}function nc(n,r){if(Pn(n))return z1(n,r);else return J({...H1(n),...r})}var I0=u(()=>{y();Do();ro();pr();rt();or();ca();no();rn();Z0();Rn()});function z4(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=nc(n[o],Qn(r));return t}function U4(n,r){return z4(n.properties,r)}function z1(n,r){let t=U4(n,r);return kn(t)}var Z0=u(()=>{fr();I0();Br()});var fs=u(()=>{Z0();I0()});function B4(n,r){return Cn("Required",[Cn(n,r)])}function W4(n){return Cn("Required",[Vt(n)])}function Y4(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=xn(n[t],[wr]);return r}function J4(n,r){let t=xn(n,[tr,"$id","required","properties"]),o=Y4(r);return Bn(o,t)}function U1(n){return n.map((r)=>B1(r))}function B1(n){return wt(n)?B4(n.target,n.parameters):jn(n)?W4(n.$ref):Nn(n)?Mr(U1(n.allOf)):wn(n)?Dn(U1(n.anyOf)):yn(n)?J4(n,n.properties):To(n)?n:It(n)?n:At(n)?n:Nr(n)?n:Cc(n)?n:Rt(n)?n:Zt(n)?n:Qc(n)?n:Pc(n)?n:Bn({})}function rc(n,r){if(Pn(n))return W1(n,r);else return J({...B1(n),...r})}var y0=u(()=>{y();Do();pr();rt();or();ca();rn();no();nd();Rn()});function X4(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=rc(n[o],r);return t}function L4(n,r){return X4(n.properties,r)}function W1(n,r){let t=L4(n,r);return kn(t)}var nd=u(()=>{fr();y0()});var ls=u(()=>{nd();y0()});function V4(n,r){return r.map((t)=>{return jn(t)?rd(n,t.$ref):Kr(n,t)})}function rd(n,r){return r in n?jn(n[r])?rd(n,n[r].$ref):Kr(n,n[r]):hn()}function C4(n){return pa(n[0])}function Q4(n){return Ho(n[0],n[1])}function P4(n){return Ka(n[0])}function G4(n){return nc(n[0])}function O4(n){return Wo(n[0],n[1])}function N4(n){return Yo(n[0],n[1])}function x4(n){return rc(n[0])}function q4(n,r,t){let o=V4(n,t);return r==="Awaited"?C4(o):r==="Index"?Q4(o):r==="KeyOf"?P4(o):r==="Partial"?G4(o):r==="Omit"?O4(o):r==="Pick"?N4(o):r==="Required"?x4(o):hn()}function F4(n,r){return Pa(Kr(n,r))}function j4(n,r){return Ga(Kr(n,r))}function p4(n,r,t){return Oa(ee(n,r),Kr(n,t))}function K4(n,r,t){return Jt(ee(n,r),Kr(n,t))}function v4(n,r){return Mr(ee(n,r))}function T4(n,r){return ja(Kr(n,r))}function I4(n,r){return Bn(globalThis.Object.keys(r).reduce((t,o)=>{return{...t,[o]:Kr(n,r[o])}},{}))}function Z4(n,r){let[t,o]=[Kr(n,as(r)),os(r)],a=Ca(r);return a.patternProperties[o]=t,a}function y4(n,r){return jn(r)?{...rd(n,r.$ref),[tr]:r[tr]}:r}function nE(n,r){return tt(ee(n,r))}function rE(n,r){return Dn(ee(n,r))}function ee(n,r){return r.map((t)=>Kr(n,t))}function Kr(n,r){return Wr(r)?J(Kr(n,xn(r,[wr])),r):Qa(r)?J(Kr(n,xn(r,[_t])),r):ko(r)?J(y4(n,r),r):mt(r)?J(F4(n,r.items),r):vo(r)?J(j4(n,r.items),r):wt(r)?J(q4(n,r.target,r.parameters)):ht(r)?J(p4(n,r.parameters,r.returns),r):$t(r)?J(K4(n,r.parameters,r.returns),r):Nn(r)?J(v4(n,r.allOf),r):Io(r)?J(T4(n,r.items),r):yn(r)?J(I4(n,r.properties),r):yo(r)?J(Z4(n,r)):Fr(r)?J(nE(n,r.items||[]),r):wn(r)?J(rE(n,r.anyOf),r):r}function tE(n,r){return r in n?Kr(n,n[r]):hn()}function Y1(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:tE(n,t)}},{})}var J1=u(()=>{Tt();xl();no();Fc();Ci();jc();pc();Lt();na();rt();Zc();te();pr();es();ss();hr();fs();ae();ls();zo();or();rn();Rn()});class X1{constructor(n){let r=Y1(n),t=this.WithIdentifiers(r);this.$defs=t}Import(n,r){let t={...this.$defs,[n]:J(this.$defs[n],r)};return J({[O]:"Import",$defs:t,$ref:n})}WithIdentifiers(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:{...n[t],$id:t}}},{})}}function L1(n){return new X1(n)}var V1=u(()=>{Tt();rn();J1()});var td=u(()=>{V1()});function C1(n,r){return J({[O]:"Not",not:n},r)}var Q1=u(()=>{y();rn()});var od=u(()=>{Q1()});function P1(n,r){return $t(n)?tt(n.parameters,r):hn()}var G1=u(()=>{zo();hr();Rn()});var ad=u(()=>{G1()});function O1(n,r={}){if(Zn(r.$id))r.$id=`T${oE++}`;let t=Ca(n({[O]:"This",$ref:`${r.$id}`}));return t.$id=r.$id,J({[yr]:"Recursive",...t},r)}var oE=0;var N1=u(()=>{Ei();y();rn()});var cd=u(()=>{N1()});function x1(n,r){let t=Ln(n)?new globalThis.RegExp(n):n;return J({[O]:"RegExp",type:"RegExp",source:t.source,flags:t.flags},r)}var q1=u(()=>{y();rn()});var ed=u(()=>{q1()});function aE(n){return Nn(n)?n.allOf:wn(n)?n.anyOf:Fr(n)?n.items??[]:[]}function F1(n){return aE(n)}var j1=u(()=>{Rn()});var id=u(()=>{j1()});function p1(n,r){return $t(n)?J(n.returns,r):hn(r)}var K1=u(()=>{y();hr();Rn()});var sd=u(()=>{K1()});var v1=()=>{};var T1=()=>{};var I1=u(()=>{v1();T1()});var Z1=()=>{};var y1=u(()=>{Z1()});class n2{constructor(n){this.schema=n}Decode(n){return new r2(this.schema,n)}}class r2{constructor(n,r){this.schema=n,this.decode=r}EncodeTransform(n,r){let a={Encode:(c)=>r[tr].Encode(n(c)),Decode:(c)=>this.decode(r[tr].Decode(c))};return{...r,[tr]:a}}EncodeSchema(n,r){let t={Decode:this.decode,Encode:n};return{...r,[tr]:t}}Encode(n){return ko(this.schema)?this.EncodeTransform(n,this.schema):this.EncodeSchema(n,this.schema)}}function t2(n){return new n2(n)}var o2=u(()=>{rn();Rn()});var fd=u(()=>{o2()});function a2(n={}){return J({[O]:n[O]??"Unsafe"},n)}var c2=u(()=>{y();rn()});var ld=u(()=>{c2()});function e2(n){return J({[O]:"Void",type:"void"},n)}var i2=u(()=>{y();rn()});var dd=u(()=>{i2()});var ud={};co(ud,{Void:()=>e2,Uppercase:()=>A1,Unsafe:()=>a2,Unknown:()=>Uo,Union:()=>Dn,Undefined:()=>qi,Uncapitalize:()=>h1,Uint8Array:()=>ji,Tuple:()=>tt,Transform:()=>t2,TemplateLiteral:()=>Yi,Symbol:()=>Ni,String:()=>kt,ReturnType:()=>p1,Rest:()=>F1,Required:()=>rc,RegExp:()=>x1,Ref:()=>Vt,Recursive:()=>O1,Record:()=>ts,ReadonlyOptional:()=>ns,Readonly:()=>Xr,Promise:()=>Li,Pick:()=>Yo,Partial:()=>nc,Parameters:()=>P1,Optional:()=>Sr,Omit:()=>Wo,Object:()=>Bn,Number:()=>nt,Null:()=>Gi,Not:()=>C1,Never:()=>hn,Module:()=>L1,Mapped:()=>lw,Lowercase:()=>m1,Literal:()=>En,KeyOf:()=>Ka,Iterator:()=>ja,Intersect:()=>Mr,Integer:()=>f1,Instantiate:()=>i1,InstanceType:()=>t1,Index:()=>Ho,Function:()=>Jt,Extract:()=>ya,Extends:()=>Ia,Exclude:()=>Za,Enum:()=>Lw,Date:()=>Qi,ConstructorParameters:()=>Jw,Constructor:()=>Oa,Const:()=>Ww,Composite:()=>Ew,Capitalize:()=>g1,Boolean:()=>Bi,BigInt:()=>qa,Awaited:()=>pa,AsyncIterator:()=>Ga,Array:()=>Pa,Argument:()=>Dm,Any:()=>Mo});var s2=u(()=>{qc();Il();Fc();jc();Ci();Ic();Wi();A0();k0();pc();E0();Pi();S0();L0();oe();Q0();na();Lt();P0();O0();N0();rt();q0();Zc();te();Yr();fr();td();hr();od();Oi();ta();pr();es();ro();ad();fs();ss();Vi();aa();rs();ae();cd();ca();ed();ls();id();sd();Fa();xi();oo();fd();zo();pi();Fi();or();va();ld();dd()});var er;var f2=u(()=>{s2();er=ud});var l2=u(()=>{xl();Tt();Yt();Tl();bm();Nc();$m();xc();rn();qc();Fc();Il();jc();Ci();Ic();Wi();A0();k0();pc();E0();Pi();S0();L0();oe();Q0();na();Lt();P0();O0();N0();rt();Zc();q0();te();Yr();td();fr();hr();od();Oi();ta();pr();es();ro();ad();fs();ss();Vi();aa();rs();ae();cd();ca();ed();ls();id();sd();I1();y1();Fa();xi();oo();fd();zo();pi();Fi();or();va();ld();dd();f2()});var bd,gd,jx,px;var _d=u(()=>{l2();bd=er.Object({email:er.String({format:"email"})}),gd=er.Object({token:er.String()}),jx=er.Object({success:er.Boolean(),message:er.Optional(er.String())}),px=er.Object({success:er.Boolean(),message:er.Optional(er.String()),data:er.Optional(er.Object({user:er.Object({id:er.String(),email:er.String()}),accessToken:er.String(),refreshToken:er.String()}))})});import{eq as md}from"drizzle-orm";import{Elysia as cE}from"elysia";function ds(n,r,t,o,a,c,e,i,s,f){let{db:l,logger:d,usersTable:b}=n,w=r.route||"/auth/magic-link",h=r.verifyRoute||"/auth/magic-link/verify",_=r.expiresIn||"15m",g=r.redirectUrl||"",R=new cE;if(!r.enabled)return R;return R.post(w,async(k)=>{if(!l||!b)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return d.error("[AUTH] Magic link requested but email service not available"),{success:!1,message:"Email service not available"};let{email:M}=k.body,N=(await l.select().from(b).where(md(b.email,M)).limit(1))[0];if(!N)return d.info("[AUTH] Magic link requested for non-existent email",{email:M}),{success:!0,message:"If an account exists, a magic link has been sent"};if(N.isLocked)return d.warn("[AUTH] Magic link requested for locked account",{email:M}),{success:!0,message:"If an account exists, a magic link has been sent"};let m=La(),A=gt(m),H=new Date(Date.now()+Va(_));await e({userId:N.id,email:M,tokenHash:A,expiresAt:H});let D=g?`${g}?token=${m}`:`${h}?token=${m}`,E=await t.sendMagicLinkEmail(M,D,f);if(!E.success)return d.error("[AUTH] Failed to send magic link email",{email:M,error:E.error}),{success:!1,message:"Failed to send email"};return d.info("[AUTH] Magic link sent",{email:M,userId:N.id}),{success:!0,message:"If an account exists, a magic link has been sent"}},{body:bd,detail:{tags:["Authentication"],summary:"Request Magic Link",description:"Send a magic link to the user's email for passwordless login"}}),R.get(h,async(k)=>{if(!l||!b)return{success:!1,message:"Database not configured"};let M=k.query.token;if(!M)return{success:!1,message:"Token is required"};let C=gt(M),N=await i(C);if(!N)return d.warn("[AUTH] Invalid magic link token"),{success:!1,message:"Invalid or expired token"};if(new Date>N.expiresAt)return await s(C),d.warn("[AUTH] Expired magic link token",{email:N.email}),{success:!1,message:"Invalid or expired token"};let A=(await l.select().from(b).where(md(b.id,N.userId)).limit(1))[0];if(!A)return await s(C),{success:!1,message:"User not found"};await s(C),await l.update(b).set({lastLoginAt:new Date,loginCount:(A.loginCount||0)+1,emailVerified:!0}).where(md(b.id,A.id));let H=k.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||k.request.headers.get("x-real-ip")?.trim()||"unknown",D=k.request.headers.get("user-agent")||"",E=o(A.id),S=a(A.id),z=await c({userId:A.id,deviceInfo:{ipAddress:H,userAgent:D,deviceType:"unknown"},loginMethod:"magic_link"});return d.info("[AUTH] Magic link login successful",{userId:A.id,email:A.email}),k.set.headers["x-session-id"]=z,{success:!0,data:{user:{id:A.id,email:A.email},accessToken:E,refreshToken:S}}},{query:gd,detail:{tags:["Authentication"],summary:"Verify Magic Link",description:"Verify magic link token and login user"}}),R}var wd=u(()=>{_d();Yc();_d()});import{eq as tc}from"drizzle-orm";import{Elysia as eE}from"elysia";function us(n,r,t,o,a){let{db:c,logger:e,usersTable:i}=n,s=r.route||"/auth/me",f=new eE;if(!r.enabled)return f;return f.get(s,async(l)=>{if(!c||!i)return{success:!1,message:"Database not configured"};let d=l.request.headers.get("x-user-id");if(!d)return l.set.status=401,{success:!1,message:"Unauthorized"};let w=(await c.select().from(i).where(tc(i.id,d)).limit(1))[0];if(!w)return l.set.status=404,{success:!1,message:"User not found"};let{password:h,..._}=w,g=null,R=[],k=[],M=[],C=[];if(r.includeProfile&&t){let m=t.profiles;if(m&&c)g=(await c.select().from(m).where(tc(m.userId,d)).limit(1))[0]||null}if(r.includeAddresses&&t){let m=t.addresses;if(m&&c)R=await c.select().from(m).where(tc(m.ownerId,d))}if(r.includePhones&&t){let m=t.phones;if(m&&c)k=await c.select().from(m).where(tc(m.ownerId,d))}if(r.includeFiles&&t){let m=t.files;if(m&&c)M=await c.select().from(m).where(tc(m.uploadedBy,d))}if(r.includeRoles&&t){let{userRoles:m,roles:A}=t;if(m&&A&&c){let D=(await c.select().from(m).where(tc(m.userId,d))).map((E)=>E.roleId);if(D.length>0){let{inArray:E}=await import("drizzle-orm");C=await c.select().from(A).where(E(A.id,D))}}}return e.info("[AUTH] Me endpoint accessed",{userId:d}),JSON.parse(JSON.stringify({success:!0,data:{user:_,profile:g,addresses:R,phones:k,files:M,roles:C}},(m,A)=>typeof A==="bigint"?Number(A):A))},{detail:{tags:["Authentication"],summary:"Get current user",description:"Get the currently authenticated user with profile, addresses, phones and files"}}),f}var hd=()=>{};import{eq as zr,and as bs}from"drizzle-orm";import{Elysia as iE}from"elysia";function d2(n,r,t,o,a,c,e,i,s,f,l){let{db:d,logger:b,usersTable:w}=n,h=r.basePath,_={accessTokenName:e?.accessTokenName||"access_token",refreshTokenName:e?.refreshTokenName||"refresh_token",sessionTokenName:e?.sessionTokenName||"session_token",accessTokenMaxAge:e?.accessTokenMaxAge||900,refreshTokenMaxAge:e?.refreshTokenMaxAge||604800,sessionTokenMaxAge:e?.sessionTokenMaxAge||900,secure:e?.secure??!0,httpOnly:e?.httpOnly??!0,sameSite:e?.sameSite||"lax",path:e?.path||"/"},g={accessToken:{setHeadersEnabled:i?.accessToken?.setHeadersEnabled??!0,returnJson:i?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:i?.refreshToken?.setHeadersEnabled??!0,returnJson:i?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:i?.sessionToken?.setHeadersEnabled??!0,returnJson:i?.sessionToken?.returnJson??!0}},R=new iE;return R.get(`${h}/:provider`,async(k)=>{let M=k.params.provider;if(!r.isProviderEnabled(M))return k.set.status=404,{success:!1,message:`OAuth provider "${M}" is not enabled`};let C=k.query.link_user_id,N=k.query.redirect_url,m=r.buildAuthorizationUrl(M,C,N);return k.set.status=302,k.set.headers.Location=m,null},{detail:{tags:["Authentication"],summary:"OAuth Redirect",description:"Redirects to the OAuth provider authorization page"}}),R.get(`${h}/:provider/callback`,async(k)=>{let M=k.params.provider,C=k.query,{code:N,state:m,error:A,error_description:H}=C,D=r.errorRedirectUrl;if(A)return b.warn("[OAUTH] Provider returned error",{provider:M,error:A,error_description:H}),k.set.status=302,k.set.headers.Location=`${D}?error=${encodeURIComponent(H||A)}`,null;if(!N||!m)return k.set.status=302,k.set.headers.Location=`${D}?error=missing_code_or_state`,null;let E=r.consumeState(m);if(!E)return b.warn("[OAUTH] Invalid or expired state",{provider:M,state:m}),k.set.status=302,k.set.headers.Location=`${D}?error=invalid_state`,null;if(E.provider!==M)return b.warn("[OAUTH] State provider mismatch",{expected:E.provider,got:M}),k.set.status=302,k.set.headers.Location=`${D}?error=provider_mismatch`,null;if(!d||!w)return k.set.status=302,k.set.headers.Location=`${D}?error=server_error`,null;let S;try{S=await r.exchangeCode(M,N)}catch(en){return b.error("[OAUTH] Code exchange failed",{provider:M,error:en}),k.set.status=302,k.set.headers.Location=`${D}?error=token_exchange_failed`,null}let{profile:z,tokens:U}=S,P=n.oauthAccountsTable,p=null;if(E.linkUserId&&r.allowAccountLinking){if(p=E.linkUserId,P){let Yn=await d.select().from(P).where(bs(zr(P.provider,M),zr(P.providerAccountId,z.providerAccountId))).limit(1);if(Yn.length>0){let nr=Yn[0];if(nr.userId!==p)return k.set.status=302,k.set.headers.Location=`${D}?error=account_already_linked_to_another_user`,null;await d.update(P).set({accessToken:U.accessToken,refreshToken:U.refreshToken??null,tokenExpiresAt:U.expiresAt??null,scope:U.scope??null,rawProfile:z.rawProfile,lastUsedAt:new Date}).where(zr(P.id,nr.id))}else await d.insert(P).values({userId:p,provider:M,providerAccountId:z.providerAccountId,providerEmail:z.email??null,providerName:z.name??null,providerAvatarUrl:z.avatarUrl??null,accessToken:U.accessToken,refreshToken:U.refreshToken??null,tokenExpiresAt:U.expiresAt??null,scope:U.scope??null,rawProfile:z.rawProfile,isPrimary:!1,lastUsedAt:new Date})}b.info("[OAUTH] Account linked successfully",{userId:p,provider:M});let en=E.redirectUrl||r.successRedirectUrl;return k.set.status=302,k.set.headers.Location=`${en}?linked=true&provider=${M}`,null}if(P){let en=await d.select().from(P).where(bs(zr(P.provider,M),zr(P.providerAccountId,z.providerAccountId))).limit(1);if(en.length>0){let Yn=en[0];p=Yn.userId,await d.update(P).set({accessToken:U.accessToken,refreshToken:U.refreshToken??null,tokenExpiresAt:U.expiresAt??null,scope:U.scope??null,rawProfile:z.rawProfile,lastUsedAt:new Date}).where(zr(P.id,Yn.id))}}if(!p&&z.email){let en=await d.select().from(w).where(zr(w.email,z.email)).limit(1);if(en.length>0){if(p=en[0].id,P)await d.insert(P).values({userId:p,provider:M,providerAccountId:z.providerAccountId,providerEmail:z.email??null,providerName:z.name??null,providerAvatarUrl:z.avatarUrl??null,accessToken:U.accessToken,refreshToken:U.refreshToken??null,tokenExpiresAt:U.expiresAt??null,scope:U.scope??null,rawProfile:z.rawProfile,isPrimary:!1,lastUsedAt:new Date}).onConflictDoNothing();b.info("[OAUTH] Merged OAuth account with existing user by email",{userId:p,provider:M,email:z.email})}}if(!p){if(!r.autoCreateUser)return k.set.status=302,k.set.headers.Location=`${D}?error=user_not_found`,null;let en=z.email??`${M}_${z.providerAccountId}@oauth.local`;if(p=(await d.insert(w).values({email:en,password:null,verifiedAt:z.email?new Date:null,isActive:!0}).returning())[0].id,P)await d.insert(P).values({userId:p,provider:M,providerAccountId:z.providerAccountId,providerEmail:z.email??null,providerName:z.name??null,providerAvatarUrl:z.avatarUrl??null,accessToken:U.accessToken,refreshToken:U.refreshToken??null,tokenExpiresAt:U.expiresAt??null,scope:U.scope??null,rawProfile:z.rawProfile,isPrimary:!0,lastUsedAt:new Date});if(b.info("[OAUTH] Created new user via OAuth",{userId:p,provider:M,email:z.email}),r.sendInviteOnCreate&&z.email&&s?.isAvailable()&&f)try{let gn=La(),et=gt(gn),_n=new Date(Date.now()+Va("7d"));await f({userId:p,email:z.email,tokenHash:et,expiresAt:_n});let Jn=`${r.successRedirectUrl.replace(/\/$/,"").replace(/\/[^/]+$/,"/set-password")}?token=${gn}`;await s.sendEmail({to:z.email,subject:`Welcome to ${l??"the platform"} \u2014 Set your password`,html:`
78
78
  <p>Hi${z.name?` ${z.name}`:""},</p>
79
79
  <p>Your account has been created via ${M} login. You can optionally set a password to also sign in with your email and password.</p>
80
80
  <p><a href="${Jn}">Set your password</a></p>
81
81
  <p>This link expires in 7 days. If you don't want to set a password, you can always sign in with ${M}.</p>
82
- `}),b.info("[OAUTH] Invite email sent to new OAuth user",{userId:p,email:z.email,provider:M})}catch(gn){b.warn("[OAUTH] Failed to send invite email",{userId:p,error:gn})}}await d.update(w).set({lastLoginAt:new Date}).where(zr(w.id,p));let K=k.request.headers.get("cf-connecting-ip")?.trim()||k.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||k.request.headers.get("x-real-ip")?.trim()||"127.0.0.1",B=k.request.headers.get("user-agent")||"Unknown Browser",L=mi(B,K),Y=t(p),Q=o(p),V={userId:p,deviceInfo:L,loginMethod:`oauth:${M}`,rememberMe:!0},q=await a(V);if(c)await c(q,V);await b.audit({entityName:"users",entityId:p,operation:"LOGIN",userId:p,summary:`${z.email??z.providerAccountId} logged in via OAuth (${M})`,ipAddress:K,userAgent:B,path:`${h}/${M}/callback`,query:""});let F=_.secure?"; Secure":"",v=`; Path=${_.path}; HttpOnly; SameSite=${_.sameSite}${F}`,dn=[];if(g.accessToken.setHeadersEnabled)dn.push(`${_.accessTokenName}=${Y}${v}; Max-Age=${_.accessTokenMaxAge}`);if(g.refreshToken.setHeadersEnabled)dn.push(`${_.refreshTokenName}=${Q}${v}; Max-Age=${_.refreshTokenMaxAge}`);if(g.sessionToken.setHeadersEnabled)dn.push(`${_.sessionTokenName}=${q}${v}; Max-Age=${_.sessionTokenMaxAge}`);let tn=E.redirectUrl||r.successRedirectUrl,un=new Headers;un.set("Location",tn);for(let sn of dn)un.append("Set-Cookie",sn);return new Response(null,{status:302,headers:un})},{detail:{tags:["Authentication"],summary:"OAuth Callback",description:"Handles the OAuth provider callback, creates session and sets cookies"}}),R.get(`${h}/providers`,()=>{return{success:!0,data:{providers:r.getEnabledProviders()}}},{detail:{tags:["Authentication"],summary:"List OAuth Providers",description:"Returns the list of enabled OAuth providers"}}),R.get(`${h}/link/:provider`,async(k)=>{let M=k.params.provider;if(!r.isProviderEnabled(M))return k.set.status=404,{success:!1,message:`OAuth provider "${M}" is not enabled`};if(!r.allowAccountLinking)return k.set.status=403,{success:!1,message:"Account linking is disabled"};let C=k.request.headers.get("x-user-id");if(!C)return k.set.status=401,{success:!1,message:"Authentication required to link accounts"};let N=k.query.redirect_url,m=r.buildAuthorizationUrl(M,C,N);return k.set.status=302,k.set.headers.Location=m,null},{detail:{tags:["Authentication"],summary:"Link OAuth Account",description:"Redirects to provider to link an OAuth account to the current user"}}),R.delete(`${h}/unlink/:provider`,async(k)=>{let M=k.params.provider,C=k.request.headers.get("x-user-id");if(!C)return k.set.status=401,{success:!1,message:"Authentication required"};if(!d)return k.set.status=500,{success:!1,message:"Database not configured"};let N=n.oauthAccountsTable;if(!N)return k.set.status=500,{success:!1,message:"OAuth accounts table not configured"};if((await d.select().from(N).where(bs(zr(N.userId,C),zr(N.provider,M))).limit(1)).length===0)return{success:!1,message:`No linked ${M} account found`};let D=!!(await d.select().from(w).where(zr(w.id,C)).limit(1))[0]?.password,E=await d.select().from(N).where(zr(N.userId,C));if(!D&&E.length<=1)return k.set.status=400,{success:!1,message:"Cannot unlink the only login method. Set a password first."};return await d.delete(N).where(bs(zr(N.userId,C),zr(N.provider,M))),b.info("[OAUTH] Account unlinked",{userId:C,provider:M}),{success:!0,message:`${M} account unlinked successfully`}},{detail:{tags:["Authentication"],summary:"Unlink OAuth Account",description:"Removes a linked OAuth account from the current user"}}),R.get(`${h}/accounts`,async(k)=>{let M=k.request.headers.get("x-user-id");if(!M)return k.set.status=401,{success:!1,message:"Authentication required"};if(!d)return k.set.status=500,{success:!1,message:"Database not configured"};let C=n.oauthAccountsTable;if(!C)return{success:!0,data:{accounts:[]}};return{success:!0,data:{accounts:(await d.select().from(C).where(zr(C.userId,M))).map((A)=>({id:A.id,provider:A.provider,providerEmail:A.providerEmail,providerName:A.providerName,providerAvatarUrl:A.providerAvatarUrl,isPrimary:A.isPrimary,lastUsedAt:A.lastUsedAt,createdAt:A.createdAt}))}}},{detail:{tags:["Authentication"],summary:"List Linked OAuth Accounts",description:"Returns all OAuth accounts linked to the current user"}}),R}var u2=u(()=>{wi();Yc()});import{t as Jo}from"elysia";var $d,sE;var Ad=u(()=>{$d=Jo.Object({currentPassword:Jo.String({minLength:1}),newPassword:Jo.String({minLength:8}),confirmPassword:Jo.String({minLength:8})}),sE=Jo.Object({success:Jo.Boolean(),message:Jo.Optional(Jo.String())})});function b2(n,r){return n===r}import{eq as g2}from"drizzle-orm";import{Elysia as fE}from"elysia";function gs(n,r){let{db:t,logger:o,usersTable:a}=n,c=r.route||"/auth/password-change",e=new fE;if(!r.enabled)return e;return e.post(c,async(i)=>{if(!t||!a)return i.set.status=500,{success:!1,message:"Database not configured"};let s=i.request.headers.get("x-user-id");if(!s)return i.set.status=401,{success:!1,message:"Authentication required"};let{currentPassword:f,newPassword:l,confirmPassword:d}=i.body;if(!b2(l,d))return i.set.status=422,{success:!1,message:"New passwords do not match"};let w=(await t.select().from(a).where(g2(a.id,s)).limit(1))[0];if(!w)return i.set.status=404,{success:!1,message:"User not found"};let h=await _i(f,w.password),_=new URL(i.request.url),g=i.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||i.request.headers.get("x-real-ip")?.trim()||"unknown",R=i.request.headers.get("user-agent")||"unknown";if(!h)return o.warn("[AUTH] Password change failed - invalid current password",{userId:s}),o.audit({entityName:"users",entityId:s,operation:"PASSWORD_CHANGE_FAILED",userId:s,summary:"Password change failed: invalid current password",ipAddress:g,userAgent:R,path:_.pathname,query:_.search}),i.set.status=400,{success:!1,message:"Current password is incorrect"};let k=await Ao(l);return await t.update(a).set({password:k,updatedAt:new Date}).where(g2(a.id,s)),o.info("[AUTH] Password change successful",{userId:s}),o.audit({entityName:"users",entityId:s,operation:"PASSWORD_CHANGE",userId:s,summary:"Password changed successfully",ipAddress:g,userAgent:R,path:_.pathname,query:_.search}),{success:!0,message:"Password changed successfully"}},{body:$d,detail:{tags:["Authentication"],summary:"Change Password",description:"Change password for authenticated user"}}),e}var Rd=u(()=>{wi();Xa();Ad();Ad()});import{t as Ct}from"elysia";var kd,Ed,lE;var Sd=u(()=>{kd=Ct.Object({email:Ct.String({format:"email"})}),Ed=Ct.Object({token:Ct.String(),newPassword:Ct.String({minLength:8}),confirmPassword:Ct.String({minLength:8})}),lE=Ct.Object({success:Ct.Boolean(),message:Ct.Optional(Ct.String())})});import{randomBytes as dE}from"crypto";function _2(){return dE(32).toString("hex")}function m2(n){return new Date>n}var w2=()=>{};import{Elysia as uE}from"elysia";function _s(n,r,t,o,a,c){let{db:e,logger:i,usersTable:s}=n,f=r.route||"/auth/password-reset",l=new uE;if(!r.enabled)return l;return l.post(`${f}/request`,async(d)=>{if(!e||!s)return{success:!1,message:"Database not configured"};let{email:b}=d.body,{eq:w}=await import("drizzle-orm"),_=(await e.select().from(s).where(w(s.email,b)).limit(1))[0];if(!_)return{success:!0,message:"If email exists, reset link will be sent"};let g=_2(),R=new Date(Date.now()+3600000);if(await t(_.id,g,R),c)try{await c(b,g),i.info("[AUTH] Password reset email sent",{email:b})}catch(M){i.error("[AUTH] Failed to send password reset email",{email:b,error:M})}else i.warn("[AUTH] sendResetEmail not configured - email not sent",{email:b});i.info("[AUTH] Password reset requested",{userId:_.id,email:b});let k=new URL(d.request.url);return i.audit({entityName:"users",entityId:_.id,operation:"PASSWORD_RESET_REQUEST",userId:_.id,summary:`Password reset requested for ${b}`,ipAddress:d.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||d.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:d.request.headers.get("user-agent")||"unknown",path:k.pathname,query:k.search}),{success:!0,message:"If email exists, reset link will be sent"}},{body:kd,detail:{tags:["Authentication"],summary:"Request Password Reset",description:"Request a password reset email"}}),l.post(`${f}/confirm`,async(d)=>{if(!e||!s)return{success:!1,message:"Database not configured"};let{token:b,newPassword:w,confirmPassword:h}=d.body;if(w!==h)return{success:!1,message:"Passwords do not match"};let _=await o(b);if(!_)return{success:!1,message:"Invalid or expired reset token"};if(m2(_.expiresAt))return await a(b),{success:!1,message:"Reset token has expired"};let g=await Ao(w),{eq:R}=await import("drizzle-orm");await e.update(s).set({password:g}).where(R(s.id,_.userId)),await a(b),i.info("[AUTH] Password reset successful",{userId:_.userId});let k=new URL(d.request.url);return i.audit({entityName:"users",entityId:_.userId,operation:"PASSWORD_RESET",userId:_.userId,summary:"Password reset completed successfully",ipAddress:d.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||d.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:d.request.headers.get("user-agent")||"unknown",path:k.pathname,query:k.search}),{success:!0,message:"Password has been reset"}},{body:Ed,detail:{tags:["Authentication"],summary:"Confirm Password Reset",description:"Reset password with token"}}),l}var Md=u(()=>{Xa();Sd();w2();Sd()});import{t as ao}from"elysia";var Dd,bE;var Hd=u(()=>{Dd=ao.Object({newPassword:ao.String({minLength:8}),userId:ao.Optional(ao.String()),token:ao.Optional(ao.String())}),bE=ao.Object({success:ao.Boolean(),message:ao.String()})});import{eq as h2}from"drizzle-orm";import{Elysia as gE}from"elysia";function ms(n,r,t,o){let{db:a,logger:c,usersTable:e}=n,i=r.route||"/auth/password-set",s=new gE;if(!r.enabled)return s;return s.post(i,async(f)=>{if(c.info("[AUTH] Password set request received"),!a||!e)return c.error("[AUTH] Password set failed - database not configured"),{success:!1,message:"Database not configured"};let{newPassword:l,userId:d,token:b}=f.body,w=d;if(b&&t&&o){let k=gt(b),M=await t(k);if(!M)return c.warn("[AUTH] Password set failed - invalid token"),{success:!1,message:"Invalid or expired token"};if(new Date>M.expiresAt)return await o(k),c.warn("[AUTH] Password set failed - expired token",{email:M.email}),{success:!1,message:"Invalid or expired token"};w=M.userId,c.info("[AUTH] Password set - userId resolved from token",{userId:w,email:M.email})}if(!w)return c.warn("[AUTH] Password set failed - no userId in payload or token"),{success:!1,message:"User ID or token required"};let _=(await a.select().from(e).where(h2(e.id,w)).limit(1))[0];if(c.info("[AUTH] Password set - user found",{found:!!_,hasPassword:!!_?.password}),!_)return{success:!1,message:"User not found"};if(_.password)return c.warn("[AUTH] Password set failed - user already has password",{userId:w}),{success:!1,message:"Password already set. Use password change instead."};let g=await Ao(l);c.info("[AUTH] Password set - updating user with verifiedAt",{userId:w});let R=await a.update(e).set({password:g,verifiedAt:new Date,updatedAt:new Date}).where(h2(e.id,w));if(c.info("[AUTH] Password set successful for invited user",{userId:w,updateResult:R}),b&&o){let k=gt(b);await o(k),c.info("[AUTH] Invite token consumed after password set",{userId:w})}return{success:!0,message:"Password set successfully"}},{body:Dd,detail:{tags:["Authentication"],summary:"Set Password",description:"Set password for the first time (for invited users who do not have a password yet)"}}),s}var zd=u(()=>{Yc();Xa();Hd();Hd()});function Ud(n){let r=n.match(/^(\d+)([smhd])$/);if(!r)return 900;let t=r[1],o=r[2];if(!t||!o)return 900;let a=parseInt(t,10);switch(o){case"s":return a;case"m":return a*60;case"h":return a*3600;case"d":return a*86400;default:return 900}}import{t as sa}from"elysia";var _E;var $2=u(()=>{_E=sa.Object({success:sa.Boolean(),message:sa.Optional(sa.String()),data:sa.Optional(sa.Object({accessToken:sa.String()}))})});import{Elysia as mE}from"elysia";function ws(n,r,t,o,a,c,e){let{logger:i,authentication:s}=n,f=r.route||"/auth/refresh",l=new mE;if(!r.enabled)return l;return l.post(f,async(d)=>{let b=s?.refreshToken?.name||"refresh_token",w=s?.accessToken?.name||"access_token",h=d.request.headers.get("x-refresh-token");if(!h){let P=d.request.headers.get("cookie");if(P)h=P.split(";").reduce((K,B)=>{let[L,Y]=B.trim().split("=");if(L&&Y)K[L]=Y;return K},{})[b]||null}if(!h)return d.set.status=401,{success:!1,message:"Refresh token required"};let _=t(h);if(!_.valid||!_.payload)return i.warn("[AUTH] Refresh failed - invalid token"),d.set.status=401,{success:!1,message:"Invalid refresh token"};let g=_.payload.sub,R=o(g),k=a?a(g):null,M=c?.accessToken?.setHeadersEnabled??!0,C=c?.accessToken?.returnJson??!0,N=c?.refreshToken?.setHeadersEnabled??!0,m=c?.refreshToken?.returnJson??!1,A=s?.accessToken?.expiresIn||"15m",H=Math.max(0,Ud(A)-(e??0)),D=s?.refreshToken?.expiresIn||"7d",E=Ud(D),S=new Headers;if(S.set("Content-Type","application/json"),M)S.append("Set-Cookie",`${w}=${R}; Path=/; HttpOnly; SameSite=Strict; Secure; Max-Age=${H}`);if(k&&N)S.append("Set-Cookie",`${b}=${k}; Path=/; HttpOnly; SameSite=Strict; Secure; Max-Age=${E}`);i.info("[AUTH] Token refresh successful",{userId:g,rotatedRefreshToken:!!k});let z={};if(C)z.accessToken=R;if(k&&m)z.refreshToken=k;let U=JSON.stringify({success:!0,data:z});return new Response(U,{status:200,headers:S})},{detail:{tags:["Authentication"],summary:"Refresh Token",description:"Get new access token using refresh token"}}),l}var Bd=u(()=>{$2()});import{t as Vr}from"elysia";var Wd,wE;var Yd=u(()=>{Wd=Vr.Object({email:Vr.String({format:"email"}),password:Vr.String({minLength:8}),confirmPassword:Vr.Optional(Vr.String({minLength:8}))}),wE=Vr.Object({success:Vr.Boolean(),message:Vr.Optional(Vr.String()),data:Vr.Optional(Vr.Object({user:Vr.Object({id:Vr.String(),email:Vr.String()})}))})});import{eq as hE}from"drizzle-orm";import{Elysia as $E}from"elysia";function hs(n,r,t,o,a,c,e,i,s,f){let{db:l,logger:d,usersTable:b}=n,w=r.route||"/auth/register",h={accessTokenName:e?.accessTokenName||"access_token",refreshTokenName:e?.refreshTokenName||"refresh_token",sessionTokenName:e?.sessionTokenName||"session_token",accessTokenMaxAge:e?.accessTokenMaxAge||900,refreshTokenMaxAge:e?.refreshTokenMaxAge||604800,sessionTokenMaxAge:e?.sessionTokenMaxAge||900,secure:e?.secure??!0,httpOnly:e?.httpOnly??!0,sameSite:e?.sameSite||"strict",path:e?.path||"/"},_=new $E;if(!r.enabled)return _;return _.post(w,async(g)=>{if(!l||!b)return g.set.status=500,{success:!1,message:"Database not configured"};let{email:R,password:k,confirmPassword:M}=g.body;if(M&&k!==M)return g.set.status=400,{success:!1,message:"Passwords do not match"};let C=d_(k);if(!C.valid)return g.set.status=400,{success:!1,message:"Password too weak",errors:C.errors};let N=await l.select().from(b).where(hE(b.email,R)).limit(1),m=new URL(g.request.url),A=g.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||g.request.headers.get("x-real-ip")?.trim()||"unknown",H=g.request.headers.get("user-agent")||"unknown";if(N.length>0)return d.warn("[AUTH] Registration failed - email exists",{email:R}),d.audit({entityName:"users",operation:"REGISTER_FAILED",summary:`Registration failed: email already exists (${R})`,ipAddress:A,userAgent:H,path:m.pathname,query:m.search}),g.set.status=409,{success:!1,message:"Email already registered"};let D=await Ao(k),E=r.emailVerification?.enabled&&s?.isAvailable(),S=E?fi():null,z=r.emailVerification?.tokenExpiresIn||"24h",U=E?new Date(Date.now()+Ja(z)):null,P={email:R,password:D};if(E&&S)P.emailVerificationToken=S,P.emailVerificationTokenExpiresAt=U,P.emailVerificationSentAt=new Date,P.emailVerificationAttempts=1;let K=(await l.insert(b).values(P).returning())[0];if(d.info("[AUTH] Registration successful",{userId:K.id,email:R,emailVerificationEnabled:E}),d.audit({entityName:"users",entityId:K.id,operation:"REGISTER",userId:K.id,summary:`New user registered: ${R}`,ipAddress:A,userAgent:H,path:m.pathname,query:m.search}),E&&s&&S){let L=`${(r.emailVerification?.redirectUrl||"http://localhost:3000/login").replace("/login","/verify-email")}?token=${S}`;s.sendVerificationEmail(R,R.split("@")[0]||"User",L,f||"Nucleus").then((q)=>{if(q.success)d.info("[AUTH] Verification email sent",{email:R});else d.error("[AUTH] Failed to send verification email",{email:R,error:q.error})}).catch((q)=>{d.error("[AUTH] Failed to send verification email",{email:R,error:q})});let Y=r.emailVerification?.resendCooldown||"60s",Q=Ja(Y)/1000,V=r.emailVerification?.maxResendAttempts||3;return{success:!0,message:"Registration successful. Please check your email to verify your account.",data:{user:{id:K.id,email:K.email},emailVerificationRequired:!0,verification:{cooldownSeconds:Q,canResendAt:new Date(Date.now()+Q*1000).toISOString(),attemptsRemaining:V-1,maxAttempts:V}}}}if(t)t(R,R.split("@")[0]||"User").catch((B)=>{d.error("[AUTH] Failed to send welcome email",{email:R,error:B})});if(o&&a&&c){let B=g.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||g.request.headers.get("x-real-ip")?.trim()||"unknown",L=g.request.headers.get("user-agent")||"",Y=o(K.id),Q=a(K.id),V=await c({userId:K.id,deviceInfo:{ipAddress:B,userAgent:L},loginMethod:"register"}),q={accessToken:{setHeadersEnabled:i?.accessToken?.setHeadersEnabled??!0,returnJson:i?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:i?.refreshToken?.setHeadersEnabled??!0,returnJson:i?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:i?.sessionToken?.setHeadersEnabled??!0,returnJson:i?.sessionToken?.returnJson??!0}},F=h.secure?"; Secure":"",v=`; Path=${h.path}; HttpOnly; SameSite=${h.sameSite}${F}`,dn=[];if(q.accessToken.setHeadersEnabled)dn.push(`${h.accessTokenName}=${Y}${v}; Max-Age=${h.accessTokenMaxAge}`);if(q.refreshToken.setHeadersEnabled)dn.push(`${h.refreshTokenName}=${Q}${v}; Max-Age=${h.refreshTokenMaxAge}`);if(q.sessionToken.setHeadersEnabled)dn.push(`${h.sessionTokenName}=${V}${v}; Max-Age=${h.sessionTokenMaxAge}`);let tn={user:{id:K.id,email:K.email}};if(q.accessToken.returnJson)tn.accessToken=Y;if(q.refreshToken.returnJson)tn.refreshToken=Q;if(q.sessionToken.returnJson)tn.sessionId=V;let un=JSON.stringify({success:!0,data:tn}),sn=new Headers;sn.set("Content-Type","application/json"),sn.set("x-session-id",V);for(let Yn of dn)sn.append("Set-Cookie",Yn);return new Response(un,{status:200,headers:sn})}return{success:!0,data:{user:{id:K.id,email:K.email}}}},{body:Wd,detail:{tags:["Authentication"],summary:"Register",description:"Register a new user account"}}),_}var Jd=u(()=>{Yd();Xa();Yd()});import{t as Z}from"elysia";var A2,AE,Xd,Ld,rF;var Vd=u(()=>{A2=Z.Object({id:Z.String(),deviceName:Z.Optional(Z.String()),deviceType:Z.Optional(Z.String()),browserName:Z.Optional(Z.String()),browserVersion:Z.Optional(Z.String()),osName:Z.Optional(Z.String()),osVersion:Z.Optional(Z.String()),ipAddress:Z.String(),locationCountry:Z.Optional(Z.String()),locationCity:Z.Optional(Z.String()),lastActivityAt:Z.String(),createdAt:Z.String(),isCurrent:Z.Boolean(),loginMethod:Z.Optional(Z.String()),trustScore:Z.Optional(Z.Number())}),AE=Z.Object({success:Z.Boolean(),data:Z.Optional(Z.Object({sessions:Z.Array(A2),currentSessionId:Z.Optional(Z.String()),totalCount:Z.Number()})),message:Z.Optional(Z.String())}),Xd=Z.Object({reason:Z.Optional(Z.String())}),Ld=Z.Object({excludeCurrent:Z.Optional(Z.Boolean()),reason:Z.Optional(Z.String())}),rF=Z.Object({success:Z.Boolean(),data:Z.Optional(Z.Object({recentActivity:Z.Array(Z.Object({sessionId:Z.String(),action:Z.String(),ipAddress:Z.String(),timestamp:Z.String(),deviceInfo:Z.Optional(Z.String())}))})),message:Z.Optional(Z.String())})});function $s(n){let r=(o,a)=>n[o]??n[a],t=(o,a)=>{let c=n[o]??n[a];if(!c)return;return c instanceof Date?c.toISOString():String(c)};return{id:n.id,deviceName:r("device_name","deviceName"),deviceType:r("device_type","deviceType"),deviceFingerprint:r("device_fingerprint","deviceFingerprint"),browserName:r("browser_name","browserName"),browserVersion:r("browser_version","browserVersion"),osName:r("os_name","osName"),osVersion:r("os_version","osVersion"),ipAddress:r("ip_address","ipAddress"),locationCountry:r("location_country","locationCountry"),locationCity:r("location_city","locationCity"),lastActivityAt:t("last_activity_at","lastActivityAt"),createdAt:t("created_at","createdAt"),isCurrent:r("is_current","isCurrent"),loginMethod:r("login_method","loginMethod"),trustScore:r("trust_score","trustScore")}}var R2=()=>{};import{and as Xo,desc as k2,eq as pn,isNull as E2}from"drizzle-orm";import{Elysia as RE}from"elysia";function As(n,r,t){let{db:o,logger:a}=n,c=r.route||"/auth/sessions",e=new RE;if(!r.enabled||!t)return e;let i=t,s=(f)=>{let l=f.replace(/([A-Z])/g,"_$1").toLowerCase();return i[f]||i[l]};return e.get(c,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let l=f.request.headers.get("x-user-id");if(!l)return{success:!1,message:"Authentication required"};let d=f.request.headers.get("x-session-id"),b=await o.select().from(t).where(Xo(pn(s("userId"),l),pn(s("isActive"),!0),E2(s("revokedAt")))).orderBy(k2(s("lastActivityAt"))),w=b.filter((_)=>{let g=_,R=(g.deviceFingerprint||"").toLowerCase(),k=g.ipAddress||"";return!((!R||R==="--"||R==="--unknown"||R.includes("bot/crawler")||R.includes("headless")||R.includes("unknown-unknown"))&&(k==="127.0.0.1"||k==="::1"||k==="localhost"||!k))}),h=w.map((_)=>{let g=_,R=$s(g);return R.isCurrent=g.id===d,R});return a.info("[AUTH] Sessions list retrieved",{userId:l,totalInDb:b.length,filteredCount:w.length,hiddenBotSessions:b.length-w.length}),{success:!0,data:{sessions:h,currentSessionId:d,totalCount:w.length}}},{detail:{tags:["Authentication"],summary:"List active sessions",description:"Get all active sessions for the current user"}}),e.get(`${c}/current`,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let l=f.request.headers.get("x-user-id"),d=f.request.headers.get("x-session-id");if(!l||!d)return{success:!1,message:"Authentication required"};let b=await o.select().from(t).where(pn(s("id"),d)).limit(1);if(b.length===0)return{success:!1,message:"Session not found"};let w=b[0],h=$s(w);return h.isCurrent=!0,{success:!0,data:h}},{detail:{tags:["Authentication"],summary:"Get current session",description:"Get details of the current session"}}),e.delete(`${c}/:sessionId`,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let l=f.request.headers.get("x-user-id");if(!l)return{success:!1,message:"Authentication required"};let{sessionId:d}=f.params,b=f.body,w=f.request.headers.get("x-session-id");if((await o.select().from(t).where(Xo(pn(s("id"),d),pn(s("userId"),l))).limit(1)).length===0)return{success:!1,message:"Session not found"};let _=d===w;await o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:_?"user_logout":b.reason||"user_revoked"}).where(pn(s("id"),d)),a.info("[AUTH] Session revoked",{userId:l,sessionId:d,isCurrentSession:_,reason:b.reason||"user_revoked"});let g=new URL(f.request.url);return a.audit({entityName:"user_sessions",entityId:d,operation:_?"LOGOUT":"SESSION_REVOKE",userId:l||void 0,summary:_?"User logged out via session revoke":`Session revoked (${d.substring(0,8)}...)`,ipAddress:f.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||f.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:f.request.headers.get("user-agent")||"unknown",path:g.pathname,query:g.search}),{success:!0,message:_?"Logged out successfully":"Session revoked successfully"}},{body:Xd,detail:{tags:["Authentication"],summary:"Revoke session",description:"Revoke a specific session by ID"}}),e.delete(`${c}/all`,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let l=f.request.headers.get("x-user-id");if(!l)return{success:!1,message:"Authentication required"};let d=f.body,b=f.request.headers.get("x-session-id"),w=o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:d.reason||"user_revoked"}).where(Xo(pn(s("userId"),l),pn(s("isActive"),!0)));if(d.excludeCurrent&&b){let{ne:_}=await import("drizzle-orm");w=o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:d.reason||"user_revoked"}).where(Xo(pn(s("userId"),l),pn(s("isActive"),!0),_(s("id"),b)))}await w,a.info("[AUTH] All sessions revoked",{userId:l,excludeCurrent:d.excludeCurrent,reason:d.reason||"user_revoked"});let h=new URL(f.request.url);return a.audit({entityName:"user_sessions",operation:"SESSION_REVOKE_ALL",userId:l||void 0,summary:d.excludeCurrent?"All other sessions revoked":"All sessions revoked",ipAddress:f.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||f.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:f.request.headers.get("user-agent")||"unknown",path:h.pathname,query:h.search}),{success:!0,message:d.excludeCurrent?"All other sessions revoked successfully":"All sessions revoked successfully"}},{body:Ld,detail:{tags:["Authentication"],summary:"Revoke all sessions",description:"Revoke all sessions for the current user (optionally exclude current)"}}),e.get(`${c}/stats`,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let l=f.request.headers.get("x-user-id");if(!l)return{success:!1,message:"Authentication required"};let{count:d,countDistinct:b}=await import("drizzle-orm"),w=await o.select({count:d()}).from(t).where(Xo(pn(s("userId"),l),pn(s("isActive"),!0),E2(s("revokedAt")))),h=await o.select({count:b(s("deviceFingerprint"))}).from(t).where(Xo(pn(s("userId"),l),pn(s("isActive"),!0))),_=await o.select({count:b(s("ipAddress"))}).from(t).where(Xo(pn(s("userId"),l),pn(s("isActive"),!0)));return{success:!0,data:{activeSessions:w[0]?.count||0,uniqueDevices:h[0]?.count||0,uniqueIpAddresses:_[0]?.count||0}}},{detail:{tags:["Authentication"],summary:"Session statistics",description:"Get session statistics for the current user"}}),e.post(`${c}/approve`,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let{token:l}=f.body;if(!l)return{success:!1,message:"Token is required"};let d=await o.select().from(t).where(pn(s("approvalToken"),l)).limit(1);if(d.length===0)return{success:!1,message:"Invalid or expired approval token"};let b=d[0];if(b.approvalStatus!=="pending")return{success:!1,message:"Session already processed"};return await o.update(t).set({approvalStatus:"approved",isActive:!0,approvalRespondedAt:new Date,approvalToken:null}).where(pn(s("id"),b.id)),a.info("[AUTH] Device approved",{sessionId:b.id,userId:b.userId}),{success:!0,message:"Device approved successfully"}},{detail:{tags:["Authentication"],summary:"Approve pending device",description:"Approve a pending device login request"}}),e.post(`${c}/reject`,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let{token:l}=f.body;if(!l)return{success:!1,message:"Token is required"};let d=await o.select().from(t).where(pn(s("approvalToken"),l)).limit(1);if(d.length===0)return{success:!1,message:"Invalid or expired approval token"};let b=d[0];if(b.approvalStatus!=="pending")return{success:!1,message:"Session already processed"};return await o.update(t).set({approvalStatus:"rejected",isActive:!1,revokedAt:new Date,revokedReason:"user_rejected",approvalRespondedAt:new Date,approvalToken:null}).where(pn(s("id"),b.id)),a.info("[AUTH] Device rejected",{sessionId:b.id,userId:b.userId}),{success:!0,message:"Device rejected and blocked"}},{detail:{tags:["Authentication"],summary:"Reject pending device",description:"Reject a pending device login request"}}),e.get(`${c}/pending`,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let l=f.request.headers.get("x-user-id");if(!l)return{success:!1,message:"Authentication required"};let d=await o.select().from(t).where(Xo(pn(s("userId"),l),pn(s("approvalStatus"),"pending"))).orderBy(k2(s("createdAt")));return{success:!0,data:{sessions:d.map((w)=>{let h=w;return{...$s(h),approvalStatus:h.approval_status||h.approvalStatus,approvalToken:h.approval_token||h.approvalToken,approvalRequestedAt:h.approval_requested_at?.toISOString()||h.approvalRequestedAt?.toISOString()}}),totalCount:d.length}}},{detail:{tags:["Authentication"],summary:"List pending devices",description:"Get all pending device approval requests for the current user"}}),e}var Cd=u(()=>{Vd();R2();Vd()});var M2={};co(M2,{createSessionsRoute:()=>As,createRegisterRoute:()=>hs,createRefreshRoute:()=>ws,createPasswordSetRoute:()=>ms,createPasswordResetRoute:()=>_s,createPasswordChangeRoute:()=>gs,createMeRoute:()=>us,createMagicLinkRoute:()=>ds,createLogoutRoute:()=>Ai,createLoginRoute:()=>hi,createInviteRoute:()=>gi,createImpersonateRoute:()=>si,createEmailVerificationRoutes:()=>ui,createChangeUserIdRoute:()=>ii,createAuthRoutes:()=>S2});function S2(n,r){let{authConfig:t,features:o,helpers:a}=r;if(r.oauthAccountsTable)t.oauthAccountsTable=r.oauthAccountsTable;if(r.schemaTables)t.schemaTables=r.schemaTables;let c=t.authentication?.cookieMaxAgeBufferSeconds??0,e={accessTokenName:t.authentication?.accessToken?.name||"access_token",refreshTokenName:t.authentication?.refreshToken?.name||"refresh_token",sessionTokenName:t.authentication?.sessionToken?.name||"session_token",accessTokenMaxAge:Math.max(0,st(t.authentication?.accessToken?.expiresIn||"15m")-c),refreshTokenMaxAge:st(t.authentication?.refreshToken?.expiresIn||"7d"),sessionTokenMaxAge:st(t.authentication?.sessionToken?.expiresIn||"30d")};if(t.logger.info("[AUTH] Cookie config created",{accessTokenMaxAge:e.accessTokenMaxAge,refreshTokenMaxAge:e.refreshTokenMaxAge,sessionTokenMaxAge:e.sessionTokenMaxAge,accessTokenExpiresIn:t.authentication?.accessToken?.expiresIn,sessionTokenExpiresIn:t.authentication?.sessionToken?.expiresIn}),o.login?.enabled){let s=hi(t,o.login,a.signAccessToken,a.signRefreshToken,a.createSession,a.saveSessionToDb,e,r.tokenResponseConfig);n.use(s)}if(o.register?.enabled){let s=hs(t,o.register,a.sendWelcomeEmail,a.signAccessToken,a.signRefreshToken,a.createSession,e,r.tokenResponseConfig,r.emailService,r.appName);if(n.use(s),o.register.emailVerification?.enabled){let f=ui({authConfig:t,registerConfig:o.register,emailService:r.emailService,appName:r.appName});n.use(f)}}if(o.logout?.enabled){let s=Ai(t,o.logout,a.destroySession,a.revokeSessionInDb);n.use(s)}if(o.refresh?.enabled){let s=ws(t,o.refresh,a.verifyRefreshToken,a.signAccessToken,a.signRefreshToken,r.tokenResponseConfig,c);n.use(s)}if(o.passwordReset?.enabled&&a.storeResetToken&&a.getResetToken&&a.deleteResetToken){let s=_s(t,o.passwordReset,a.storeResetToken,a.getResetToken,a.deleteResetToken,a.sendResetEmail);n.use(s)}if(o.passwordChange?.enabled){let s=gs(t,o.passwordChange);n.use(s)}if(o.passwordSet?.enabled){let s=ms(t,o.passwordSet,a.getMagicToken,a.deleteMagicToken);n.use(s)}if(o.sessions?.enabled&&r.sessionsTable){let s=As(t,o.sessions,r.sessionsTable);n.use(s)}if(o.magicLink?.enabled&&r.emailService?.isAvailable()&&a.storeMagicToken&&a.getMagicToken&&a.deleteMagicToken){let s=ds(t,o.magicLink,r.emailService,a.signAccessToken,a.signRefreshToken,a.createSession,a.storeMagicToken,a.getMagicToken,a.deleteMagicToken,r.appName);n.use(s)}if(o.me?.enabled){let s=us(t,o.me,r.schemaTables||{},r.schemaRelations||{},r.databaseUrl);n.use(s)}if(o.invite?.enabled&&r.emailService?.isAvailable()&&a.storeMagicToken){let s=gi(t,o.invite,r.emailService,a.storeMagicToken,r.appName,a.getMagicToken);n.use(s)}if(o.captcha?.enabled&&r.captchaService){let s=i_({captchaService:r.captchaService,logger:t.logger,basePath:o.captcha.route||"/auth/captcha"});n.use(s)}if(o.oauth?.enabled&&o.oauth.providers){let s=new Qe(o.oauth),f=d2(t,s,a.signAccessToken,a.signRefreshToken,a.createSession,a.saveSessionToDb,e,r.tokenResponseConfig,r.emailService,a.storeMagicToken,r.appName);n.use(f)}let i=f_(t,{route:"/auth/check",isPublic:!1,enabled:!0});if(n.use(i),r.admin?.impersonate?.enabled!==!1){let s=si(t,a.signAccessToken,a.signRefreshToken,a.createSession,a.saveSessionToDb);n.use(s)}if(r.admin?.changeUserId?.enabled!==!1){let s=ii(t,r.databaseUrl,r.schemaTables);n.use(s)}return n}var Qd=u(()=>{Cf();Ie();zl();Bl();s_();l_();Wl();Yl();Vl();Cl();wd();hd();u2();Rd();Md();zd();Bd();Jd();Cd();Wl();Yl();Vl();Cl();wd();hd();Rd();Md();zd();Bd();Jd();Cd();Bl();zl()});import{batch as Ss,createStore as B2}from"h-state";import{useEffectEvent as W2}from"react";function Y2(n){let r={};for(let t of Object.keys(n))r[t]={isPending:!1,data:null,error:null,code:null};return r}function J2(n,r){let{useStore:t}=B2(Y2(n),{_callEndpoint:(o)=>async(a,c)=>{if(!o[a])return;Ss(()=>{o[a].isPending=!0,o[a].error=null});try{let i=await r(a,c.payload);if(Ss(()=>{if(o[a].isPending=!1,o[a].code=i.code??null,i.isSuccess&&i.data!==void 0)o[a].data=i.data,o[a].error=null;else o[a].error=i.errors??null}),i.isSuccess)c.onAfterHandle?.(i.data??i);else c.onErrorHandle?.(i.errors??{message:"Request failed"},i.code)}catch(i){Ss(()=>{o[a].isPending=!1,o[a].error={message:i instanceof Error?i.message:"Unknown error"}}),c.onErrorHandle?.({message:i instanceof Error?i.message:"Unknown error"},null)}}});return function(){let a=t(),c=W2((i,s)=>{a._callEndpoint(i,s)}),e={};for(let i of Object.keys(n)){let s=(f)=>{c(i,f)};e[i]={state:a[i],start:s}}return e}}var Nd={$schema:"../schemas/nucleus.tables.schema.json",tables:[{table_name:"users",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"email",type:"varchar",length:255},{name:"password",type:"varchar",length:255},{name:"verified_at",type:"timestamp"},{name:"email_verification_token",type:"varchar",length:255},{name:"email_verification_token_expires_at",type:"timestamp"},{name:"email_verification_sent_at",type:"timestamp"},{name:"email_verification_attempts",type:"integer",default:0},{name:"last_login_at",type:"timestamp"},{name:"login_count",type:"integer",default:0},{name:"is_locked",type:"boolean",default:!1},{name:"locked_until",type:"timestamp"},{name:"failed_login_attempts",type:"integer",default:0},{name:"is_god",type:"boolean",default:!1}],indexes:[{columns:["email"],unique:!0},{columns:["email","is_active"]},{columns:["last_login_at"]},{columns:["is_locked","locked_until"]}]},{table_name:"profiles",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"first_name",type:"varchar",length:100,notNull:!0},{name:"last_name",type:"varchar",length:100,notNull:!0}],indexes:[{columns:["user_id"],unique:!0},{columns:["first_name","last_name"]}]},{table_name:"roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500}],indexes:[{columns:["name"],unique:!0}]},{table_name:"claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"action",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500},{name:"path",type:"varchar",length:200,notNull:!0},{name:"method",type:"varchar",length:10,notNull:!0}],indexes:[{columns:["action"],unique:!0},{columns:["path","method"]}]},{table_name:"user_roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}}],indexes:[{columns:["user_id"]},{columns:["role_id"]}],constraints:{unique:[{name:"unique_user_role",columns:["user_id","role_id"]}]}},{table_name:"role_claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}},{name:"claim_id",type:"uuid",notNull:!0,references:{table:"claims",column:"id",onDelete:"cascade"}},{name:"scope",type:"text"}],indexes:[{columns:["role_id"]},{columns:["claim_id"]},{columns:["role_id","claim_id","scope"]}]},{table_name:"files",feature_set:["storage"],add_base_columns:!0,is_form_data:!0,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:255,notNull:!0},{name:"original_name",type:"varchar",length:255,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["image","document","video","audio","profile_picture"]},{name:"path",type:"varchar",length:500,notNull:!0},{name:"size",type:"bigint",mode:"number",notNull:!0},{name:"mime_type",type:"varchar",length:100,notNull:!0},{name:"extension",type:"varchar",length:10,notNull:!0},{name:"uploaded_by",type:"uuid",references:{table:"users",column:"id"}}],indexes:[{columns:["type"]},{columns:["uploaded_by"]},{columns:["size"]}]},{table_name:"addresses",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"street",type:"varchar",length:255},{name:"city",type:"varchar",length:100},{name:"state",type:"varchar",length:50},{name:"zip",type:"varchar",length:20},{name:"country",type:"varchar",length:50,default:"US"},{name:"latitude",type:"decimal",precision:10,scale:8},{name:"longitude",type:"decimal",precision:11,scale:8},{name:"neighborhood",type:"varchar",length:100},{name:"apartment",type:"varchar",length:50},{name:"province",type:"varchar",length:100},{name:"district",type:"varchar",length:100},{name:"type",type:"varchar",length:50}],indexes:[{columns:["city","state"]},{columns:["latitude","longitude"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"phones",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["mobile","office","fax"]},{name:"number",type:"varchar",length:20,notNull:!0},{name:"country_code",type:"varchar",length:10,notNull:!0,default:"+1"},{name:"extension",type:"varchar",length:10}],indexes:[{columns:["number"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"notifications",feature_set:["authentication","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"user_id",type:"uuid",notNull:!0},{name:"title",type:"varchar",length:255,notNull:!0},{name:"body",type:"varchar",length:1000},{name:"entity_name",type:"varchar",length:100},{name:"entity_id",type:"uuid"},{name:"is_seen",type:"boolean",notNull:!0,default:!1},{name:"seen_at",type:"timestamptz"}],indexes:[{columns:["user_id","created_at"]},{columns:["is_seen"]}]},{table_name:"tenants",feature_set:["multi-tenant"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["main"],excluded_schemas:[],excluded_methods:[],columns:[{name:"subdomain",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_id",type:"uuid",notNull:!0},{name:"schema_name",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_name",type:"varchar",length:255},{name:"god_admin_email",type:"varchar",length:255}],indexes:[]},{table_name:"verifications",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"requirement_id",type:"uuid",notNull:!0,references:{table:"verificationRequirements",column:"id"}},{name:"verifier_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"signature_id",type:"uuid",references:{table:"files",column:"id"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"entity_id",type:"uuid",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"decision",type:"varchar",length:50,notNull:!0,default:"pending",enumValues:["approved","rejected","pending"]},{name:"reason",type:"text"},{name:"diff",type:"jsonb"}],indexes:[{columns:["requirement_id"]},{columns:["verifier_id"]},{columns:["entity_name","entity_id"]},{columns:["entity_name","entity_id","step_order"]},{columns:["decision"]}]},{table_name:"verificationRequirements",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"entity_id",type:"uuid"},{name:"entity_name",type:"varchar",length:100},{name:"verifier_type",type:"varchar",length:30,enumValues:["user","role","entity_creator"]},{name:"verifier_id",type:"uuid"},{name:"verifier_role",type:"varchar",length:50},{name:"is_signature_mandatory",type:"boolean",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"is_all_required",type:"boolean",notNull:!0,default:!1},{name:"connected_from_step_order",type:"integer"},{name:"position_x",type:"numeric"},{name:"position_y",type:"numeric"}],indexes:[{columns:["entity_id"]}]},{table_name:"verificationFlows",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"name",type:"varchar",length:255,notNull:!0},{name:"description",type:"text"},{name:"trigger_on",type:"varchar",length:50,notNull:!0,default:"update",enumValues:["create","update","delete","manual"]},{name:"trigger_fields",type:"jsonb"},{name:"is_draft",type:"boolean",notNull:!0,default:!0},{name:"published_at",type:"timestamptz"},{name:"viewport",type:"jsonb"}],indexes:[{columns:["entity_name"]},{columns:["entity_name","trigger_on"]},{columns:["is_draft"]}]},{table_name:"verificationSteps",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"node_id",type:"varchar",length:100,notNull:!0},{name:"node_type",type:"varchar",length:50,notNull:!0,default:"step",enumValues:["start","step","condition","notification","end"]},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"name",type:"varchar",length:255},{name:"description",type:"text"},{name:"position_x",type:"numeric",notNull:!0,default:0},{name:"position_y",type:"numeric",notNull:!0,default:0},{name:"width",type:"numeric"},{name:"height",type:"numeric"},{name:"style",type:"jsonb"},{name:"data",type:"jsonb"}],indexes:[{columns:["flow_id"]},{columns:["entity_name"]},{columns:["flow_id","node_id"],unique:!0},{columns:["entity_name","step_order"]}]},{table_name:"verificationEdges",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"edge_id",type:"varchar",length:100,notNull:!0},{name:"source_node_id",type:"varchar",length:100,notNull:!0},{name:"target_node_id",type:"varchar",length:100,notNull:!0},{name:"source_handle",type:"varchar",length:50},{name:"target_handle",type:"varchar",length:50},{name:"edge_type",type:"varchar",length:50,default:"default",enumValues:["default","conditional","success","failure"]},{name:"label",type:"varchar",length:255},{name:"condition",type:"jsonb"},{name:"style",type:"jsonb"},{name:"animated",type:"boolean",default:!1}],indexes:[{columns:["flow_id"]},{columns:["flow_id","edge_id"],unique:!0},{columns:["source_node_id"]},{columns:["target_node_id"]}]},{table_name:"verificationNotificationRules",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"step_node_id",type:"varchar",length:100},{name:"trigger",type:"varchar",length:50,notNull:!0,enumValues:["on_flow_started","on_step_reached","on_approved","on_rejected","on_flow_completed"]},{name:"channel",type:"varchar",length:20,notNull:!0,default:"portal",enumValues:["portal","email","both"]},{name:"title_template",type:"varchar",length:255},{name:"body_template",type:"text"},{name:"starts_at",type:"timestamptz"},{name:"expires_at",type:"timestamptz"}],indexes:[{columns:["flow_id"]},{columns:["flow_id","step_node_id"]},{columns:["trigger"]}]},{table_name:"verificationNotificationRecipients",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"rule_id",type:"uuid",notNull:!0},{name:"recipient_type",type:"varchar",length:20,notNull:!0,enumValues:["user","role","all_verifiers","step_verifier"]},{name:"recipient_user_id",type:"uuid"},{name:"recipient_role_id",type:"uuid"},{name:"channel",type:"varchar",length:20,notNull:!0,enumValues:["portal"]}],indexes:[{columns:["rule_id"]},{columns:["recipient_type"]},{columns:["channel"]}]},{table_name:"user_sessions",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"refresh_token_hash",type:"varchar",length:255},{name:"device_fingerprint",type:"varchar",length:255},{name:"device_name",type:"varchar",length:100},{name:"device_type",type:"varchar",length:50,enumValues:["desktop","mobile","tablet","unknown"]},{name:"browser_name",type:"varchar",length:50},{name:"browser_version",type:"varchar",length:20},{name:"os_name",type:"varchar",length:50},{name:"os_version",type:"varchar",length:20},{name:"ip_address",type:"varchar",length:45,notNull:!0},{name:"location_country",type:"varchar",length:100},{name:"location_city",type:"varchar",length:100},{name:"location_coordinates",type:"varchar",length:50},{name:"last_activity_at",type:"timestamptz",notNull:!0,defaultRaw:"now()"},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"revoked_at",type:"timestamptz"},{name:"revoked_reason",type:"varchar",length:100,enumValues:["user_logout","user_revoked","admin_revoked","security_concern","password_changed","expired","replaced"]},{name:"is_current",type:"boolean",notNull:!0,default:!1},{name:"login_method",type:"varchar",length:50,enumValues:["password","oauth_google","oauth_github","oauth_microsoft","magic_link","sso","api_key"]},{name:"remember_me",type:"boolean",notNull:!0,default:!1},{name:"trust_score",type:"integer",default:100},{name:"approval_status",type:"varchar",length:20,default:"approved",enumValues:["approved","pending","rejected"]},{name:"approval_token",type:"varchar",length:64},{name:"approval_requested_at",type:"timestamptz"},{name:"approval_responded_at",type:"timestamptz"}],indexes:[{columns:["user_id"]},{columns:["token_hash"],unique:!0},{columns:["refresh_token_hash"]},{columns:["user_id","is_active"]},{columns:["expires_at"]},{columns:["device_fingerprint"]},{columns:["ip_address"]},{columns:["last_activity_at"]},{columns:["approval_status"]},{columns:["approval_token"]}]},{table_name:"password_reset_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["expires_at"]}]},{table_name:"magic_link_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"email",type:"varchar",length:255,notNull:!0},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["email"]},{columns:["expires_at"]}]},{table_name:"audit_logs",feature_set:["audit"],add_base_columns:!1,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","DELETE","PATCH","TOGGLE","VERIFICATION"],columns:[{name:"id",type:"uuid",primaryKey:!0,defaultRaw:"gen_random_uuid()"},{name:"entity_id",type:"uuid"},{name:"entity_name",type:"text",notNull:!0},{name:"operation_type",type:"text",notNull:!0},{name:"user_id",type:"uuid"},{name:"ip_address",type:"text"},{name:"user_agent",type:"text"},{name:"summary",type:"text"},{name:"old_values",type:"jsonb"},{name:"new_values",type:"jsonb"},{name:"created_at",type:"timestamp",notNull:!0,defaultRaw:"now()"},{name:"path",type:"text"},{name:"query",type:"text"}],indexes:[{columns:["entity_id"]},{columns:["entity_name"]},{columns:["user_id"]},{columns:["created_at"]}]},{table_name:"oauth_accounts",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!1,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"provider",type:"varchar",length:50,notNull:!0,enumValues:["google","github","microsoft","discord","facebook","twitter","apple","custom"]},{name:"provider_account_id",type:"varchar",length:255,notNull:!0},{name:"provider_email",type:"varchar",length:255},{name:"provider_name",type:"varchar",length:255},{name:"provider_avatar_url",type:"text"},{name:"access_token",type:"text"},{name:"refresh_token",type:"text"},{name:"token_expires_at",type:"timestamp"},{name:"scope",type:"text"},{name:"raw_profile",type:"jsonb"},{name:"is_primary",type:"boolean",notNull:!0,default:!1},{name:"last_used_at",type:"timestamp"}],indexes:[{columns:["user_id"]},{columns:["provider","provider_account_id"],unique:!0},{columns:["provider_email"]},{columns:["user_id","provider"]}],constraints:{unique:[{name:"unique_provider_account",columns:["provider","provider_account_id"]}]}}]};var Ms={login:{key:"LOGIN",method:"POST",defaultRoute:"/auth/login",defaultIsPublic:!0,_payload:void 0,_success:void 0,_error:void 0},register:{key:"REGISTER",method:"POST",defaultRoute:"/auth/register",defaultIsPublic:!0,_payload:void 0,_success:void 0,_error:void 0},logout:{key:"LOGOUT",method:"POST",defaultRoute:"/auth/logout",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},refresh:{key:"REFRESH",method:"POST",defaultRoute:"/auth/refresh",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},me:{key:"ME",method:"GET",defaultRoute:"/auth/me",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordChange:{key:"PASSWORD_CHANGE",method:"POST",defaultRoute:"/auth/password-change",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordSet:{key:"PASSWORD_SET",method:"POST",defaultRoute:"/auth/password-set",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordReset:{key:"PASSWORD_RESET_REQUEST",method:"POST",defaultRoute:"/auth/password-reset",defaultIsPublic:!0,subEndpoints:[{key:"PASSWORD_RESET_REQUEST",method:"POST",suffix:"/request",_payload:void 0,_success:void 0,_error:void 0},{key:"PASSWORD_RESET_CONFIRM",method:"POST",suffix:"/confirm",_payload:void 0,_success:void 0,_error:void 0}]},sessions:{key:"SESSIONS",method:"GET",defaultRoute:"/auth/sessions",defaultIsPublic:!1,subEndpoints:[{key:"SESSIONS",method:"GET",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_CURRENT",method:"GET",suffix:"/current",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_STATS",method:"GET",suffix:"/stats",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_PENDING",method:"GET",suffix:"/pending",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REVOKE",method:"DELETE",suffix:"/:sessionId",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REVOKE_ALL",method:"DELETE",suffix:"/all",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_APPROVE",method:"POST",suffix:"/approve",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REJECT",method:"POST",suffix:"/reject",_payload:void 0,_success:void 0,_error:void 0}]},magicLink:{key:"MAGIC_LINK",method:"POST",defaultRoute:"/auth/magic-link",defaultIsPublic:!0,subEndpoints:[{key:"MAGIC_LINK",method:"POST",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"MAGIC_LINK_VERIFY",method:"GET",suffix:"/verify",routeKey:"verifyRoute",_payload:void 0,_success:void 0,_error:void 0}]},invite:{key:"INVITE",method:"POST",defaultRoute:"/auth/invite",defaultIsPublic:!1,subEndpoints:[{key:"INVITE",method:"POST",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"INVITE_VERIFY",method:"POST",suffix:"/verify",_payload:void 0,_success:void 0,_error:void 0}]},emailVerification:{key:"VERIFY_EMAIL",method:"GET",defaultRoute:"/verify-email",defaultIsPublic:!0,subEndpoints:[{key:"VERIFY_EMAIL",method:"GET",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"RESEND_VERIFICATION",method:"POST",suffix:"",routeKey:"resendRoute",defaultRoute:"/resend-verification",_payload:void 0,_success:void 0,_error:void 0}]},captcha:{key:"CAPTCHA",method:"GET",defaultRoute:"/auth/captcha",defaultIsPublic:!0,subEndpoints:[{key:"CAPTCHA_GENERATE",method:"GET",suffix:"/generate",_payload:void 0,_success:void 0,_error:void 0},{key:"CAPTCHA_VALIDATE",method:"POST",suffix:"/validate",_payload:void 0,_success:void 0,_error:void 0}]},oauth:{key:"OAUTH_PROVIDERS",method:"GET",defaultRoute:"/auth/oauth/providers",defaultIsPublic:!0,subEndpoints:[{key:"OAUTH_PROVIDERS",method:"GET",suffix:"/providers",_payload:void 0,_success:void 0,_error:void 0},{key:"OAUTH_REDIRECT",method:"GET",suffix:"/:provider",_payload:void 0,_success:void 0,_error:void 0},{key:"OAUTH_ACCOUNTS",method:"GET",suffix:"/accounts",_payload:void 0,_success:void 0,_error:void 0},{key:"OAUTH_UNLINK",method:"DELETE",suffix:"/unlink/:provider",_payload:void 0,_success:void 0,_error:void 0}]}},xd={healthCheck:{key:"MONITORING_HEALTH_CHECK",method:"GET",suffix:"/health",_payload:void 0,_success:void 0,_error:void 0},getSettings:{key:"MONITORING_GET_SETTINGS",method:"GET",suffix:"/settings",_payload:void 0,_success:void 0,_error:void 0},changeSettings:{key:"MONITORING_CHANGE_SETTINGS",method:"PATCH",suffix:"/settings",_payload:void 0,_success:void 0,_error:void 0},getLogs:{key:"MONITORING_GET_LOGS",method:"GET",suffix:"/logs",_payload:void 0,_success:void 0,_error:void 0}};var L2=["profiles","addresses","phones","files","users","roles","claims","user_roles","role_claims","audit_logs"],V2=Nd.tables.filter((n)=>L2.includes(n.table_name));function la(n){return n.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/[\s-]+/g,"_").toUpperCase()}function C2(n){return n.replace(/_([a-z])/g,(r,t)=>t.toUpperCase())}function Ds(n){if(n.endsWith("ies"))return`${n.slice(0,-3)}y`;if(n.endsWith("ses"))return`${n.slice(0,-2)}`;if(n.endsWith("s"))return n.slice(0,-1);return n}function Dt(n,r){let t=la(n),o=la(Ds(n));switch(r){case"GET":return`GET_${t}`;case"POST":return`ADD_${o}`;case"PUT":return`UPDATE_${o}`;case"PATCH":return`PATCH_${o}`;case"DELETE":return`DELETE_${o}`}}function fa(n,r){let t=la(n);switch(r){case"POST":return`BULK_ADD_${t}`;case"PUT":return`BULK_UPDATE_${t}`;case"DELETE":return`BULK_DELETE_${t}`}}function eo(n,r){if(!n.excluded_methods)return!1;let t={GET:"GET",POST:"POST",PUT:"PUT",PATCH:"PATCH",DELETE:"DELETE"};return n.excluded_methods.includes(t[r])}function qd(n){let r={};for(let t of n.entities){let o=t.table_name,a=`/${o}`;if(!eo(t,"GET")){r[Dt(o,"GET")]={method:"GET",path:a,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0};let c=la(Ds(o));r[`GET_${c}_BY_ID`]={method:"GET",path:`${a}/:id`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0},r[`GET_${la(o)}_DISTINCT`]={method:"GET",path:`${a}/distinct/:field`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0}}if(!eo(t,"POST"))r[Dt(o,"POST")]={method:"POST",path:a,isPublic:t.is_public?.POST??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!eo(t,"PUT"))r[Dt(o,"PUT")]={method:"PUT",path:`${a}/:id`,isPublic:t.is_public?.PUT??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!eo(t,"PATCH"))r[Dt(o,"PATCH")]={method:"PATCH",path:`${a}/:id`,isPublic:t.is_public?.PATCH??!1,_payload:void 0,_success:void 0,_error:void 0};if(!eo(t,"DELETE"))r[Dt(o,"DELETE")]={method:"DELETE",path:`${a}/:id`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0};if(t.bulk_endpoints_enabled){if(!eo(t,"POST"))r[fa(o,"POST")]={method:"POST",path:`${a}/bulk`,isPublic:t.is_public?.POST??!1,_payload:void 0,_success:void 0,_error:void 0};if(!eo(t,"PUT"))r[fa(o,"PUT")]={method:"PUT",path:`${a}/bulk`,isPublic:t.is_public?.PUT??!1,_payload:void 0,_success:void 0,_error:void 0};if(!eo(t,"DELETE"))r[fa(o,"DELETE")]={method:"DELETE",path:`${a}/bulk`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0}}}return r}function Fd(n){let r={},t=n.authentication;if(!t?.enabled)return r;for(let[o,a]of Object.entries(Ms)){let c=t[o];if(!c?.enabled)continue;let e=c.route||a.defaultRoute,i=c.isPublic??a.defaultIsPublic;if("subEndpoints"in a&&a.subEndpoints)for(let s of a.subEndpoints){let f="routeKey"in s&&s.routeKey&&c[s.routeKey]?String(c[s.routeKey]):("defaultRoute"in s)&&s.defaultRoute?String(s.defaultRoute):`${e}${s.suffix}`;r[s.key]={method:s.method,path:f,isPublic:s.key==="MAGIC_LINK_VERIFY"?!0:i,_payload:s._payload,_success:s._success,_error:s._error}}else if("_payload"in a)r[a.key]={method:a.method,path:e,isPublic:i,_payload:a._payload,_success:a._success,_error:a._error}}return r}function jd(){let n={};for(let r of V2){let t=r.table_name,a=`/${C2(t)}`,c=t==="files";n[Dt(t,"GET")]={method:"GET",path:a,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0};let e=la(Ds(t));if(n[`GET_${e}_BY_ID`]={method:"GET",path:`${a}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[Dt(t,"POST")]={method:"POST",path:a,isPublic:!1,isFormData:c,_payload:void 0,_success:void 0,_error:void 0},n[Dt(t,"PUT")]={method:"PUT",path:`${a}/:id`,isPublic:!1,isFormData:c,_payload:void 0,_success:void 0,_error:void 0},n[Dt(t,"PATCH")]={method:"PATCH",path:`${a}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[Dt(t,"DELETE")]={method:"DELETE",path:`${a}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},r.bulk_endpoints_enabled)n[fa(t,"POST")]={method:"POST",path:`${a}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[fa(t,"PUT")]={method:"PUT",path:`${a}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[fa(t,"DELETE")]={method:"DELETE",path:`${a}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0}}return n}function pd(n){let r={},t=n.liveMonitoring;if(!t?.enabled)return r;let o=t.basePath||"/monitoring";for(let a of Object.values(xd))r[a.key]={method:a.method,path:`${o}${a.suffix}`,isPublic:!1,_payload:a._payload,_success:a._success,_error:a._error};return r}function Kd(n){let r={};if(!n.authentication?.enabled)return r;return r.ADMIN_IMPERSONATE={method:"POST",path:"/auth/admin/impersonate",isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},r.ADMIN_IMPERSONATE_STOP={method:"POST",path:"/auth/admin/impersonate/stop",isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},r.ADMIN_CHANGE_USER_ID={method:"POST",path:"/auth/admin/change-user-id",isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},r}function Q2(n,r){let t=qd(n),o=Fd(n),a=Kd(n),c=jd(),e=pd(n);return{...t,...o,...a,...c,...e,...r??{}}}Vs();import{randomUUID as x2}from"crypto";var q2={timeout:30000,retries:0,retryDelay:1000,debug:!1};class cc{config;logger;constructor(n={}){this.config={...q2,...n},this.logger=new Cr({service:"ServerFetch",prettyPrint:this.config.debug,colorize:this.config.debug,auditEnabled:!1})}buildUrl(n){if(n.startsWith("http://")||n.startsWith("https://"))return n;return this.config.baseUrl?`${this.config.baseUrl}${n}`:n}buildHeaders(n){let r=new Headers;if(this.config.defaultHeaders)for(let[t,o]of Object.entries(this.config.defaultHeaders))r.set(t,o);if(n)if(n instanceof Headers)n.forEach((t,o)=>{r.set(o,t)});else if(Array.isArray(n))for(let[t,o]of n)r.set(t,o);else for(let[t,o]of Object.entries(n))r.set(t,o);return r}parseResponseHeaders(n){let r={};if(n.forEach((t,o)=>{if(o.toLowerCase()==="set-cookie"){let a=r[o];r[o]=a?`${a}, ${t}`:t}else r[o]=t}),typeof n.getSetCookie==="function"){let t=n.getSetCookie();if(t.length>0)r["set-cookie"]=t.join(", ")}return r}async executeWithTimeout(n,r,t){let o=new AbortController,a=setTimeout(()=>o.abort(),r);try{return await Promise.race([n,new Promise((e,i)=>{o.signal.addEventListener("abort",()=>{i(Error(`Request timeout after ${r}ms`))})})])}finally{clearTimeout(a)}}async fetch(n){let r=x2(),t=performance.now(),o=this.buildUrl(n.url),a=this.buildHeaders(n.headers),c=n.timeout??this.config.timeout??30000,e=n.retries??this.config.retries??0,i=n.retryDelay??this.config.retryDelay??1000,s;if(n.body)if(typeof n.body==="object"&&!(n.body instanceof FormData)&&!(n.body instanceof URLSearchParams)&&!(n.body instanceof Blob)&&!(n.body instanceof ArrayBuffer)){if(s=JSON.stringify(n.body),!a.has("content-type"))a.set("content-type","application/json")}else s=n.body;this.logger.debug(`[${r}] ${n.method} ${o}`,{method:n.method,url:o,hasBody:!!s});let f=null,l=0;while(l<=e)try{let b=await this.executeWithTimeout(fetch(o,{method:n.method,headers:a,body:s}),c,r),w=performance.now()-t,h=this.parseResponseHeaders(b.headers),_,g,R=await b.text();if(R)try{let M=JSON.parse(R);if(b.ok)_=M;else g=M}catch{if(!b.ok)g={message:R||b.statusText}}else if(!b.ok)g={message:b.statusText};let k={isSuccess:b.ok,response:_,errors:g,code:b.status,headers:h,durationMs:w,requestId:r,createdAt:new Date};if(b.ok)this.logger.info(`[${r}] ${n.method} ${o} ${b.status}`,{method:n.method,url:o,statusCode:b.status,durationMs:Math.round(w)});else this.logger.warn(`[${r}] ${n.method} ${o} ${b.status}`,{method:n.method,url:o,statusCode:b.status,durationMs:Math.round(w),error:g});return k}catch(b){if(f=b instanceof Error?b:Error(String(b)),l++,l<=e)this.logger.warn(`[${r}] Retry ${l}/${e} after error`,{method:n.method,url:o,error:f.message,attempt:l,retries:e}),await new Promise((w)=>setTimeout(w,i))}let d=performance.now()-t;return this.logger.error(`[${r}] ${n.method} ${o} failed`,f,{method:n.method,url:o,durationMs:Math.round(d),attempts:l}),{isSuccess:!1,response:void 0,errors:{message:f?.message||"Unknown error"},code:null,headers:{},durationMs:d,requestId:r,createdAt:new Date}}async get(n,r){return this.fetch({...r,url:n,method:"GET"})}async post(n,r,t){return this.fetch({...t,url:n,method:"POST",body:r})}async put(n,r,t){return this.fetch({...t,url:n,method:"PUT",body:r})}async patch(n,r,t){return this.fetch({...t,url:n,method:"PATCH",body:r})}async delete(n,r){return this.fetch({...r,url:n,method:"DELETE"})}}var F2=new cc;var j2={accessToken:"access_token",refreshToken:"refresh_token",sessionToken:"session_token"};function p2(n){let r=[],t="";for(let o=0;o<n.length;o++){let a=n[o];if(a===","){let c=n.slice(o+1).trimStart();if(/^[a-zA-Z0-9_-]+=/.test(c)){r.push(t.trim()),t="";continue}}t+=a}if(t.trim())r.push(t.trim());return r}function K2(n,r){let t={},o=["x-forwarded-for","x-real-ip","user-agent","accept-language","x-request-id","x-client-ip","cf-connecting-ip","true-client-ip"];for(let s of o){let f=n.get(s);if(f)t[s]=f}if(!t["user-agent"])t["user-agent"]="Nucleus-ServerAction/1.0";let a=n.get(`x-${r.accessToken}`),c=n.get(`x-${r.refreshToken}`),e=n.get(`x-${r.sessionToken}`);if(a)t[`x-${r.accessToken}`]=a;if(c)t[`x-${r.refreshToken}`]=c;if(e)t[`x-${r.sessionToken}`]=e;let i=n.get("cookie");if(i)t.cookie=i;return t}function v2(n){return n.replace(/_([a-z])/g,(r,t)=>t.toUpperCase())}function Cs(n){let r={};for(let[t,o]of Object.entries(n)){let a=t.startsWith("_")?t:v2(t);if(o instanceof Date)r[a]=o.toISOString();else if(o&&typeof o==="object"&&!Array.isArray(o))r[a]=Cs(o);else r[a]=o}return r}function T2(n,r){let t=new URLSearchParams,o=(c,e)=>{if(e===void 0||e===null)return;if(Array.isArray(e))for(let i of e)o(`${c}[]`,i);else if(e instanceof Date)t.append(c,e.toISOString());else if(typeof e==="object")for(let[i,s]of Object.entries(e))o(`${c}[${i}]`,s);else t.append(c,String(e))};for(let[c,e]of Object.entries(r))o(c,e);let a=t.toString();if(!a)return n;return n.includes("?")?`${n}&${a}`:`${n}?${a}`}function I2(n,r,t,o){let a={...j2,...r.tokenNames},c=new cc({baseUrl:r.baseUrl,debug:r.debug,timeout:30000,retries:0});return async function(i,s){let f=n[i];if(!f)return{isSuccess:!1,errors:{message:`Endpoint "${i}" not found`},code:404};let l=await t(),d=await o(),b={};d.forEach((k,M)=>{b[M]=k});let w=K2(d,a),h=f.path,_;if(s&&typeof s==="object"&&!(s instanceof FormData)){let k=s;for(let[M,C]of Object.entries(k))if(C!=null){if(M.startsWith("_"))h=h.replace(`:${M.substring(1)}`,String(C));else if(M==="id"&&h.includes(":id"))h=h.replace(":id",String(C))}}if(f.method==="GET"&&s&&typeof s==="object")h=T2(h,s);else if(s!==void 0){if(f.isFormData&&s instanceof FormData)_=s;else if(Array.isArray(s)){if(_=s.map((k)=>k&&typeof k==="object"?Cs(k):k),!w["content-type"])w["content-type"]="application/json"}else if(_=Cs(s),!w["content-type"])w["content-type"]="application/json"}let g=await c.fetch({url:h,method:f.method,headers:w,body:_});if(g.headers["set-cookie"])try{let k=g.headers["set-cookie"],M=p2(k);for(let C of M){let[N,...m]=C.split(";");if(!N)continue;let[A,H]=N.split("=");if(A&&H){let D={};for(let E of m){let[S,z]=E.trim().split("=");if(!S)continue;let U=S.toLowerCase();if(U==="path")D.path=z;else if(U==="domain")D.domain=z;else if(U==="max-age")D.maxAge=Number(z);else if(U==="expires"&&z)D.expires=new Date(z);else if(U==="httponly")D.httpOnly=!0;else if(U==="secure")D.secure=!0;else if(U==="samesite")D.sameSite=z}l.set(A.trim(),H.trim(),D)}}}catch(k){console.warn("[ServerFactory] Failed to process Set-Cookie headers:",k instanceof Error?k.message:String(k))}let R=g.response;if(g.isSuccess&&R&&typeof R==="object"&&!Array.isArray(R)){let k=R;if("success"in k&&!("data"in k)){let{success:M,message:C,error:N,...m}=k;R={success:M,...C!==void 0?{message:C}:{},...N!==void 0?{error:N}:{},...Object.keys(m).length>0?{data:m}:{}}}}return{isSuccess:g.isSuccess,data:R,errors:g.errors,code:g.code,message:g.isSuccess?void 0:g.errors?.message}}}import{useEffect as Zd,useEffectEvent as Lo,useRef as ec}from"react";import{batch as Z2,createStore as y2}from"h-state";var nh={connection:{status:"disconnected",clientId:null,subscribedTopics:[],error:null,reconnectAttempt:0},events:[],maxEvents:100},{useStore:Qs}=y2(nh,{setConnectionStatus:(n)=>(r)=>{n.connection.status=r},setClientId:(n)=>(r)=>{n.connection.clientId=r},setSubscribedTopics:(n)=>(r)=>{n.connection.subscribedTopics=r},setError:(n)=>(r)=>{n.connection.error=r},setReconnectAttempt:(n)=>(r)=>{n.connection.reconnectAttempt=r},addEvent:(n)=>(r)=>{let t=[r,...n.events];n.events=t.slice(0,n.maxEvents)},clearEvents:(n)=>()=>{n.events=[]},reset:(n)=>()=>{Z2(()=>{n.connection.status="disconnected",n.connection.clientId=null,n.connection.subscribedTopics=[],n.connection.error=null,n.connection.reconnectAttempt=0,n.events=[]})}});function rh(n){if(n.wsUrl){let c=n.wsUrl.replace(/\/$/,""),e=n.wsPath||"/api/events/subscribe",i=(n.topics||["*"]).join(",");return`${c}${e}?userId=${encodeURIComponent(n.userId)}&topics=${encodeURIComponent(i)}`}if(typeof window>"u")return"";let r=window.location.protocol==="https:"?"wss:":"ws:",t=window.location.host,o=n.wsPath||"/api/events/subscribe",a=(n.topics||["*"]).join(",");return`${r}//${t}${o}?userId=${encodeURIComponent(n.userId)}&topics=${encodeURIComponent(a)}`}var th=0;function oh(n){let r=Qs(),t=ec(null),o=ec(null),a=ec(null),c=ec(!1),e=ec(n);e.current=n;let i=n.autoReconnect??!0,s=n.maxReconnectAttempts??10,f=n.reconnectBaseDelay??1000,l=n.reconnectMaxDelay??30000,d=n.heartbeatInterval??30000,b=n.debug??!1,w=(...H)=>{if(b)console.log("[usePubSub]",...H)},h=()=>{if(o.current)clearInterval(o.current),o.current=null},_=()=>{if(a.current)clearTimeout(a.current),a.current=null},g=(H)=>{h(),o.current=setInterval(()=>{if(H.readyState===WebSocket.OPEN)H.send(JSON.stringify({type:"ping"}))},d)},R=Lo((H)=>{try{let D=JSON.parse(H.data);switch(D.type){case"connected":r.setConnectionStatus("connected"),r.setClientId(D.clientId),r.setSubscribedTopics(D.subscribedTopics),r.setReconnectAttempt(0),r.setError(null),w("Connected, clientId:",D.clientId);break;case"subscribed":r.setSubscribedTopics(D.topics),w("Subscribed to:",D.topics);break;case"event":{let E={id:`evt_${Date.now()}_${th++}`,topic:D.topic,data:D.data,timestamp:D.timestamp,receivedAt:Date.now(),messageId:D.messageId,isRedelivery:D.isRedelivery};if(r.addEvent(E),D.messageId&&t.current?.readyState===WebSocket.OPEN)t.current.send(JSON.stringify({type:"ack",messageId:D.messageId}));break}case"pong":break;case"error":r.setError(Error(D.error)),w("Server error:",D.error);break}}catch{w("Failed to parse message")}}),k=Lo((H)=>{if(c.current)return;if(!i)return;if(H>=s){r.setConnectionStatus("disconnected"),r.setError(Error("Max reconnection attempts reached")),w("Max reconnect attempts reached");return}let D=Math.min(f*2**H,l);w(`Reconnecting in ${D}ms (attempt ${H+1}/${s})`),r.setConnectionStatus("reconnecting"),r.setReconnectAttempt(H+1),_(),a.current=setTimeout(()=>{if(!c.current)M()},D)}),M=Lo(()=>{if(c.current)return;if(t.current?.readyState===WebSocket.OPEN)return;if(!e.current.userId)return;if(t.current){if(t.current.onopen=null,t.current.onmessage=null,t.current.onerror=null,t.current.onclose=null,t.current.readyState===WebSocket.OPEN||t.current.readyState===WebSocket.CONNECTING)t.current.close();t.current=null}let H=rh(e.current);if(!H)return;r.setConnectionStatus("connecting"),r.setError(null),w("Connecting to:",H);let D=new WebSocket(H);t.current=D,D.onopen=()=>{w("WebSocket opened"),g(D)},D.onmessage=R,D.onerror=()=>{w("WebSocket error"),r.setError(Error("WebSocket connection error"))},D.onclose=(E)=>{if(w("WebSocket closed",E.code,E.reason),h(),r.setConnectionStatus("disconnected"),r.setClientId(null),!c.current&&E.code!==4001){let S=r.connection.reconnectAttempt;k(S)}}}),C=Lo(()=>{if(h(),_(),t.current){if(t.current.onopen=null,t.current.onmessage=null,t.current.onerror=null,t.current.onclose=null,t.current.readyState===WebSocket.OPEN||t.current.readyState===WebSocket.CONNECTING)t.current.close();t.current=null}r.setConnectionStatus("disconnected"),r.setClientId(null)}),N=Lo((H)=>{if(t.current?.readyState!==WebSocket.OPEN)return;t.current.send(JSON.stringify({type:"subscribe",topics:H}))}),m=Lo((H)=>{if(t.current?.readyState!==WebSocket.OPEN)return;t.current.send(JSON.stringify({type:"unsubscribe",topics:H}))}),A=Lo((H)=>{return r.events.filter((D)=>D.topic===H)});return Zd(()=>{if(c.current=!1,n.userId)M();return()=>{c.current=!0,C()}},[n.userId]),Zd(()=>{if(r.connection.status==="connected"&&n.topics)N(n.topics)},[n.topics?.join(",")]),{isConnected:r.connection.status==="connected",isConnecting:r.connection.status==="connecting"||r.connection.status==="reconnecting",clientId:r.connection.clientId,subscribedTopics:r.connection.subscribedTopics,events:r.events,error:r.connection.error,reconnectAttempt:r.connection.reconnectAttempt,connect:M,disconnect:C,subscribe:N,unsubscribe:m,clearEvents:r.clearEvents,getEventsByTopic:A}}import{randomUUID as kE}from"crypto";var Fs=Rr(tu(),1);import{Elysia as ge,NotFoundError as ua}from"elysia";var vr,io,Qt=typeof Bun<"u"&&!!Bun.file;function da(){if(vr||(vr=process.getBuiltinModule("fs/promises")),io||(io=process.getBuiltinModule("path")),!io){console.warn("@elysiajs/static require path to be available.");return}return[vr,io]}async function ou(n){if(vr||da(),Qt){let r=new Bun.Glob("**/*.html"),t=[];for await(let o of r.scan(n))t.push(io.join(n,o));return t}return[]}async function Gs(n){if(vr||da(),Qt){let t=new Bun.Glob("**/*"),o=[];for await(let a of t.scan(n))o.push(io.join(n,a));return o}let r=await vr.readdir(n).catch(()=>[]);return(await Promise.all(r.map(async(t)=>{let o=n+io.sep+t,a=await vr.stat(o).catch(()=>null);return a?a.isDirectory()?await Gs(o):[io.resolve(n,o)]:[]}))).flat()}function Os(n){return vr||da(),vr.stat(n).then(()=>!0,()=>!1)}class Ns{constructor(n=250,r=10800){this.max=n,this.ttl=r,this.map=new Map}get(n){let r=this.map.get(n);if(r)return r[1]<=Date.now()?void this.delete(n):(this.map.delete(n),this.map.set(n,r),r[0])}set(n,r){if(this.interval||(this.interval=setInterval(()=>{let t=Date.now();for(let[o,a]of this.map)a[1]<=t&&this.map.delete(o)},this.ttl)),this.map.has(n))this.map.delete(n);else if(this.map.size>=this.max){let t=this.map.keys().next().value;t!==void 0&&this.delete(t)}this.map.set(n,[r,Date.now()+this.ttl*1000])}delete(n){this.map.get(n)&&this.map.delete(n)}clear(){this.map.clear()}size(){return this.map.size}[Symbol.dispose](){this.interval&&clearInterval(this.interval)}}function xs(n,r,t){if(n["cache-control"]&&/no-cache|no-store/.test(n["cache-control"]))return!1;if("if-none-match"in n){let o=n["if-none-match"];return o==="*"?!0:o===null||typeof r!="string"?!1:o===r}if(n["if-modified-since"]){let o=n["if-modified-since"];try{return vr.stat(t).then((a)=>{if(a.mtime!==void 0&&a.mtime.getTime()<=Date.parse(o))return!0})}catch{}}return!1}var be;function ic(n){return Qt?Bun.file(n):(vr||da(),vr.readFile(n))}async function qs(n){return Qt?new Bun.CryptoHasher("md5").update(await n.arrayBuffer()).digest("base64"):(be||(be=process.getBuiltinModule("crypto")),be?be.createHash("md5").update(n).digest("base64"):void console.warn("[@elysiajs/static] crypto is required to generate etag."))}var sc=(n)=>{if(!n)return!1;for(let r in n)return!0;return!1};async function au({assets:n="public",prefix:r="/public",staticLimit:t=1024,alwaysStatic:o=!1,ignorePatterns:a=[".DS_Store",".git",".env"],headers:c,maxAge:e=86400,directive:i="public",etag:s=!0,extension:f=!0,indexHTML:l=!0,decodeURI:d,silent:b}={}){if(typeof process>"u"||typeof process.getBuiltinModule>"u")return b||console.warn("[@elysiajs/static] require process.getBuiltinModule. Static plugin is disabled"),new ge;let w=da();if(!w)return new ge;let[h,_]=w,g=_.sep!=="/"?(m)=>m.replace(/\\/g,"/"):(m)=>m,R=new Ns;r===_.sep&&(r="");let k=_.resolve(n),M=a.length?(m)=>a.find((A)=>typeof A=="string"?A.includes(m):A.test(m)):()=>!1,C=new ge({name:"static",seed:r});if(o){let m=await Gs(_.resolve(n));if(m.length<=t)for(let A of m){let H=function({headers:U}){if(z){let K=xs(U,z,A);if(K===!0)return new Response(null,{status:304,headers:sc(c)?c:void 0});if(K!==!1){let B=R.get(E);return B?B.clone():K.then((L)=>{if(L)return new Response(null,{status:304,headers:c||void 0});let Y=new Response(S,{headers:Object.assign({"Cache-Control":e?`${i}, max-age=${e}`:i},c,z?{Etag:z}:{})});return R.set(r,Y),Y.clone()})}}let P=R.get(E);if(P)return P.clone();let p=new Response(S,{headers:Object.assign({"Cache-Control":e?`${i}, max-age=${e}`:i},c,z?{Etag:z}:{})});return R.set(E,p),p.clone()};var N=H;if(!A||M(A))continue;let D=A.replace(k,"");d&&(D=Fs.default(D)??D);let E=g(_.join(r,D));if(Qt&&A.endsWith(".html")){let U=await import(A);C.get(E,U.default),l&&E.endsWith("/index.html")&&C.get(E.replace("/index.html",""),U.default);continue}f||(E=g(E.slice(0,E.lastIndexOf("."))));let S=Qt?ic(A):await ic(A);if(!S)return b||console.warn(`[@elysiajs/static] Failed to load file: ${A}`),new ge;let z=await qs(S);C.get(E,s?H:new Response(S,sc(c)?{headers:c}:void 0)),l&&E.endsWith("/index.html")&&C.get(E.replace("/index.html",""),s?H:new Response(S,sc(c)?{headers:c}:void 0))}return C}if(!(`GET_${r}/*`in C.routeTree)){if(Qt){let m=await ou(_.resolve(n));for(let A of m){if(!A||M(A))continue;let H=A.replace(k,""),D=g(_.join(r,H)),E=await import(A);C.get(D,E.default),l&&D.endsWith("/index.html")&&C.get(D.replace("/index.html",""),E.default)}}C.onError(()=>{}).get(`${r.endsWith("/")?r.slice(0,-1):r}/*`,async({params:m,headers:A})=>{let H=g(_.join(n,d?Fs.default(m["*"])??m["*"]:m["*"]));if(M(H))throw new ua;let D=R.get(H);if(D)return D.clone();try{let E=await h.stat(H).catch(()=>null);if(!E)throw new ua;if(!l&&E.isDirectory())throw new ua;let S;if(!Qt&&l){let P=_.join(H,"index.html"),p=R.get(P);if(p)return p.clone();await Os(P)&&(S=await ic(P))}if(!S&&!E.isDirectory()&&await Os(H))S=await ic(H);else throw new ua;if(!s)return new Response(S,sc(c)?{headers:c}:void 0);let z=await qs(S);if(z&&await xs(A,z,H))return new Response(null,{status:304});let U=new Response(S,{headers:Object.assign({"Cache-Control":e?`${i}, max-age=${e}`:i},c,z?{Etag:z}:{})});return R.set(H,U),U.clone()}catch(E){throw E instanceof ua?E:(b||console.error("[@elysiajs/static]",E),new ua)}})}return C}Of();Yf();import{pushSchema as EE}from"drizzle-kit/api";import{and as ie,eq as $r}from"drizzle-orm";import{drizzle as SE}from"drizzle-orm/node-postgres";import{pgSchema as ME}from"drizzle-orm/pg-core";import DE from"elysia";var qe=[{table_name:"users",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"email",type:"varchar",length:255},{name:"password",type:"varchar",length:255},{name:"verified_at",type:"timestamp"},{name:"last_login_at",type:"timestamp"},{name:"login_count",type:"integer",default:0},{name:"is_locked",type:"boolean",default:!1},{name:"locked_until",type:"timestamp"},{name:"failed_login_attempts",type:"integer",default:0},{name:"is_god",type:"boolean",default:!1}],indexes:[{columns:["email"],unique:!0},{columns:["email","is_active"]},{columns:["last_login_at"]},{columns:["is_locked","locked_until"]}]},{table_name:"profiles",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"first_name",type:"varchar",length:100,notNull:!0},{name:"last_name",type:"varchar",length:100,notNull:!0}],indexes:[{columns:["user_id"],unique:!0},{columns:["first_name","last_name"]}]},{table_name:"roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500}],indexes:[{columns:["name"],unique:!0}]},{table_name:"claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"action",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500},{name:"path",type:"varchar",length:200,notNull:!0},{name:"method",type:"varchar",length:10,notNull:!0}],indexes:[{columns:["action"],unique:!0},{columns:["path","method"]}]},{table_name:"user_roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}}],indexes:[{columns:["user_id"]},{columns:["role_id"]}],constraints:{unique:[{name:"unique_user_role",columns:["user_id","role_id"]}]}},{table_name:"role_claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}},{name:"claim_id",type:"uuid",notNull:!0,references:{table:"claims",column:"id",onDelete:"cascade"}},{name:"scope",type:"text"}],indexes:[{columns:["role_id"]},{columns:["claim_id"]},{columns:["role_id","claim_id","scope"]}]},{table_name:"files",feature_set:["storage"],add_base_columns:!0,is_form_data:!0,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:255,notNull:!0},{name:"original_name",type:"varchar",length:255,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["image","document","video","audio","profile_picture"]},{name:"path",type:"varchar",length:500,notNull:!0},{name:"size",type:"bigint",mode:"number",notNull:!0},{name:"mime_type",type:"varchar",length:100,notNull:!0},{name:"extension",type:"varchar",length:10,notNull:!0},{name:"uploaded_by",type:"uuid",references:{table:"users",column:"id"}}],indexes:[{columns:["type"]},{columns:["uploaded_by"]},{columns:["size"]}]},{table_name:"addresses",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"street",type:"varchar",length:255},{name:"city",type:"varchar",length:100},{name:"state",type:"varchar",length:50},{name:"zip",type:"varchar",length:20},{name:"country",type:"varchar",length:50,default:"US"},{name:"latitude",type:"decimal",precision:10,scale:8},{name:"longitude",type:"decimal",precision:11,scale:8},{name:"neighborhood",type:"varchar",length:100},{name:"apartment",type:"varchar",length:50},{name:"province",type:"varchar",length:100},{name:"district",type:"varchar",length:100},{name:"type",type:"varchar",length:50}],indexes:[{columns:["city","state"]},{columns:["latitude","longitude"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"phones",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["mobile","office","fax"]},{name:"number",type:"varchar",length:20,notNull:!0},{name:"country_code",type:"varchar",length:10,notNull:!0,default:"+1"},{name:"extension",type:"varchar",length:10}],indexes:[{columns:["number"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"notifications",feature_set:["authentication","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0},{name:"title",type:"varchar",length:255,notNull:!0},{name:"body",type:"varchar",length:1000},{name:"entity_name",type:"varchar",length:100},{name:"entity_id",type:"uuid"},{name:"is_seen",type:"boolean",notNull:!0,default:!1},{name:"seen_at",type:"timestamptz"}],indexes:[{columns:["user_id","created_at"]},{columns:["is_seen"]}]},{table_name:"tenants",feature_set:["multi-tenant"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["main"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"subdomain",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_id",type:"uuid",notNull:!0},{name:"schema_name",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_name",type:"varchar",length:255},{name:"god_admin_email",type:"varchar",length:255}],indexes:[]},{table_name:"verifications",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"requirement_id",type:"uuid",notNull:!0,references:{table:"verificationRequirements",column:"id"}},{name:"verifier_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"signature_id",type:"uuid",references:{table:"files",column:"id"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"entity_id",type:"uuid",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"decision",type:"varchar",length:50,notNull:!0,default:"pending",enumValues:["approved","rejected","pending"]},{name:"reason",type:"text"},{name:"diff",type:"jsonb"}],indexes:[{columns:["requirement_id"]},{columns:["verifier_id"]},{columns:["entity_name","entity_id"]},{columns:["entity_name","entity_id","step_order"]},{columns:["decision"]}]},{table_name:"verificationRequirements",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"entity_id",type:"uuid"},{name:"entity_name",type:"varchar",length:100},{name:"verifier_type",type:"varchar",length:30,enumValues:["user","role","entity_creator"]},{name:"verifier_id",type:"uuid"},{name:"verifier_role",type:"varchar",length:50},{name:"is_signature_mandatory",type:"boolean",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"is_all_required",type:"boolean",notNull:!0,default:!1},{name:"connected_from_step_order",type:"integer"},{name:"position_x",type:"numeric"},{name:"position_y",type:"numeric"}],indexes:[{columns:["entity_id"]}]},{table_name:"verificationFlows",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"name",type:"varchar",length:255,notNull:!0},{name:"description",type:"text"},{name:"trigger_on",type:"varchar",length:50,notNull:!0,default:"update",enumValues:["create","update","delete","manual"]},{name:"trigger_fields",type:"jsonb"},{name:"is_draft",type:"boolean",notNull:!0,default:!0},{name:"published_at",type:"timestamptz"},{name:"viewport",type:"jsonb"}],indexes:[{columns:["entity_name"]},{columns:["entity_name","trigger_on"]},{columns:["is_draft"]}]},{table_name:"verificationSteps",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"node_id",type:"varchar",length:100,notNull:!0},{name:"node_type",type:"varchar",length:50,notNull:!0,default:"step",enumValues:["start","step","condition","notification","end"]},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"name",type:"varchar",length:255},{name:"description",type:"text"},{name:"position_x",type:"numeric",notNull:!0,default:0},{name:"position_y",type:"numeric",notNull:!0,default:0},{name:"width",type:"numeric"},{name:"height",type:"numeric"},{name:"style",type:"jsonb"},{name:"data",type:"jsonb"}],indexes:[{columns:["flow_id"]},{columns:["entity_name"]},{columns:["flow_id","node_id"],unique:!0},{columns:["entity_name","step_order"]}]},{table_name:"verificationEdges",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"edge_id",type:"varchar",length:100,notNull:!0},{name:"source_node_id",type:"varchar",length:100,notNull:!0},{name:"target_node_id",type:"varchar",length:100,notNull:!0},{name:"source_handle",type:"varchar",length:50},{name:"target_handle",type:"varchar",length:50},{name:"edge_type",type:"varchar",length:50,default:"default",enumValues:["default","conditional","success","failure"]},{name:"label",type:"varchar",length:255},{name:"condition",type:"jsonb"},{name:"style",type:"jsonb"},{name:"animated",type:"boolean",default:!1}],indexes:[{columns:["flow_id"]},{columns:["flow_id","edge_id"],unique:!0},{columns:["source_node_id"]},{columns:["target_node_id"]}]},{table_name:"verificationNotificationRules",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"step_node_id",type:"varchar",length:100},{name:"trigger",type:"varchar",length:50,notNull:!0,enumValues:["on_flow_started","on_step_reached","on_approved","on_rejected","on_flow_completed"]},{name:"channel",type:"varchar",length:20,notNull:!0,default:"portal",enumValues:["portal","email","both"]},{name:"title_template",type:"varchar",length:255},{name:"body_template",type:"text"},{name:"starts_at",type:"timestamptz"},{name:"expires_at",type:"timestamptz"}],indexes:[{columns:["flow_id"]},{columns:["flow_id","step_node_id"]},{columns:["trigger"]}]},{table_name:"verificationNotificationRecipients",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"rule_id",type:"uuid",notNull:!0},{name:"recipient_type",type:"varchar",length:20,notNull:!0,enumValues:["user","role","all_verifiers","step_verifier"]},{name:"recipient_user_id",type:"uuid"},{name:"recipient_role_id",type:"uuid"},{name:"channel",type:"varchar",length:20,notNull:!0,enumValues:["portal"]}],indexes:[{columns:["rule_id"]},{columns:["recipient_type"]},{columns:["channel"]}]},{table_name:"user_sessions",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH"],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"refresh_token_hash",type:"varchar",length:255},{name:"device_fingerprint",type:"varchar",length:255},{name:"device_name",type:"varchar",length:100},{name:"device_type",type:"varchar",length:50,enumValues:["desktop","mobile","tablet","unknown"]},{name:"browser_name",type:"varchar",length:50},{name:"browser_version",type:"varchar",length:20},{name:"os_name",type:"varchar",length:50},{name:"os_version",type:"varchar",length:20},{name:"ip_address",type:"varchar",length:45,notNull:!0},{name:"location_country",type:"varchar",length:100},{name:"location_city",type:"varchar",length:100},{name:"location_coordinates",type:"varchar",length:50},{name:"last_activity_at",type:"timestamptz",notNull:!0,defaultRaw:"now()"},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"revoked_at",type:"timestamptz"},{name:"revoked_reason",type:"varchar",length:100,enumValues:["user_logout","user_revoked","admin_revoked","security_concern","password_changed","expired","replaced"]},{name:"is_current",type:"boolean",notNull:!0,default:!1},{name:"login_method",type:"varchar",length:50,enumValues:["password","oauth_google","oauth_github","oauth_microsoft","magic_link","sso","api_key"]},{name:"trust_score",type:"integer",default:100},{name:"approval_status",type:"varchar",length:20,default:"approved",enumValues:["approved","pending","rejected"]},{name:"approval_token",type:"varchar",length:64},{name:"approval_requested_at",type:"timestamptz"},{name:"approval_responded_at",type:"timestamptz"}],indexes:[{columns:["user_id"]},{columns:["token_hash"],unique:!0},{columns:["refresh_token_hash"]},{columns:["user_id","is_active"]},{columns:["expires_at"]},{columns:["device_fingerprint"]},{columns:["ip_address"]},{columns:["last_activity_at"]},{columns:["approval_status"]},{columns:["approval_token"]}]},{table_name:"password_reset_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["expires_at"]}]},{table_name:"magic_link_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"email",type:"varchar",length:255,notNull:!0},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["email"]},{columns:["expires_at"]}]},{table_name:"audit_logs",feature_set:["audit"],add_base_columns:!1,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","DELETE","PATCH","TOGGLE","VERIFICATION"],bulk_endpoints_enabled:!0,columns:[{name:"id",type:"uuid",primaryKey:!0,defaultRaw:"gen_random_uuid()"},{name:"entity_id",type:"uuid"},{name:"entity_name",type:"text",notNull:!0},{name:"operation_type",type:"text",notNull:!0},{name:"user_id",type:"uuid"},{name:"ip_address",type:"text"},{name:"user_agent",type:"text"},{name:"summary",type:"text"},{name:"old_values",type:"jsonb"},{name:"new_values",type:"jsonb"},{name:"created_at",type:"timestamp",notNull:!0,defaultRaw:"now()"},{name:"path",type:"text"},{name:"query",type:"text"}],indexes:[{columns:["entity_id"]},{columns:["entity_name"]},{columns:["user_id"]},{columns:["created_at"]}]}];var Yh={GET:["GET"],POST:["POST"],PUT:["PUT"],DELETE:["DELETE"],PATCH:["PATCH"],TOGGLE:["PATCH"],VERIFICATION:["POST"]};function Jh(n,r){let t=[],o=n.authentication;if(!o)return t;if(o.login?.enabled&&o.login?.isPublic)t.push({path:o.login.route||`${r}/auth/login`,method:"POST",source:"auth"});if(o.register?.enabled&&o.register?.isPublic)t.push({path:o.register.route||`${r}/auth/register`,method:"POST",source:"auth"});if(o.logout?.enabled&&o.logout?.isPublic)t.push({path:o.logout.route||`${r}/auth/logout`,method:"POST",source:"auth"});if(o.refresh?.enabled&&o.refresh?.isPublic)t.push({path:o.refresh.route||`${r}/auth/refresh`,method:"POST",source:"auth"});if(o.passwordReset?.enabled&&o.passwordReset?.isPublic){let a=o.passwordReset.route||`${r}/auth/password-reset`;t.push({path:`${a}/request`,method:"POST",source:"auth"},{path:`${a}/confirm`,method:"POST",source:"auth"})}if(o.passwordChange?.enabled&&o.passwordChange?.isPublic)t.push({path:o.passwordChange.route||`${r}/auth/password-change`,method:"POST",source:"auth"});if(o.magicLink?.enabled&&o.magicLink?.isPublic)t.push({path:o.magicLink.route||`${r}/auth/magic-link`,method:"POST",source:"auth"},{path:o.magicLink.verifyRoute||`${r}/auth/magic-link/verify`,method:"GET",source:"auth"});if(o.register?.enabled&&o.register?.emailVerification?.enabled)t.push({path:`${r}/verify-email`,method:"GET",source:"auth"},{path:`${r}/resend-verification`,method:"POST",source:"auth"});if(o.invite?.enabled&&o.invite?.isPublic)t.push({path:o.invite.route||`${r}/auth/invite`,method:"POST",source:"auth"});if(o.invite?.enabled){let a=o.invite.route||`${r}/auth/invite`;t.push({path:`${a}/verify`,method:"POST",source:"auth"})}if(o.passwordSet?.enabled)t.push({path:o.passwordSet.route||`${r}/auth/password-set`,method:"POST",source:"auth"});if(o.captcha?.enabled&&o.captcha?.isPublic){let a=o.captcha.route||`${r}/auth/captcha`;t.push({path:`${a}/generate`,method:"GET",source:"auth"},{path:`${a}/validate`,method:"POST",source:"auth"})}if(o.oauth?.enabled){let a=o.oauth.basePath||`${r}/auth/oauth`,c=["google","github","microsoft","discord","facebook","twitter","apple","custom"];t.push({path:`${a}/providers`,method:"GET",source:"auth"});for(let e of c)t.push({path:`${a}/${e}`,method:"GET",source:"auth"},{path:`${a}/${e}/callback`,method:"GET",source:"auth"})}return t}function Vb(n,r,t){let o=[];for(let a of n){if(!a.is_public)continue;let c=`${r}/${t}/${a.table_name}`;for(let[e,i]of Object.entries(a.is_public)){if(!i)continue;let s=Yh[e];if(!s)continue;for(let f of s)if(f==="GET")o.push({path:c,method:"GET",source:"entity"}),o.push({path:`${c}/:id`,method:"GET",source:"entity"});else if(f==="POST")o.push({path:c,method:"POST",source:"entity"});else if(f==="PUT"||f==="PATCH")o.push({path:`${c}/:id`,method:f,source:"entity"});else if(f==="DELETE")o.push({path:`${c}/:id`,method:"DELETE",source:"entity"})}}return o}function Xh(n,r,t){return Vb(n,r,t)}function Nf(n,r,t="",o="public"){let a=Jh(n,t),c=Vb(n.entities||[],t,o),e=Xh(r,t,o),i=[];if(n.pubsub?.enabled){let f=n.pubsub.basePath||"/subs",l=n.pubsub.wsPath||"/api/events/subscribe";i.push({path:`${f}/:topic`,method:"POST",source:"system"},{path:l,method:"GET",source:"system"})}let s=[{path:"/nucleus-core",method:"GET",source:"custom"},{path:"/public",method:"GET",source:"custom"},{path:"/docs",method:"GET",source:"custom"},{path:"/docs/json",method:"GET",source:"custom"},{path:"/swagger",method:"GET",source:"custom"},{path:"/swagger/json",method:"GET",source:"custom"}];return[...a,...c,...e,...i,...s]}function xf(n,r,t){let o=r.replace(/\/$/,""),a=t.toUpperCase();for(let c of n){if(c.method!==a)continue;if(Lh(c.path,o))return!0}return!1}function Lh(n,r){if(n===r)return!0;let t=n.split("/").filter(Boolean),o=r.split("/").filter(Boolean);if(t.length!==o.length)return!1;for(let a=0;a<t.length;a++){let c=t[a],e=o[a];if(c?.startsWith(":"))continue;if(c!==e)return!1}return!0}Uf();Ie();ni();import{asc as _5,desc as m5,eq as ur,ilike as $g,inArray as w5,notInArray as h5,or as $5}from"drizzle-orm";import{drizzle as A5}from"drizzle-orm/node-postgres";import{Elysia as R5,t as Xn}from"elysia";import{t as Fn}from"elysia";function g5(n){let r={};if(!n||n.length===0)return Fn.Object({},{additionalProperties:!0});for(let t of n)switch(t.type?.toLowerCase()||"string"){case"integer":case"int":case"serial":case"bigserial":case"numeric":case"decimal":r[t.name]=t.notNull?Fn.Number():Fn.Optional(Fn.Number());break;case"boolean":r[t.name]=t.notNull?Fn.Boolean():Fn.Optional(Fn.Boolean());break;case"timestamp":case"timestamptz":case"date":r[t.name]=t.notNull?Fn.String({format:"date-time"}):Fn.Optional(Fn.String({format:"date-time"}));break;case"json":case"jsonb":r[t.name]=Fn.Optional(Fn.Unknown());break;case"uuid":r[t.name]=t.notNull?Fn.String({format:"uuid"}):Fn.Optional(Fn.String({format:"uuid"}));break;default:r[t.name]=t.notNull?Fn.String():Fn.Optional(Fn.String())}return Fn.Object(r,{additionalProperties:!0})}function hg(n){return Fn.Array(Fn.Object({id:Fn.String(),data:g5(n)}))}function fl(n,r){let{db:t,schemaTables:o,schemaRelations:a,entities:c,logger:e,databaseUrl:i,storage:s,authorization:f}=r,l=hc(s),d=f?.enabled??!1;if(!t)return n;let b=Object.keys(o),w=c.map((m)=>m.table_name),h=b.filter((m)=>!w.includes(m)),_=["userSessions","passwordResetTokens","magicLinkTokens"],g=["passwordResetTokens","magicLinkTokens"],R=["files"];function k(m){return m.replace(/_([a-z])/g,(A,H)=>H.toUpperCase())}let M=new Map(qe.map((m)=>[k(m.table_name),m])),C=h.filter((m)=>{if(g.includes(m)&&!r.emailServiceAvailable)return e.info(`Skipping ${m} routes - email service not available`),!1;return!0}).map((m)=>{let A=M.get(m);return{table_name:m,group_name:_.includes(m)?"Authentication":m,is_form_data:R.includes(m),bulk_endpoints_enabled:A?.bulk_endpoints_enabled??!1,excluded_methods:A?.excluded_methods?[...A.excluded_methods]:[]}}),N=[...c,...C];e.info(`All entities: ${N.map((m)=>m.table_name).join(", ")}`);for(let m of N){let A=m.table_name,H=m.group_name||m.table_name,D=o[A];if(!D)continue;let E=a[`${A}Relations`];e.info(`Creating routes for table: ${A}`);let S=D,z=S.id,U=t,P=hg(m.columns),p=Xn.Array(Xn.String()),K=new R5({prefix:`/${A}`});if(!m.excluded_methods?.includes("GET"))K.get("/",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let L=B.request.headers.get("x-user-id"),Y=m.columns?.map((_n)=>_n.name),Q=Object.keys(a).filter((_n)=>_n.startsWith(`${m.table_name}Relations`)).map((_n)=>_n.replace("Relations","")),V=null;if(d&&L){if(V=await _c({userId:L,method:"GET",entity:m.table_name,requestedFields:Y,requestedRelations:Q,db:U,schemaTables:o,logger:e}),!V.authorized)return{success:!1,message:V.reason||"Unauthorized",status:403}}let q=ol(B.query),F=[];if(d&&V?.scopeFilters)for(let[_n,T]of Object.entries(V.scopeFilters)){let Jn=S[_n];if(Jn)F.push(ur(Jn,T))}if(q.search&&q.searchFields){let _n=q.searchFields.map((T)=>{let Jn=S[T.trim()];return Jn?$g(Jn,`%${q.search}%`):null}).filter((T)=>T!==null);if(_n.length>0){let T=$5(..._n);if(T)F.push(T)}}if(q.filters){let{ne:_n,gt:T,gte:Jn,lt:Gn,lte:qn,like:gr,isNull:Ar,isNotNull:Mt}=await import("drizzle-orm");for(let er of q.filters){let lr=S[er.field];if(!lr)continue;switch(er.operator){case"eq":F.push(ur(lr,er.value));break;case"neq":F.push(_n(lr,er.value));break;case"gt":F.push(T(lr,er.value));break;case"gte":F.push(Jn(lr,er.value));break;case"lt":F.push(Gn(lr,er.value));break;case"lte":F.push(qn(lr,er.value));break;case"like":F.push(gr(lr,er.value));break;case"ilike":F.push($g(lr,er.value));break;case"in":F.push(w5(lr,er.value));break;case"notIn":F.push(h5(lr,er.value));break;case"isNull":F.push(Ar(lr));break;case"isNotNull":F.push(Mt(lr));break}}}let v=U.select().from(D);if(F.length>0){let{and:_n}=await import("drizzle-orm"),T=_n(...F);if(T)v=v.where(T)}if(q.sort&&q.sort.length>0){let _n=q.sort.map((T)=>{let Jn=S[T.field];if(!Jn)return null;return T.direction==="desc"?m5(Jn):_5(Jn)}).filter((T)=>T!==null);if(_n.length>0)v=v.orderBy(..._n)}let dn=q.page??1,tn=q.limit??20,un=q.offset??(dn-1)*tn,sn=U.select().from(D);if(F.length>0){let{and:_n}=await import("drizzle-orm"),T=_n(...F);if(T)sn.where(T)}let fr=(await sn).length;v=v.limit(tn).offset(un);let gn=await v,et=lg(dn,tn,un,fr);if(d&&V?.allowedFields)gn=Le(gn,V.allowedFields);return{success:!0,data:{items:gn,meta:et}}},{detail:{tags:[H],summary:`List ${A}`,description:`Get paginated list of ${A} records with filtering, sorting, and search`}}),K.get("/:id",async(B)=>{if(!U||!z)return{success:!1,message:"No id column or DB"};let L=B.params,Y=ol(B.query),Q=B.request.headers.get("x-user-id"),V=m.columns?.map((tn)=>tn.name),q=Y.with?.map((tn)=>tn.name),F=null;if(d&&Q){if(F=await _c({userId:Q,method:"GET",entity:m.table_name,requestedFields:V,requestedRelations:q,db:U,schemaTables:o,logger:e}),!F.authorized)return{success:!1,message:F.reason||"Unauthorized",status:403}}if(Y.with&&Y.with.length>0&&E&&i){let tn=d&&F?.allowedRelations?Y.with.filter((Yn)=>F.allowedRelations?.includes(Yn.name)??!1):Y.with,sn=await A5(i,{schema:{...o,...a}}).query[m.table_name]?.findFirst({where:ur(z,L.id),with:tn.reduce((Yn,fr)=>{return Yn[fr.name]=fr.limit?{limit:fr.limit}:!0,Yn},{})});if(d&&F?.allowedFields&&sn)sn=Le(sn,F.allowedFields);if(d&&F?.allowedRelations&&sn)sn=eb(sn,F.allowedRelations);return{success:!0,data:sn||null}}let dn=(await U.select().from(D).where(ur(z,L.id)))[0]||null;if(d&&F?.allowedFields&&dn)dn=Le(dn,F.allowedFields);return{success:!0,data:dn}},{detail:{tags:[H],summary:`Get ${A} by ID`,description:`Get a single ${A} record by its ID with optional relations`}}),K.get("/distinct/:field",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let L=B.params,Y=S[L.field];if(!Y)return{success:!1,message:"Field not found"};return{success:!0,data:await U.selectDistinct({value:Y}).from(D)}},{detail:{tags:[H],summary:`Get distinct ${A} values`,description:`Get distinct values for a specific field in ${A}`}});if(!m.excluded_methods?.includes("POST"))if(m.is_form_data&&l.enabled)K.post("/",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let L=B.request.headers.get("x-user-id"),{data:Y,files:Q}=$c(B.body,l),V=Y;if(m.columns){V=ma(V,m.columns);let v=_a(V,m.columns,!1);if(!v.valid)return{success:!1,message:"Validation failed",errors:v.errors}}let q=null;if(Q.length>0){if(q=await Ac(Q,l,m.table_name),q.failed.length>0&&q.success.length===0)return{success:!1,message:"File upload failed",errors:q.failed};if(q.success.length>0){let v=q.success[0];if(v){let dn=v.originalName.split(".").pop()||"";V={...V,id:v.id,name:v.name,originalName:v.originalName,path:v.path,mimeType:v.mimeType,size:v.size,extension:dn,uploadedBy:L}}}}if(L)V.createdBy=L;let F=await U.insert(D).values(V).returning();{let v=new URL(B.request.url);e.audit({entityName:m.table_name,entityId:String(F[0]?.id??""),operation:"CREATE",userId:L||void 0,summary:`Created ${m.table_name}`,newValues:F[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:v.pathname,query:v.search})}return{success:!0,data:F[0]}},{type:"formdata",body:Xn.Object({[l.formData.dataField]:Xn.Optional(Xn.Union([Xn.String(),Xn.Any()])),[l.formData.filesField]:Xn.Optional(Xn.Union([Xn.File(),Xn.Array(Xn.File())]))}),detail:{tags:[H],summary:`Create ${A} with files`,description:`Create a new ${A} record with file upload support`}});else K.post("/",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let L=B.body,Y=B.request.headers.get("x-user-id");if(m.columns){L=ma(L,m.columns);let V=_a(L,m.columns,!1);if(!V.valid)return{success:!1,message:"Validation failed",errors:V.errors}}if(Y)L.createdBy=Y;let Q=await U.insert(D).values(L).returning();if(A==="userRoles"&&L.roleId&&L.userId)try{let{roles:V,users:q}=o;if(V&&q){if((await U.select().from(V).where(ur(V.id,L.roleId)).limit(1))[0]?.name==="godmin")await U.update(q).set({isGod:!0}).where(ur(q.id,L.userId))}}catch(V){e.warn("[Entity] Failed to sync is_god flag on userRole create")}{let V=new URL(B.request.url);e.audit({entityName:m.table_name,entityId:String(Q[0]?.id??""),operation:"CREATE",userId:Y||void 0,summary:`Created ${m.table_name}`,newValues:Q[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:V.pathname,query:V.search})}return{success:!0,data:Q[0]}},{body:Xn.Object({},{additionalProperties:!0}),detail:{tags:[H],summary:`Create ${A}`,description:`Create a new ${A} record`}});if(!m.excluded_methods?.includes("PUT"))if(m.is_form_data&&l.enabled)K.put("/:id",async(B)=>{if(!U||!z)return{success:!1,message:"No id column or DB"};let L=B.params,Y=B.request.headers.get("x-user-id"),{data:Q,files:V}=$c(B.body,l),q=Q,F=await U.select().from(D).where(ur(z,L.id)).limit(1);if(m.columns){q=ma(q,m.columns);let tn=_a(q,m.columns,!1);if(!tn.valid)return{success:!1,message:"Validation failed",errors:tn.errors}}let v=null;if(V.length>0)v=await Ac(V,l,m.table_name);let dn=await U.update(D).set(q).where(ur(z,L.id)).returning();{let tn=new URL(B.request.url);e.audit({entityName:m.table_name,entityId:L.id,operation:"UPDATE",userId:Y||void 0,summary:`Updated ${m.table_name} (${L.id})`,oldValues:F[0],newValues:dn[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:tn.pathname,query:tn.search})}return{success:!0,data:{record:dn[0],files:v?.success||[],fileErrors:v?.failed||[]}}},{type:"formdata",body:Xn.Object({[l.formData.dataField]:Xn.Optional(Xn.Union([Xn.String(),Xn.Any()])),[l.formData.filesField]:Xn.Optional(Xn.Union([Xn.File(),Xn.Array(Xn.File())]))}),detail:{tags:[H],summary:`Update ${A} with files`,description:`Full update of ${A} record with file upload support`}});else K.put("/:id",async(B)=>{if(!U||!z)return{success:!1,message:"No id column or DB"};let{params:L,body:Y}=B,Q=B.request.headers.get("x-user-id"),V=await U.select().from(D).where(ur(z,L.id)).limit(1);if(m.columns){Y=ma(Y,m.columns);let F=_a(Y,m.columns,!1);if(!F.valid)return{success:!1,message:"Validation failed",errors:F.errors}}if(Y.updatedAt=new Date,Q)Y.updatedBy=Q;let q=await U.update(D).set(Y).where(ur(z,L.id)).returning();{let F=new URL(B.request.url);e.audit({entityName:m.table_name,entityId:L.id,operation:"UPDATE",userId:Q||void 0,summary:`Updated ${m.table_name} (${L.id})`,oldValues:V[0],newValues:q[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:F.pathname,query:F.search})}return{success:!0,data:q[0]}},{body:Xn.Object({},{additionalProperties:!0}),detail:{tags:[H],summary:`Update ${A}`,description:`Full update of ${A} record`}});if(!m.excluded_methods?.includes("PATCH"))K.patch("/:id",async(B)=>{if(!U||!z)return{success:!1,message:"No id column or DB"};let{params:L,body:Y}=B,Q=B.request.headers.get("x-user-id"),V=await U.select().from(D).where(ur(z,L.id)).limit(1);if(m.columns){Y=ma(Y,m.columns);let F=_a(Y,m.columns,!0);if(!F.valid)return{success:!1,message:"Validation failed",errors:F.errors}}if(Y.updatedAt=new Date,Q)Y.updatedBy=Q;let q=await U.update(D).set(Y).where(ur(z,L.id)).returning();{let F=new URL(B.request.url);e.audit({entityName:m.table_name,entityId:L.id,operation:"PATCH",userId:Q||void 0,summary:`Patched ${m.table_name} (${L.id})`,oldValues:V[0],newValues:q[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:F.pathname,query:F.search})}return{success:!0,data:q[0]}},{body:Xn.Object({},{additionalProperties:!0}),detail:{tags:[H],summary:`Patch ${A}`,description:`Partial update of ${A} record`}});if(!m.excluded_methods?.includes("DELETE"))K.delete("/:id",async(B)=>{if(!U||!z)return{success:!1,message:"No id column or DB"};let L=B.params,Y=B.request.headers.get("x-user-id"),Q=await U.select().from(D).where(ur(z,L.id)).limit(1);if(await U.delete(D).where(ur(z,L.id)),A==="userRoles"&&Q[0])try{let V=Q[0],q=o.roles,F=o.users;if(q&&F&&V.roleId&&V.userId){if((await U.select().from(q).where(ur(q.id,V.roleId)).limit(1))[0]?.name==="godmin")await U.update(F).set({isGod:!1}).where(ur(F.id,V.userId))}}catch(V){e.warn("[Entity] Failed to sync is_god flag on userRole delete")}{let V=new URL(B.request.url);e.audit({entityName:m.table_name,entityId:L.id,operation:"DELETE",userId:Y||void 0,summary:`Deleted ${m.table_name} (${L.id})`,oldValues:Q[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:V.pathname,query:V.search})}return{success:!0,data:null}},{detail:{tags:[H],summary:`Delete ${A}`,description:`Delete a ${A} record`}});if(m.bulk_endpoints_enabled){if(!m.excluded_methods?.includes("POST"))K.post("/bulk",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let L=B.body;if(!Array.isArray(L))return{success:!1,message:"Body must be an array"};try{return{success:!0,data:await U.transaction(async(Q)=>{let V=[];for(let q of L){let F=await Q.insert(D).values(q).returning();V.push(F[0])}return V})}}catch(Y){return{success:!1,message:Y instanceof Error?Y.message:"Transaction failed"}}},{body:Xn.Array(Xn.Object({},{additionalProperties:!0})),detail:{tags:[H],summary:`Bulk create ${A}`,description:`Create multiple ${A} records`}});if(!m.excluded_methods?.includes("PUT"))K.put("/bulk",async(B)=>{if(!U||!z)return{success:!1,message:"No id column or DB"};let L=B.body;if(!Array.isArray(L))return{success:!1,message:"Body must be an array"};try{return{success:!0,data:await U.transaction(async(Q)=>{let V=[];for(let q of L){let F=await Q.update(D).set(q.data).where(ur(z,q.id)).returning();V.push(F[0])}return V})}}catch(Y){return{success:!1,message:Y instanceof Error?Y.message:"Transaction failed"}}},{body:P,detail:{tags:[H],summary:`Bulk update ${A}`,description:`Update multiple ${A} records`}});if(!m.excluded_methods?.includes("DELETE"))K.delete("/bulk",async(B)=>{if(!U||!z)return{success:!1,message:"No id column or DB"};let L=B.body;if(!Array.isArray(L))return{success:!1,message:"Body must be an array of ids"};try{return await U.transaction(async(Y)=>{for(let Q of L)await Y.delete(D).where(ur(z,Q))}),{success:!0,data:{deleted:L.length}}}catch(Y){return{success:!1,message:Y instanceof Error?Y.message:"Transaction failed"}}},{body:p,detail:{tags:[H],summary:`Bulk delete ${A}`,description:`Delete multiple ${A} records`}})}n.use(K)}return n}import k5,{t as Rc}from"elysia";function E5(n){let r=n.match(/^(\d+)(ms|s|m|h)$/);if(!r||!r[1]||!r[2])return 5000;let t=parseInt(r[1],10);switch(r[2]){case"ms":return t;case"s":return t*1000;case"m":return t*60*1000;case"h":return t*60*60*1000;default:return 5000}}function ll(n){let{monitoringService:r,logger:t,endpoints:o}=n,a=new k5({prefix:o.basePath});if(!o.enabled)return a;if(o.stream.enabled)a.get(o.stream.path,async function*({request:c}){t.info("[Monitoring] SSE stream connected");let e=E5(o.stream.interval),i=!0;c.signal.addEventListener("abort",()=>{i=!1,t.info("[Monitoring] SSE stream disconnected")});let s=await r.getLatestSnapshot();if(s)yield{event:"snapshot",data:JSON.stringify(s)};while(i){if(await new Promise((d)=>setTimeout(d,e)),!i)break;let f=await r.getLatestSnapshot();if(f)yield{event:"snapshot",data:JSON.stringify(f)};let l=r.getActiveAlerts();if(l.length>0)yield{event:"alerts",data:JSON.stringify(l)}}},{detail:{tags:["Monitoring"],summary:"Stream real-time monitoring data",description:"Server-Sent Events stream for real-time monitoring metrics"}});if(o.snapshot.enabled)a.get(o.snapshot.path,async()=>{let c=await r.getLatestSnapshot();if(!c)return{isSuccess:!1,message:"No monitoring data available",data:null};return{isSuccess:!0,message:"Current monitoring snapshot",data:c}},{detail:{tags:["Monitoring"],summary:"Get current monitoring snapshot",description:"Returns the latest monitoring metrics snapshot"}});if(o.history.enabled)a.get(o.history.path,async({query:c})=>{let e=Math.min(c.minutes?parseInt(String(c.minutes),10):60,o.history.maxMinutes),i=await r.getHistory(e);return{isSuccess:!0,message:`Monitoring history for last ${e} minutes`,data:{minutes:e,count:i.length,snapshots:i}}},{query:Rc.Object({minutes:Rc.Optional(Rc.Numeric())}),detail:{tags:["Monitoring"],summary:"Get monitoring history",description:"Returns historical monitoring data for the specified time range"}});if(o.alerts.enabled)a.get(o.alerts.path,()=>{let c=r.getActiveAlerts();return{isSuccess:!0,message:"Active alerts",data:{count:c.length,alerts:c}}},{detail:{tags:["Monitoring"],summary:"Get active alerts",description:"Returns all currently active monitoring alerts"}}),a.post(`${o.alerts.path}/:alertId/acknowledge`,({params:c})=>{if(!r.acknowledgeAlert(c.alertId))return{isSuccess:!1,message:"Alert not found",data:null};return{isSuccess:!0,message:"Alert acknowledged",data:{alertId:c.alertId}}},{params:Rc.Object({alertId:Rc.String()}),detail:{tags:["Monitoring"],summary:"Acknowledge an alert",description:"Mark an alert as acknowledged"}});return t.info(`[Monitoring] Routes enabled at ${o.basePath} (stream: ${o.stream.enabled}, snapshot: ${o.snapshot.enabled}, history: ${o.history.enabled}, alerts: ${o.alerts.enabled})`),a}import S5,{t as Gr}from"elysia";var M5={"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-cache, no-transform",Connection:"keep-alive"},D5=new TextEncoder,dl=(n,r)=>{let t=typeof r==="string"?r:JSON.stringify(r);return D5.encode(`event: ${n}
82
+ `}),b.info("[OAUTH] Invite email sent to new OAuth user",{userId:p,email:z.email,provider:M})}catch(gn){b.warn("[OAUTH] Failed to send invite email",{userId:p,error:gn})}}await d.update(w).set({lastLoginAt:new Date}).where(zr(w.id,p));let K=k.request.headers.get("cf-connecting-ip")?.trim()||k.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||k.request.headers.get("x-real-ip")?.trim()||"127.0.0.1",B=k.request.headers.get("user-agent")||"Unknown Browser",L=mi(B,K),Y=t(p),Q=o(p),V={userId:p,deviceInfo:L,loginMethod:`oauth:${M}`,rememberMe:!0},q=await a(V);if(c)await c(q,V);await b.audit({entityName:"users",entityId:p,operation:"LOGIN",userId:p,summary:`${z.email??z.providerAccountId} logged in via OAuth (${M})`,ipAddress:K,userAgent:B,path:`${h}/${M}/callback`,query:""});let F=_.secure?"; Secure":"",v=`; Path=${_.path}; HttpOnly; SameSite=${_.sameSite}${F}`,dn=[];if(g.accessToken.setHeadersEnabled)dn.push(`${_.accessTokenName}=${Y}${v}; Max-Age=${_.accessTokenMaxAge}`);if(g.refreshToken.setHeadersEnabled)dn.push(`${_.refreshTokenName}=${Q}${v}; Max-Age=${_.refreshTokenMaxAge}`);if(g.sessionToken.setHeadersEnabled)dn.push(`${_.sessionTokenName}=${q}${v}; Max-Age=${_.sessionTokenMaxAge}`);let on=E.redirectUrl||r.successRedirectUrl,un=new Headers;un.set("Location",on);for(let en of dn)un.append("Set-Cookie",en);return new Response(null,{status:302,headers:un})},{detail:{tags:["Authentication"],summary:"OAuth Callback",description:"Handles the OAuth provider callback, creates session and sets cookies"}}),R.get(`${h}/providers`,()=>{return{success:!0,data:{providers:r.getEnabledProviders()}}},{detail:{tags:["Authentication"],summary:"List OAuth Providers",description:"Returns the list of enabled OAuth providers"}}),R.get(`${h}/link/:provider`,async(k)=>{let M=k.params.provider;if(!r.isProviderEnabled(M))return k.set.status=404,{success:!1,message:`OAuth provider "${M}" is not enabled`};if(!r.allowAccountLinking)return k.set.status=403,{success:!1,message:"Account linking is disabled"};let C=k.request.headers.get("x-user-id");if(!C)return k.set.status=401,{success:!1,message:"Authentication required to link accounts"};let N=k.query.redirect_url,m=r.buildAuthorizationUrl(M,C,N);return k.set.status=302,k.set.headers.Location=m,null},{detail:{tags:["Authentication"],summary:"Link OAuth Account",description:"Redirects to provider to link an OAuth account to the current user"}}),R.delete(`${h}/unlink/:provider`,async(k)=>{let M=k.params.provider,C=k.request.headers.get("x-user-id");if(!C)return k.set.status=401,{success:!1,message:"Authentication required"};if(!d)return k.set.status=500,{success:!1,message:"Database not configured"};let N=n.oauthAccountsTable;if(!N)return k.set.status=500,{success:!1,message:"OAuth accounts table not configured"};if((await d.select().from(N).where(bs(zr(N.userId,C),zr(N.provider,M))).limit(1)).length===0)return{success:!1,message:`No linked ${M} account found`};let D=!!(await d.select().from(w).where(zr(w.id,C)).limit(1))[0]?.password,E=await d.select().from(N).where(zr(N.userId,C));if(!D&&E.length<=1)return k.set.status=400,{success:!1,message:"Cannot unlink the only login method. Set a password first."};return await d.delete(N).where(bs(zr(N.userId,C),zr(N.provider,M))),b.info("[OAUTH] Account unlinked",{userId:C,provider:M}),{success:!0,message:`${M} account unlinked successfully`}},{detail:{tags:["Authentication"],summary:"Unlink OAuth Account",description:"Removes a linked OAuth account from the current user"}}),R.get(`${h}/accounts`,async(k)=>{let M=k.request.headers.get("x-user-id");if(!M)return k.set.status=401,{success:!1,message:"Authentication required"};if(!d)return k.set.status=500,{success:!1,message:"Database not configured"};let C=n.oauthAccountsTable;if(!C)return{success:!0,data:{accounts:[]}};return{success:!0,data:{accounts:(await d.select().from(C).where(zr(C.userId,M))).map((A)=>({id:A.id,provider:A.provider,providerEmail:A.providerEmail,providerName:A.providerName,providerAvatarUrl:A.providerAvatarUrl,isPrimary:A.isPrimary,lastUsedAt:A.lastUsedAt,createdAt:A.createdAt}))}}},{detail:{tags:["Authentication"],summary:"List Linked OAuth Accounts",description:"Returns all OAuth accounts linked to the current user"}}),R}var u2=u(()=>{wi();Yc()});import{t as Jo}from"elysia";var $d,sE;var Ad=u(()=>{$d=Jo.Object({currentPassword:Jo.String({minLength:1}),newPassword:Jo.String({minLength:8}),confirmPassword:Jo.String({minLength:8})}),sE=Jo.Object({success:Jo.Boolean(),message:Jo.Optional(Jo.String())})});function b2(n,r){return n===r}import{eq as g2}from"drizzle-orm";import{Elysia as fE}from"elysia";function gs(n,r){let{db:t,logger:o,usersTable:a}=n,c=r.route||"/auth/password-change",e=new fE;if(!r.enabled)return e;return e.post(c,async(i)=>{if(!t||!a)return i.set.status=500,{success:!1,message:"Database not configured"};let s=i.request.headers.get("x-user-id");if(!s)return i.set.status=401,{success:!1,message:"Authentication required"};let{currentPassword:f,newPassword:l,confirmPassword:d}=i.body;if(!b2(l,d))return i.set.status=422,{success:!1,message:"New passwords do not match"};let w=(await t.select().from(a).where(g2(a.id,s)).limit(1))[0];if(!w)return i.set.status=404,{success:!1,message:"User not found"};let h=await _i(f,w.password),_=new URL(i.request.url),g=i.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||i.request.headers.get("x-real-ip")?.trim()||"unknown",R=i.request.headers.get("user-agent")||"unknown";if(!h)return o.warn("[AUTH] Password change failed - invalid current password",{userId:s}),o.audit({entityName:"users",entityId:s,operation:"PASSWORD_CHANGE_FAILED",userId:s,summary:"Password change failed: invalid current password",ipAddress:g,userAgent:R,path:_.pathname,query:_.search}),i.set.status=400,{success:!1,message:"Current password is incorrect"};let k=await Ao(l);return await t.update(a).set({password:k,updatedAt:new Date}).where(g2(a.id,s)),o.info("[AUTH] Password change successful",{userId:s}),o.audit({entityName:"users",entityId:s,operation:"PASSWORD_CHANGE",userId:s,summary:"Password changed successfully",ipAddress:g,userAgent:R,path:_.pathname,query:_.search}),{success:!0,message:"Password changed successfully"}},{body:$d,detail:{tags:["Authentication"],summary:"Change Password",description:"Change password for authenticated user"}}),e}var Rd=u(()=>{wi();Xa();Ad();Ad()});import{t as Ct}from"elysia";var kd,Ed,lE;var Sd=u(()=>{kd=Ct.Object({email:Ct.String({format:"email"})}),Ed=Ct.Object({token:Ct.String(),newPassword:Ct.String({minLength:8}),confirmPassword:Ct.String({minLength:8})}),lE=Ct.Object({success:Ct.Boolean(),message:Ct.Optional(Ct.String())})});import{randomBytes as dE}from"crypto";function _2(){return dE(32).toString("hex")}function m2(n){return new Date>n}var w2=()=>{};import{Elysia as uE}from"elysia";function _s(n,r,t,o,a,c){let{db:e,logger:i,usersTable:s}=n,f=r.route||"/auth/password-reset",l=new uE;if(!r.enabled)return l;return l.post(`${f}/request`,async(d)=>{if(!e||!s)return{success:!1,message:"Database not configured"};let{email:b}=d.body,{eq:w}=await import("drizzle-orm"),_=(await e.select().from(s).where(w(s.email,b)).limit(1))[0];if(!_)return{success:!0,message:"If email exists, reset link will be sent"};let g=_2(),R=new Date(Date.now()+3600000);if(await t(_.id,g,R),c)try{await c(b,g),i.info("[AUTH] Password reset email sent",{email:b})}catch(M){i.error("[AUTH] Failed to send password reset email",{email:b,error:M})}else i.warn("[AUTH] sendResetEmail not configured - email not sent",{email:b});i.info("[AUTH] Password reset requested",{userId:_.id,email:b});let k=new URL(d.request.url);return i.audit({entityName:"users",entityId:_.id,operation:"PASSWORD_RESET_REQUEST",userId:_.id,summary:`Password reset requested for ${b}`,ipAddress:d.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||d.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:d.request.headers.get("user-agent")||"unknown",path:k.pathname,query:k.search}),{success:!0,message:"If email exists, reset link will be sent"}},{body:kd,detail:{tags:["Authentication"],summary:"Request Password Reset",description:"Request a password reset email"}}),l.post(`${f}/confirm`,async(d)=>{if(!e||!s)return{success:!1,message:"Database not configured"};let{token:b,newPassword:w,confirmPassword:h}=d.body;if(w!==h)return{success:!1,message:"Passwords do not match"};let _=await o(b);if(!_)return{success:!1,message:"Invalid or expired reset token"};if(m2(_.expiresAt))return await a(b),{success:!1,message:"Reset token has expired"};let g=await Ao(w),{eq:R}=await import("drizzle-orm");await e.update(s).set({password:g}).where(R(s.id,_.userId)),await a(b),i.info("[AUTH] Password reset successful",{userId:_.userId});let k=new URL(d.request.url);return i.audit({entityName:"users",entityId:_.userId,operation:"PASSWORD_RESET",userId:_.userId,summary:"Password reset completed successfully",ipAddress:d.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||d.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:d.request.headers.get("user-agent")||"unknown",path:k.pathname,query:k.search}),{success:!0,message:"Password has been reset"}},{body:Ed,detail:{tags:["Authentication"],summary:"Confirm Password Reset",description:"Reset password with token"}}),l}var Md=u(()=>{Xa();Sd();w2();Sd()});import{t as ao}from"elysia";var Dd,bE;var Hd=u(()=>{Dd=ao.Object({newPassword:ao.String({minLength:8}),userId:ao.Optional(ao.String()),token:ao.Optional(ao.String())}),bE=ao.Object({success:ao.Boolean(),message:ao.String()})});import{eq as h2}from"drizzle-orm";import{Elysia as gE}from"elysia";function ms(n,r,t,o){let{db:a,logger:c,usersTable:e}=n,i=r.route||"/auth/password-set",s=new gE;if(!r.enabled)return s;return s.post(i,async(f)=>{if(c.info("[AUTH] Password set request received"),!a||!e)return c.error("[AUTH] Password set failed - database not configured"),{success:!1,message:"Database not configured"};let{newPassword:l,userId:d,token:b}=f.body,w=d;if(b&&t&&o){let k=gt(b),M=await t(k);if(!M)return c.warn("[AUTH] Password set failed - invalid token"),{success:!1,message:"Invalid or expired token"};if(new Date>M.expiresAt)return await o(k),c.warn("[AUTH] Password set failed - expired token",{email:M.email}),{success:!1,message:"Invalid or expired token"};w=M.userId,c.info("[AUTH] Password set - userId resolved from token",{userId:w,email:M.email})}if(!w)return c.warn("[AUTH] Password set failed - no userId in payload or token"),{success:!1,message:"User ID or token required"};let _=(await a.select().from(e).where(h2(e.id,w)).limit(1))[0];if(c.info("[AUTH] Password set - user found",{found:!!_,hasPassword:!!_?.password}),!_)return{success:!1,message:"User not found"};if(_.password)return c.warn("[AUTH] Password set failed - user already has password",{userId:w}),{success:!1,message:"Password already set. Use password change instead."};let g=await Ao(l);c.info("[AUTH] Password set - updating user with verifiedAt",{userId:w});let R=await a.update(e).set({password:g,verifiedAt:new Date,updatedAt:new Date}).where(h2(e.id,w));if(c.info("[AUTH] Password set successful for invited user",{userId:w,updateResult:R}),b&&o){let k=gt(b);await o(k),c.info("[AUTH] Invite token consumed after password set",{userId:w})}return{success:!0,message:"Password set successfully"}},{body:Dd,detail:{tags:["Authentication"],summary:"Set Password",description:"Set password for the first time (for invited users who do not have a password yet)"}}),s}var zd=u(()=>{Yc();Xa();Hd();Hd()});function Ud(n){let r=n.match(/^(\d+)([smhd])$/);if(!r)return 900;let t=r[1],o=r[2];if(!t||!o)return 900;let a=parseInt(t,10);switch(o){case"s":return a;case"m":return a*60;case"h":return a*3600;case"d":return a*86400;default:return 900}}import{t as sa}from"elysia";var _E;var $2=u(()=>{_E=sa.Object({success:sa.Boolean(),message:sa.Optional(sa.String()),data:sa.Optional(sa.Object({accessToken:sa.String()}))})});import{Elysia as mE}from"elysia";function ws(n,r,t,o,a,c,e){let{logger:i,authentication:s}=n,f=r.route||"/auth/refresh",l=new mE;if(!r.enabled)return l;return l.post(f,async(d)=>{let b=s?.refreshToken?.name||"refresh_token",w=s?.accessToken?.name||"access_token",h=d.request.headers.get("x-refresh-token");if(!h){let P=d.request.headers.get("cookie");if(P)h=P.split(";").reduce((K,B)=>{let[L,Y]=B.trim().split("=");if(L&&Y)K[L]=Y;return K},{})[b]||null}if(!h)return d.set.status=401,{success:!1,message:"Refresh token required"};let _=t(h);if(!_.valid||!_.payload)return i.warn("[AUTH] Refresh failed - invalid token"),d.set.status=401,{success:!1,message:"Invalid refresh token"};let g=_.payload.sub,R=o(g),k=a?a(g):null,M=c?.accessToken?.setHeadersEnabled??!0,C=c?.accessToken?.returnJson??!0,N=c?.refreshToken?.setHeadersEnabled??!0,m=c?.refreshToken?.returnJson??!1,A=s?.accessToken?.expiresIn||"15m",H=Math.max(0,Ud(A)-(e??0)),D=s?.refreshToken?.expiresIn||"7d",E=Ud(D),S=new Headers;if(S.set("Content-Type","application/json"),M)S.append("Set-Cookie",`${w}=${R}; Path=/; HttpOnly; SameSite=Strict; Secure; Max-Age=${H}`);if(k&&N)S.append("Set-Cookie",`${b}=${k}; Path=/; HttpOnly; SameSite=Strict; Secure; Max-Age=${E}`);i.info("[AUTH] Token refresh successful",{userId:g,rotatedRefreshToken:!!k});let z={};if(C)z.accessToken=R;if(k&&m)z.refreshToken=k;let U=JSON.stringify({success:!0,data:z});return new Response(U,{status:200,headers:S})},{detail:{tags:["Authentication"],summary:"Refresh Token",description:"Get new access token using refresh token"}}),l}var Bd=u(()=>{$2()});import{t as Vr}from"elysia";var Wd,wE;var Yd=u(()=>{Wd=Vr.Object({email:Vr.String({format:"email"}),password:Vr.String({minLength:8}),confirmPassword:Vr.Optional(Vr.String({minLength:8}))}),wE=Vr.Object({success:Vr.Boolean(),message:Vr.Optional(Vr.String()),data:Vr.Optional(Vr.Object({user:Vr.Object({id:Vr.String(),email:Vr.String()})}))})});import{eq as hE}from"drizzle-orm";import{Elysia as $E}from"elysia";function hs(n,r,t,o,a,c,e,i,s,f){let{db:l,logger:d,usersTable:b}=n,w=r.route||"/auth/register",h={accessTokenName:e?.accessTokenName||"access_token",refreshTokenName:e?.refreshTokenName||"refresh_token",sessionTokenName:e?.sessionTokenName||"session_token",accessTokenMaxAge:e?.accessTokenMaxAge||900,refreshTokenMaxAge:e?.refreshTokenMaxAge||604800,sessionTokenMaxAge:e?.sessionTokenMaxAge||900,secure:e?.secure??!0,httpOnly:e?.httpOnly??!0,sameSite:e?.sameSite||"strict",path:e?.path||"/"},_=new $E;if(!r.enabled)return _;return _.post(w,async(g)=>{if(!l||!b)return g.set.status=500,{success:!1,message:"Database not configured"};let{email:R,password:k,confirmPassword:M}=g.body;if(M&&k!==M)return g.set.status=400,{success:!1,message:"Passwords do not match"};let C=d_(k);if(!C.valid)return g.set.status=400,{success:!1,message:"Password too weak",errors:C.errors};let N=await l.select().from(b).where(hE(b.email,R)).limit(1),m=new URL(g.request.url),A=g.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||g.request.headers.get("x-real-ip")?.trim()||"unknown",H=g.request.headers.get("user-agent")||"unknown";if(N.length>0)return d.warn("[AUTH] Registration failed - email exists",{email:R}),d.audit({entityName:"users",operation:"REGISTER_FAILED",summary:`Registration failed: email already exists (${R})`,ipAddress:A,userAgent:H,path:m.pathname,query:m.search}),g.set.status=409,{success:!1,message:"Email already registered"};let D=await Ao(k),E=r.emailVerification?.enabled&&s?.isAvailable(),S=E?fi():null,z=r.emailVerification?.tokenExpiresIn||"24h",U=E?new Date(Date.now()+Ja(z)):null,P={email:R,password:D};if(E&&S)P.emailVerificationToken=S,P.emailVerificationTokenExpiresAt=U,P.emailVerificationSentAt=new Date,P.emailVerificationAttempts=1;let K=(await l.insert(b).values(P).returning())[0];if(d.info("[AUTH] Registration successful",{userId:K.id,email:R,emailVerificationEnabled:E}),d.audit({entityName:"users",entityId:K.id,operation:"REGISTER",userId:K.id,summary:`New user registered: ${R}`,ipAddress:A,userAgent:H,path:m.pathname,query:m.search}),E&&s&&S){let L=`${(r.emailVerification?.redirectUrl||"http://localhost:3000/login").replace("/login","/verify-email")}?token=${S}`;s.sendVerificationEmail(R,R.split("@")[0]||"User",L,f||"Nucleus").then((q)=>{if(q.success)d.info("[AUTH] Verification email sent",{email:R});else d.error("[AUTH] Failed to send verification email",{email:R,error:q.error})}).catch((q)=>{d.error("[AUTH] Failed to send verification email",{email:R,error:q})});let Y=r.emailVerification?.resendCooldown||"60s",Q=Ja(Y)/1000,V=r.emailVerification?.maxResendAttempts||3;return{success:!0,message:"Registration successful. Please check your email to verify your account.",data:{user:{id:K.id,email:K.email},emailVerificationRequired:!0,verification:{cooldownSeconds:Q,canResendAt:new Date(Date.now()+Q*1000).toISOString(),attemptsRemaining:V-1,maxAttempts:V}}}}if(t)t(R,R.split("@")[0]||"User").catch((B)=>{d.error("[AUTH] Failed to send welcome email",{email:R,error:B})});if(o&&a&&c){let B=g.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||g.request.headers.get("x-real-ip")?.trim()||"unknown",L=g.request.headers.get("user-agent")||"",Y=o(K.id),Q=a(K.id),V=await c({userId:K.id,deviceInfo:{ipAddress:B,userAgent:L},loginMethod:"register"}),q={accessToken:{setHeadersEnabled:i?.accessToken?.setHeadersEnabled??!0,returnJson:i?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:i?.refreshToken?.setHeadersEnabled??!0,returnJson:i?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:i?.sessionToken?.setHeadersEnabled??!0,returnJson:i?.sessionToken?.returnJson??!0}},F=h.secure?"; Secure":"",v=`; Path=${h.path}; HttpOnly; SameSite=${h.sameSite}${F}`,dn=[];if(q.accessToken.setHeadersEnabled)dn.push(`${h.accessTokenName}=${Y}${v}; Max-Age=${h.accessTokenMaxAge}`);if(q.refreshToken.setHeadersEnabled)dn.push(`${h.refreshTokenName}=${Q}${v}; Max-Age=${h.refreshTokenMaxAge}`);if(q.sessionToken.setHeadersEnabled)dn.push(`${h.sessionTokenName}=${V}${v}; Max-Age=${h.sessionTokenMaxAge}`);let on={user:{id:K.id,email:K.email}};if(q.accessToken.returnJson)on.accessToken=Y;if(q.refreshToken.returnJson)on.refreshToken=Q;if(q.sessionToken.returnJson)on.sessionId=V;let un=JSON.stringify({success:!0,data:on}),en=new Headers;en.set("Content-Type","application/json"),en.set("x-session-id",V);for(let Yn of dn)en.append("Set-Cookie",Yn);return new Response(un,{status:200,headers:en})}return{success:!0,data:{user:{id:K.id,email:K.email}}}},{body:Wd,detail:{tags:["Authentication"],summary:"Register",description:"Register a new user account"}}),_}var Jd=u(()=>{Yd();Xa();Yd()});import{t as Z}from"elysia";var A2,AE,Xd,Ld,rF;var Vd=u(()=>{A2=Z.Object({id:Z.String(),deviceName:Z.Optional(Z.String()),deviceType:Z.Optional(Z.String()),browserName:Z.Optional(Z.String()),browserVersion:Z.Optional(Z.String()),osName:Z.Optional(Z.String()),osVersion:Z.Optional(Z.String()),ipAddress:Z.String(),locationCountry:Z.Optional(Z.String()),locationCity:Z.Optional(Z.String()),lastActivityAt:Z.String(),createdAt:Z.String(),isCurrent:Z.Boolean(),loginMethod:Z.Optional(Z.String()),trustScore:Z.Optional(Z.Number())}),AE=Z.Object({success:Z.Boolean(),data:Z.Optional(Z.Object({sessions:Z.Array(A2),currentSessionId:Z.Optional(Z.String()),totalCount:Z.Number()})),message:Z.Optional(Z.String())}),Xd=Z.Object({reason:Z.Optional(Z.String())}),Ld=Z.Object({excludeCurrent:Z.Optional(Z.Boolean()),reason:Z.Optional(Z.String())}),rF=Z.Object({success:Z.Boolean(),data:Z.Optional(Z.Object({recentActivity:Z.Array(Z.Object({sessionId:Z.String(),action:Z.String(),ipAddress:Z.String(),timestamp:Z.String(),deviceInfo:Z.Optional(Z.String())}))})),message:Z.Optional(Z.String())})});function $s(n){let r=(o,a)=>n[o]??n[a],t=(o,a)=>{let c=n[o]??n[a];if(!c)return;return c instanceof Date?c.toISOString():String(c)};return{id:n.id,deviceName:r("device_name","deviceName"),deviceType:r("device_type","deviceType"),deviceFingerprint:r("device_fingerprint","deviceFingerprint"),browserName:r("browser_name","browserName"),browserVersion:r("browser_version","browserVersion"),osName:r("os_name","osName"),osVersion:r("os_version","osVersion"),ipAddress:r("ip_address","ipAddress"),locationCountry:r("location_country","locationCountry"),locationCity:r("location_city","locationCity"),lastActivityAt:t("last_activity_at","lastActivityAt"),createdAt:t("created_at","createdAt"),isCurrent:r("is_current","isCurrent"),loginMethod:r("login_method","loginMethod"),trustScore:r("trust_score","trustScore")}}var R2=()=>{};import{and as Xo,desc as k2,eq as pn,isNull as E2}from"drizzle-orm";import{Elysia as RE}from"elysia";function As(n,r,t){let{db:o,logger:a}=n,c=r.route||"/auth/sessions",e=new RE;if(!r.enabled||!t)return e;let i=t,s=(f)=>{let l=f.replace(/([A-Z])/g,"_$1").toLowerCase();return i[f]||i[l]};return e.get(c,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let l=f.request.headers.get("x-user-id");if(!l)return{success:!1,message:"Authentication required"};let d=f.request.headers.get("x-session-id"),b=await o.select().from(t).where(Xo(pn(s("userId"),l),pn(s("isActive"),!0),E2(s("revokedAt")))).orderBy(k2(s("lastActivityAt"))),w=b.filter((_)=>{let g=_,R=(g.deviceFingerprint||"").toLowerCase(),k=g.ipAddress||"";return!((!R||R==="--"||R==="--unknown"||R.includes("bot/crawler")||R.includes("headless")||R.includes("unknown-unknown"))&&(k==="127.0.0.1"||k==="::1"||k==="localhost"||!k))}),h=w.map((_)=>{let g=_,R=$s(g);return R.isCurrent=g.id===d,R});return a.info("[AUTH] Sessions list retrieved",{userId:l,totalInDb:b.length,filteredCount:w.length,hiddenBotSessions:b.length-w.length}),{success:!0,data:{sessions:h,currentSessionId:d,totalCount:w.length}}},{detail:{tags:["Authentication"],summary:"List active sessions",description:"Get all active sessions for the current user"}}),e.get(`${c}/current`,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let l=f.request.headers.get("x-user-id"),d=f.request.headers.get("x-session-id");if(!l||!d)return{success:!1,message:"Authentication required"};let b=await o.select().from(t).where(pn(s("id"),d)).limit(1);if(b.length===0)return{success:!1,message:"Session not found"};let w=b[0],h=$s(w);return h.isCurrent=!0,{success:!0,data:h}},{detail:{tags:["Authentication"],summary:"Get current session",description:"Get details of the current session"}}),e.delete(`${c}/:sessionId`,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let l=f.request.headers.get("x-user-id");if(!l)return{success:!1,message:"Authentication required"};let{sessionId:d}=f.params,b=f.body,w=f.request.headers.get("x-session-id");if((await o.select().from(t).where(Xo(pn(s("id"),d),pn(s("userId"),l))).limit(1)).length===0)return{success:!1,message:"Session not found"};let _=d===w;await o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:_?"user_logout":b.reason||"user_revoked"}).where(pn(s("id"),d)),a.info("[AUTH] Session revoked",{userId:l,sessionId:d,isCurrentSession:_,reason:b.reason||"user_revoked"});let g=new URL(f.request.url);return a.audit({entityName:"user_sessions",entityId:d,operation:_?"LOGOUT":"SESSION_REVOKE",userId:l||void 0,summary:_?"User logged out via session revoke":`Session revoked (${d.substring(0,8)}...)`,ipAddress:f.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||f.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:f.request.headers.get("user-agent")||"unknown",path:g.pathname,query:g.search}),{success:!0,message:_?"Logged out successfully":"Session revoked successfully"}},{body:Xd,detail:{tags:["Authentication"],summary:"Revoke session",description:"Revoke a specific session by ID"}}),e.delete(`${c}/all`,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let l=f.request.headers.get("x-user-id");if(!l)return{success:!1,message:"Authentication required"};let d=f.body,b=f.request.headers.get("x-session-id"),w=o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:d.reason||"user_revoked"}).where(Xo(pn(s("userId"),l),pn(s("isActive"),!0)));if(d.excludeCurrent&&b){let{ne:_}=await import("drizzle-orm");w=o.update(t).set({isActive:!1,revokedAt:new Date,revokedReason:d.reason||"user_revoked"}).where(Xo(pn(s("userId"),l),pn(s("isActive"),!0),_(s("id"),b)))}await w,a.info("[AUTH] All sessions revoked",{userId:l,excludeCurrent:d.excludeCurrent,reason:d.reason||"user_revoked"});let h=new URL(f.request.url);return a.audit({entityName:"user_sessions",operation:"SESSION_REVOKE_ALL",userId:l||void 0,summary:d.excludeCurrent?"All other sessions revoked":"All sessions revoked",ipAddress:f.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||f.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:f.request.headers.get("user-agent")||"unknown",path:h.pathname,query:h.search}),{success:!0,message:d.excludeCurrent?"All other sessions revoked successfully":"All sessions revoked successfully"}},{body:Ld,detail:{tags:["Authentication"],summary:"Revoke all sessions",description:"Revoke all sessions for the current user (optionally exclude current)"}}),e.get(`${c}/stats`,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let l=f.request.headers.get("x-user-id");if(!l)return{success:!1,message:"Authentication required"};let{count:d,countDistinct:b}=await import("drizzle-orm"),w=await o.select({count:d()}).from(t).where(Xo(pn(s("userId"),l),pn(s("isActive"),!0),E2(s("revokedAt")))),h=await o.select({count:b(s("deviceFingerprint"))}).from(t).where(Xo(pn(s("userId"),l),pn(s("isActive"),!0))),_=await o.select({count:b(s("ipAddress"))}).from(t).where(Xo(pn(s("userId"),l),pn(s("isActive"),!0)));return{success:!0,data:{activeSessions:w[0]?.count||0,uniqueDevices:h[0]?.count||0,uniqueIpAddresses:_[0]?.count||0}}},{detail:{tags:["Authentication"],summary:"Session statistics",description:"Get session statistics for the current user"}}),e.post(`${c}/approve`,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let{token:l}=f.body;if(!l)return{success:!1,message:"Token is required"};let d=await o.select().from(t).where(pn(s("approvalToken"),l)).limit(1);if(d.length===0)return{success:!1,message:"Invalid or expired approval token"};let b=d[0];if(b.approvalStatus!=="pending")return{success:!1,message:"Session already processed"};return await o.update(t).set({approvalStatus:"approved",isActive:!0,approvalRespondedAt:new Date,approvalToken:null}).where(pn(s("id"),b.id)),a.info("[AUTH] Device approved",{sessionId:b.id,userId:b.userId}),{success:!0,message:"Device approved successfully"}},{detail:{tags:["Authentication"],summary:"Approve pending device",description:"Approve a pending device login request"}}),e.post(`${c}/reject`,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let{token:l}=f.body;if(!l)return{success:!1,message:"Token is required"};let d=await o.select().from(t).where(pn(s("approvalToken"),l)).limit(1);if(d.length===0)return{success:!1,message:"Invalid or expired approval token"};let b=d[0];if(b.approvalStatus!=="pending")return{success:!1,message:"Session already processed"};return await o.update(t).set({approvalStatus:"rejected",isActive:!1,revokedAt:new Date,revokedReason:"user_rejected",approvalRespondedAt:new Date,approvalToken:null}).where(pn(s("id"),b.id)),a.info("[AUTH] Device rejected",{sessionId:b.id,userId:b.userId}),{success:!0,message:"Device rejected and blocked"}},{detail:{tags:["Authentication"],summary:"Reject pending device",description:"Reject a pending device login request"}}),e.get(`${c}/pending`,async(f)=>{if(!o)return{success:!1,message:"Database not configured"};let l=f.request.headers.get("x-user-id");if(!l)return{success:!1,message:"Authentication required"};let d=await o.select().from(t).where(Xo(pn(s("userId"),l),pn(s("approvalStatus"),"pending"))).orderBy(k2(s("createdAt")));return{success:!0,data:{sessions:d.map((w)=>{let h=w;return{...$s(h),approvalStatus:h.approval_status||h.approvalStatus,approvalToken:h.approval_token||h.approvalToken,approvalRequestedAt:h.approval_requested_at?.toISOString()||h.approvalRequestedAt?.toISOString()}}),totalCount:d.length}}},{detail:{tags:["Authentication"],summary:"List pending devices",description:"Get all pending device approval requests for the current user"}}),e}var Cd=u(()=>{Vd();R2();Vd()});var M2={};co(M2,{createSessionsRoute:()=>As,createRegisterRoute:()=>hs,createRefreshRoute:()=>ws,createPasswordSetRoute:()=>ms,createPasswordResetRoute:()=>_s,createPasswordChangeRoute:()=>gs,createMeRoute:()=>us,createMagicLinkRoute:()=>ds,createLogoutRoute:()=>Ai,createLoginRoute:()=>hi,createInviteRoute:()=>gi,createImpersonateRoute:()=>si,createEmailVerificationRoutes:()=>ui,createChangeUserIdRoute:()=>ii,createAuthRoutes:()=>S2});function S2(n,r){let{authConfig:t,features:o,helpers:a}=r;if(r.oauthAccountsTable)t.oauthAccountsTable=r.oauthAccountsTable;if(r.schemaTables)t.schemaTables=r.schemaTables;let c=t.authentication?.cookieMaxAgeBufferSeconds??0,e={accessTokenName:t.authentication?.accessToken?.name||"access_token",refreshTokenName:t.authentication?.refreshToken?.name||"refresh_token",sessionTokenName:t.authentication?.sessionToken?.name||"session_token",accessTokenMaxAge:Math.max(0,st(t.authentication?.accessToken?.expiresIn||"15m")-c),refreshTokenMaxAge:st(t.authentication?.refreshToken?.expiresIn||"7d"),sessionTokenMaxAge:st(t.authentication?.sessionToken?.expiresIn||"30d")};if(t.logger.info("[AUTH] Cookie config created",{accessTokenMaxAge:e.accessTokenMaxAge,refreshTokenMaxAge:e.refreshTokenMaxAge,sessionTokenMaxAge:e.sessionTokenMaxAge,accessTokenExpiresIn:t.authentication?.accessToken?.expiresIn,sessionTokenExpiresIn:t.authentication?.sessionToken?.expiresIn}),o.login?.enabled){let s=hi(t,o.login,a.signAccessToken,a.signRefreshToken,a.createSession,a.saveSessionToDb,e,r.tokenResponseConfig);n.use(s)}if(o.register?.enabled){let s=hs(t,o.register,a.sendWelcomeEmail,a.signAccessToken,a.signRefreshToken,a.createSession,e,r.tokenResponseConfig,r.emailService,r.appName);if(n.use(s),o.register.emailVerification?.enabled){let f=ui({authConfig:t,registerConfig:o.register,emailService:r.emailService,appName:r.appName});n.use(f)}}if(o.logout?.enabled){let s=Ai(t,o.logout,a.destroySession,a.revokeSessionInDb);n.use(s)}if(o.refresh?.enabled){let s=ws(t,o.refresh,a.verifyRefreshToken,a.signAccessToken,a.signRefreshToken,r.tokenResponseConfig,c);n.use(s)}if(o.passwordReset?.enabled&&a.storeResetToken&&a.getResetToken&&a.deleteResetToken){let s=_s(t,o.passwordReset,a.storeResetToken,a.getResetToken,a.deleteResetToken,a.sendResetEmail);n.use(s)}if(o.passwordChange?.enabled){let s=gs(t,o.passwordChange);n.use(s)}if(o.passwordSet?.enabled){let s=ms(t,o.passwordSet,a.getMagicToken,a.deleteMagicToken);n.use(s)}if(o.sessions?.enabled&&r.sessionsTable){let s=As(t,o.sessions,r.sessionsTable);n.use(s)}if(o.magicLink?.enabled&&r.emailService?.isAvailable()&&a.storeMagicToken&&a.getMagicToken&&a.deleteMagicToken){let s=ds(t,o.magicLink,r.emailService,a.signAccessToken,a.signRefreshToken,a.createSession,a.storeMagicToken,a.getMagicToken,a.deleteMagicToken,r.appName);n.use(s)}if(o.me?.enabled){let s=us(t,o.me,r.schemaTables||{},r.schemaRelations||{},r.databaseUrl);n.use(s)}if(o.invite?.enabled&&r.emailService?.isAvailable()&&a.storeMagicToken){let s=gi(t,o.invite,r.emailService,a.storeMagicToken,r.appName,a.getMagicToken);n.use(s)}if(o.captcha?.enabled&&r.captchaService){let s=i_({captchaService:r.captchaService,logger:t.logger,basePath:o.captcha.route||"/auth/captcha"});n.use(s)}if(o.oauth?.enabled&&o.oauth.providers){let s=new Qe(o.oauth),f=d2(t,s,a.signAccessToken,a.signRefreshToken,a.createSession,a.saveSessionToDb,e,r.tokenResponseConfig,r.emailService,a.storeMagicToken,r.appName);n.use(f)}let i=f_(t,{route:"/auth/check",isPublic:!1,enabled:!0});if(n.use(i),r.admin?.impersonate?.enabled!==!1){let s=si(t,a.signAccessToken,a.signRefreshToken,a.createSession,a.saveSessionToDb,e);n.use(s)}if(r.admin?.changeUserId?.enabled!==!1){let s=ii(t,r.databaseUrl,r.schemaTables);n.use(s)}return n}var Qd=u(()=>{Cf();Ie();zl();Bl();s_();l_();Wl();Yl();Vl();Cl();wd();hd();u2();Rd();Md();zd();Bd();Jd();Cd();Wl();Yl();Vl();Cl();wd();hd();Rd();Md();zd();Bd();Jd();Cd();Bl();zl()});import{batch as Ss,createStore as B2}from"h-state";import{useEffectEvent as W2}from"react";function Y2(n){let r={};for(let t of Object.keys(n))r[t]={isPending:!1,data:null,error:null,code:null};return r}function J2(n,r){let{useStore:t}=B2(Y2(n),{_callEndpoint:(o)=>async(a,c)=>{if(!o[a])return;Ss(()=>{o[a].isPending=!0,o[a].error=null});try{let i=await r(a,c.payload);if(Ss(()=>{if(o[a].isPending=!1,o[a].code=i.code??null,i.isSuccess&&i.data!==void 0)o[a].data=i.data,o[a].error=null;else o[a].error=i.errors??null}),i.isSuccess)c.onAfterHandle?.(i.data??i);else c.onErrorHandle?.(i.errors??{message:"Request failed"},i.code)}catch(i){Ss(()=>{o[a].isPending=!1,o[a].error={message:i instanceof Error?i.message:"Unknown error"}}),c.onErrorHandle?.({message:i instanceof Error?i.message:"Unknown error"},null)}}});return function(){let a=t(),c=W2((i,s)=>{a._callEndpoint(i,s)}),e={};for(let i of Object.keys(n)){let s=(f)=>{c(i,f)};e[i]={state:a[i],start:s}}return e}}var Nd={$schema:"../schemas/nucleus.tables.schema.json",tables:[{table_name:"users",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"email",type:"varchar",length:255},{name:"password",type:"varchar",length:255},{name:"verified_at",type:"timestamp"},{name:"email_verification_token",type:"varchar",length:255},{name:"email_verification_token_expires_at",type:"timestamp"},{name:"email_verification_sent_at",type:"timestamp"},{name:"email_verification_attempts",type:"integer",default:0},{name:"last_login_at",type:"timestamp"},{name:"login_count",type:"integer",default:0},{name:"is_locked",type:"boolean",default:!1},{name:"locked_until",type:"timestamp"},{name:"failed_login_attempts",type:"integer",default:0},{name:"is_god",type:"boolean",default:!1}],indexes:[{columns:["email"],unique:!0},{columns:["email","is_active"]},{columns:["last_login_at"]},{columns:["is_locked","locked_until"]}]},{table_name:"profiles",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"first_name",type:"varchar",length:100,notNull:!0},{name:"last_name",type:"varchar",length:100,notNull:!0}],indexes:[{columns:["user_id"],unique:!0},{columns:["first_name","last_name"]}]},{table_name:"roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500}],indexes:[{columns:["name"],unique:!0}]},{table_name:"claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"action",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500},{name:"path",type:"varchar",length:200,notNull:!0},{name:"method",type:"varchar",length:10,notNull:!0}],indexes:[{columns:["action"],unique:!0},{columns:["path","method"]}]},{table_name:"user_roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}}],indexes:[{columns:["user_id"]},{columns:["role_id"]}],constraints:{unique:[{name:"unique_user_role",columns:["user_id","role_id"]}]}},{table_name:"role_claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}},{name:"claim_id",type:"uuid",notNull:!0,references:{table:"claims",column:"id",onDelete:"cascade"}},{name:"scope",type:"text"}],indexes:[{columns:["role_id"]},{columns:["claim_id"]},{columns:["role_id","claim_id","scope"]}]},{table_name:"files",feature_set:["storage"],add_base_columns:!0,is_form_data:!0,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:255,notNull:!0},{name:"original_name",type:"varchar",length:255,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["image","document","video","audio","profile_picture"]},{name:"path",type:"varchar",length:500,notNull:!0},{name:"size",type:"bigint",mode:"number",notNull:!0},{name:"mime_type",type:"varchar",length:100,notNull:!0},{name:"extension",type:"varchar",length:10,notNull:!0},{name:"uploaded_by",type:"uuid",references:{table:"users",column:"id"}}],indexes:[{columns:["type"]},{columns:["uploaded_by"]},{columns:["size"]}]},{table_name:"addresses",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"street",type:"varchar",length:255},{name:"city",type:"varchar",length:100},{name:"state",type:"varchar",length:50},{name:"zip",type:"varchar",length:20},{name:"country",type:"varchar",length:50,default:"US"},{name:"latitude",type:"decimal",precision:10,scale:8},{name:"longitude",type:"decimal",precision:11,scale:8},{name:"neighborhood",type:"varchar",length:100},{name:"apartment",type:"varchar",length:50},{name:"province",type:"varchar",length:100},{name:"district",type:"varchar",length:100},{name:"type",type:"varchar",length:50}],indexes:[{columns:["city","state"]},{columns:["latitude","longitude"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"phones",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["mobile","office","fax"]},{name:"number",type:"varchar",length:20,notNull:!0},{name:"country_code",type:"varchar",length:10,notNull:!0,default:"+1"},{name:"extension",type:"varchar",length:10}],indexes:[{columns:["number"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"notifications",feature_set:["authentication","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"user_id",type:"uuid",notNull:!0},{name:"title",type:"varchar",length:255,notNull:!0},{name:"body",type:"varchar",length:1000},{name:"entity_name",type:"varchar",length:100},{name:"entity_id",type:"uuid"},{name:"is_seen",type:"boolean",notNull:!0,default:!1},{name:"seen_at",type:"timestamptz"}],indexes:[{columns:["user_id","created_at"]},{columns:["is_seen"]}]},{table_name:"tenants",feature_set:["multi-tenant"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["main"],excluded_schemas:[],excluded_methods:[],columns:[{name:"subdomain",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_id",type:"uuid",notNull:!0},{name:"schema_name",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_name",type:"varchar",length:255},{name:"god_admin_email",type:"varchar",length:255}],indexes:[]},{table_name:"verifications",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"requirement_id",type:"uuid",notNull:!0,references:{table:"verificationRequirements",column:"id"}},{name:"verifier_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"signature_id",type:"uuid",references:{table:"files",column:"id"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"entity_id",type:"uuid",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"decision",type:"varchar",length:50,notNull:!0,default:"pending",enumValues:["approved","rejected","pending"]},{name:"reason",type:"text"},{name:"diff",type:"jsonb"}],indexes:[{columns:["requirement_id"]},{columns:["verifier_id"]},{columns:["entity_name","entity_id"]},{columns:["entity_name","entity_id","step_order"]},{columns:["decision"]}]},{table_name:"verificationRequirements",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"entity_id",type:"uuid"},{name:"entity_name",type:"varchar",length:100},{name:"verifier_type",type:"varchar",length:30,enumValues:["user","role","entity_creator"]},{name:"verifier_id",type:"uuid"},{name:"verifier_role",type:"varchar",length:50},{name:"is_signature_mandatory",type:"boolean",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"is_all_required",type:"boolean",notNull:!0,default:!1},{name:"connected_from_step_order",type:"integer"},{name:"position_x",type:"numeric"},{name:"position_y",type:"numeric"}],indexes:[{columns:["entity_id"]}]},{table_name:"verificationFlows",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"name",type:"varchar",length:255,notNull:!0},{name:"description",type:"text"},{name:"trigger_on",type:"varchar",length:50,notNull:!0,default:"update",enumValues:["create","update","delete","manual"]},{name:"trigger_fields",type:"jsonb"},{name:"is_draft",type:"boolean",notNull:!0,default:!0},{name:"published_at",type:"timestamptz"},{name:"viewport",type:"jsonb"}],indexes:[{columns:["entity_name"]},{columns:["entity_name","trigger_on"]},{columns:["is_draft"]}]},{table_name:"verificationSteps",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"node_id",type:"varchar",length:100,notNull:!0},{name:"node_type",type:"varchar",length:50,notNull:!0,default:"step",enumValues:["start","step","condition","notification","end"]},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"name",type:"varchar",length:255},{name:"description",type:"text"},{name:"position_x",type:"numeric",notNull:!0,default:0},{name:"position_y",type:"numeric",notNull:!0,default:0},{name:"width",type:"numeric"},{name:"height",type:"numeric"},{name:"style",type:"jsonb"},{name:"data",type:"jsonb"}],indexes:[{columns:["flow_id"]},{columns:["entity_name"]},{columns:["flow_id","node_id"],unique:!0},{columns:["entity_name","step_order"]}]},{table_name:"verificationEdges",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"edge_id",type:"varchar",length:100,notNull:!0},{name:"source_node_id",type:"varchar",length:100,notNull:!0},{name:"target_node_id",type:"varchar",length:100,notNull:!0},{name:"source_handle",type:"varchar",length:50},{name:"target_handle",type:"varchar",length:50},{name:"edge_type",type:"varchar",length:50,default:"default",enumValues:["default","conditional","success","failure"]},{name:"label",type:"varchar",length:255},{name:"condition",type:"jsonb"},{name:"style",type:"jsonb"},{name:"animated",type:"boolean",default:!1}],indexes:[{columns:["flow_id"]},{columns:["flow_id","edge_id"],unique:!0},{columns:["source_node_id"]},{columns:["target_node_id"]}]},{table_name:"verificationNotificationRules",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"step_node_id",type:"varchar",length:100},{name:"trigger",type:"varchar",length:50,notNull:!0,enumValues:["on_flow_started","on_step_reached","on_approved","on_rejected","on_flow_completed"]},{name:"channel",type:"varchar",length:20,notNull:!0,default:"portal",enumValues:["portal","email","both"]},{name:"title_template",type:"varchar",length:255},{name:"body_template",type:"text"},{name:"starts_at",type:"timestamptz"},{name:"expires_at",type:"timestamptz"}],indexes:[{columns:["flow_id"]},{columns:["flow_id","step_node_id"]},{columns:["trigger"]}]},{table_name:"verificationNotificationRecipients",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"rule_id",type:"uuid",notNull:!0},{name:"recipient_type",type:"varchar",length:20,notNull:!0,enumValues:["user","role","all_verifiers","step_verifier"]},{name:"recipient_user_id",type:"uuid"},{name:"recipient_role_id",type:"uuid"},{name:"channel",type:"varchar",length:20,notNull:!0,enumValues:["portal"]}],indexes:[{columns:["rule_id"]},{columns:["recipient_type"]},{columns:["channel"]}]},{table_name:"user_sessions",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"refresh_token_hash",type:"varchar",length:255},{name:"device_fingerprint",type:"varchar",length:255},{name:"device_name",type:"varchar",length:100},{name:"device_type",type:"varchar",length:50,enumValues:["desktop","mobile","tablet","unknown"]},{name:"browser_name",type:"varchar",length:50},{name:"browser_version",type:"varchar",length:20},{name:"os_name",type:"varchar",length:50},{name:"os_version",type:"varchar",length:20},{name:"ip_address",type:"varchar",length:45,notNull:!0},{name:"location_country",type:"varchar",length:100},{name:"location_city",type:"varchar",length:100},{name:"location_coordinates",type:"varchar",length:50},{name:"last_activity_at",type:"timestamptz",notNull:!0,defaultRaw:"now()"},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"revoked_at",type:"timestamptz"},{name:"revoked_reason",type:"varchar",length:100,enumValues:["user_logout","user_revoked","admin_revoked","security_concern","password_changed","expired","replaced"]},{name:"is_current",type:"boolean",notNull:!0,default:!1},{name:"login_method",type:"varchar",length:50,enumValues:["password","oauth_google","oauth_github","oauth_microsoft","magic_link","sso","api_key"]},{name:"remember_me",type:"boolean",notNull:!0,default:!1},{name:"trust_score",type:"integer",default:100},{name:"approval_status",type:"varchar",length:20,default:"approved",enumValues:["approved","pending","rejected"]},{name:"approval_token",type:"varchar",length:64},{name:"approval_requested_at",type:"timestamptz"},{name:"approval_responded_at",type:"timestamptz"}],indexes:[{columns:["user_id"]},{columns:["token_hash"],unique:!0},{columns:["refresh_token_hash"]},{columns:["user_id","is_active"]},{columns:["expires_at"]},{columns:["device_fingerprint"]},{columns:["ip_address"]},{columns:["last_activity_at"]},{columns:["approval_status"]},{columns:["approval_token"]}]},{table_name:"password_reset_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["expires_at"]}]},{table_name:"magic_link_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"email",type:"varchar",length:255,notNull:!0},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["email"]},{columns:["expires_at"]}]},{table_name:"audit_logs",feature_set:["audit"],add_base_columns:!1,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","DELETE","PATCH","TOGGLE","VERIFICATION"],columns:[{name:"id",type:"uuid",primaryKey:!0,defaultRaw:"gen_random_uuid()"},{name:"entity_id",type:"uuid"},{name:"entity_name",type:"text",notNull:!0},{name:"operation_type",type:"text",notNull:!0},{name:"user_id",type:"uuid"},{name:"ip_address",type:"text"},{name:"user_agent",type:"text"},{name:"summary",type:"text"},{name:"old_values",type:"jsonb"},{name:"new_values",type:"jsonb"},{name:"created_at",type:"timestamp",notNull:!0,defaultRaw:"now()"},{name:"path",type:"text"},{name:"query",type:"text"}],indexes:[{columns:["entity_id"]},{columns:["entity_name"]},{columns:["user_id"]},{columns:["created_at"]}]},{table_name:"oauth_accounts",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!1,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"provider",type:"varchar",length:50,notNull:!0,enumValues:["google","github","microsoft","discord","facebook","twitter","apple","custom"]},{name:"provider_account_id",type:"varchar",length:255,notNull:!0},{name:"provider_email",type:"varchar",length:255},{name:"provider_name",type:"varchar",length:255},{name:"provider_avatar_url",type:"text"},{name:"access_token",type:"text"},{name:"refresh_token",type:"text"},{name:"token_expires_at",type:"timestamp"},{name:"scope",type:"text"},{name:"raw_profile",type:"jsonb"},{name:"is_primary",type:"boolean",notNull:!0,default:!1},{name:"last_used_at",type:"timestamp"}],indexes:[{columns:["user_id"]},{columns:["provider","provider_account_id"],unique:!0},{columns:["provider_email"]},{columns:["user_id","provider"]}],constraints:{unique:[{name:"unique_provider_account",columns:["provider","provider_account_id"]}]}}]};var Ms={login:{key:"LOGIN",method:"POST",defaultRoute:"/auth/login",defaultIsPublic:!0,_payload:void 0,_success:void 0,_error:void 0},register:{key:"REGISTER",method:"POST",defaultRoute:"/auth/register",defaultIsPublic:!0,_payload:void 0,_success:void 0,_error:void 0},logout:{key:"LOGOUT",method:"POST",defaultRoute:"/auth/logout",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},refresh:{key:"REFRESH",method:"POST",defaultRoute:"/auth/refresh",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},me:{key:"ME",method:"GET",defaultRoute:"/auth/me",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordChange:{key:"PASSWORD_CHANGE",method:"POST",defaultRoute:"/auth/password-change",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordSet:{key:"PASSWORD_SET",method:"POST",defaultRoute:"/auth/password-set",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordReset:{key:"PASSWORD_RESET_REQUEST",method:"POST",defaultRoute:"/auth/password-reset",defaultIsPublic:!0,subEndpoints:[{key:"PASSWORD_RESET_REQUEST",method:"POST",suffix:"/request",_payload:void 0,_success:void 0,_error:void 0},{key:"PASSWORD_RESET_CONFIRM",method:"POST",suffix:"/confirm",_payload:void 0,_success:void 0,_error:void 0}]},sessions:{key:"SESSIONS",method:"GET",defaultRoute:"/auth/sessions",defaultIsPublic:!1,subEndpoints:[{key:"SESSIONS",method:"GET",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_CURRENT",method:"GET",suffix:"/current",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_STATS",method:"GET",suffix:"/stats",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_PENDING",method:"GET",suffix:"/pending",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REVOKE",method:"DELETE",suffix:"/:sessionId",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REVOKE_ALL",method:"DELETE",suffix:"/all",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_APPROVE",method:"POST",suffix:"/approve",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REJECT",method:"POST",suffix:"/reject",_payload:void 0,_success:void 0,_error:void 0}]},magicLink:{key:"MAGIC_LINK",method:"POST",defaultRoute:"/auth/magic-link",defaultIsPublic:!0,subEndpoints:[{key:"MAGIC_LINK",method:"POST",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"MAGIC_LINK_VERIFY",method:"GET",suffix:"/verify",routeKey:"verifyRoute",_payload:void 0,_success:void 0,_error:void 0}]},invite:{key:"INVITE",method:"POST",defaultRoute:"/auth/invite",defaultIsPublic:!1,subEndpoints:[{key:"INVITE",method:"POST",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"INVITE_VERIFY",method:"POST",suffix:"/verify",_payload:void 0,_success:void 0,_error:void 0}]},emailVerification:{key:"VERIFY_EMAIL",method:"GET",defaultRoute:"/verify-email",defaultIsPublic:!0,subEndpoints:[{key:"VERIFY_EMAIL",method:"GET",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"RESEND_VERIFICATION",method:"POST",suffix:"",routeKey:"resendRoute",defaultRoute:"/resend-verification",_payload:void 0,_success:void 0,_error:void 0}]},captcha:{key:"CAPTCHA",method:"GET",defaultRoute:"/auth/captcha",defaultIsPublic:!0,subEndpoints:[{key:"CAPTCHA_GENERATE",method:"GET",suffix:"/generate",_payload:void 0,_success:void 0,_error:void 0},{key:"CAPTCHA_VALIDATE",method:"POST",suffix:"/validate",_payload:void 0,_success:void 0,_error:void 0}]},oauth:{key:"OAUTH_PROVIDERS",method:"GET",defaultRoute:"/auth/oauth/providers",defaultIsPublic:!0,subEndpoints:[{key:"OAUTH_PROVIDERS",method:"GET",suffix:"/providers",_payload:void 0,_success:void 0,_error:void 0},{key:"OAUTH_REDIRECT",method:"GET",suffix:"/:provider",_payload:void 0,_success:void 0,_error:void 0},{key:"OAUTH_ACCOUNTS",method:"GET",suffix:"/accounts",_payload:void 0,_success:void 0,_error:void 0},{key:"OAUTH_UNLINK",method:"DELETE",suffix:"/unlink/:provider",_payload:void 0,_success:void 0,_error:void 0}]}},xd={healthCheck:{key:"MONITORING_HEALTH_CHECK",method:"GET",suffix:"/health",_payload:void 0,_success:void 0,_error:void 0},getSettings:{key:"MONITORING_GET_SETTINGS",method:"GET",suffix:"/settings",_payload:void 0,_success:void 0,_error:void 0},changeSettings:{key:"MONITORING_CHANGE_SETTINGS",method:"PATCH",suffix:"/settings",_payload:void 0,_success:void 0,_error:void 0},getLogs:{key:"MONITORING_GET_LOGS",method:"GET",suffix:"/logs",_payload:void 0,_success:void 0,_error:void 0}};var L2=["profiles","addresses","phones","files","users","roles","claims","user_roles","role_claims","audit_logs"],V2=Nd.tables.filter((n)=>L2.includes(n.table_name));function la(n){return n.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/[\s-]+/g,"_").toUpperCase()}function C2(n){return n.replace(/_([a-z])/g,(r,t)=>t.toUpperCase())}function Ds(n){if(n.endsWith("ies"))return`${n.slice(0,-3)}y`;if(n.endsWith("ses"))return`${n.slice(0,-2)}`;if(n.endsWith("s"))return n.slice(0,-1);return n}function Dt(n,r){let t=la(n),o=la(Ds(n));switch(r){case"GET":return`GET_${t}`;case"POST":return`ADD_${o}`;case"PUT":return`UPDATE_${o}`;case"PATCH":return`PATCH_${o}`;case"DELETE":return`DELETE_${o}`}}function fa(n,r){let t=la(n);switch(r){case"POST":return`BULK_ADD_${t}`;case"PUT":return`BULK_UPDATE_${t}`;case"DELETE":return`BULK_DELETE_${t}`}}function eo(n,r){if(!n.excluded_methods)return!1;let t={GET:"GET",POST:"POST",PUT:"PUT",PATCH:"PATCH",DELETE:"DELETE"};return n.excluded_methods.includes(t[r])}function qd(n){let r={};for(let t of n.entities){let o=t.table_name,a=`/${o}`;if(!eo(t,"GET")){r[Dt(o,"GET")]={method:"GET",path:a,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0};let c=la(Ds(o));r[`GET_${c}_BY_ID`]={method:"GET",path:`${a}/:id`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0},r[`GET_${la(o)}_DISTINCT`]={method:"GET",path:`${a}/distinct/:field`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0}}if(!eo(t,"POST"))r[Dt(o,"POST")]={method:"POST",path:a,isPublic:t.is_public?.POST??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!eo(t,"PUT"))r[Dt(o,"PUT")]={method:"PUT",path:`${a}/:id`,isPublic:t.is_public?.PUT??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!eo(t,"PATCH"))r[Dt(o,"PATCH")]={method:"PATCH",path:`${a}/:id`,isPublic:t.is_public?.PATCH??!1,_payload:void 0,_success:void 0,_error:void 0};if(!eo(t,"DELETE"))r[Dt(o,"DELETE")]={method:"DELETE",path:`${a}/:id`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0};if(t.bulk_endpoints_enabled){if(!eo(t,"POST"))r[fa(o,"POST")]={method:"POST",path:`${a}/bulk`,isPublic:t.is_public?.POST??!1,_payload:void 0,_success:void 0,_error:void 0};if(!eo(t,"PUT"))r[fa(o,"PUT")]={method:"PUT",path:`${a}/bulk`,isPublic:t.is_public?.PUT??!1,_payload:void 0,_success:void 0,_error:void 0};if(!eo(t,"DELETE"))r[fa(o,"DELETE")]={method:"DELETE",path:`${a}/bulk`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0}}}return r}function Fd(n){let r={},t=n.authentication;if(!t?.enabled)return r;for(let[o,a]of Object.entries(Ms)){let c=t[o];if(!c?.enabled)continue;let e=c.route||a.defaultRoute,i=c.isPublic??a.defaultIsPublic;if("subEndpoints"in a&&a.subEndpoints)for(let s of a.subEndpoints){let f="routeKey"in s&&s.routeKey&&c[s.routeKey]?String(c[s.routeKey]):("defaultRoute"in s)&&s.defaultRoute?String(s.defaultRoute):`${e}${s.suffix}`;r[s.key]={method:s.method,path:f,isPublic:s.key==="MAGIC_LINK_VERIFY"?!0:i,_payload:s._payload,_success:s._success,_error:s._error}}else if("_payload"in a)r[a.key]={method:a.method,path:e,isPublic:i,_payload:a._payload,_success:a._success,_error:a._error}}return r}function jd(){let n={};for(let r of V2){let t=r.table_name,a=`/${C2(t)}`,c=t==="files";n[Dt(t,"GET")]={method:"GET",path:a,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0};let e=la(Ds(t));if(n[`GET_${e}_BY_ID`]={method:"GET",path:`${a}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[Dt(t,"POST")]={method:"POST",path:a,isPublic:!1,isFormData:c,_payload:void 0,_success:void 0,_error:void 0},n[Dt(t,"PUT")]={method:"PUT",path:`${a}/:id`,isPublic:!1,isFormData:c,_payload:void 0,_success:void 0,_error:void 0},n[Dt(t,"PATCH")]={method:"PATCH",path:`${a}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[Dt(t,"DELETE")]={method:"DELETE",path:`${a}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},r.bulk_endpoints_enabled)n[fa(t,"POST")]={method:"POST",path:`${a}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[fa(t,"PUT")]={method:"PUT",path:`${a}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},n[fa(t,"DELETE")]={method:"DELETE",path:`${a}/bulk`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0}}return n}function pd(n){let r={},t=n.liveMonitoring;if(!t?.enabled)return r;let o=t.basePath||"/monitoring";for(let a of Object.values(xd))r[a.key]={method:a.method,path:`${o}${a.suffix}`,isPublic:!1,_payload:a._payload,_success:a._success,_error:a._error};return r}function Kd(n){let r={};if(!n.authentication?.enabled)return r;return r.ADMIN_IMPERSONATE={method:"POST",path:"/auth/admin/impersonate",isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},r.ADMIN_IMPERSONATE_STOP={method:"POST",path:"/auth/admin/impersonate/stop",isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},r.ADMIN_CHANGE_USER_ID={method:"POST",path:"/auth/admin/change-user-id",isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},r}function Q2(n,r){let t=qd(n),o=Fd(n),a=Kd(n),c=jd(),e=pd(n);return{...t,...o,...a,...c,...e,...r??{}}}Vs();import{randomUUID as x2}from"crypto";var q2={timeout:30000,retries:0,retryDelay:1000,debug:!1};class cc{config;logger;constructor(n={}){this.config={...q2,...n},this.logger=new Cr({service:"ServerFetch",prettyPrint:this.config.debug,colorize:this.config.debug,auditEnabled:!1})}buildUrl(n){if(n.startsWith("http://")||n.startsWith("https://"))return n;return this.config.baseUrl?`${this.config.baseUrl}${n}`:n}buildHeaders(n){let r=new Headers;if(this.config.defaultHeaders)for(let[t,o]of Object.entries(this.config.defaultHeaders))r.set(t,o);if(n)if(n instanceof Headers)n.forEach((t,o)=>{r.set(o,t)});else if(Array.isArray(n))for(let[t,o]of n)r.set(t,o);else for(let[t,o]of Object.entries(n))r.set(t,o);return r}parseResponseHeaders(n){let r={};if(n.forEach((t,o)=>{if(o.toLowerCase()==="set-cookie"){let a=r[o];r[o]=a?`${a}, ${t}`:t}else r[o]=t}),typeof n.getSetCookie==="function"){let t=n.getSetCookie();if(t.length>0)r["set-cookie"]=t.join(", ")}return r}async executeWithTimeout(n,r,t){let o=new AbortController,a=setTimeout(()=>o.abort(),r);try{return await Promise.race([n,new Promise((e,i)=>{o.signal.addEventListener("abort",()=>{i(Error(`Request timeout after ${r}ms`))})})])}finally{clearTimeout(a)}}async fetch(n){let r=x2(),t=performance.now(),o=this.buildUrl(n.url),a=this.buildHeaders(n.headers),c=n.timeout??this.config.timeout??30000,e=n.retries??this.config.retries??0,i=n.retryDelay??this.config.retryDelay??1000,s;if(n.body)if(typeof n.body==="object"&&!(n.body instanceof FormData)&&!(n.body instanceof URLSearchParams)&&!(n.body instanceof Blob)&&!(n.body instanceof ArrayBuffer)){if(s=JSON.stringify(n.body),!a.has("content-type"))a.set("content-type","application/json")}else s=n.body;this.logger.debug(`[${r}] ${n.method} ${o}`,{method:n.method,url:o,hasBody:!!s});let f=null,l=0;while(l<=e)try{let b=await this.executeWithTimeout(fetch(o,{method:n.method,headers:a,body:s}),c,r),w=performance.now()-t,h=this.parseResponseHeaders(b.headers),_,g,R=await b.text();if(R)try{let M=JSON.parse(R);if(b.ok)_=M;else g=M}catch{if(!b.ok)g={message:R||b.statusText}}else if(!b.ok)g={message:b.statusText};let k={isSuccess:b.ok,response:_,errors:g,code:b.status,headers:h,durationMs:w,requestId:r,createdAt:new Date};if(b.ok)this.logger.info(`[${r}] ${n.method} ${o} ${b.status}`,{method:n.method,url:o,statusCode:b.status,durationMs:Math.round(w)});else this.logger.warn(`[${r}] ${n.method} ${o} ${b.status}`,{method:n.method,url:o,statusCode:b.status,durationMs:Math.round(w),error:g});return k}catch(b){if(f=b instanceof Error?b:Error(String(b)),l++,l<=e)this.logger.warn(`[${r}] Retry ${l}/${e} after error`,{method:n.method,url:o,error:f.message,attempt:l,retries:e}),await new Promise((w)=>setTimeout(w,i))}let d=performance.now()-t;return this.logger.error(`[${r}] ${n.method} ${o} failed`,f,{method:n.method,url:o,durationMs:Math.round(d),attempts:l}),{isSuccess:!1,response:void 0,errors:{message:f?.message||"Unknown error"},code:null,headers:{},durationMs:d,requestId:r,createdAt:new Date}}async get(n,r){return this.fetch({...r,url:n,method:"GET"})}async post(n,r,t){return this.fetch({...t,url:n,method:"POST",body:r})}async put(n,r,t){return this.fetch({...t,url:n,method:"PUT",body:r})}async patch(n,r,t){return this.fetch({...t,url:n,method:"PATCH",body:r})}async delete(n,r){return this.fetch({...r,url:n,method:"DELETE"})}}var F2=new cc;var j2={accessToken:"access_token",refreshToken:"refresh_token",sessionToken:"session_token"};function p2(n){let r=[],t="";for(let o=0;o<n.length;o++){let a=n[o];if(a===","){let c=n.slice(o+1).trimStart();if(/^[a-zA-Z0-9_-]+=/.test(c)){r.push(t.trim()),t="";continue}}t+=a}if(t.trim())r.push(t.trim());return r}function K2(n,r){let t={},o=["x-forwarded-for","x-real-ip","user-agent","accept-language","x-request-id","x-client-ip","cf-connecting-ip","true-client-ip"];for(let s of o){let f=n.get(s);if(f)t[s]=f}if(!t["user-agent"])t["user-agent"]="Nucleus-ServerAction/1.0";let a=n.get(`x-${r.accessToken}`),c=n.get(`x-${r.refreshToken}`),e=n.get(`x-${r.sessionToken}`);if(a)t[`x-${r.accessToken}`]=a;if(c)t[`x-${r.refreshToken}`]=c;if(e)t[`x-${r.sessionToken}`]=e;let i=n.get("cookie");if(i)t.cookie=i;return t}function v2(n){return n.replace(/_([a-z])/g,(r,t)=>t.toUpperCase())}function Cs(n){let r={};for(let[t,o]of Object.entries(n)){let a=t.startsWith("_")?t:v2(t);if(o instanceof Date)r[a]=o.toISOString();else if(o&&typeof o==="object"&&!Array.isArray(o))r[a]=Cs(o);else r[a]=o}return r}function T2(n,r){let t=new URLSearchParams,o=(c,e)=>{if(e===void 0||e===null)return;if(Array.isArray(e))for(let i of e)o(`${c}[]`,i);else if(e instanceof Date)t.append(c,e.toISOString());else if(typeof e==="object")for(let[i,s]of Object.entries(e))o(`${c}[${i}]`,s);else t.append(c,String(e))};for(let[c,e]of Object.entries(r))o(c,e);let a=t.toString();if(!a)return n;return n.includes("?")?`${n}&${a}`:`${n}?${a}`}function I2(n,r,t,o){let a={...j2,...r.tokenNames},c=new cc({baseUrl:r.baseUrl,debug:r.debug,timeout:30000,retries:0});return async function(i,s){let f=n[i];if(!f)return{isSuccess:!1,errors:{message:`Endpoint "${i}" not found`},code:404};let l=await t(),d=await o(),b={};d.forEach((k,M)=>{b[M]=k});let w=K2(d,a),h=f.path,_;if(s&&typeof s==="object"&&!(s instanceof FormData)){let k=s;for(let[M,C]of Object.entries(k))if(C!=null){if(M.startsWith("_"))h=h.replace(`:${M.substring(1)}`,String(C));else if(M==="id"&&h.includes(":id"))h=h.replace(":id",String(C))}}if(f.method==="GET"&&s&&typeof s==="object")h=T2(h,s);else if(s!==void 0){if(f.isFormData&&s instanceof FormData)_=s;else if(Array.isArray(s)){if(_=s.map((k)=>k&&typeof k==="object"?Cs(k):k),!w["content-type"])w["content-type"]="application/json"}else if(_=Cs(s),!w["content-type"])w["content-type"]="application/json"}let g=await c.fetch({url:h,method:f.method,headers:w,body:_});if(g.headers["set-cookie"])try{let k=g.headers["set-cookie"],M=p2(k);for(let C of M){let[N,...m]=C.split(";");if(!N)continue;let[A,H]=N.split("=");if(A&&H){let D={};for(let E of m){let[S,z]=E.trim().split("=");if(!S)continue;let U=S.toLowerCase();if(U==="path")D.path=z;else if(U==="domain")D.domain=z;else if(U==="max-age")D.maxAge=Number(z);else if(U==="expires"&&z)D.expires=new Date(z);else if(U==="httponly")D.httpOnly=!0;else if(U==="secure")D.secure=!0;else if(U==="samesite")D.sameSite=z}l.set(A.trim(),H.trim(),D)}}}catch(k){console.warn("[ServerFactory] Failed to process Set-Cookie headers:",k instanceof Error?k.message:String(k))}let R=g.response;if(g.isSuccess&&R&&typeof R==="object"&&!Array.isArray(R)){let k=R;if("success"in k&&!("data"in k)){let{success:M,message:C,error:N,...m}=k;R={success:M,...C!==void 0?{message:C}:{},...N!==void 0?{error:N}:{},...Object.keys(m).length>0?{data:m}:{}}}}return{isSuccess:g.isSuccess,data:R,errors:g.errors,code:g.code,message:g.isSuccess?void 0:g.errors?.message}}}import{useEffect as Zd,useEffectEvent as Lo,useRef as ec}from"react";import{batch as Z2,createStore as y2}from"h-state";var nh={connection:{status:"disconnected",clientId:null,subscribedTopics:[],error:null,reconnectAttempt:0},events:[],maxEvents:100},{useStore:Qs}=y2(nh,{setConnectionStatus:(n)=>(r)=>{n.connection.status=r},setClientId:(n)=>(r)=>{n.connection.clientId=r},setSubscribedTopics:(n)=>(r)=>{n.connection.subscribedTopics=r},setError:(n)=>(r)=>{n.connection.error=r},setReconnectAttempt:(n)=>(r)=>{n.connection.reconnectAttempt=r},addEvent:(n)=>(r)=>{let t=[r,...n.events];n.events=t.slice(0,n.maxEvents)},clearEvents:(n)=>()=>{n.events=[]},reset:(n)=>()=>{Z2(()=>{n.connection.status="disconnected",n.connection.clientId=null,n.connection.subscribedTopics=[],n.connection.error=null,n.connection.reconnectAttempt=0,n.events=[]})}});function rh(n){if(n.wsUrl){let c=n.wsUrl.replace(/\/$/,""),e=n.wsPath||"/api/events/subscribe",i=(n.topics||["*"]).join(",");return`${c}${e}?userId=${encodeURIComponent(n.userId)}&topics=${encodeURIComponent(i)}`}if(typeof window>"u")return"";let r=window.location.protocol==="https:"?"wss:":"ws:",t=window.location.host,o=n.wsPath||"/api/events/subscribe",a=(n.topics||["*"]).join(",");return`${r}//${t}${o}?userId=${encodeURIComponent(n.userId)}&topics=${encodeURIComponent(a)}`}var th=0;function oh(n){let r=Qs(),t=ec(null),o=ec(null),a=ec(null),c=ec(!1),e=ec(n);e.current=n;let i=n.autoReconnect??!0,s=n.maxReconnectAttempts??10,f=n.reconnectBaseDelay??1000,l=n.reconnectMaxDelay??30000,d=n.heartbeatInterval??30000,b=n.debug??!1,w=(...H)=>{if(b)console.log("[usePubSub]",...H)},h=()=>{if(o.current)clearInterval(o.current),o.current=null},_=()=>{if(a.current)clearTimeout(a.current),a.current=null},g=(H)=>{h(),o.current=setInterval(()=>{if(H.readyState===WebSocket.OPEN)H.send(JSON.stringify({type:"ping"}))},d)},R=Lo((H)=>{try{let D=JSON.parse(H.data);switch(D.type){case"connected":r.setConnectionStatus("connected"),r.setClientId(D.clientId),r.setSubscribedTopics(D.subscribedTopics),r.setReconnectAttempt(0),r.setError(null),w("Connected, clientId:",D.clientId);break;case"subscribed":r.setSubscribedTopics(D.topics),w("Subscribed to:",D.topics);break;case"event":{let E={id:`evt_${Date.now()}_${th++}`,topic:D.topic,data:D.data,timestamp:D.timestamp,receivedAt:Date.now(),messageId:D.messageId,isRedelivery:D.isRedelivery};if(r.addEvent(E),D.messageId&&t.current?.readyState===WebSocket.OPEN)t.current.send(JSON.stringify({type:"ack",messageId:D.messageId}));break}case"pong":break;case"error":r.setError(Error(D.error)),w("Server error:",D.error);break}}catch{w("Failed to parse message")}}),k=Lo((H)=>{if(c.current)return;if(!i)return;if(H>=s){r.setConnectionStatus("disconnected"),r.setError(Error("Max reconnection attempts reached")),w("Max reconnect attempts reached");return}let D=Math.min(f*2**H,l);w(`Reconnecting in ${D}ms (attempt ${H+1}/${s})`),r.setConnectionStatus("reconnecting"),r.setReconnectAttempt(H+1),_(),a.current=setTimeout(()=>{if(!c.current)M()},D)}),M=Lo(()=>{if(c.current)return;if(t.current?.readyState===WebSocket.OPEN)return;if(!e.current.userId)return;if(t.current){if(t.current.onopen=null,t.current.onmessage=null,t.current.onerror=null,t.current.onclose=null,t.current.readyState===WebSocket.OPEN||t.current.readyState===WebSocket.CONNECTING)t.current.close();t.current=null}let H=rh(e.current);if(!H)return;r.setConnectionStatus("connecting"),r.setError(null),w("Connecting to:",H);let D=new WebSocket(H);t.current=D,D.onopen=()=>{w("WebSocket opened"),g(D)},D.onmessage=R,D.onerror=()=>{w("WebSocket error"),r.setError(Error("WebSocket connection error"))},D.onclose=(E)=>{if(w("WebSocket closed",E.code,E.reason),h(),r.setConnectionStatus("disconnected"),r.setClientId(null),!c.current&&E.code!==4001){let S=r.connection.reconnectAttempt;k(S)}}}),C=Lo(()=>{if(h(),_(),t.current){if(t.current.onopen=null,t.current.onmessage=null,t.current.onerror=null,t.current.onclose=null,t.current.readyState===WebSocket.OPEN||t.current.readyState===WebSocket.CONNECTING)t.current.close();t.current=null}r.setConnectionStatus("disconnected"),r.setClientId(null)}),N=Lo((H)=>{if(t.current?.readyState!==WebSocket.OPEN)return;t.current.send(JSON.stringify({type:"subscribe",topics:H}))}),m=Lo((H)=>{if(t.current?.readyState!==WebSocket.OPEN)return;t.current.send(JSON.stringify({type:"unsubscribe",topics:H}))}),A=Lo((H)=>{return r.events.filter((D)=>D.topic===H)});return Zd(()=>{if(c.current=!1,n.userId)M();return()=>{c.current=!0,C()}},[n.userId]),Zd(()=>{if(r.connection.status==="connected"&&n.topics)N(n.topics)},[n.topics?.join(",")]),{isConnected:r.connection.status==="connected",isConnecting:r.connection.status==="connecting"||r.connection.status==="reconnecting",clientId:r.connection.clientId,subscribedTopics:r.connection.subscribedTopics,events:r.events,error:r.connection.error,reconnectAttempt:r.connection.reconnectAttempt,connect:M,disconnect:C,subscribe:N,unsubscribe:m,clearEvents:r.clearEvents,getEventsByTopic:A}}import{randomUUID as kE}from"crypto";var Fs=Rr(tu(),1);import{Elysia as ge,NotFoundError as ua}from"elysia";var vr,io,Qt=typeof Bun<"u"&&!!Bun.file;function da(){if(vr||(vr=process.getBuiltinModule("fs/promises")),io||(io=process.getBuiltinModule("path")),!io){console.warn("@elysiajs/static require path to be available.");return}return[vr,io]}async function ou(n){if(vr||da(),Qt){let r=new Bun.Glob("**/*.html"),t=[];for await(let o of r.scan(n))t.push(io.join(n,o));return t}return[]}async function Gs(n){if(vr||da(),Qt){let t=new Bun.Glob("**/*"),o=[];for await(let a of t.scan(n))o.push(io.join(n,a));return o}let r=await vr.readdir(n).catch(()=>[]);return(await Promise.all(r.map(async(t)=>{let o=n+io.sep+t,a=await vr.stat(o).catch(()=>null);return a?a.isDirectory()?await Gs(o):[io.resolve(n,o)]:[]}))).flat()}function Os(n){return vr||da(),vr.stat(n).then(()=>!0,()=>!1)}class Ns{constructor(n=250,r=10800){this.max=n,this.ttl=r,this.map=new Map}get(n){let r=this.map.get(n);if(r)return r[1]<=Date.now()?void this.delete(n):(this.map.delete(n),this.map.set(n,r),r[0])}set(n,r){if(this.interval||(this.interval=setInterval(()=>{let t=Date.now();for(let[o,a]of this.map)a[1]<=t&&this.map.delete(o)},this.ttl)),this.map.has(n))this.map.delete(n);else if(this.map.size>=this.max){let t=this.map.keys().next().value;t!==void 0&&this.delete(t)}this.map.set(n,[r,Date.now()+this.ttl*1000])}delete(n){this.map.get(n)&&this.map.delete(n)}clear(){this.map.clear()}size(){return this.map.size}[Symbol.dispose](){this.interval&&clearInterval(this.interval)}}function xs(n,r,t){if(n["cache-control"]&&/no-cache|no-store/.test(n["cache-control"]))return!1;if("if-none-match"in n){let o=n["if-none-match"];return o==="*"?!0:o===null||typeof r!="string"?!1:o===r}if(n["if-modified-since"]){let o=n["if-modified-since"];try{return vr.stat(t).then((a)=>{if(a.mtime!==void 0&&a.mtime.getTime()<=Date.parse(o))return!0})}catch{}}return!1}var be;function ic(n){return Qt?Bun.file(n):(vr||da(),vr.readFile(n))}async function qs(n){return Qt?new Bun.CryptoHasher("md5").update(await n.arrayBuffer()).digest("base64"):(be||(be=process.getBuiltinModule("crypto")),be?be.createHash("md5").update(n).digest("base64"):void console.warn("[@elysiajs/static] crypto is required to generate etag."))}var sc=(n)=>{if(!n)return!1;for(let r in n)return!0;return!1};async function au({assets:n="public",prefix:r="/public",staticLimit:t=1024,alwaysStatic:o=!1,ignorePatterns:a=[".DS_Store",".git",".env"],headers:c,maxAge:e=86400,directive:i="public",etag:s=!0,extension:f=!0,indexHTML:l=!0,decodeURI:d,silent:b}={}){if(typeof process>"u"||typeof process.getBuiltinModule>"u")return b||console.warn("[@elysiajs/static] require process.getBuiltinModule. Static plugin is disabled"),new ge;let w=da();if(!w)return new ge;let[h,_]=w,g=_.sep!=="/"?(m)=>m.replace(/\\/g,"/"):(m)=>m,R=new Ns;r===_.sep&&(r="");let k=_.resolve(n),M=a.length?(m)=>a.find((A)=>typeof A=="string"?A.includes(m):A.test(m)):()=>!1,C=new ge({name:"static",seed:r});if(o){let m=await Gs(_.resolve(n));if(m.length<=t)for(let A of m){let H=function({headers:U}){if(z){let K=xs(U,z,A);if(K===!0)return new Response(null,{status:304,headers:sc(c)?c:void 0});if(K!==!1){let B=R.get(E);return B?B.clone():K.then((L)=>{if(L)return new Response(null,{status:304,headers:c||void 0});let Y=new Response(S,{headers:Object.assign({"Cache-Control":e?`${i}, max-age=${e}`:i},c,z?{Etag:z}:{})});return R.set(r,Y),Y.clone()})}}let P=R.get(E);if(P)return P.clone();let p=new Response(S,{headers:Object.assign({"Cache-Control":e?`${i}, max-age=${e}`:i},c,z?{Etag:z}:{})});return R.set(E,p),p.clone()};var N=H;if(!A||M(A))continue;let D=A.replace(k,"");d&&(D=Fs.default(D)??D);let E=g(_.join(r,D));if(Qt&&A.endsWith(".html")){let U=await import(A);C.get(E,U.default),l&&E.endsWith("/index.html")&&C.get(E.replace("/index.html",""),U.default);continue}f||(E=g(E.slice(0,E.lastIndexOf("."))));let S=Qt?ic(A):await ic(A);if(!S)return b||console.warn(`[@elysiajs/static] Failed to load file: ${A}`),new ge;let z=await qs(S);C.get(E,s?H:new Response(S,sc(c)?{headers:c}:void 0)),l&&E.endsWith("/index.html")&&C.get(E.replace("/index.html",""),s?H:new Response(S,sc(c)?{headers:c}:void 0))}return C}if(!(`GET_${r}/*`in C.routeTree)){if(Qt){let m=await ou(_.resolve(n));for(let A of m){if(!A||M(A))continue;let H=A.replace(k,""),D=g(_.join(r,H)),E=await import(A);C.get(D,E.default),l&&D.endsWith("/index.html")&&C.get(D.replace("/index.html",""),E.default)}}C.onError(()=>{}).get(`${r.endsWith("/")?r.slice(0,-1):r}/*`,async({params:m,headers:A})=>{let H=g(_.join(n,d?Fs.default(m["*"])??m["*"]:m["*"]));if(M(H))throw new ua;let D=R.get(H);if(D)return D.clone();try{let E=await h.stat(H).catch(()=>null);if(!E)throw new ua;if(!l&&E.isDirectory())throw new ua;let S;if(!Qt&&l){let P=_.join(H,"index.html"),p=R.get(P);if(p)return p.clone();await Os(P)&&(S=await ic(P))}if(!S&&!E.isDirectory()&&await Os(H))S=await ic(H);else throw new ua;if(!s)return new Response(S,sc(c)?{headers:c}:void 0);let z=await qs(S);if(z&&await xs(A,z,H))return new Response(null,{status:304});let U=new Response(S,{headers:Object.assign({"Cache-Control":e?`${i}, max-age=${e}`:i},c,z?{Etag:z}:{})});return R.set(H,U),U.clone()}catch(E){throw E instanceof ua?E:(b||console.error("[@elysiajs/static]",E),new ua)}})}return C}Of();Yf();import{pushSchema as EE}from"drizzle-kit/api";import{and as ie,eq as $r}from"drizzle-orm";import{drizzle as SE}from"drizzle-orm/node-postgres";import{pgSchema as ME}from"drizzle-orm/pg-core";import DE from"elysia";var qe=[{table_name:"users",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"email",type:"varchar",length:255},{name:"password",type:"varchar",length:255},{name:"verified_at",type:"timestamp"},{name:"last_login_at",type:"timestamp"},{name:"login_count",type:"integer",default:0},{name:"is_locked",type:"boolean",default:!1},{name:"locked_until",type:"timestamp"},{name:"failed_login_attempts",type:"integer",default:0},{name:"is_god",type:"boolean",default:!1}],indexes:[{columns:["email"],unique:!0},{columns:["email","is_active"]},{columns:["last_login_at"]},{columns:["is_locked","locked_until"]}]},{table_name:"profiles",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"first_name",type:"varchar",length:100,notNull:!0},{name:"last_name",type:"varchar",length:100,notNull:!0}],indexes:[{columns:["user_id"],unique:!0},{columns:["first_name","last_name"]}]},{table_name:"roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500}],indexes:[{columns:["name"],unique:!0}]},{table_name:"claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"action",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500},{name:"path",type:"varchar",length:200,notNull:!0},{name:"method",type:"varchar",length:10,notNull:!0}],indexes:[{columns:["action"],unique:!0},{columns:["path","method"]}]},{table_name:"user_roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}}],indexes:[{columns:["user_id"]},{columns:["role_id"]}],constraints:{unique:[{name:"unique_user_role",columns:["user_id","role_id"]}]}},{table_name:"role_claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}},{name:"claim_id",type:"uuid",notNull:!0,references:{table:"claims",column:"id",onDelete:"cascade"}},{name:"scope",type:"text"}],indexes:[{columns:["role_id"]},{columns:["claim_id"]},{columns:["role_id","claim_id","scope"]}]},{table_name:"files",feature_set:["storage"],add_base_columns:!0,is_form_data:!0,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"name",type:"varchar",length:255,notNull:!0},{name:"original_name",type:"varchar",length:255,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["image","document","video","audio","profile_picture"]},{name:"path",type:"varchar",length:500,notNull:!0},{name:"size",type:"bigint",mode:"number",notNull:!0},{name:"mime_type",type:"varchar",length:100,notNull:!0},{name:"extension",type:"varchar",length:10,notNull:!0},{name:"uploaded_by",type:"uuid",references:{table:"users",column:"id"}}],indexes:[{columns:["type"]},{columns:["uploaded_by"]},{columns:["size"]}]},{table_name:"addresses",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"street",type:"varchar",length:255},{name:"city",type:"varchar",length:100},{name:"state",type:"varchar",length:50},{name:"zip",type:"varchar",length:20},{name:"country",type:"varchar",length:50,default:"US"},{name:"latitude",type:"decimal",precision:10,scale:8},{name:"longitude",type:"decimal",precision:11,scale:8},{name:"neighborhood",type:"varchar",length:100},{name:"apartment",type:"varchar",length:50},{name:"province",type:"varchar",length:100},{name:"district",type:"varchar",length:100},{name:"type",type:"varchar",length:50}],indexes:[{columns:["city","state"]},{columns:["latitude","longitude"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"phones",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["mobile","office","fax"]},{name:"number",type:"varchar",length:20,notNull:!0},{name:"country_code",type:"varchar",length:10,notNull:!0,default:"+1"},{name:"extension",type:"varchar",length:10}],indexes:[{columns:["number"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"notifications",feature_set:["authentication","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0},{name:"title",type:"varchar",length:255,notNull:!0},{name:"body",type:"varchar",length:1000},{name:"entity_name",type:"varchar",length:100},{name:"entity_id",type:"uuid"},{name:"is_seen",type:"boolean",notNull:!0,default:!1},{name:"seen_at",type:"timestamptz"}],indexes:[{columns:["user_id","created_at"]},{columns:["is_seen"]}]},{table_name:"tenants",feature_set:["multi-tenant"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["main"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"subdomain",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_id",type:"uuid",notNull:!0},{name:"schema_name",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_name",type:"varchar",length:255},{name:"god_admin_email",type:"varchar",length:255}],indexes:[]},{table_name:"verifications",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"requirement_id",type:"uuid",notNull:!0,references:{table:"verificationRequirements",column:"id"}},{name:"verifier_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"signature_id",type:"uuid",references:{table:"files",column:"id"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"entity_id",type:"uuid",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"decision",type:"varchar",length:50,notNull:!0,default:"pending",enumValues:["approved","rejected","pending"]},{name:"reason",type:"text"},{name:"diff",type:"jsonb"}],indexes:[{columns:["requirement_id"]},{columns:["verifier_id"]},{columns:["entity_name","entity_id"]},{columns:["entity_name","entity_id","step_order"]},{columns:["decision"]}]},{table_name:"verificationRequirements",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"entity_id",type:"uuid"},{name:"entity_name",type:"varchar",length:100},{name:"verifier_type",type:"varchar",length:30,enumValues:["user","role","entity_creator"]},{name:"verifier_id",type:"uuid"},{name:"verifier_role",type:"varchar",length:50},{name:"is_signature_mandatory",type:"boolean",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"is_all_required",type:"boolean",notNull:!0,default:!1},{name:"connected_from_step_order",type:"integer"},{name:"position_x",type:"numeric"},{name:"position_y",type:"numeric"}],indexes:[{columns:["entity_id"]}]},{table_name:"verificationFlows",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"name",type:"varchar",length:255,notNull:!0},{name:"description",type:"text"},{name:"trigger_on",type:"varchar",length:50,notNull:!0,default:"update",enumValues:["create","update","delete","manual"]},{name:"trigger_fields",type:"jsonb"},{name:"is_draft",type:"boolean",notNull:!0,default:!0},{name:"published_at",type:"timestamptz"},{name:"viewport",type:"jsonb"}],indexes:[{columns:["entity_name"]},{columns:["entity_name","trigger_on"]},{columns:["is_draft"]}]},{table_name:"verificationSteps",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"node_id",type:"varchar",length:100,notNull:!0},{name:"node_type",type:"varchar",length:50,notNull:!0,default:"step",enumValues:["start","step","condition","notification","end"]},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"name",type:"varchar",length:255},{name:"description",type:"text"},{name:"position_x",type:"numeric",notNull:!0,default:0},{name:"position_y",type:"numeric",notNull:!0,default:0},{name:"width",type:"numeric"},{name:"height",type:"numeric"},{name:"style",type:"jsonb"},{name:"data",type:"jsonb"}],indexes:[{columns:["flow_id"]},{columns:["entity_name"]},{columns:["flow_id","node_id"],unique:!0},{columns:["entity_name","step_order"]}]},{table_name:"verificationEdges",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"edge_id",type:"varchar",length:100,notNull:!0},{name:"source_node_id",type:"varchar",length:100,notNull:!0},{name:"target_node_id",type:"varchar",length:100,notNull:!0},{name:"source_handle",type:"varchar",length:50},{name:"target_handle",type:"varchar",length:50},{name:"edge_type",type:"varchar",length:50,default:"default",enumValues:["default","conditional","success","failure"]},{name:"label",type:"varchar",length:255},{name:"condition",type:"jsonb"},{name:"style",type:"jsonb"},{name:"animated",type:"boolean",default:!1}],indexes:[{columns:["flow_id"]},{columns:["flow_id","edge_id"],unique:!0},{columns:["source_node_id"]},{columns:["target_node_id"]}]},{table_name:"verificationNotificationRules",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"step_node_id",type:"varchar",length:100},{name:"trigger",type:"varchar",length:50,notNull:!0,enumValues:["on_flow_started","on_step_reached","on_approved","on_rejected","on_flow_completed"]},{name:"channel",type:"varchar",length:20,notNull:!0,default:"portal",enumValues:["portal","email","both"]},{name:"title_template",type:"varchar",length:255},{name:"body_template",type:"text"},{name:"starts_at",type:"timestamptz"},{name:"expires_at",type:"timestamptz"}],indexes:[{columns:["flow_id"]},{columns:["flow_id","step_node_id"]},{columns:["trigger"]}]},{table_name:"verificationNotificationRecipients",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],bulk_endpoints_enabled:!0,columns:[{name:"rule_id",type:"uuid",notNull:!0},{name:"recipient_type",type:"varchar",length:20,notNull:!0,enumValues:["user","role","all_verifiers","step_verifier"]},{name:"recipient_user_id",type:"uuid"},{name:"recipient_role_id",type:"uuid"},{name:"channel",type:"varchar",length:20,notNull:!0,enumValues:["portal"]}],indexes:[{columns:["rule_id"]},{columns:["recipient_type"]},{columns:["channel"]}]},{table_name:"user_sessions",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH"],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"refresh_token_hash",type:"varchar",length:255},{name:"device_fingerprint",type:"varchar",length:255},{name:"device_name",type:"varchar",length:100},{name:"device_type",type:"varchar",length:50,enumValues:["desktop","mobile","tablet","unknown"]},{name:"browser_name",type:"varchar",length:50},{name:"browser_version",type:"varchar",length:20},{name:"os_name",type:"varchar",length:50},{name:"os_version",type:"varchar",length:20},{name:"ip_address",type:"varchar",length:45,notNull:!0},{name:"location_country",type:"varchar",length:100},{name:"location_city",type:"varchar",length:100},{name:"location_coordinates",type:"varchar",length:50},{name:"last_activity_at",type:"timestamptz",notNull:!0,defaultRaw:"now()"},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"revoked_at",type:"timestamptz"},{name:"revoked_reason",type:"varchar",length:100,enumValues:["user_logout","user_revoked","admin_revoked","security_concern","password_changed","expired","replaced"]},{name:"is_current",type:"boolean",notNull:!0,default:!1},{name:"login_method",type:"varchar",length:50,enumValues:["password","oauth_google","oauth_github","oauth_microsoft","magic_link","sso","api_key"]},{name:"trust_score",type:"integer",default:100},{name:"approval_status",type:"varchar",length:20,default:"approved",enumValues:["approved","pending","rejected"]},{name:"approval_token",type:"varchar",length:64},{name:"approval_requested_at",type:"timestamptz"},{name:"approval_responded_at",type:"timestamptz"}],indexes:[{columns:["user_id"]},{columns:["token_hash"],unique:!0},{columns:["refresh_token_hash"]},{columns:["user_id","is_active"]},{columns:["expires_at"]},{columns:["device_fingerprint"]},{columns:["ip_address"]},{columns:["last_activity_at"]},{columns:["approval_status"]},{columns:["approval_token"]}]},{table_name:"password_reset_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["expires_at"]}]},{table_name:"magic_link_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],bulk_endpoints_enabled:!0,columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"email",type:"varchar",length:255,notNull:!0},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["email"]},{columns:["expires_at"]}]},{table_name:"audit_logs",feature_set:["audit"],add_base_columns:!1,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","DELETE","PATCH","TOGGLE","VERIFICATION"],bulk_endpoints_enabled:!0,columns:[{name:"id",type:"uuid",primaryKey:!0,defaultRaw:"gen_random_uuid()"},{name:"entity_id",type:"uuid"},{name:"entity_name",type:"text",notNull:!0},{name:"operation_type",type:"text",notNull:!0},{name:"user_id",type:"uuid"},{name:"ip_address",type:"text"},{name:"user_agent",type:"text"},{name:"summary",type:"text"},{name:"old_values",type:"jsonb"},{name:"new_values",type:"jsonb"},{name:"created_at",type:"timestamp",notNull:!0,defaultRaw:"now()"},{name:"path",type:"text"},{name:"query",type:"text"}],indexes:[{columns:["entity_id"]},{columns:["entity_name"]},{columns:["user_id"]},{columns:["created_at"]}]}];var Yh={GET:["GET"],POST:["POST"],PUT:["PUT"],DELETE:["DELETE"],PATCH:["PATCH"],TOGGLE:["PATCH"],VERIFICATION:["POST"]};function Jh(n,r){let t=[],o=n.authentication;if(!o)return t;if(o.login?.enabled&&o.login?.isPublic)t.push({path:o.login.route||`${r}/auth/login`,method:"POST",source:"auth"});if(o.register?.enabled&&o.register?.isPublic)t.push({path:o.register.route||`${r}/auth/register`,method:"POST",source:"auth"});if(o.logout?.enabled&&o.logout?.isPublic)t.push({path:o.logout.route||`${r}/auth/logout`,method:"POST",source:"auth"});if(o.refresh?.enabled&&o.refresh?.isPublic)t.push({path:o.refresh.route||`${r}/auth/refresh`,method:"POST",source:"auth"});if(o.passwordReset?.enabled&&o.passwordReset?.isPublic){let a=o.passwordReset.route||`${r}/auth/password-reset`;t.push({path:`${a}/request`,method:"POST",source:"auth"},{path:`${a}/confirm`,method:"POST",source:"auth"})}if(o.passwordChange?.enabled&&o.passwordChange?.isPublic)t.push({path:o.passwordChange.route||`${r}/auth/password-change`,method:"POST",source:"auth"});if(o.magicLink?.enabled&&o.magicLink?.isPublic)t.push({path:o.magicLink.route||`${r}/auth/magic-link`,method:"POST",source:"auth"},{path:o.magicLink.verifyRoute||`${r}/auth/magic-link/verify`,method:"GET",source:"auth"});if(o.register?.enabled&&o.register?.emailVerification?.enabled)t.push({path:`${r}/verify-email`,method:"GET",source:"auth"},{path:`${r}/resend-verification`,method:"POST",source:"auth"});if(o.invite?.enabled&&o.invite?.isPublic)t.push({path:o.invite.route||`${r}/auth/invite`,method:"POST",source:"auth"});if(o.invite?.enabled){let a=o.invite.route||`${r}/auth/invite`;t.push({path:`${a}/verify`,method:"POST",source:"auth"})}if(o.passwordSet?.enabled)t.push({path:o.passwordSet.route||`${r}/auth/password-set`,method:"POST",source:"auth"});if(o.captcha?.enabled&&o.captcha?.isPublic){let a=o.captcha.route||`${r}/auth/captcha`;t.push({path:`${a}/generate`,method:"GET",source:"auth"},{path:`${a}/validate`,method:"POST",source:"auth"})}if(o.oauth?.enabled){let a=o.oauth.basePath||`${r}/auth/oauth`,c=["google","github","microsoft","discord","facebook","twitter","apple","custom"];t.push({path:`${a}/providers`,method:"GET",source:"auth"});for(let e of c)t.push({path:`${a}/${e}`,method:"GET",source:"auth"},{path:`${a}/${e}/callback`,method:"GET",source:"auth"})}return t}function Vb(n,r,t){let o=[];for(let a of n){if(!a.is_public)continue;let c=`${r}/${t}/${a.table_name}`;for(let[e,i]of Object.entries(a.is_public)){if(!i)continue;let s=Yh[e];if(!s)continue;for(let f of s)if(f==="GET")o.push({path:c,method:"GET",source:"entity"}),o.push({path:`${c}/:id`,method:"GET",source:"entity"});else if(f==="POST")o.push({path:c,method:"POST",source:"entity"});else if(f==="PUT"||f==="PATCH")o.push({path:`${c}/:id`,method:f,source:"entity"});else if(f==="DELETE")o.push({path:`${c}/:id`,method:"DELETE",source:"entity"})}}return o}function Xh(n,r,t){return Vb(n,r,t)}function Nf(n,r,t="",o="public"){let a=Jh(n,t),c=Vb(n.entities||[],t,o),e=Xh(r,t,o),i=[];if(n.pubsub?.enabled){let f=n.pubsub.basePath||"/subs",l=n.pubsub.wsPath||"/api/events/subscribe";i.push({path:`${f}/:topic`,method:"POST",source:"system"},{path:l,method:"GET",source:"system"})}let s=[{path:"/nucleus-core",method:"GET",source:"custom"},{path:"/public",method:"GET",source:"custom"},{path:"/docs",method:"GET",source:"custom"},{path:"/docs/json",method:"GET",source:"custom"},{path:"/swagger",method:"GET",source:"custom"},{path:"/swagger/json",method:"GET",source:"custom"}];return[...a,...c,...e,...i,...s]}function xf(n,r,t){let o=r.replace(/\/$/,""),a=t.toUpperCase();for(let c of n){if(c.method!==a)continue;if(Lh(c.path,o))return!0}return!1}function Lh(n,r){if(n===r)return!0;let t=n.split("/").filter(Boolean),o=r.split("/").filter(Boolean);if(t.length!==o.length)return!1;for(let a=0;a<t.length;a++){let c=t[a],e=o[a];if(c?.startsWith(":"))continue;if(c!==e)return!1}return!0}Uf();Ie();ni();import{asc as _5,desc as m5,eq as ur,ilike as $g,inArray as w5,notInArray as h5,or as $5}from"drizzle-orm";import{drizzle as A5}from"drizzle-orm/node-postgres";import{Elysia as R5,t as Xn}from"elysia";import{t as Fn}from"elysia";function g5(n){let r={};if(!n||n.length===0)return Fn.Object({},{additionalProperties:!0});for(let t of n)switch(t.type?.toLowerCase()||"string"){case"integer":case"int":case"serial":case"bigserial":case"numeric":case"decimal":r[t.name]=t.notNull?Fn.Number():Fn.Optional(Fn.Number());break;case"boolean":r[t.name]=t.notNull?Fn.Boolean():Fn.Optional(Fn.Boolean());break;case"timestamp":case"timestamptz":case"date":r[t.name]=t.notNull?Fn.String({format:"date-time"}):Fn.Optional(Fn.String({format:"date-time"}));break;case"json":case"jsonb":r[t.name]=Fn.Optional(Fn.Unknown());break;case"uuid":r[t.name]=t.notNull?Fn.String({format:"uuid"}):Fn.Optional(Fn.String({format:"uuid"}));break;default:r[t.name]=t.notNull?Fn.String():Fn.Optional(Fn.String())}return Fn.Object(r,{additionalProperties:!0})}function hg(n){return Fn.Array(Fn.Object({id:Fn.String(),data:g5(n)}))}function fl(n,r){let{db:t,schemaTables:o,schemaRelations:a,entities:c,logger:e,databaseUrl:i,storage:s,authorization:f}=r,l=hc(s),d=f?.enabled??!1;if(!t)return n;let b=Object.keys(o),w=c.map((m)=>m.table_name),h=b.filter((m)=>!w.includes(m)),_=["userSessions","passwordResetTokens","magicLinkTokens"],g=["passwordResetTokens","magicLinkTokens"],R=["files"];function k(m){return m.replace(/_([a-z])/g,(A,H)=>H.toUpperCase())}let M=new Map(qe.map((m)=>[k(m.table_name),m])),C=h.filter((m)=>{if(g.includes(m)&&!r.emailServiceAvailable)return e.info(`Skipping ${m} routes - email service not available`),!1;return!0}).map((m)=>{let A=M.get(m);return{table_name:m,group_name:_.includes(m)?"Authentication":m,is_form_data:R.includes(m),bulk_endpoints_enabled:A?.bulk_endpoints_enabled??!1,excluded_methods:A?.excluded_methods?[...A.excluded_methods]:[]}}),N=[...c,...C];e.info(`All entities: ${N.map((m)=>m.table_name).join(", ")}`);for(let m of N){let A=m.table_name,H=m.group_name||m.table_name,D=o[A];if(!D)continue;let E=a[`${A}Relations`];e.info(`Creating routes for table: ${A}`);let S=D,z=S.id,U=t,P=hg(m.columns),p=Xn.Array(Xn.String()),K=new R5({prefix:`/${A}`});if(!m.excluded_methods?.includes("GET"))K.get("/",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let L=B.request.headers.get("x-user-id"),Y=m.columns?.map((_n)=>_n.name),Q=Object.keys(a).filter((_n)=>_n.startsWith(`${m.table_name}Relations`)).map((_n)=>_n.replace("Relations","")),V=null;if(d&&L){if(V=await _c({userId:L,method:"GET",entity:m.table_name,requestedFields:Y,requestedRelations:Q,db:U,schemaTables:o,logger:e}),!V.authorized)return{success:!1,message:V.reason||"Unauthorized",status:403}}let q=ol(B.query),F=[];if(d&&V?.scopeFilters)for(let[_n,T]of Object.entries(V.scopeFilters)){let Jn=S[_n];if(Jn)F.push(ur(Jn,T))}if(q.search&&q.searchFields){let _n=q.searchFields.map((T)=>{let Jn=S[T.trim()];return Jn?$g(Jn,`%${q.search}%`):null}).filter((T)=>T!==null);if(_n.length>0){let T=$5(..._n);if(T)F.push(T)}}if(q.filters){let{ne:_n,gt:T,gte:Jn,lt:Gn,lte:qn,like:gr,isNull:Ar,isNotNull:Mt}=await import("drizzle-orm");for(let ir of q.filters){let lr=S[ir.field];if(!lr)continue;switch(ir.operator){case"eq":F.push(ur(lr,ir.value));break;case"neq":F.push(_n(lr,ir.value));break;case"gt":F.push(T(lr,ir.value));break;case"gte":F.push(Jn(lr,ir.value));break;case"lt":F.push(Gn(lr,ir.value));break;case"lte":F.push(qn(lr,ir.value));break;case"like":F.push(gr(lr,ir.value));break;case"ilike":F.push($g(lr,ir.value));break;case"in":F.push(w5(lr,ir.value));break;case"notIn":F.push(h5(lr,ir.value));break;case"isNull":F.push(Ar(lr));break;case"isNotNull":F.push(Mt(lr));break}}}let v=U.select().from(D);if(F.length>0){let{and:_n}=await import("drizzle-orm"),T=_n(...F);if(T)v=v.where(T)}if(q.sort&&q.sort.length>0){let _n=q.sort.map((T)=>{let Jn=S[T.field];if(!Jn)return null;return T.direction==="desc"?m5(Jn):_5(Jn)}).filter((T)=>T!==null);if(_n.length>0)v=v.orderBy(..._n)}let dn=q.page??1,on=q.limit??20,un=q.offset??(dn-1)*on,en=U.select().from(D);if(F.length>0){let{and:_n}=await import("drizzle-orm"),T=_n(...F);if(T)en.where(T)}let nr=(await en).length;v=v.limit(on).offset(un);let gn=await v,et=lg(dn,on,un,nr);if(d&&V?.allowedFields)gn=Le(gn,V.allowedFields);return{success:!0,data:{items:gn,meta:et}}},{detail:{tags:[H],summary:`List ${A}`,description:`Get paginated list of ${A} records with filtering, sorting, and search`}}),K.get("/:id",async(B)=>{if(!U||!z)return{success:!1,message:"No id column or DB"};let L=B.params,Y=ol(B.query),Q=B.request.headers.get("x-user-id"),V=m.columns?.map((on)=>on.name),q=Y.with?.map((on)=>on.name),F=null;if(d&&Q){if(F=await _c({userId:Q,method:"GET",entity:m.table_name,requestedFields:V,requestedRelations:q,db:U,schemaTables:o,logger:e}),!F.authorized)return{success:!1,message:F.reason||"Unauthorized",status:403}}if(Y.with&&Y.with.length>0&&E&&i){let on=d&&F?.allowedRelations?Y.with.filter((Yn)=>F.allowedRelations?.includes(Yn.name)??!1):Y.with,en=await A5(i,{schema:{...o,...a}}).query[m.table_name]?.findFirst({where:ur(z,L.id),with:on.reduce((Yn,nr)=>{return Yn[nr.name]=nr.limit?{limit:nr.limit}:!0,Yn},{})});if(d&&F?.allowedFields&&en)en=Le(en,F.allowedFields);if(d&&F?.allowedRelations&&en)en=eb(en,F.allowedRelations);return{success:!0,data:en||null}}let dn=(await U.select().from(D).where(ur(z,L.id)))[0]||null;if(d&&F?.allowedFields&&dn)dn=Le(dn,F.allowedFields);return{success:!0,data:dn}},{detail:{tags:[H],summary:`Get ${A} by ID`,description:`Get a single ${A} record by its ID with optional relations`}}),K.get("/distinct/:field",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let L=B.params,Y=S[L.field];if(!Y)return{success:!1,message:"Field not found"};return{success:!0,data:await U.selectDistinct({value:Y}).from(D)}},{detail:{tags:[H],summary:`Get distinct ${A} values`,description:`Get distinct values for a specific field in ${A}`}});if(!m.excluded_methods?.includes("POST"))if(m.is_form_data&&l.enabled)K.post("/",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let L=B.request.headers.get("x-user-id"),{data:Y,files:Q}=$c(B.body,l),V=Y;if(m.columns){V=ma(V,m.columns);let v=_a(V,m.columns,!1);if(!v.valid)return{success:!1,message:"Validation failed",errors:v.errors}}let q=null;if(Q.length>0){if(q=await Ac(Q,l,m.table_name),q.failed.length>0&&q.success.length===0)return{success:!1,message:"File upload failed",errors:q.failed};if(q.success.length>0){let v=q.success[0];if(v){let dn=v.originalName.split(".").pop()||"";V={...V,id:v.id,name:v.name,originalName:v.originalName,path:v.path,mimeType:v.mimeType,size:v.size,extension:dn,uploadedBy:L}}}}if(L)V.createdBy=L;let F=await U.insert(D).values(V).returning();{let v=new URL(B.request.url);e.audit({entityName:m.table_name,entityId:String(F[0]?.id??""),operation:"CREATE",userId:L||void 0,summary:`Created ${m.table_name}`,newValues:F[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:v.pathname,query:v.search})}return{success:!0,data:F[0]}},{type:"formdata",body:Xn.Object({[l.formData.dataField]:Xn.Optional(Xn.Union([Xn.String(),Xn.Any()])),[l.formData.filesField]:Xn.Optional(Xn.Union([Xn.File(),Xn.Array(Xn.File())]))}),detail:{tags:[H],summary:`Create ${A} with files`,description:`Create a new ${A} record with file upload support`}});else K.post("/",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let L=B.body,Y=B.request.headers.get("x-user-id");if(m.columns){L=ma(L,m.columns);let V=_a(L,m.columns,!1);if(!V.valid)return{success:!1,message:"Validation failed",errors:V.errors}}if(Y)L.createdBy=Y;let Q=await U.insert(D).values(L).returning();if(A==="userRoles"&&L.roleId&&L.userId)try{let{roles:V,users:q}=o;if(V&&q){if((await U.select().from(V).where(ur(V.id,L.roleId)).limit(1))[0]?.name==="godmin")await U.update(q).set({isGod:!0}).where(ur(q.id,L.userId))}}catch(V){e.warn("[Entity] Failed to sync is_god flag on userRole create")}{let V=new URL(B.request.url);e.audit({entityName:m.table_name,entityId:String(Q[0]?.id??""),operation:"CREATE",userId:Y||void 0,summary:`Created ${m.table_name}`,newValues:Q[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:V.pathname,query:V.search})}return{success:!0,data:Q[0]}},{body:Xn.Object({},{additionalProperties:!0}),detail:{tags:[H],summary:`Create ${A}`,description:`Create a new ${A} record`}});if(!m.excluded_methods?.includes("PUT"))if(m.is_form_data&&l.enabled)K.put("/:id",async(B)=>{if(!U||!z)return{success:!1,message:"No id column or DB"};let L=B.params,Y=B.request.headers.get("x-user-id"),{data:Q,files:V}=$c(B.body,l),q=Q,F=await U.select().from(D).where(ur(z,L.id)).limit(1);if(m.columns){q=ma(q,m.columns);let on=_a(q,m.columns,!1);if(!on.valid)return{success:!1,message:"Validation failed",errors:on.errors}}let v=null;if(V.length>0)v=await Ac(V,l,m.table_name);let dn=await U.update(D).set(q).where(ur(z,L.id)).returning();{let on=new URL(B.request.url);e.audit({entityName:m.table_name,entityId:L.id,operation:"UPDATE",userId:Y||void 0,summary:`Updated ${m.table_name} (${L.id})`,oldValues:F[0],newValues:dn[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:on.pathname,query:on.search})}return{success:!0,data:{record:dn[0],files:v?.success||[],fileErrors:v?.failed||[]}}},{type:"formdata",body:Xn.Object({[l.formData.dataField]:Xn.Optional(Xn.Union([Xn.String(),Xn.Any()])),[l.formData.filesField]:Xn.Optional(Xn.Union([Xn.File(),Xn.Array(Xn.File())]))}),detail:{tags:[H],summary:`Update ${A} with files`,description:`Full update of ${A} record with file upload support`}});else K.put("/:id",async(B)=>{if(!U||!z)return{success:!1,message:"No id column or DB"};let{params:L,body:Y}=B,Q=B.request.headers.get("x-user-id"),V=await U.select().from(D).where(ur(z,L.id)).limit(1);if(m.columns){Y=ma(Y,m.columns);let F=_a(Y,m.columns,!1);if(!F.valid)return{success:!1,message:"Validation failed",errors:F.errors}}if(Y.updatedAt=new Date,Q)Y.updatedBy=Q;let q=await U.update(D).set(Y).where(ur(z,L.id)).returning();{let F=new URL(B.request.url);e.audit({entityName:m.table_name,entityId:L.id,operation:"UPDATE",userId:Q||void 0,summary:`Updated ${m.table_name} (${L.id})`,oldValues:V[0],newValues:q[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:F.pathname,query:F.search})}return{success:!0,data:q[0]}},{body:Xn.Object({},{additionalProperties:!0}),detail:{tags:[H],summary:`Update ${A}`,description:`Full update of ${A} record`}});if(!m.excluded_methods?.includes("PATCH"))K.patch("/:id",async(B)=>{if(!U||!z)return{success:!1,message:"No id column or DB"};let{params:L,body:Y}=B,Q=B.request.headers.get("x-user-id"),V=await U.select().from(D).where(ur(z,L.id)).limit(1);if(m.columns){Y=ma(Y,m.columns);let F=_a(Y,m.columns,!0);if(!F.valid)return{success:!1,message:"Validation failed",errors:F.errors}}if(Y.updatedAt=new Date,Q)Y.updatedBy=Q;let q=await U.update(D).set(Y).where(ur(z,L.id)).returning();{let F=new URL(B.request.url);e.audit({entityName:m.table_name,entityId:L.id,operation:"PATCH",userId:Q||void 0,summary:`Patched ${m.table_name} (${L.id})`,oldValues:V[0],newValues:q[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:F.pathname,query:F.search})}return{success:!0,data:q[0]}},{body:Xn.Object({},{additionalProperties:!0}),detail:{tags:[H],summary:`Patch ${A}`,description:`Partial update of ${A} record`}});if(!m.excluded_methods?.includes("DELETE"))K.delete("/:id",async(B)=>{if(!U||!z)return{success:!1,message:"No id column or DB"};let L=B.params,Y=B.request.headers.get("x-user-id"),Q=await U.select().from(D).where(ur(z,L.id)).limit(1);if(await U.delete(D).where(ur(z,L.id)),A==="userRoles"&&Q[0])try{let V=Q[0],q=o.roles,F=o.users;if(q&&F&&V.roleId&&V.userId){if((await U.select().from(q).where(ur(q.id,V.roleId)).limit(1))[0]?.name==="godmin")await U.update(F).set({isGod:!1}).where(ur(F.id,V.userId))}}catch(V){e.warn("[Entity] Failed to sync is_god flag on userRole delete")}{let V=new URL(B.request.url);e.audit({entityName:m.table_name,entityId:L.id,operation:"DELETE",userId:Y||void 0,summary:`Deleted ${m.table_name} (${L.id})`,oldValues:Q[0],ipAddress:B.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||B.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:B.request.headers.get("user-agent")||"unknown",path:V.pathname,query:V.search})}return{success:!0,data:null}},{detail:{tags:[H],summary:`Delete ${A}`,description:`Delete a ${A} record`}});if(m.bulk_endpoints_enabled){if(!m.excluded_methods?.includes("POST"))K.post("/bulk",async(B)=>{if(!U)return{success:!1,message:"DB not initialized"};let L=B.body;if(!Array.isArray(L))return{success:!1,message:"Body must be an array"};try{return{success:!0,data:await U.transaction(async(Q)=>{let V=[];for(let q of L){let F=await Q.insert(D).values(q).returning();V.push(F[0])}return V})}}catch(Y){return{success:!1,message:Y instanceof Error?Y.message:"Transaction failed"}}},{body:Xn.Array(Xn.Object({},{additionalProperties:!0})),detail:{tags:[H],summary:`Bulk create ${A}`,description:`Create multiple ${A} records`}});if(!m.excluded_methods?.includes("PUT"))K.put("/bulk",async(B)=>{if(!U||!z)return{success:!1,message:"No id column or DB"};let L=B.body;if(!Array.isArray(L))return{success:!1,message:"Body must be an array"};try{return{success:!0,data:await U.transaction(async(Q)=>{let V=[];for(let q of L){let F=await Q.update(D).set(q.data).where(ur(z,q.id)).returning();V.push(F[0])}return V})}}catch(Y){return{success:!1,message:Y instanceof Error?Y.message:"Transaction failed"}}},{body:P,detail:{tags:[H],summary:`Bulk update ${A}`,description:`Update multiple ${A} records`}});if(!m.excluded_methods?.includes("DELETE"))K.delete("/bulk",async(B)=>{if(!U||!z)return{success:!1,message:"No id column or DB"};let L=B.body;if(!Array.isArray(L))return{success:!1,message:"Body must be an array of ids"};try{return await U.transaction(async(Y)=>{for(let Q of L)await Y.delete(D).where(ur(z,Q))}),{success:!0,data:{deleted:L.length}}}catch(Y){return{success:!1,message:Y instanceof Error?Y.message:"Transaction failed"}}},{body:p,detail:{tags:[H],summary:`Bulk delete ${A}`,description:`Delete multiple ${A} records`}})}n.use(K)}return n}import k5,{t as Rc}from"elysia";function E5(n){let r=n.match(/^(\d+)(ms|s|m|h)$/);if(!r||!r[1]||!r[2])return 5000;let t=parseInt(r[1],10);switch(r[2]){case"ms":return t;case"s":return t*1000;case"m":return t*60*1000;case"h":return t*60*60*1000;default:return 5000}}function ll(n){let{monitoringService:r,logger:t,endpoints:o}=n,a=new k5({prefix:o.basePath});if(!o.enabled)return a;if(o.stream.enabled)a.get(o.stream.path,async function*({request:c}){t.info("[Monitoring] SSE stream connected");let e=E5(o.stream.interval),i=!0;c.signal.addEventListener("abort",()=>{i=!1,t.info("[Monitoring] SSE stream disconnected")});let s=await r.getLatestSnapshot();if(s)yield{event:"snapshot",data:JSON.stringify(s)};while(i){if(await new Promise((d)=>setTimeout(d,e)),!i)break;let f=await r.getLatestSnapshot();if(f)yield{event:"snapshot",data:JSON.stringify(f)};let l=r.getActiveAlerts();if(l.length>0)yield{event:"alerts",data:JSON.stringify(l)}}},{detail:{tags:["Monitoring"],summary:"Stream real-time monitoring data",description:"Server-Sent Events stream for real-time monitoring metrics"}});if(o.snapshot.enabled)a.get(o.snapshot.path,async()=>{let c=await r.getLatestSnapshot();if(!c)return{isSuccess:!1,message:"No monitoring data available",data:null};return{isSuccess:!0,message:"Current monitoring snapshot",data:c}},{detail:{tags:["Monitoring"],summary:"Get current monitoring snapshot",description:"Returns the latest monitoring metrics snapshot"}});if(o.history.enabled)a.get(o.history.path,async({query:c})=>{let e=Math.min(c.minutes?parseInt(String(c.minutes),10):60,o.history.maxMinutes),i=await r.getHistory(e);return{isSuccess:!0,message:`Monitoring history for last ${e} minutes`,data:{minutes:e,count:i.length,snapshots:i}}},{query:Rc.Object({minutes:Rc.Optional(Rc.Numeric())}),detail:{tags:["Monitoring"],summary:"Get monitoring history",description:"Returns historical monitoring data for the specified time range"}});if(o.alerts.enabled)a.get(o.alerts.path,()=>{let c=r.getActiveAlerts();return{isSuccess:!0,message:"Active alerts",data:{count:c.length,alerts:c}}},{detail:{tags:["Monitoring"],summary:"Get active alerts",description:"Returns all currently active monitoring alerts"}}),a.post(`${o.alerts.path}/:alertId/acknowledge`,({params:c})=>{if(!r.acknowledgeAlert(c.alertId))return{isSuccess:!1,message:"Alert not found",data:null};return{isSuccess:!0,message:"Alert acknowledged",data:{alertId:c.alertId}}},{params:Rc.Object({alertId:Rc.String()}),detail:{tags:["Monitoring"],summary:"Acknowledge an alert",description:"Mark an alert as acknowledged"}});return t.info(`[Monitoring] Routes enabled at ${o.basePath} (stream: ${o.stream.enabled}, snapshot: ${o.snapshot.enabled}, history: ${o.history.enabled}, alerts: ${o.alerts.enabled})`),a}import S5,{t as Gr}from"elysia";var M5={"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-cache, no-transform",Connection:"keep-alive"},D5=new TextEncoder,dl=(n,r)=>{let t=typeof r==="string"?r:JSON.stringify(r);return D5.encode(`event: ${n}
83
83
  data: ${t}
84
84
 
85
- `)};function Ag(n){let{getService:r,logger:t,basePath:o,streamInterval:a}=n,c=new S5({prefix:o}),e=()=>{let i=r();if(!i)throw Error("Live monitoring service not initialized");return i};return c.get("/health",()=>{let i=r();return{status:i?"ok":"initializing",timestamp:Date.now(),monitoring:i?.isEnabled()??!1}},{detail:{tags:["Live Monitoring"],summary:"Health check for live monitoring"}}),c.get("/settings",()=>{return e().getSettings()},{detail:{tags:["Live Monitoring"],summary:"Get live monitoring settings"}}),c.patch("/settings",({body:i})=>{return e().changeSettings(i)},{body:Gr.Partial(Gr.Object({logMemory:Gr.Boolean(),logCpu:Gr.Boolean(),logDapr:Gr.Boolean(),logWebSocket:Gr.Boolean(),memoryLogInterval:Gr.Number(),cpuLogInterval:Gr.Number(),memoryLogLimit:Gr.Number(),cpuLogLimit:Gr.Number(),daprLogLimit:Gr.Number(),wsLogLimit:Gr.Number(),requestLogLimit:Gr.Number()})),detail:{tags:["Live Monitoring"],summary:"Change live monitoring settings"}}),c.get("/logs",()=>{return e().getLogs()},{detail:{tags:["Live Monitoring"],summary:"Get all live monitoring logs"}}),c.get("/logs/stream",({request:i})=>{let s=i.signal,f,l=e(),d=l.getSnapshot(),b={memory:d.memory.length?d.memory[d.memory.length-1]?.timestamp??0:0,cpu:d.cpu.length?d.cpu[d.cpu.length-1]?.timestamp??0:0,request:d.requests.length?d.requests[d.requests.length-1]?.timestamp??0:0,dapr:d.dapr.length?d.dapr[d.dapr.length-1]?.timestamp??0:0,ws:d.ws.length?d.ws[d.ws.length-1]?.timestamp??0:0},w=new ReadableStream({start(h){let _=!1;h.enqueue(dl("snapshot",d));let R=setInterval(()=>{if(_)return;let M=l.getUpdatesSince(b);if(!M){h.enqueue(dl("heartbeat",{timestamp:Date.now()}));return}if(M.memory.length)b.memory=M.memory[M.memory.length-1]?.timestamp??b.memory;if(M.cpu.length)b.cpu=M.cpu[M.cpu.length-1]?.timestamp??b.cpu;if(M.requests.length)b.request=M.requests[M.requests.length-1]?.timestamp??b.request;if(M.dapr.length)b.dapr=M.dapr[M.dapr.length-1]?.timestamp??b.dapr;if(M.ws.length)b.ws=M.ws[M.ws.length-1]?.timestamp??b.ws;h.enqueue(dl("update",M))},a),k=()=>{if(_)return;_=!0,clearInterval(R),s?.removeEventListener("abort",k);try{h.close()}catch{}};f=k,s?.addEventListener("abort",k)},cancel(){f?.()}});return new Response(w,{headers:M5})},{detail:{tags:["Live Monitoring"],summary:"Stream real-time live monitoring data via SSE"}}),t.info(`[LiveMonitoring] Routes enabled at ${o} (stream interval: ${a}ms)`),c}import W5 from"elysia";var kc=new Map;var Rg=null;function H5(){let n=Date.now();for(let[r,t]of kc)if(n-t>1e4)kc.delete(r)}var No={totalSent:0,totalAcked:0,totalFailed:0,averageLatencyMs:0};function kg(){if(Rg)return;Rg=setInterval(H5,30000)}function ul(){return`msg_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}async function bl(n,r,t){if(!r.userId)return;let o=`pubsub:pending:user:${r.userId}:${r.messageId}`,a=`pubsub:user:pending-set:${r.userId}`;await n.create(o,r,t);let c=await n.read(a),e=c.success&&c.data?c.data:[];if(!e.includes(r.messageId))e.push(r.messageId),await n.create(a,e,t)}async function Eg(n,r,t,o){let a=`${r}:${t}`;if(kc.has(a))return!1;let c=`pubsub:pending:user:${r}:${t}`,e=`pubsub:user:pending-set:${r}`,i=`pubsub:ack:${r}:${t}`,s=await n.read(c);if(!s.success||!s.data)return kc.set(a,Date.now()),!1;kc.set(a,Date.now());let f=s.data,l={messageId:t,clientId:f.clientId,ackedAt:Date.now()};await n.create(i,l,60),await n.remove(c);let d=await n.read(e),w=(d.success&&d.data?d.data:[]).filter((_)=>_!==t);if(w.length>0)await n.create(e,w,o);else await n.remove(e);let h=Date.now()-f.sentAt;return U5(h),!0}async function Sg(n,r){if(!r)return[];let t=`pubsub:user:pending-set:${r}`,o=await n.read(t),a=o.success&&o.data?o.data:[],c=[];for(let e of a){let i=`pubsub:pending:user:${r}:${e}`,s=await n.read(i);if(s.success&&s.data)c.push(s.data)}return c.sort((e,i)=>e.sentAt-i.sentAt),c}async function Mg(n,r){if(!r)return 0;let t=`pubsub:user:pending-set:${r}`,o=await n.read(t);return(o.success&&o.data?o.data:[]).length}async function Dg(n,r,t,o,a){let c=`pubsub:pending:user:${r}:${t}`,e=await n.read(c);if(!e.success||!e.data)return!1;let i={...e.data,retryCount:e.data.retryCount+1};if(i.retryCount>=a)return await z5(n,r,t),B5(),!1;return await n.create(c,i,o),!0}async function z5(n,r,t){let o=`pubsub:pending:user:${r}:${t}`,a=`pubsub:user:pending-set:${r}`;await n.remove(o);let c=await n.read(a),i=(c.success&&c.data?c.data:[]).filter((s)=>s!==t);if(i.length>0)await n.create(a,i,300);else await n.remove(a)}function gl(){No.totalSent++}function U5(n){No.totalAcked++,No.averageLatencyMs=(No.averageLatencyMs*(No.totalAcked-1)+n)/No.totalAcked}function B5(){No.totalFailed++}var ir=new Map,Ec=new Map;function Hg(n){let{redis:r,logger:t}=n,o=n.ack.ttlSeconds,a=n.ack.enabled,c=n.ack.maxRetries,e=n.presence.enabled,i=n.presence.debounceMs,s=n.maxClientsPerUser;function f(){return`client_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}function l(A,H,D,E){let S=w(D);if(S.length>=s){let z=S[0];if(z)t.info("[PubSub] Max clients reached, closing oldest",{userId:D,oldestClientId:z}),d(z)}ir.set(A,{ws:H,userId:D,subscribedTopics:new Set(E),connectedAt:Date.now(),pendingAcks:new Map}),t.info("[PubSub] Client registered",{clientId:A,userId:D,topics:E,totalClients:ir.size})}function d(A){let H=ir.get(A);if(!H)return;let D=H.userId;if(ir.delete(A),t.info("[PubSub] Client unregistered",{clientId:A,userId:D,totalClients:ir.size}),e&&D){if(w(D).length===0)C(D,"offline")}}function b(A,H){let D=ir.get(A);if(D)D.subscribedTopics=new Set(H)}function w(A){let H=[];for(let[D,E]of ir)if(E.userId===A)H.push(D);return H}function h(){let A=new Set;for(let[,H]of ir)if(H.userId)A.add(H.userId);return A}function _(){return ir.size}function g(A,H){let D=ir.get(A);if(!D)return!1;try{return D.ws.send(JSON.stringify(H)),!0}catch{return ir.delete(A),!1}}function R(A,H){let D=ul(),E=Date.now(),S=JSON.stringify({type:"event",messageId:a?D:void 0,topic:A,data:H,timestamp:E}),z=0;for(let[U,P]of ir)if(P.subscribedTopics.has("*")||P.subscribedTopics.has(A))try{if(P.ws.send(S),z++,a){if(P.pendingAcks.set(D,{sentAt:E,retryCount:0}),gl(),P.userId)bl(r,{messageId:D,topic:A,clientId:U,userId:P.userId,data:H,sentAt:E,retryCount:0,maxRetries:c},o).catch(()=>{})}}catch{ir.delete(U)}t.info("[PubSub] Broadcasted event",{topic:A,messageId:D,sentCount:z})}function k(A,H,D){let E=ul(),S=Date.now(),z=JSON.stringify({type:"event",messageId:a?E:void 0,topic:H,data:D,timestamp:S}),U=0,P=!1;for(let[p,K]of ir){if(K.userId!==A)continue;if(!K.subscribedTopics.has("*")&&!K.subscribedTopics.has(H))continue;try{if(K.ws.send(z),U++,P=!0,a)K.pendingAcks.set(E,{sentAt:S,retryCount:0}),gl()}catch{ir.delete(p)}}if(a)bl(r,{messageId:E,topic:H,clientId:P?"delivered":"pending",userId:A,data:D,sentAt:S,retryCount:0,maxRetries:c},o).catch(()=>{});t.info("[PubSub] Broadcasted to user",{userId:A,topic:H,messageId:E,sentCount:U,storedForOffline:!P})}function M(A,H,D){let E=Date.now(),S=JSON.stringify({type:"event",topic:H,data:D,timestamp:E});for(let[z,U]of ir){if(U.userId!==A)continue;if(!U.subscribedTopics.has("*")&&!U.subscribedTopics.has(H))continue;try{U.ws.send(S)}catch{ir.delete(z)}}}function C(A,H){let D=`${A}:${H}`,E=Date.now(),S=Ec.get(D);if(S&&E-S<i)return;if(Ec.set(D,E),Ec.size>1000){let U=E-i*2;for(let[P,p]of Ec)if(p<U)Ec.delete(P)}let z=h();for(let U of z)if(U!==A)M(U,"user-presence",{type:"user-presence",data:{userId:A,status:H}})}async function N(A,H){if(!a)return!0;let D=ir.get(A);if(!D)return!1;if(D.pendingAcks.get(H))D.pendingAcks.delete(H);if(D.userId)return Eg(r,D.userId,H,o);return!0}async function m(A,H){if(!a)return 0;let D=ir.get(H);if(!D||D.userId!==A)return 0;let E=await Sg(r,A);if(E.length===0)return 0;t.info("[PubSub] Delivering pending messages",{userId:A,count:E.length});let S=0;for(let z of E){if(!D.subscribedTopics.has("*")&&!D.subscribedTopics.has(z.topic))continue;let U=JSON.stringify({type:"event",messageId:z.messageId,topic:z.topic,data:z.data,timestamp:z.sentAt,isRedelivery:!0});try{D.ws.send(U),D.pendingAcks.set(z.messageId,{sentAt:Date.now(),retryCount:z.retryCount+1}),await Dg(r,A,z.messageId,o,c),S++}catch{break}}return S}return{generateClientId:f,registerClient:l,unregisterClient:d,updateClientTopics:b,getClientsByUser:w,getConnectedUserIds:h,getClientCount:_,sendToClient:g,broadcastEvent:R,broadcastToUser:k,broadcastToUserNoAck:M,broadcastPresenceToOthers:C,handleClientAck:N,deliverPendingMessages:m,getPendingMessageCount:(A)=>Mg(r,A)}}function _l(n){let{logger:r,getLiveMonitoringService:t}=n,o=Hg(n);if(n.ack.enabled)kg();let a=null,c=new W5;return c.onStart(()=>{if(n.cleanupIntervalMs>0)a=setInterval(()=>{r.info("[PubSub] Periodic cleanup running",{totalClients:o.getClientCount()})},n.cleanupIntervalMs);r.info("[PubSub] Routes initialized",{basePath:n.basePath,wsPath:n.wsPath,ackEnabled:n.ack.enabled,presenceEnabled:n.presence.enabled})}),c.onStop(()=>{if(a)clearInterval(a),a=null}),c.post(`${n.basePath}/:topic`,async({params:e,body:i,request:s,set:f})=>{let l=e.topic,d;try{if(!i){let w=await s.text();d=JSON.parse(w)}else d=i}catch{return f.status=200,{status:"DROP"}}r.info("[PubSub] Dapr event received",{topic:l,eventId:d.id,source:d.source});let b=d.data?.user_id;if(b)o.broadcastToUser(b,l,d);else o.broadcastEvent(l,d);return t?.()?.recordDaprEvent("pubsub_subscribe",{topic:l,success:!0,metadata:{eventId:d.id,source:d.source,userId:b||null}}),f.status=200,{status:"SUCCESS"}}),c.ws(n.wsPath,{idleTimeout:n.wsIdleTimeout,open(e){let i=e.data?.query||{};if(!i.userId){e.send(JSON.stringify({type:"error",error:"userId is required for WebSocket connection",timestamp:Date.now()})),e.close(4001,"userId is required"),t?.()?.recordWsEvent("error",{success:!1,error:"userId is required"});return}let s=o.generateClientId(),f=i.topics?.split(",").map((d)=>d.trim())||["*"];if(e.data.clientId=s,o.registerClient(s,e,i.userId,f),e.send(JSON.stringify({type:"connected",clientId:s,subscribedTopics:f,timestamp:Date.now()})),t?.()?.recordWsEvent("connection",{clientId:s,userId:i.userId,topic:f.join(","),success:!0}),n.presence.enabled)o.broadcastPresenceToOthers(i.userId,"online");let l=i.userId;if(n.ack.enabled&&l)o.getPendingMessageCount(l).then((d)=>{if(d>0)r.info("[PubSub] Delivering pending messages",{userId:l,count:d}),o.deliverPendingMessages(l,s).catch(()=>{})}).catch(()=>{})},message(e,i){let s=e.data.clientId;try{let f=null;if(typeof i==="string")f=JSON.parse(i);else if(i&&typeof i==="object"){if(f="type"in i?i:null,typeof f==="string")f=JSON.parse(f)}if(!f?.type)return;switch(t?.()?.recordWsEvent("message",{clientId:s,messageType:f.type,success:!0,dataSize:typeof i==="string"?i.length:0}),f.type){case"subscribe":if(Array.isArray(f.topics))o.updateClientTopics(s,f.topics),o.sendToClient(s,{type:"subscribed",topics:f.topics,timestamp:Date.now()});break;case"unsubscribe":r.info("[PubSub] Unsubscribe request",{clientId:s,topics:f.topics});break;case"ping":o.sendToClient(s,{type:"pong",timestamp:Date.now()});break;case"ack":if(f.messageId)o.handleClientAck(s,f.messageId).catch(()=>{});break}}catch{r.warn("[PubSub] Failed to parse client message",{clientId:s})}},close(e,i,s){let f=e.data.clientId;if(f)o.unregisterClient(f);t?.()?.recordWsEvent("close",{clientId:f,success:!0,metadata:{code:i,reason:s||""}}),r.info("[PubSub] Client disconnected",{clientId:f,code:i,reason:s})}}),{plugin:c,clientManager:o}}Gf();import{Elysia as Y5,t as Tn}from"elysia";function zg(n){let{db:r,schemaTables:t,config:o,logger:a}=n,c=new Pf({db:r,schemaTables:t,config:o,logger:a}),e=o.endpoints?.basePath||"/verifications",i=new Y5({prefix:e});return i.get("/status/:entity_name/:entity_id",async({params:s})=>{return{success:!0,data:await c.getStatus(s.entity_name,s.entity_id)}},{params:Tn.Object({entity_name:Tn.String(),entity_id:Tn.String()})}),i.post("/:entity_name/:entity_id/decide",async({params:s,body:f,request:l})=>{let d=l.headers.get("x-user-id");if(!d)return{success:!1,message:"User ID required",status:401};return await c.decide({entity_name:s.entity_name,entity_id:s.entity_id,user_id:d,decision:f.decision,reason:f.reason,signature_id:f.signature_id,diff:f.diff})},{params:Tn.Object({entity_name:Tn.String(),entity_id:Tn.String()}),body:Tn.Object({decision:Tn.Union([Tn.Literal("approved"),Tn.Literal("rejected")]),reason:Tn.Optional(Tn.String()),signature_id:Tn.Optional(Tn.String()),diff:Tn.Optional(Tn.Record(Tn.String(),Tn.Unknown()))})}),i.get("/pending",async({request:s})=>{let f=s.headers.get("x-user-id");if(!f)return{success:!1,message:"User ID required",status:401};return{success:!0,data:await c.getPending(f)}}),i.get("/history/:entity_name/:entity_id",async({params:s})=>{let f=await c.getStatus(s.entity_name,s.entity_id);return{success:!0,data:{verifications:f.verifications,current_step:f.current_step,total_steps:f.total_steps,is_completed:f.is_completed,is_rejected:f.is_rejected}}},{params:Tn.Object({entity_name:Tn.String(),entity_id:Tn.String()})}),a.info(`[Verification] Routes registered at ${e}`),i}import{Elysia as nA}from"elysia";var Ug=`/* basic theme */
85
+ `)};function Ag(n){let{getService:r,logger:t,basePath:o,streamInterval:a}=n,c=new S5({prefix:o}),e=()=>{let i=r();if(!i)throw Error("Live monitoring service not initialized");return i};return c.get("/health",()=>{let i=r();return{status:i?"ok":"initializing",timestamp:Date.now(),monitoring:i?.isEnabled()??!1}},{detail:{tags:["Live Monitoring"],summary:"Health check for live monitoring"}}),c.get("/settings",()=>{return e().getSettings()},{detail:{tags:["Live Monitoring"],summary:"Get live monitoring settings"}}),c.patch("/settings",({body:i})=>{return e().changeSettings(i)},{body:Gr.Partial(Gr.Object({logMemory:Gr.Boolean(),logCpu:Gr.Boolean(),logDapr:Gr.Boolean(),logWebSocket:Gr.Boolean(),memoryLogInterval:Gr.Number(),cpuLogInterval:Gr.Number(),memoryLogLimit:Gr.Number(),cpuLogLimit:Gr.Number(),daprLogLimit:Gr.Number(),wsLogLimit:Gr.Number(),requestLogLimit:Gr.Number()})),detail:{tags:["Live Monitoring"],summary:"Change live monitoring settings"}}),c.get("/logs",()=>{return e().getLogs()},{detail:{tags:["Live Monitoring"],summary:"Get all live monitoring logs"}}),c.get("/logs/stream",({request:i})=>{let s=i.signal,f,l=e(),d=l.getSnapshot(),b={memory:d.memory.length?d.memory[d.memory.length-1]?.timestamp??0:0,cpu:d.cpu.length?d.cpu[d.cpu.length-1]?.timestamp??0:0,request:d.requests.length?d.requests[d.requests.length-1]?.timestamp??0:0,dapr:d.dapr.length?d.dapr[d.dapr.length-1]?.timestamp??0:0,ws:d.ws.length?d.ws[d.ws.length-1]?.timestamp??0:0},w=new ReadableStream({start(h){let _=!1;h.enqueue(dl("snapshot",d));let R=setInterval(()=>{if(_)return;let M=l.getUpdatesSince(b);if(!M){h.enqueue(dl("heartbeat",{timestamp:Date.now()}));return}if(M.memory.length)b.memory=M.memory[M.memory.length-1]?.timestamp??b.memory;if(M.cpu.length)b.cpu=M.cpu[M.cpu.length-1]?.timestamp??b.cpu;if(M.requests.length)b.request=M.requests[M.requests.length-1]?.timestamp??b.request;if(M.dapr.length)b.dapr=M.dapr[M.dapr.length-1]?.timestamp??b.dapr;if(M.ws.length)b.ws=M.ws[M.ws.length-1]?.timestamp??b.ws;h.enqueue(dl("update",M))},a),k=()=>{if(_)return;_=!0,clearInterval(R),s?.removeEventListener("abort",k);try{h.close()}catch{}};f=k,s?.addEventListener("abort",k)},cancel(){f?.()}});return new Response(w,{headers:M5})},{detail:{tags:["Live Monitoring"],summary:"Stream real-time live monitoring data via SSE"}}),t.info(`[LiveMonitoring] Routes enabled at ${o} (stream interval: ${a}ms)`),c}import W5 from"elysia";var kc=new Map;var Rg=null;function H5(){let n=Date.now();for(let[r,t]of kc)if(n-t>1e4)kc.delete(r)}var No={totalSent:0,totalAcked:0,totalFailed:0,averageLatencyMs:0};function kg(){if(Rg)return;Rg=setInterval(H5,30000)}function ul(){return`msg_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}async function bl(n,r,t){if(!r.userId)return;let o=`pubsub:pending:user:${r.userId}:${r.messageId}`,a=`pubsub:user:pending-set:${r.userId}`;await n.create(o,r,t);let c=await n.read(a),e=c.success&&c.data?c.data:[];if(!e.includes(r.messageId))e.push(r.messageId),await n.create(a,e,t)}async function Eg(n,r,t,o){let a=`${r}:${t}`;if(kc.has(a))return!1;let c=`pubsub:pending:user:${r}:${t}`,e=`pubsub:user:pending-set:${r}`,i=`pubsub:ack:${r}:${t}`,s=await n.read(c);if(!s.success||!s.data)return kc.set(a,Date.now()),!1;kc.set(a,Date.now());let f=s.data,l={messageId:t,clientId:f.clientId,ackedAt:Date.now()};await n.create(i,l,60),await n.remove(c);let d=await n.read(e),w=(d.success&&d.data?d.data:[]).filter((_)=>_!==t);if(w.length>0)await n.create(e,w,o);else await n.remove(e);let h=Date.now()-f.sentAt;return U5(h),!0}async function Sg(n,r){if(!r)return[];let t=`pubsub:user:pending-set:${r}`,o=await n.read(t),a=o.success&&o.data?o.data:[],c=[];for(let e of a){let i=`pubsub:pending:user:${r}:${e}`,s=await n.read(i);if(s.success&&s.data)c.push(s.data)}return c.sort((e,i)=>e.sentAt-i.sentAt),c}async function Mg(n,r){if(!r)return 0;let t=`pubsub:user:pending-set:${r}`,o=await n.read(t);return(o.success&&o.data?o.data:[]).length}async function Dg(n,r,t,o,a){let c=`pubsub:pending:user:${r}:${t}`,e=await n.read(c);if(!e.success||!e.data)return!1;let i={...e.data,retryCount:e.data.retryCount+1};if(i.retryCount>=a)return await z5(n,r,t),B5(),!1;return await n.create(c,i,o),!0}async function z5(n,r,t){let o=`pubsub:pending:user:${r}:${t}`,a=`pubsub:user:pending-set:${r}`;await n.remove(o);let c=await n.read(a),i=(c.success&&c.data?c.data:[]).filter((s)=>s!==t);if(i.length>0)await n.create(a,i,300);else await n.remove(a)}function gl(){No.totalSent++}function U5(n){No.totalAcked++,No.averageLatencyMs=(No.averageLatencyMs*(No.totalAcked-1)+n)/No.totalAcked}function B5(){No.totalFailed++}var sr=new Map,Ec=new Map;function Hg(n){let{redis:r,logger:t}=n,o=n.ack.ttlSeconds,a=n.ack.enabled,c=n.ack.maxRetries,e=n.presence.enabled,i=n.presence.debounceMs,s=n.maxClientsPerUser;function f(){return`client_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}function l(A,H,D,E){let S=w(D);if(S.length>=s){let z=S[0];if(z)t.info("[PubSub] Max clients reached, closing oldest",{userId:D,oldestClientId:z}),d(z)}sr.set(A,{ws:H,userId:D,subscribedTopics:new Set(E),connectedAt:Date.now(),pendingAcks:new Map}),t.info("[PubSub] Client registered",{clientId:A,userId:D,topics:E,totalClients:sr.size})}function d(A){let H=sr.get(A);if(!H)return;let D=H.userId;if(sr.delete(A),t.info("[PubSub] Client unregistered",{clientId:A,userId:D,totalClients:sr.size}),e&&D){if(w(D).length===0)C(D,"offline")}}function b(A,H){let D=sr.get(A);if(D)D.subscribedTopics=new Set(H)}function w(A){let H=[];for(let[D,E]of sr)if(E.userId===A)H.push(D);return H}function h(){let A=new Set;for(let[,H]of sr)if(H.userId)A.add(H.userId);return A}function _(){return sr.size}function g(A,H){let D=sr.get(A);if(!D)return!1;try{return D.ws.send(JSON.stringify(H)),!0}catch{return sr.delete(A),!1}}function R(A,H){let D=ul(),E=Date.now(),S=JSON.stringify({type:"event",messageId:a?D:void 0,topic:A,data:H,timestamp:E}),z=0;for(let[U,P]of sr)if(P.subscribedTopics.has("*")||P.subscribedTopics.has(A))try{if(P.ws.send(S),z++,a){if(P.pendingAcks.set(D,{sentAt:E,retryCount:0}),gl(),P.userId)bl(r,{messageId:D,topic:A,clientId:U,userId:P.userId,data:H,sentAt:E,retryCount:0,maxRetries:c},o).catch(()=>{})}}catch{sr.delete(U)}t.info("[PubSub] Broadcasted event",{topic:A,messageId:D,sentCount:z})}function k(A,H,D){let E=ul(),S=Date.now(),z=JSON.stringify({type:"event",messageId:a?E:void 0,topic:H,data:D,timestamp:S}),U=0,P=!1;for(let[p,K]of sr){if(K.userId!==A)continue;if(!K.subscribedTopics.has("*")&&!K.subscribedTopics.has(H))continue;try{if(K.ws.send(z),U++,P=!0,a)K.pendingAcks.set(E,{sentAt:S,retryCount:0}),gl()}catch{sr.delete(p)}}if(a)bl(r,{messageId:E,topic:H,clientId:P?"delivered":"pending",userId:A,data:D,sentAt:S,retryCount:0,maxRetries:c},o).catch(()=>{});t.info("[PubSub] Broadcasted to user",{userId:A,topic:H,messageId:E,sentCount:U,storedForOffline:!P})}function M(A,H,D){let E=Date.now(),S=JSON.stringify({type:"event",topic:H,data:D,timestamp:E});for(let[z,U]of sr){if(U.userId!==A)continue;if(!U.subscribedTopics.has("*")&&!U.subscribedTopics.has(H))continue;try{U.ws.send(S)}catch{sr.delete(z)}}}function C(A,H){let D=`${A}:${H}`,E=Date.now(),S=Ec.get(D);if(S&&E-S<i)return;if(Ec.set(D,E),Ec.size>1000){let U=E-i*2;for(let[P,p]of Ec)if(p<U)Ec.delete(P)}let z=h();for(let U of z)if(U!==A)M(U,"user-presence",{type:"user-presence",data:{userId:A,status:H}})}async function N(A,H){if(!a)return!0;let D=sr.get(A);if(!D)return!1;if(D.pendingAcks.get(H))D.pendingAcks.delete(H);if(D.userId)return Eg(r,D.userId,H,o);return!0}async function m(A,H){if(!a)return 0;let D=sr.get(H);if(!D||D.userId!==A)return 0;let E=await Sg(r,A);if(E.length===0)return 0;t.info("[PubSub] Delivering pending messages",{userId:A,count:E.length});let S=0;for(let z of E){if(!D.subscribedTopics.has("*")&&!D.subscribedTopics.has(z.topic))continue;let U=JSON.stringify({type:"event",messageId:z.messageId,topic:z.topic,data:z.data,timestamp:z.sentAt,isRedelivery:!0});try{D.ws.send(U),D.pendingAcks.set(z.messageId,{sentAt:Date.now(),retryCount:z.retryCount+1}),await Dg(r,A,z.messageId,o,c),S++}catch{break}}return S}return{generateClientId:f,registerClient:l,unregisterClient:d,updateClientTopics:b,getClientsByUser:w,getConnectedUserIds:h,getClientCount:_,sendToClient:g,broadcastEvent:R,broadcastToUser:k,broadcastToUserNoAck:M,broadcastPresenceToOthers:C,handleClientAck:N,deliverPendingMessages:m,getPendingMessageCount:(A)=>Mg(r,A)}}function _l(n){let{logger:r,getLiveMonitoringService:t}=n,o=Hg(n);if(n.ack.enabled)kg();let a=null,c=new W5;return c.onStart(()=>{if(n.cleanupIntervalMs>0)a=setInterval(()=>{r.info("[PubSub] Periodic cleanup running",{totalClients:o.getClientCount()})},n.cleanupIntervalMs);r.info("[PubSub] Routes initialized",{basePath:n.basePath,wsPath:n.wsPath,ackEnabled:n.ack.enabled,presenceEnabled:n.presence.enabled})}),c.onStop(()=>{if(a)clearInterval(a),a=null}),c.post(`${n.basePath}/:topic`,async({params:e,body:i,request:s,set:f})=>{let l=e.topic,d;try{if(!i){let w=await s.text();d=JSON.parse(w)}else d=i}catch{return f.status=200,{status:"DROP"}}r.info("[PubSub] Dapr event received",{topic:l,eventId:d.id,source:d.source});let b=d.data?.user_id;if(b)o.broadcastToUser(b,l,d);else o.broadcastEvent(l,d);return t?.()?.recordDaprEvent("pubsub_subscribe",{topic:l,success:!0,metadata:{eventId:d.id,source:d.source,userId:b||null}}),f.status=200,{status:"SUCCESS"}}),c.ws(n.wsPath,{idleTimeout:n.wsIdleTimeout,open(e){let i=e.data?.query||{};if(!i.userId){e.send(JSON.stringify({type:"error",error:"userId is required for WebSocket connection",timestamp:Date.now()})),e.close(4001,"userId is required"),t?.()?.recordWsEvent("error",{success:!1,error:"userId is required"});return}let s=o.generateClientId(),f=i.topics?.split(",").map((d)=>d.trim())||["*"];if(e.data.clientId=s,o.registerClient(s,e,i.userId,f),e.send(JSON.stringify({type:"connected",clientId:s,subscribedTopics:f,timestamp:Date.now()})),t?.()?.recordWsEvent("connection",{clientId:s,userId:i.userId,topic:f.join(","),success:!0}),n.presence.enabled)o.broadcastPresenceToOthers(i.userId,"online");let l=i.userId;if(n.ack.enabled&&l)o.getPendingMessageCount(l).then((d)=>{if(d>0)r.info("[PubSub] Delivering pending messages",{userId:l,count:d}),o.deliverPendingMessages(l,s).catch(()=>{})}).catch(()=>{})},message(e,i){let s=e.data.clientId;try{let f=null;if(typeof i==="string")f=JSON.parse(i);else if(i&&typeof i==="object"){if(f="type"in i?i:null,typeof f==="string")f=JSON.parse(f)}if(!f?.type)return;switch(t?.()?.recordWsEvent("message",{clientId:s,messageType:f.type,success:!0,dataSize:typeof i==="string"?i.length:0}),f.type){case"subscribe":if(Array.isArray(f.topics))o.updateClientTopics(s,f.topics),o.sendToClient(s,{type:"subscribed",topics:f.topics,timestamp:Date.now()});break;case"unsubscribe":r.info("[PubSub] Unsubscribe request",{clientId:s,topics:f.topics});break;case"ping":o.sendToClient(s,{type:"pong",timestamp:Date.now()});break;case"ack":if(f.messageId)o.handleClientAck(s,f.messageId).catch(()=>{});break}}catch{r.warn("[PubSub] Failed to parse client message",{clientId:s})}},close(e,i,s){let f=e.data.clientId;if(f)o.unregisterClient(f);t?.()?.recordWsEvent("close",{clientId:f,success:!0,metadata:{code:i,reason:s||""}}),r.info("[PubSub] Client disconnected",{clientId:f,code:i,reason:s})}}),{plugin:c,clientManager:o}}Gf();import{Elysia as Y5,t as Tn}from"elysia";function zg(n){let{db:r,schemaTables:t,config:o,logger:a}=n,c=new Pf({db:r,schemaTables:t,config:o,logger:a}),e=o.endpoints?.basePath||"/verifications",i=new Y5({prefix:e});return i.get("/status/:entity_name/:entity_id",async({params:s})=>{return{success:!0,data:await c.getStatus(s.entity_name,s.entity_id)}},{params:Tn.Object({entity_name:Tn.String(),entity_id:Tn.String()})}),i.post("/:entity_name/:entity_id/decide",async({params:s,body:f,request:l})=>{let d=l.headers.get("x-user-id");if(!d)return{success:!1,message:"User ID required",status:401};return await c.decide({entity_name:s.entity_name,entity_id:s.entity_id,user_id:d,decision:f.decision,reason:f.reason,signature_id:f.signature_id,diff:f.diff})},{params:Tn.Object({entity_name:Tn.String(),entity_id:Tn.String()}),body:Tn.Object({decision:Tn.Union([Tn.Literal("approved"),Tn.Literal("rejected")]),reason:Tn.Optional(Tn.String()),signature_id:Tn.Optional(Tn.String()),diff:Tn.Optional(Tn.Record(Tn.String(),Tn.Unknown()))})}),i.get("/pending",async({request:s})=>{let f=s.headers.get("x-user-id");if(!f)return{success:!1,message:"User ID required",status:401};return{success:!0,data:await c.getPending(f)}}),i.get("/history/:entity_name/:entity_id",async({params:s})=>{let f=await c.getStatus(s.entity_name,s.entity_id);return{success:!0,data:{verifications:f.verifications,current_step:f.current_step,total_steps:f.total_steps,is_completed:f.is_completed,is_rejected:f.is_rejected}}},{params:Tn.Object({entity_name:Tn.String(),entity_id:Tn.String()})}),a.info(`[Verification] Routes registered at ${e}`),i}import{Elysia as nA}from"elysia";var Ug=`/* basic theme */
86
86
  :root {
87
87
  --scalar-text-decoration: underline;
88
88
  --scalar-text-decoration-hover: underline;
@@ -1447,7 +1447,7 @@ data: ${t}
1447
1447
  *::selection {
1448
1448
  background-color: color-mix(in srgb, var(--scalar-color-accent), transparent 70%);
1449
1449
  }
1450
- `;var W={};co(W,{void:()=>m$,util:()=>bn,unknown:()=>g$,union:()=>A$,undefined:()=>d$,tuple:()=>E$,transformer:()=>J$,symbol:()=>l$,string:()=>Kg,strictObject:()=>$$,setErrorMap:()=>L5,set:()=>D$,record:()=>S$,quotelessJson:()=>J5,promise:()=>Y$,preprocess:()=>V$,pipeline:()=>C$,ostring:()=>Q$,optional:()=>X$,onumber:()=>P$,oboolean:()=>G$,objectUtil:()=>ml,object:()=>h$,number:()=>vg,nullable:()=>L$,null:()=>u$,never:()=>_$,nativeEnum:()=>W$,nan:()=>i$,map:()=>M$,makeIssue:()=>Sc,literal:()=>U$,lazy:()=>z$,late:()=>c$,isValid:()=>_o,isDirty:()=>oi,isAsync:()=>ha,isAborted:()=>ti,intersection:()=>k$,instanceof:()=>e$,getParsedType:()=>Ut,getErrorMap:()=>wa,function:()=>H$,enum:()=>B$,effect:()=>J$,discriminatedUnion:()=>R$,defaultErrorMap:()=>Ft,datetimeRegex:()=>Fg,date:()=>f$,custom:()=>pg,coerce:()=>O$,boolean:()=>Tg,bigint:()=>s$,array:()=>w$,any:()=>b$,addIssueToContext:()=>j,ZodVoid:()=>Dc,ZodUnknown:()=>mo,ZodUnion:()=>Sa,ZodUndefined:()=>ka,ZodType:()=>fn,ZodTuple:()=>Wt,ZodTransformer:()=>bt,ZodSymbol:()=>Mc,ZodString:()=>ft,ZodSet:()=>jo,ZodSchema:()=>fn,ZodRecord:()=>Hc,ZodReadonly:()=>Wa,ZodPromise:()=>po,ZodPipeline:()=>Bc,ZodParsedType:()=>x,ZodOptional:()=>dt,ZodObject:()=>On,ZodNumber:()=>wo,ZodNullable:()=>pt,ZodNull:()=>Ea,ZodNever:()=>Bt,ZodNativeEnum:()=>za,ZodNaN:()=>Uc,ZodMap:()=>zc,ZodLiteral:()=>Ha,ZodLazy:()=>Da,ZodIssueCode:()=>G,ZodIntersection:()=>Ma,ZodFunction:()=>Aa,ZodFirstPartyTypeKind:()=>on,ZodError:()=>Ur,ZodEnum:()=>$o,ZodEffects:()=>bt,ZodDiscriminatedUnion:()=>ai,ZodDefault:()=>Ua,ZodDate:()=>qo,ZodCatch:()=>Ba,ZodBranded:()=>ci,ZodBoolean:()=>Ra,ZodBigInt:()=>ho,ZodArray:()=>lt,ZodAny:()=>Fo,Schema:()=>fn,ParseStatus:()=>_r,OK:()=>kr,NEVER:()=>N$,INVALID:()=>nn,EMPTY_PATH:()=>V5,DIRTY:()=>xo,BRAND:()=>a$});var bn;(function(n){n.assertEqual=(a)=>{};function r(a){}n.assertIs=r;function t(a){throw Error()}n.assertNever=t,n.arrayToEnum=(a)=>{let c={};for(let e of a)c[e]=e;return c},n.getValidEnumValues=(a)=>{let c=n.objectKeys(a).filter((i)=>typeof a[a[i]]!=="number"),e={};for(let i of c)e[i]=a[i];return n.objectValues(e)},n.objectValues=(a)=>{return n.objectKeys(a).map(function(c){return a[c]})},n.objectKeys=typeof Object.keys==="function"?(a)=>Object.keys(a):(a)=>{let c=[];for(let e in a)if(Object.prototype.hasOwnProperty.call(a,e))c.push(e);return c},n.find=(a,c)=>{for(let e of a)if(c(e))return e;return},n.isInteger=typeof Number.isInteger==="function"?(a)=>Number.isInteger(a):(a)=>typeof a==="number"&&Number.isFinite(a)&&Math.floor(a)===a;function o(a,c=" | "){return a.map((e)=>typeof e==="string"?`'${e}'`:e).join(c)}n.joinValues=o,n.jsonStringifyReplacer=(a,c)=>{if(typeof c==="bigint")return c.toString();return c}})(bn||(bn={}));var ml;(function(n){n.mergeShapes=(r,t)=>{return{...r,...t}}})(ml||(ml={}));var x=bn.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Ut=(n)=>{switch(typeof n){case"undefined":return x.undefined;case"string":return x.string;case"number":return Number.isNaN(n)?x.nan:x.number;case"boolean":return x.boolean;case"function":return x.function;case"bigint":return x.bigint;case"symbol":return x.symbol;case"object":if(Array.isArray(n))return x.array;if(n===null)return x.null;if(n.then&&typeof n.then==="function"&&n.catch&&typeof n.catch==="function")return x.promise;if(typeof Map<"u"&&n instanceof Map)return x.map;if(typeof Set<"u"&&n instanceof Set)return x.set;if(typeof Date<"u"&&n instanceof Date)return x.date;return x.object;default:return x.unknown}};var G=bn.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),J5=(n)=>{return JSON.stringify(n,null,2).replace(/"([^"]+)":/g,"$1:")};class Ur extends Error{get errors(){return this.issues}constructor(n){super();this.issues=[],this.addIssue=(t)=>{this.issues=[...this.issues,t]},this.addIssues=(t=[])=>{this.issues=[...this.issues,...t]};let r=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,r);else this.__proto__=r;this.name="ZodError",this.issues=n}format(n){let r=n||function(a){return a.message},t={_errors:[]},o=(a)=>{for(let c of a.issues)if(c.code==="invalid_union")c.unionErrors.map(o);else if(c.code==="invalid_return_type")o(c.returnTypeError);else if(c.code==="invalid_arguments")o(c.argumentsError);else if(c.path.length===0)t._errors.push(r(c));else{let e=t,i=0;while(i<c.path.length){let s=c.path[i];if(i!==c.path.length-1)e[s]=e[s]||{_errors:[]};else e[s]=e[s]||{_errors:[]},e[s]._errors.push(r(c));e=e[s],i++}}};return o(this),t}static assert(n){if(!(n instanceof Ur))throw Error(`Not a ZodError: ${n}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,bn.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(n=(r)=>r.message){let r={},t=[];for(let o of this.issues)if(o.path.length>0){let a=o.path[0];r[a]=r[a]||[],r[a].push(n(o))}else t.push(n(o));return{formErrors:t,fieldErrors:r}}get formErrors(){return this.flatten()}}Ur.create=(n)=>{return new Ur(n)};var X5=(n,r)=>{let t;switch(n.code){case G.invalid_type:if(n.received===x.undefined)t="Required";else t=`Expected ${n.expected}, received ${n.received}`;break;case G.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(n.expected,bn.jsonStringifyReplacer)}`;break;case G.unrecognized_keys:t=`Unrecognized key(s) in object: ${bn.joinValues(n.keys,", ")}`;break;case G.invalid_union:t="Invalid input";break;case G.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${bn.joinValues(n.options)}`;break;case G.invalid_enum_value:t=`Invalid enum value. Expected ${bn.joinValues(n.options)}, received '${n.received}'`;break;case G.invalid_arguments:t="Invalid function arguments";break;case G.invalid_return_type:t="Invalid function return type";break;case G.invalid_date:t="Invalid date";break;case G.invalid_string:if(typeof n.validation==="object")if("includes"in n.validation){if(t=`Invalid input: must include "${n.validation.includes}"`,typeof n.validation.position==="number")t=`${t} at one or more positions greater than or equal to ${n.validation.position}`}else if("startsWith"in n.validation)t=`Invalid input: must start with "${n.validation.startsWith}"`;else if("endsWith"in n.validation)t=`Invalid input: must end with "${n.validation.endsWith}"`;else bn.assertNever(n.validation);else if(n.validation!=="regex")t=`Invalid ${n.validation}`;else t="Invalid";break;case G.too_small:if(n.type==="array")t=`Array must contain ${n.exact?"exactly":n.inclusive?"at least":"more than"} ${n.minimum} element(s)`;else if(n.type==="string")t=`String must contain ${n.exact?"exactly":n.inclusive?"at least":"over"} ${n.minimum} character(s)`;else if(n.type==="number")t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`;else if(n.type==="bigint")t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`;else if(n.type==="date")t=`Date must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(n.minimum))}`;else t="Invalid input";break;case G.too_big:if(n.type==="array")t=`Array must contain ${n.exact?"exactly":n.inclusive?"at most":"less than"} ${n.maximum} element(s)`;else if(n.type==="string")t=`String must contain ${n.exact?"exactly":n.inclusive?"at most":"under"} ${n.maximum} character(s)`;else if(n.type==="number")t=`Number must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`;else if(n.type==="bigint")t=`BigInt must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`;else if(n.type==="date")t=`Date must be ${n.exact?"exactly":n.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(n.maximum))}`;else t="Invalid input";break;case G.custom:t="Invalid input";break;case G.invalid_intersection_types:t="Intersection results could not be merged";break;case G.not_multiple_of:t=`Number must be a multiple of ${n.multipleOf}`;break;case G.not_finite:t="Number must be finite";break;default:t=r.defaultError,bn.assertNever(n)}return{message:t}},Ft=X5;var Gg=Ft;function L5(n){Gg=n}function wa(){return Gg}var Sc=(n)=>{let{data:r,path:t,errorMaps:o,issueData:a}=n,c=[...t,...a.path||[]],e={...a,path:c};if(a.message!==void 0)return{...a,path:c,message:a.message};let i="",s=o.filter((f)=>!!f).slice().reverse();for(let f of s)i=f(e,{data:r,defaultError:i}).message;return{...a,path:c,message:i}},V5=[];function j(n,r){let t=wa(),o=Sc({issueData:r,data:n.data,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,t,t===Ft?void 0:Ft].filter((a)=>!!a)});n.common.issues.push(o)}class _r{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(n,r){let t=[];for(let o of r){if(o.status==="aborted")return nn;if(o.status==="dirty")n.dirty();t.push(o.value)}return{status:n.value,value:t}}static async mergeObjectAsync(n,r){let t=[];for(let o of r){let a=await o.key,c=await o.value;t.push({key:a,value:c})}return _r.mergeObjectSync(n,t)}static mergeObjectSync(n,r){let t={};for(let o of r){let{key:a,value:c}=o;if(a.status==="aborted")return nn;if(c.status==="aborted")return nn;if(a.status==="dirty")n.dirty();if(c.status==="dirty")n.dirty();if(a.value!=="__proto__"&&(typeof c.value<"u"||o.alwaysSet))t[a.value]=c.value}return{status:n.value,value:t}}}var nn=Object.freeze({status:"aborted"}),xo=(n)=>({status:"dirty",value:n}),kr=(n)=>({status:"valid",value:n}),ti=(n)=>n.status==="aborted",oi=(n)=>n.status==="dirty",_o=(n)=>n.status==="valid",ha=(n)=>typeof Promise<"u"&&n instanceof Promise;var I;(function(n){n.errToObj=(r)=>typeof r==="string"?{message:r}:r||{},n.toString=(r)=>typeof r==="string"?r:r?.message})(I||(I={}));class ut{constructor(n,r,t,o){this._cachedPath=[],this.parent=n,this.data=r,this._path=t,this._key=o}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}var Og=(n,r)=>{if(_o(r))return{success:!0,data:r.value};else{if(!n.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new Ur(n.common.issues);return this._error=t,this._error}}}};function en(n){if(!n)return{};let{errorMap:r,invalid_type_error:t,required_error:o,description:a}=n;if(r&&(t||o))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(r)return{errorMap:r,description:a};return{errorMap:(e,i)=>{let{message:s}=n;if(e.code==="invalid_enum_value")return{message:s??i.defaultError};if(typeof i.data>"u")return{message:s??o??i.defaultError};if(e.code!=="invalid_type")return{message:i.defaultError};return{message:s??t??i.defaultError}},description:a}}class fn{get description(){return this._def.description}_getType(n){return Ut(n.data)}_getOrReturnCtx(n,r){return r||{common:n.parent.common,data:n.data,parsedType:Ut(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}_processInputParams(n){return{status:new _r,ctx:{common:n.parent.common,data:n.data,parsedType:Ut(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}}_parseSync(n){let r=this._parse(n);if(ha(r))throw Error("Synchronous parse encountered promise.");return r}_parseAsync(n){let r=this._parse(n);return Promise.resolve(r)}parse(n,r){let t=this.safeParse(n,r);if(t.success)return t.data;throw t.error}safeParse(n,r){let t={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:Ut(n)},o=this._parseSync({data:n,path:t.path,parent:t});return Og(t,o)}"~validate"(n){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:Ut(n)};if(!this["~standard"].async)try{let t=this._parseSync({data:n,path:[],parent:r});return _o(t)?{value:t.value}:{issues:r.common.issues}}catch(t){if(t?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;r.common={issues:[],async:!0}}return this._parseAsync({data:n,path:[],parent:r}).then((t)=>_o(t)?{value:t.value}:{issues:r.common.issues})}async parseAsync(n,r){let t=await this.safeParseAsync(n,r);if(t.success)return t.data;throw t.error}async safeParseAsync(n,r){let t={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:Ut(n)},o=this._parse({data:n,path:t.path,parent:t}),a=await(ha(o)?o:Promise.resolve(o));return Og(t,a)}refine(n,r){let t=(o)=>{if(typeof r==="string"||typeof r>"u")return{message:r};else if(typeof r==="function")return r(o);else return r};return this._refinement((o,a)=>{let c=n(o),e=()=>a.addIssue({code:G.custom,...t(o)});if(typeof Promise<"u"&&c instanceof Promise)return c.then((i)=>{if(!i)return e(),!1;else return!0});if(!c)return e(),!1;else return!0})}refinement(n,r){return this._refinement((t,o)=>{if(!n(t))return o.addIssue(typeof r==="function"?r(t,o):r),!1;else return!0})}_refinement(n){return new bt({schema:this,typeName:on.ZodEffects,effect:{type:"refinement",refinement:n}})}superRefine(n){return this._refinement(n)}constructor(n){this.spa=this.safeParseAsync,this._def=n,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(r)=>this["~validate"](r)}}optional(){return dt.create(this,this._def)}nullable(){return pt.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return lt.create(this)}promise(){return po.create(this,this._def)}or(n){return Sa.create([this,n],this._def)}and(n){return Ma.create(this,n,this._def)}transform(n){return new bt({...en(this._def),schema:this,typeName:on.ZodEffects,effect:{type:"transform",transform:n}})}default(n){let r=typeof n==="function"?n:()=>n;return new Ua({...en(this._def),innerType:this,defaultValue:r,typeName:on.ZodDefault})}brand(){return new ci({typeName:on.ZodBranded,type:this,...en(this._def)})}catch(n){let r=typeof n==="function"?n:()=>n;return new Ba({...en(this._def),innerType:this,catchValue:r,typeName:on.ZodCatch})}describe(n){return new this.constructor({...this._def,description:n})}pipe(n){return Bc.create(this,n)}readonly(){return Wa.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var C5=/^c[^\s-]{8,}$/i,Q5=/^[0-9a-z]+$/,P5=/^[0-9A-HJKMNP-TV-Z]{26}$/i,G5=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,O5=/^[a-z0-9_-]{21}$/i,N5=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,x5=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,q5=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,F5="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",wl,j5=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,p5=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,K5=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,v5=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,T5=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,I5=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,xg="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",Z5=new RegExp(`^${xg}$`);function qg(n){let r="[0-5]\\d";if(n.precision)r=`${r}\\.\\d{${n.precision}}`;else if(n.precision==null)r=`${r}(\\.\\d+)?`;let t=n.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${r})${t}`}function y5(n){return new RegExp(`^${qg(n)}$`)}function Fg(n){let r=`${xg}T${qg(n)}`,t=[];if(t.push(n.local?"Z?":"Z"),n.offset)t.push("([+-]\\d{2}:?\\d{2})");return r=`${r}(${t.join("|")})`,new RegExp(`^${r}$`)}function n$(n,r){if((r==="v4"||!r)&&j5.test(n))return!0;if((r==="v6"||!r)&&K5.test(n))return!0;return!1}function r$(n,r){if(!N5.test(n))return!1;try{let[t]=n.split(".");if(!t)return!1;let o=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),a=JSON.parse(atob(o));if(typeof a!=="object"||a===null)return!1;if("typ"in a&&a?.typ!=="JWT")return!1;if(!a.alg)return!1;if(r&&a.alg!==r)return!1;return!0}catch{return!1}}function t$(n,r){if((r==="v4"||!r)&&p5.test(n))return!0;if((r==="v6"||!r)&&v5.test(n))return!0;return!1}class ft extends fn{_parse(n){if(this._def.coerce)n.data=String(n.data);if(this._getType(n)!==x.string){let a=this._getOrReturnCtx(n);return j(a,{code:G.invalid_type,expected:x.string,received:a.parsedType}),nn}let t=new _r,o=void 0;for(let a of this._def.checks)if(a.kind==="min"){if(n.data.length<a.value)o=this._getOrReturnCtx(n,o),j(o,{code:G.too_small,minimum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),t.dirty()}else if(a.kind==="max"){if(n.data.length>a.value)o=this._getOrReturnCtx(n,o),j(o,{code:G.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),t.dirty()}else if(a.kind==="length"){let c=n.data.length>a.value,e=n.data.length<a.value;if(c||e){if(o=this._getOrReturnCtx(n,o),c)j(o,{code:G.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!0,message:a.message});else if(e)j(o,{code:G.too_small,minimum:a.value,type:"string",inclusive:!0,exact:!0,message:a.message});t.dirty()}}else if(a.kind==="email"){if(!q5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"email",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="emoji"){if(!wl)wl=new RegExp(F5,"u");if(!wl.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"emoji",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="uuid"){if(!G5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"uuid",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="nanoid"){if(!O5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"nanoid",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="cuid"){if(!C5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"cuid",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="cuid2"){if(!Q5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"cuid2",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="ulid"){if(!P5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"ulid",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="url")try{new URL(n.data)}catch{o=this._getOrReturnCtx(n,o),j(o,{validation:"url",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="regex"){if(a.regex.lastIndex=0,!a.regex.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"regex",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="trim")n.data=n.data.trim();else if(a.kind==="includes"){if(!n.data.includes(a.value,a.position))o=this._getOrReturnCtx(n,o),j(o,{code:G.invalid_string,validation:{includes:a.value,position:a.position},message:a.message}),t.dirty()}else if(a.kind==="toLowerCase")n.data=n.data.toLowerCase();else if(a.kind==="toUpperCase")n.data=n.data.toUpperCase();else if(a.kind==="startsWith"){if(!n.data.startsWith(a.value))o=this._getOrReturnCtx(n,o),j(o,{code:G.invalid_string,validation:{startsWith:a.value},message:a.message}),t.dirty()}else if(a.kind==="endsWith"){if(!n.data.endsWith(a.value))o=this._getOrReturnCtx(n,o),j(o,{code:G.invalid_string,validation:{endsWith:a.value},message:a.message}),t.dirty()}else if(a.kind==="datetime"){if(!Fg(a).test(n.data))o=this._getOrReturnCtx(n,o),j(o,{code:G.invalid_string,validation:"datetime",message:a.message}),t.dirty()}else if(a.kind==="date"){if(!Z5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{code:G.invalid_string,validation:"date",message:a.message}),t.dirty()}else if(a.kind==="time"){if(!y5(a).test(n.data))o=this._getOrReturnCtx(n,o),j(o,{code:G.invalid_string,validation:"time",message:a.message}),t.dirty()}else if(a.kind==="duration"){if(!x5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"duration",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="ip"){if(!n$(n.data,a.version))o=this._getOrReturnCtx(n,o),j(o,{validation:"ip",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="jwt"){if(!r$(n.data,a.alg))o=this._getOrReturnCtx(n,o),j(o,{validation:"jwt",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="cidr"){if(!t$(n.data,a.version))o=this._getOrReturnCtx(n,o),j(o,{validation:"cidr",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="base64"){if(!T5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"base64",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="base64url"){if(!I5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"base64url",code:G.invalid_string,message:a.message}),t.dirty()}else bn.assertNever(a);return{status:t.value,value:n.data}}_regex(n,r,t){return this.refinement((o)=>n.test(o),{validation:r,code:G.invalid_string,...I.errToObj(t)})}_addCheck(n){return new ft({...this._def,checks:[...this._def.checks,n]})}email(n){return this._addCheck({kind:"email",...I.errToObj(n)})}url(n){return this._addCheck({kind:"url",...I.errToObj(n)})}emoji(n){return this._addCheck({kind:"emoji",...I.errToObj(n)})}uuid(n){return this._addCheck({kind:"uuid",...I.errToObj(n)})}nanoid(n){return this._addCheck({kind:"nanoid",...I.errToObj(n)})}cuid(n){return this._addCheck({kind:"cuid",...I.errToObj(n)})}cuid2(n){return this._addCheck({kind:"cuid2",...I.errToObj(n)})}ulid(n){return this._addCheck({kind:"ulid",...I.errToObj(n)})}base64(n){return this._addCheck({kind:"base64",...I.errToObj(n)})}base64url(n){return this._addCheck({kind:"base64url",...I.errToObj(n)})}jwt(n){return this._addCheck({kind:"jwt",...I.errToObj(n)})}ip(n){return this._addCheck({kind:"ip",...I.errToObj(n)})}cidr(n){return this._addCheck({kind:"cidr",...I.errToObj(n)})}datetime(n){if(typeof n==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:n});return this._addCheck({kind:"datetime",precision:typeof n?.precision>"u"?null:n?.precision,offset:n?.offset??!1,local:n?.local??!1,...I.errToObj(n?.message)})}date(n){return this._addCheck({kind:"date",message:n})}time(n){if(typeof n==="string")return this._addCheck({kind:"time",precision:null,message:n});return this._addCheck({kind:"time",precision:typeof n?.precision>"u"?null:n?.precision,...I.errToObj(n?.message)})}duration(n){return this._addCheck({kind:"duration",...I.errToObj(n)})}regex(n,r){return this._addCheck({kind:"regex",regex:n,...I.errToObj(r)})}includes(n,r){return this._addCheck({kind:"includes",value:n,position:r?.position,...I.errToObj(r?.message)})}startsWith(n,r){return this._addCheck({kind:"startsWith",value:n,...I.errToObj(r)})}endsWith(n,r){return this._addCheck({kind:"endsWith",value:n,...I.errToObj(r)})}min(n,r){return this._addCheck({kind:"min",value:n,...I.errToObj(r)})}max(n,r){return this._addCheck({kind:"max",value:n,...I.errToObj(r)})}length(n,r){return this._addCheck({kind:"length",value:n,...I.errToObj(r)})}nonempty(n){return this.min(1,I.errToObj(n))}trim(){return new ft({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new ft({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new ft({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find((n)=>n.kind==="datetime")}get isDate(){return!!this._def.checks.find((n)=>n.kind==="date")}get isTime(){return!!this._def.checks.find((n)=>n.kind==="time")}get isDuration(){return!!this._def.checks.find((n)=>n.kind==="duration")}get isEmail(){return!!this._def.checks.find((n)=>n.kind==="email")}get isURL(){return!!this._def.checks.find((n)=>n.kind==="url")}get isEmoji(){return!!this._def.checks.find((n)=>n.kind==="emoji")}get isUUID(){return!!this._def.checks.find((n)=>n.kind==="uuid")}get isNANOID(){return!!this._def.checks.find((n)=>n.kind==="nanoid")}get isCUID(){return!!this._def.checks.find((n)=>n.kind==="cuid")}get isCUID2(){return!!this._def.checks.find((n)=>n.kind==="cuid2")}get isULID(){return!!this._def.checks.find((n)=>n.kind==="ulid")}get isIP(){return!!this._def.checks.find((n)=>n.kind==="ip")}get isCIDR(){return!!this._def.checks.find((n)=>n.kind==="cidr")}get isBase64(){return!!this._def.checks.find((n)=>n.kind==="base64")}get isBase64url(){return!!this._def.checks.find((n)=>n.kind==="base64url")}get minLength(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n}get maxLength(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n}}ft.create=(n)=>{return new ft({checks:[],typeName:on.ZodString,coerce:n?.coerce??!1,...en(n)})};function o$(n,r){let t=(n.toString().split(".")[1]||"").length,o=(r.toString().split(".")[1]||"").length,a=t>o?t:o,c=Number.parseInt(n.toFixed(a).replace(".","")),e=Number.parseInt(r.toFixed(a).replace(".",""));return c%e/10**a}class wo extends fn{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(n){if(this._def.coerce)n.data=Number(n.data);if(this._getType(n)!==x.number){let a=this._getOrReturnCtx(n);return j(a,{code:G.invalid_type,expected:x.number,received:a.parsedType}),nn}let t=void 0,o=new _r;for(let a of this._def.checks)if(a.kind==="int"){if(!bn.isInteger(n.data))t=this._getOrReturnCtx(n,t),j(t,{code:G.invalid_type,expected:"integer",received:"float",message:a.message}),o.dirty()}else if(a.kind==="min"){if(a.inclusive?n.data<a.value:n.data<=a.value)t=this._getOrReturnCtx(n,t),j(t,{code:G.too_small,minimum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),o.dirty()}else if(a.kind==="max"){if(a.inclusive?n.data>a.value:n.data>=a.value)t=this._getOrReturnCtx(n,t),j(t,{code:G.too_big,maximum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),o.dirty()}else if(a.kind==="multipleOf"){if(o$(n.data,a.value)!==0)t=this._getOrReturnCtx(n,t),j(t,{code:G.not_multiple_of,multipleOf:a.value,message:a.message}),o.dirty()}else if(a.kind==="finite"){if(!Number.isFinite(n.data))t=this._getOrReturnCtx(n,t),j(t,{code:G.not_finite,message:a.message}),o.dirty()}else bn.assertNever(a);return{status:o.value,value:n.data}}gte(n,r){return this.setLimit("min",n,!0,I.toString(r))}gt(n,r){return this.setLimit("min",n,!1,I.toString(r))}lte(n,r){return this.setLimit("max",n,!0,I.toString(r))}lt(n,r){return this.setLimit("max",n,!1,I.toString(r))}setLimit(n,r,t,o){return new wo({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:t,message:I.toString(o)}]})}_addCheck(n){return new wo({...this._def,checks:[...this._def.checks,n]})}int(n){return this._addCheck({kind:"int",message:I.toString(n)})}positive(n){return this._addCheck({kind:"min",value:0,inclusive:!1,message:I.toString(n)})}negative(n){return this._addCheck({kind:"max",value:0,inclusive:!1,message:I.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:0,inclusive:!0,message:I.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:0,inclusive:!0,message:I.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:I.toString(r)})}finite(n){return this._addCheck({kind:"finite",message:I.toString(n)})}safe(n){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:I.toString(n)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:I.toString(n)})}get minValue(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n}get maxValue(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n}get isInt(){return!!this._def.checks.find((n)=>n.kind==="int"||n.kind==="multipleOf"&&bn.isInteger(n.value))}get isFinite(){let n=null,r=null;for(let t of this._def.checks)if(t.kind==="finite"||t.kind==="int"||t.kind==="multipleOf")return!0;else if(t.kind==="min"){if(r===null||t.value>r)r=t.value}else if(t.kind==="max"){if(n===null||t.value<n)n=t.value}return Number.isFinite(r)&&Number.isFinite(n)}}wo.create=(n)=>{return new wo({checks:[],typeName:on.ZodNumber,coerce:n?.coerce||!1,...en(n)})};class ho extends fn{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse(n){if(this._def.coerce)try{n.data=BigInt(n.data)}catch{return this._getInvalidInput(n)}if(this._getType(n)!==x.bigint)return this._getInvalidInput(n);let t=void 0,o=new _r;for(let a of this._def.checks)if(a.kind==="min"){if(a.inclusive?n.data<a.value:n.data<=a.value)t=this._getOrReturnCtx(n,t),j(t,{code:G.too_small,type:"bigint",minimum:a.value,inclusive:a.inclusive,message:a.message}),o.dirty()}else if(a.kind==="max"){if(a.inclusive?n.data>a.value:n.data>=a.value)t=this._getOrReturnCtx(n,t),j(t,{code:G.too_big,type:"bigint",maximum:a.value,inclusive:a.inclusive,message:a.message}),o.dirty()}else if(a.kind==="multipleOf"){if(n.data%a.value!==BigInt(0))t=this._getOrReturnCtx(n,t),j(t,{code:G.not_multiple_of,multipleOf:a.value,message:a.message}),o.dirty()}else bn.assertNever(a);return{status:o.value,value:n.data}}_getInvalidInput(n){let r=this._getOrReturnCtx(n);return j(r,{code:G.invalid_type,expected:x.bigint,received:r.parsedType}),nn}gte(n,r){return this.setLimit("min",n,!0,I.toString(r))}gt(n,r){return this.setLimit("min",n,!1,I.toString(r))}lte(n,r){return this.setLimit("max",n,!0,I.toString(r))}lt(n,r){return this.setLimit("max",n,!1,I.toString(r))}setLimit(n,r,t,o){return new ho({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:t,message:I.toString(o)}]})}_addCheck(n){return new ho({...this._def,checks:[...this._def.checks,n]})}positive(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:I.toString(n)})}negative(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:I.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:I.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:I.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:I.toString(r)})}get minValue(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n}get maxValue(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n}}ho.create=(n)=>{return new ho({checks:[],typeName:on.ZodBigInt,coerce:n?.coerce??!1,...en(n)})};class Ra extends fn{_parse(n){if(this._def.coerce)n.data=Boolean(n.data);if(this._getType(n)!==x.boolean){let t=this._getOrReturnCtx(n);return j(t,{code:G.invalid_type,expected:x.boolean,received:t.parsedType}),nn}return kr(n.data)}}Ra.create=(n)=>{return new Ra({typeName:on.ZodBoolean,coerce:n?.coerce||!1,...en(n)})};class qo extends fn{_parse(n){if(this._def.coerce)n.data=new Date(n.data);if(this._getType(n)!==x.date){let a=this._getOrReturnCtx(n);return j(a,{code:G.invalid_type,expected:x.date,received:a.parsedType}),nn}if(Number.isNaN(n.data.getTime())){let a=this._getOrReturnCtx(n);return j(a,{code:G.invalid_date}),nn}let t=new _r,o=void 0;for(let a of this._def.checks)if(a.kind==="min"){if(n.data.getTime()<a.value)o=this._getOrReturnCtx(n,o),j(o,{code:G.too_small,message:a.message,inclusive:!0,exact:!1,minimum:a.value,type:"date"}),t.dirty()}else if(a.kind==="max"){if(n.data.getTime()>a.value)o=this._getOrReturnCtx(n,o),j(o,{code:G.too_big,message:a.message,inclusive:!0,exact:!1,maximum:a.value,type:"date"}),t.dirty()}else bn.assertNever(a);return{status:t.value,value:new Date(n.data.getTime())}}_addCheck(n){return new qo({...this._def,checks:[...this._def.checks,n]})}min(n,r){return this._addCheck({kind:"min",value:n.getTime(),message:I.toString(r)})}max(n,r){return this._addCheck({kind:"max",value:n.getTime(),message:I.toString(r)})}get minDate(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n!=null?new Date(n):null}get maxDate(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n!=null?new Date(n):null}}qo.create=(n)=>{return new qo({checks:[],coerce:n?.coerce||!1,typeName:on.ZodDate,...en(n)})};class Mc extends fn{_parse(n){if(this._getType(n)!==x.symbol){let t=this._getOrReturnCtx(n);return j(t,{code:G.invalid_type,expected:x.symbol,received:t.parsedType}),nn}return kr(n.data)}}Mc.create=(n)=>{return new Mc({typeName:on.ZodSymbol,...en(n)})};class ka extends fn{_parse(n){if(this._getType(n)!==x.undefined){let t=this._getOrReturnCtx(n);return j(t,{code:G.invalid_type,expected:x.undefined,received:t.parsedType}),nn}return kr(n.data)}}ka.create=(n)=>{return new ka({typeName:on.ZodUndefined,...en(n)})};class Ea extends fn{_parse(n){if(this._getType(n)!==x.null){let t=this._getOrReturnCtx(n);return j(t,{code:G.invalid_type,expected:x.null,received:t.parsedType}),nn}return kr(n.data)}}Ea.create=(n)=>{return new Ea({typeName:on.ZodNull,...en(n)})};class Fo extends fn{constructor(){super(...arguments);this._any=!0}_parse(n){return kr(n.data)}}Fo.create=(n)=>{return new Fo({typeName:on.ZodAny,...en(n)})};class mo extends fn{constructor(){super(...arguments);this._unknown=!0}_parse(n){return kr(n.data)}}mo.create=(n)=>{return new mo({typeName:on.ZodUnknown,...en(n)})};class Bt extends fn{_parse(n){let r=this._getOrReturnCtx(n);return j(r,{code:G.invalid_type,expected:x.never,received:r.parsedType}),nn}}Bt.create=(n)=>{return new Bt({typeName:on.ZodNever,...en(n)})};class Dc extends fn{_parse(n){if(this._getType(n)!==x.undefined){let t=this._getOrReturnCtx(n);return j(t,{code:G.invalid_type,expected:x.void,received:t.parsedType}),nn}return kr(n.data)}}Dc.create=(n)=>{return new Dc({typeName:on.ZodVoid,...en(n)})};class lt extends fn{_parse(n){let{ctx:r,status:t}=this._processInputParams(n),o=this._def;if(r.parsedType!==x.array)return j(r,{code:G.invalid_type,expected:x.array,received:r.parsedType}),nn;if(o.exactLength!==null){let c=r.data.length>o.exactLength.value,e=r.data.length<o.exactLength.value;if(c||e)j(r,{code:c?G.too_big:G.too_small,minimum:e?o.exactLength.value:void 0,maximum:c?o.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:o.exactLength.message}),t.dirty()}if(o.minLength!==null){if(r.data.length<o.minLength.value)j(r,{code:G.too_small,minimum:o.minLength.value,type:"array",inclusive:!0,exact:!1,message:o.minLength.message}),t.dirty()}if(o.maxLength!==null){if(r.data.length>o.maxLength.value)j(r,{code:G.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),t.dirty()}if(r.common.async)return Promise.all([...r.data].map((c,e)=>{return o.type._parseAsync(new ut(r,c,r.path,e))})).then((c)=>{return _r.mergeArray(t,c)});let a=[...r.data].map((c,e)=>{return o.type._parseSync(new ut(r,c,r.path,e))});return _r.mergeArray(t,a)}get element(){return this._def.type}min(n,r){return new lt({...this._def,minLength:{value:n,message:I.toString(r)}})}max(n,r){return new lt({...this._def,maxLength:{value:n,message:I.toString(r)}})}length(n,r){return new lt({...this._def,exactLength:{value:n,message:I.toString(r)}})}nonempty(n){return this.min(1,n)}}lt.create=(n,r)=>{return new lt({type:n,minLength:null,maxLength:null,exactLength:null,typeName:on.ZodArray,...en(r)})};function $a(n){if(n instanceof On){let r={};for(let t in n.shape){let o=n.shape[t];r[t]=dt.create($a(o))}return new On({...n._def,shape:()=>r})}else if(n instanceof lt)return new lt({...n._def,type:$a(n.element)});else if(n instanceof dt)return dt.create($a(n.unwrap()));else if(n instanceof pt)return pt.create($a(n.unwrap()));else if(n instanceof Wt)return Wt.create(n.items.map((r)=>$a(r)));else return n}class On extends fn{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let n=this._def.shape(),r=bn.objectKeys(n);return this._cached={shape:n,keys:r},this._cached}_parse(n){if(this._getType(n)!==x.object){let s=this._getOrReturnCtx(n);return j(s,{code:G.invalid_type,expected:x.object,received:s.parsedType}),nn}let{status:t,ctx:o}=this._processInputParams(n),{shape:a,keys:c}=this._getCached(),e=[];if(!(this._def.catchall instanceof Bt&&this._def.unknownKeys==="strip")){for(let s in o.data)if(!c.includes(s))e.push(s)}let i=[];for(let s of c){let f=a[s],l=o.data[s];i.push({key:{status:"valid",value:s},value:f._parse(new ut(o,l,o.path,s)),alwaysSet:s in o.data})}if(this._def.catchall instanceof Bt){let s=this._def.unknownKeys;if(s==="passthrough")for(let f of e)i.push({key:{status:"valid",value:f},value:{status:"valid",value:o.data[f]}});else if(s==="strict"){if(e.length>0)j(o,{code:G.unrecognized_keys,keys:e}),t.dirty()}else if(s==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let s=this._def.catchall;for(let f of e){let l=o.data[f];i.push({key:{status:"valid",value:f},value:s._parse(new ut(o,l,o.path,f)),alwaysSet:f in o.data})}}if(o.common.async)return Promise.resolve().then(async()=>{let s=[];for(let f of i){let l=await f.key,d=await f.value;s.push({key:l,value:d,alwaysSet:f.alwaysSet})}return s}).then((s)=>{return _r.mergeObjectSync(t,s)});else return _r.mergeObjectSync(t,i)}get shape(){return this._def.shape()}strict(n){return I.errToObj,new On({...this._def,unknownKeys:"strict",...n!==void 0?{errorMap:(r,t)=>{let o=this._def.errorMap?.(r,t).message??t.defaultError;if(r.code==="unrecognized_keys")return{message:I.errToObj(n).message??o};return{message:o}}}:{}})}strip(){return new On({...this._def,unknownKeys:"strip"})}passthrough(){return new On({...this._def,unknownKeys:"passthrough"})}extend(n){return new On({...this._def,shape:()=>({...this._def.shape(),...n})})}merge(n){return new On({unknownKeys:n._def.unknownKeys,catchall:n._def.catchall,shape:()=>({...this._def.shape(),...n._def.shape()}),typeName:on.ZodObject})}setKey(n,r){return this.augment({[n]:r})}catchall(n){return new On({...this._def,catchall:n})}pick(n){let r={};for(let t of bn.objectKeys(n))if(n[t]&&this.shape[t])r[t]=this.shape[t];return new On({...this._def,shape:()=>r})}omit(n){let r={};for(let t of bn.objectKeys(this.shape))if(!n[t])r[t]=this.shape[t];return new On({...this._def,shape:()=>r})}deepPartial(){return $a(this)}partial(n){let r={};for(let t of bn.objectKeys(this.shape)){let o=this.shape[t];if(n&&!n[t])r[t]=o;else r[t]=o.optional()}return new On({...this._def,shape:()=>r})}required(n){let r={};for(let t of bn.objectKeys(this.shape))if(n&&!n[t])r[t]=this.shape[t];else{let a=this.shape[t];while(a instanceof dt)a=a._def.innerType;r[t]=a}return new On({...this._def,shape:()=>r})}keyof(){return jg(bn.objectKeys(this.shape))}}On.create=(n,r)=>{return new On({shape:()=>n,unknownKeys:"strip",catchall:Bt.create(),typeName:on.ZodObject,...en(r)})};On.strictCreate=(n,r)=>{return new On({shape:()=>n,unknownKeys:"strict",catchall:Bt.create(),typeName:on.ZodObject,...en(r)})};On.lazycreate=(n,r)=>{return new On({shape:n,unknownKeys:"strip",catchall:Bt.create(),typeName:on.ZodObject,...en(r)})};class Sa extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t=this._def.options;function o(a){for(let e of a)if(e.result.status==="valid")return e.result;for(let e of a)if(e.result.status==="dirty")return r.common.issues.push(...e.ctx.common.issues),e.result;let c=a.map((e)=>new Ur(e.ctx.common.issues));return j(r,{code:G.invalid_union,unionErrors:c}),nn}if(r.common.async)return Promise.all(t.map(async(a)=>{let c={...r,common:{...r.common,issues:[]},parent:null};return{result:await a._parseAsync({data:r.data,path:r.path,parent:c}),ctx:c}})).then(o);else{let a=void 0,c=[];for(let i of t){let s={...r,common:{...r.common,issues:[]},parent:null},f=i._parseSync({data:r.data,path:r.path,parent:s});if(f.status==="valid")return f;else if(f.status==="dirty"&&!a)a={result:f,ctx:s};if(s.common.issues.length)c.push(s.common.issues)}if(a)return r.common.issues.push(...a.ctx.common.issues),a.result;let e=c.map((i)=>new Ur(i));return j(r,{code:G.invalid_union,unionErrors:e}),nn}}get options(){return this._def.options}}Sa.create=(n,r)=>{return new Sa({options:n,typeName:on.ZodUnion,...en(r)})};var jt=(n)=>{if(n instanceof Da)return jt(n.schema);else if(n instanceof bt)return jt(n.innerType());else if(n instanceof Ha)return[n.value];else if(n instanceof $o)return n.options;else if(n instanceof za)return bn.objectValues(n.enum);else if(n instanceof Ua)return jt(n._def.innerType);else if(n instanceof ka)return[void 0];else if(n instanceof Ea)return[null];else if(n instanceof dt)return[void 0,...jt(n.unwrap())];else if(n instanceof pt)return[null,...jt(n.unwrap())];else if(n instanceof ci)return jt(n.unwrap());else if(n instanceof Wa)return jt(n.unwrap());else if(n instanceof Ba)return jt(n._def.innerType);else return[]};class ai extends fn{_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==x.object)return j(r,{code:G.invalid_type,expected:x.object,received:r.parsedType}),nn;let t=this.discriminator,o=r.data[t],a=this.optionsMap.get(o);if(!a)return j(r,{code:G.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[t]}),nn;if(r.common.async)return a._parseAsync({data:r.data,path:r.path,parent:r});else return a._parseSync({data:r.data,path:r.path,parent:r})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(n,r,t){let o=new Map;for(let a of r){let c=jt(a.shape[n]);if(!c.length)throw Error(`A discriminator value for key \`${n}\` could not be extracted from all schema options`);for(let e of c){if(o.has(e))throw Error(`Discriminator property ${String(n)} has duplicate value ${String(e)}`);o.set(e,a)}}return new ai({typeName:on.ZodDiscriminatedUnion,discriminator:n,options:r,optionsMap:o,...en(t)})}}function hl(n,r){let t=Ut(n),o=Ut(r);if(n===r)return{valid:!0,data:n};else if(t===x.object&&o===x.object){let a=bn.objectKeys(r),c=bn.objectKeys(n).filter((i)=>a.indexOf(i)!==-1),e={...n,...r};for(let i of c){let s=hl(n[i],r[i]);if(!s.valid)return{valid:!1};e[i]=s.data}return{valid:!0,data:e}}else if(t===x.array&&o===x.array){if(n.length!==r.length)return{valid:!1};let a=[];for(let c=0;c<n.length;c++){let e=n[c],i=r[c],s=hl(e,i);if(!s.valid)return{valid:!1};a.push(s.data)}return{valid:!0,data:a}}else if(t===x.date&&o===x.date&&+n===+r)return{valid:!0,data:n};else return{valid:!1}}class Ma extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n),o=(a,c)=>{if(ti(a)||ti(c))return nn;let e=hl(a.value,c.value);if(!e.valid)return j(t,{code:G.invalid_intersection_types}),nn;if(oi(a)||oi(c))r.dirty();return{status:r.value,value:e.data}};if(t.common.async)return Promise.all([this._def.left._parseAsync({data:t.data,path:t.path,parent:t}),this._def.right._parseAsync({data:t.data,path:t.path,parent:t})]).then(([a,c])=>o(a,c));else return o(this._def.left._parseSync({data:t.data,path:t.path,parent:t}),this._def.right._parseSync({data:t.data,path:t.path,parent:t}))}}Ma.create=(n,r,t)=>{return new Ma({left:n,right:r,typeName:on.ZodIntersection,...en(t)})};class Wt extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==x.array)return j(t,{code:G.invalid_type,expected:x.array,received:t.parsedType}),nn;if(t.data.length<this._def.items.length)return j(t,{code:G.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),nn;if(!this._def.rest&&t.data.length>this._def.items.length)j(t,{code:G.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty();let a=[...t.data].map((c,e)=>{let i=this._def.items[e]||this._def.rest;if(!i)return null;return i._parse(new ut(t,c,t.path,e))}).filter((c)=>!!c);if(t.common.async)return Promise.all(a).then((c)=>{return _r.mergeArray(r,c)});else return _r.mergeArray(r,a)}get items(){return this._def.items}rest(n){return new Wt({...this._def,rest:n})}}Wt.create=(n,r)=>{if(!Array.isArray(n))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new Wt({items:n,typeName:on.ZodTuple,rest:null,...en(r)})};class Hc extends fn{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==x.object)return j(t,{code:G.invalid_type,expected:x.object,received:t.parsedType}),nn;let o=[],a=this._def.keyType,c=this._def.valueType;for(let e in t.data)o.push({key:a._parse(new ut(t,e,t.path,e)),value:c._parse(new ut(t,t.data[e],t.path,e)),alwaysSet:e in t.data});if(t.common.async)return _r.mergeObjectAsync(r,o);else return _r.mergeObjectSync(r,o)}get element(){return this._def.valueType}static create(n,r,t){if(r instanceof fn)return new Hc({keyType:n,valueType:r,typeName:on.ZodRecord,...en(t)});return new Hc({keyType:ft.create(),valueType:n,typeName:on.ZodRecord,...en(r)})}}class zc extends fn{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==x.map)return j(t,{code:G.invalid_type,expected:x.map,received:t.parsedType}),nn;let o=this._def.keyType,a=this._def.valueType,c=[...t.data.entries()].map(([e,i],s)=>{return{key:o._parse(new ut(t,e,t.path,[s,"key"])),value:a._parse(new ut(t,i,t.path,[s,"value"]))}});if(t.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let i of c){let s=await i.key,f=await i.value;if(s.status==="aborted"||f.status==="aborted")return nn;if(s.status==="dirty"||f.status==="dirty")r.dirty();e.set(s.value,f.value)}return{status:r.value,value:e}})}else{let e=new Map;for(let i of c){let{key:s,value:f}=i;if(s.status==="aborted"||f.status==="aborted")return nn;if(s.status==="dirty"||f.status==="dirty")r.dirty();e.set(s.value,f.value)}return{status:r.value,value:e}}}}zc.create=(n,r,t)=>{return new zc({valueType:r,keyType:n,typeName:on.ZodMap,...en(t)})};class jo extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==x.set)return j(t,{code:G.invalid_type,expected:x.set,received:t.parsedType}),nn;let o=this._def;if(o.minSize!==null){if(t.data.size<o.minSize.value)j(t,{code:G.too_small,minimum:o.minSize.value,type:"set",inclusive:!0,exact:!1,message:o.minSize.message}),r.dirty()}if(o.maxSize!==null){if(t.data.size>o.maxSize.value)j(t,{code:G.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),r.dirty()}let a=this._def.valueType;function c(i){let s=new Set;for(let f of i){if(f.status==="aborted")return nn;if(f.status==="dirty")r.dirty();s.add(f.value)}return{status:r.value,value:s}}let e=[...t.data.values()].map((i,s)=>a._parse(new ut(t,i,t.path,s)));if(t.common.async)return Promise.all(e).then((i)=>c(i));else return c(e)}min(n,r){return new jo({...this._def,minSize:{value:n,message:I.toString(r)}})}max(n,r){return new jo({...this._def,maxSize:{value:n,message:I.toString(r)}})}size(n,r){return this.min(n,r).max(n,r)}nonempty(n){return this.min(1,n)}}jo.create=(n,r)=>{return new jo({valueType:n,minSize:null,maxSize:null,typeName:on.ZodSet,...en(r)})};class Aa extends fn{constructor(){super(...arguments);this.validate=this.implement}_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==x.function)return j(r,{code:G.invalid_type,expected:x.function,received:r.parsedType}),nn;function t(e,i){return Sc({data:e,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,wa(),Ft].filter((s)=>!!s),issueData:{code:G.invalid_arguments,argumentsError:i}})}function o(e,i){return Sc({data:e,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,wa(),Ft].filter((s)=>!!s),issueData:{code:G.invalid_return_type,returnTypeError:i}})}let a={errorMap:r.common.contextualErrorMap},c=r.data;if(this._def.returns instanceof po){let e=this;return kr(async function(...i){let s=new Ur([]),f=await e._def.args.parseAsync(i,a).catch((b)=>{throw s.addIssue(t(i,b)),s}),l=await Reflect.apply(c,this,f);return await e._def.returns._def.type.parseAsync(l,a).catch((b)=>{throw s.addIssue(o(l,b)),s})})}else{let e=this;return kr(function(...i){let s=e._def.args.safeParse(i,a);if(!s.success)throw new Ur([t(i,s.error)]);let f=Reflect.apply(c,this,s.data),l=e._def.returns.safeParse(f,a);if(!l.success)throw new Ur([o(f,l.error)]);return l.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...n){return new Aa({...this._def,args:Wt.create(n).rest(mo.create())})}returns(n){return new Aa({...this._def,returns:n})}implement(n){return this.parse(n)}strictImplement(n){return this.parse(n)}static create(n,r,t){return new Aa({args:n?n:Wt.create([]).rest(mo.create()),returns:r||mo.create(),typeName:on.ZodFunction,...en(t)})}}class Da extends fn{get schema(){return this._def.getter()}_parse(n){let{ctx:r}=this._processInputParams(n);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}}Da.create=(n,r)=>{return new Da({getter:n,typeName:on.ZodLazy,...en(r)})};class Ha extends fn{_parse(n){if(n.data!==this._def.value){let r=this._getOrReturnCtx(n);return j(r,{received:r.data,code:G.invalid_literal,expected:this._def.value}),nn}return{status:"valid",value:n.data}}get value(){return this._def.value}}Ha.create=(n,r)=>{return new Ha({value:n,typeName:on.ZodLiteral,...en(r)})};function jg(n,r){return new $o({values:n,typeName:on.ZodEnum,...en(r)})}class $o extends fn{_parse(n){if(typeof n.data!=="string"){let r=this._getOrReturnCtx(n),t=this._def.values;return j(r,{expected:bn.joinValues(t),received:r.parsedType,code:G.invalid_type}),nn}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has(n.data)){let r=this._getOrReturnCtx(n),t=this._def.values;return j(r,{received:r.data,code:G.invalid_enum_value,options:t}),nn}return kr(n.data)}get options(){return this._def.values}get enum(){let n={};for(let r of this._def.values)n[r]=r;return n}get Values(){let n={};for(let r of this._def.values)n[r]=r;return n}get Enum(){let n={};for(let r of this._def.values)n[r]=r;return n}extract(n,r=this._def){return $o.create(n,{...this._def,...r})}exclude(n,r=this._def){return $o.create(this.options.filter((t)=>!n.includes(t)),{...this._def,...r})}}$o.create=jg;class za extends fn{_parse(n){let r=bn.getValidEnumValues(this._def.values),t=this._getOrReturnCtx(n);if(t.parsedType!==x.string&&t.parsedType!==x.number){let o=bn.objectValues(r);return j(t,{expected:bn.joinValues(o),received:t.parsedType,code:G.invalid_type}),nn}if(!this._cache)this._cache=new Set(bn.getValidEnumValues(this._def.values));if(!this._cache.has(n.data)){let o=bn.objectValues(r);return j(t,{received:t.data,code:G.invalid_enum_value,options:o}),nn}return kr(n.data)}get enum(){return this._def.values}}za.create=(n,r)=>{return new za({values:n,typeName:on.ZodNativeEnum,...en(r)})};class po extends fn{unwrap(){return this._def.type}_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==x.promise&&r.common.async===!1)return j(r,{code:G.invalid_type,expected:x.promise,received:r.parsedType}),nn;let t=r.parsedType===x.promise?r.data:Promise.resolve(r.data);return kr(t.then((o)=>{return this._def.type.parseAsync(o,{path:r.path,errorMap:r.common.contextualErrorMap})}))}}po.create=(n,r)=>{return new po({type:n,typeName:on.ZodPromise,...en(r)})};class bt extends fn{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===on.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(n){let{status:r,ctx:t}=this._processInputParams(n),o=this._def.effect||null,a={addIssue:(c)=>{if(j(t,c),c.fatal)r.abort();else r.dirty()},get path(){return t.path}};if(a.addIssue=a.addIssue.bind(a),o.type==="preprocess"){let c=o.transform(t.data,a);if(t.common.async)return Promise.resolve(c).then(async(e)=>{if(r.value==="aborted")return nn;let i=await this._def.schema._parseAsync({data:e,path:t.path,parent:t});if(i.status==="aborted")return nn;if(i.status==="dirty")return xo(i.value);if(r.value==="dirty")return xo(i.value);return i});else{if(r.value==="aborted")return nn;let e=this._def.schema._parseSync({data:c,path:t.path,parent:t});if(e.status==="aborted")return nn;if(e.status==="dirty")return xo(e.value);if(r.value==="dirty")return xo(e.value);return e}}if(o.type==="refinement"){let c=(e)=>{let i=o.refinement(e,a);if(t.common.async)return Promise.resolve(i);if(i instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(t.common.async===!1){let e=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(e.status==="aborted")return nn;if(e.status==="dirty")r.dirty();return c(e.value),{status:r.value,value:e.value}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then((e)=>{if(e.status==="aborted")return nn;if(e.status==="dirty")r.dirty();return c(e.value).then(()=>{return{status:r.value,value:e.value}})})}if(o.type==="transform")if(t.common.async===!1){let c=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(!_o(c))return nn;let e=o.transform(c.value,a);if(e instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:e}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then((c)=>{if(!_o(c))return nn;return Promise.resolve(o.transform(c.value,a)).then((e)=>({status:r.value,value:e}))});bn.assertNever(o)}}bt.create=(n,r,t)=>{return new bt({schema:n,typeName:on.ZodEffects,effect:r,...en(t)})};bt.createWithPreprocess=(n,r,t)=>{return new bt({schema:r,effect:{type:"preprocess",transform:n},typeName:on.ZodEffects,...en(t)})};class dt extends fn{_parse(n){if(this._getType(n)===x.undefined)return kr(void 0);return this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}dt.create=(n,r)=>{return new dt({innerType:n,typeName:on.ZodOptional,...en(r)})};class pt extends fn{_parse(n){if(this._getType(n)===x.null)return kr(null);return this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}pt.create=(n,r)=>{return new pt({innerType:n,typeName:on.ZodNullable,...en(r)})};class Ua extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t=r.data;if(r.parsedType===x.undefined)t=this._def.defaultValue();return this._def.innerType._parse({data:t,path:r.path,parent:r})}removeDefault(){return this._def.innerType}}Ua.create=(n,r)=>{return new Ua({innerType:n,typeName:on.ZodDefault,defaultValue:typeof r.default==="function"?r.default:()=>r.default,...en(r)})};class Ba extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t={...r,common:{...r.common,issues:[]}},o=this._def.innerType._parse({data:t.data,path:t.path,parent:{...t}});if(ha(o))return o.then((a)=>{return{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new Ur(t.common.issues)},input:t.data})}});else return{status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new Ur(t.common.issues)},input:t.data})}}removeCatch(){return this._def.innerType}}Ba.create=(n,r)=>{return new Ba({innerType:n,typeName:on.ZodCatch,catchValue:typeof r.catch==="function"?r.catch:()=>r.catch,...en(r)})};class Uc extends fn{_parse(n){if(this._getType(n)!==x.nan){let t=this._getOrReturnCtx(n);return j(t,{code:G.invalid_type,expected:x.nan,received:t.parsedType}),nn}return{status:"valid",value:n.data}}}Uc.create=(n)=>{return new Uc({typeName:on.ZodNaN,...en(n)})};var a$=Symbol("zod_brand");class ci extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t=r.data;return this._def.type._parse({data:t,path:r.path,parent:r})}unwrap(){return this._def.type}}class Bc extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.common.async)return(async()=>{let a=await this._def.in._parseAsync({data:t.data,path:t.path,parent:t});if(a.status==="aborted")return nn;if(a.status==="dirty")return r.dirty(),xo(a.value);else return this._def.out._parseAsync({data:a.value,path:t.path,parent:t})})();else{let o=this._def.in._parseSync({data:t.data,path:t.path,parent:t});if(o.status==="aborted")return nn;if(o.status==="dirty")return r.dirty(),{status:"dirty",value:o.value};else return this._def.out._parseSync({data:o.value,path:t.path,parent:t})}}static create(n,r){return new Bc({in:n,out:r,typeName:on.ZodPipeline})}}class Wa extends fn{_parse(n){let r=this._def.innerType._parse(n),t=(o)=>{if(_o(o))o.value=Object.freeze(o.value);return o};return ha(r)?r.then((o)=>t(o)):t(r)}unwrap(){return this._def.innerType}}Wa.create=(n,r)=>{return new Wa({innerType:n,typeName:on.ZodReadonly,...en(r)})};function Ng(n,r){let t=typeof n==="function"?n(r):typeof n==="string"?{message:n}:n;return typeof t==="string"?{message:t}:t}function pg(n,r={},t){if(n)return Fo.create().superRefine((o,a)=>{let c=n(o);if(c instanceof Promise)return c.then((e)=>{if(!e){let i=Ng(r,o),s=i.fatal??t??!0;a.addIssue({code:"custom",...i,fatal:s})}});if(!c){let e=Ng(r,o),i=e.fatal??t??!0;a.addIssue({code:"custom",...e,fatal:i})}return});return Fo.create()}var c$={object:On.lazycreate},on;(function(n){n.ZodString="ZodString",n.ZodNumber="ZodNumber",n.ZodNaN="ZodNaN",n.ZodBigInt="ZodBigInt",n.ZodBoolean="ZodBoolean",n.ZodDate="ZodDate",n.ZodSymbol="ZodSymbol",n.ZodUndefined="ZodUndefined",n.ZodNull="ZodNull",n.ZodAny="ZodAny",n.ZodUnknown="ZodUnknown",n.ZodNever="ZodNever",n.ZodVoid="ZodVoid",n.ZodArray="ZodArray",n.ZodObject="ZodObject",n.ZodUnion="ZodUnion",n.ZodDiscriminatedUnion="ZodDiscriminatedUnion",n.ZodIntersection="ZodIntersection",n.ZodTuple="ZodTuple",n.ZodRecord="ZodRecord",n.ZodMap="ZodMap",n.ZodSet="ZodSet",n.ZodFunction="ZodFunction",n.ZodLazy="ZodLazy",n.ZodLiteral="ZodLiteral",n.ZodEnum="ZodEnum",n.ZodEffects="ZodEffects",n.ZodNativeEnum="ZodNativeEnum",n.ZodOptional="ZodOptional",n.ZodNullable="ZodNullable",n.ZodDefault="ZodDefault",n.ZodCatch="ZodCatch",n.ZodPromise="ZodPromise",n.ZodBranded="ZodBranded",n.ZodPipeline="ZodPipeline",n.ZodReadonly="ZodReadonly"})(on||(on={}));var e$=(n,r={message:`Input not instance of ${n.name}`})=>pg((t)=>t instanceof n,r),Kg=ft.create,vg=wo.create,i$=Uc.create,s$=ho.create,Tg=Ra.create,f$=qo.create,l$=Mc.create,d$=ka.create,u$=Ea.create,b$=Fo.create,g$=mo.create,_$=Bt.create,m$=Dc.create,w$=lt.create,h$=On.create,$$=On.strictCreate,A$=Sa.create,R$=ai.create,k$=Ma.create,E$=Wt.create,S$=Hc.create,M$=zc.create,D$=jo.create,H$=Aa.create,z$=Da.create,U$=Ha.create,B$=$o.create,W$=za.create,Y$=po.create,J$=bt.create,X$=dt.create,L$=pt.create,V$=bt.createWithPreprocess,C$=Bc.create,Q$=()=>Kg().optional(),P$=()=>vg().optional(),G$=()=>Tg().optional(),O$={string:(n)=>ft.create({...n,coerce:!0}),number:(n)=>wo.create({...n,coerce:!0}),boolean:(n)=>Ra.create({...n,coerce:!0}),bigint:(n)=>ho.create({...n,coerce:!0}),date:(n)=>qo.create({...n,coerce:!0})};var N$=nn;var x$=W.object({name:W.string().regex(/^x-/),component:W.unknown()}),Ig=W.function().returns(W.object({name:W.string(),extensions:W.array(x$)}));var Zg=[["--theme-","--scalar-"],["--sidebar-","--scalar-sidebar-"]],q$=Zg.map(([n])=>n);function ei(n){if(!q$.some((t)=>n.includes(t)))return n;return console.warn("DEPRECATION WARNING: It looks like you're using legacy CSS variables in your custom CSS string. Please migrate them to use the updated prefixes. See https://github.com/scalar/scalar/blob/main/documentation/themes.md#theme-prefix-changes"),Zg.reduce((t,[o,a])=>t.replaceAll(o,a),n)}var F$=W.enum(["alternate","default","moon","purple","solarized","bluePlanet","deepSpace","saturn","kepler","elysiajs","fastify","mars","none"]),j$=W.enum(["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]),p$=W.enum(["adonisjs","docusaurus","dotnet","elysiajs","express","fastapi","fastify","go","hono","html","laravel","litestar","nestjs","nextjs","nitro","nuxt","platformatic","react","rust","vue"]).nullable(),n_=W.object({url:W.string().optional(),content:W.union([W.string(),W.record(W.any()),W.function().returns(W.record(W.any())),W.null()]).optional(),title:W.string().optional(),slug:W.string().optional()}),K$=W.object({basePath:W.string()}),r_=W.object({url:W.string().optional(),content:W.union([W.string(),W.record(W.any()),W.function().returns(W.record(W.any())),W.null()]).optional(),title:W.string().optional(),slug:W.string().optional(),spec:n_.optional(),authentication:W.any().optional(),baseServerURL:W.string().optional(),hideClientButton:W.boolean().optional().default(!1).catch(!1),proxyUrl:W.string().optional(),searchHotKey:j$.optional(),servers:W.array(W.any()).optional(),showSidebar:W.boolean().optional().default(!0).catch(!0),theme:F$.optional().default("default").catch("default"),_integration:p$.optional(),onRequestSent:W.function().args(W.string()).returns(W.void()).optional()}),yg="https://api.scalar.com/request-proxy",$l="https://proxy.scalar.com",v$=r_.merge(W.object({layout:W.enum(["modern","classic"]).optional().default("modern").catch("modern"),proxy:W.string().optional(),plugins:W.array(Ig).optional(),isEditable:W.boolean().optional().default(!1).catch(!1),isLoading:W.boolean().optional().default(!1).catch(!1),hideModels:W.boolean().optional().default(!1).catch(!1),hideDownloadButton:W.boolean().optional().default(!1).catch(!1),hideTestRequestButton:W.boolean().optional().default(!1).catch(!1),hideSearch:W.boolean().optional().default(!1).catch(!1),darkMode:W.boolean().optional(),forceDarkModeState:W.enum(["dark","light"]).optional(),hideDarkModeToggle:W.boolean().optional().default(!1).catch(!1),metaData:W.any().optional(),favicon:W.string().optional(),hiddenClients:W.union([W.record(W.union([W.boolean(),W.array(W.string())])),W.array(W.string()),W.literal(!0)]).optional(),defaultHttpClient:W.object({targetKey:W.custom(),clientKey:W.string()}).optional(),customCss:W.string().optional(),onSpecUpdate:W.function().args(W.string()).returns(W.void()).optional(),onServerChange:W.function().args(W.string()).returns(W.void()).optional(),onDocumentSelect:W.function().returns(W.void().or(W.void().promise())).optional(),onLoaded:W.function().returns(W.void().or(W.void().promise())).optional(),onShowMore:W.function().args(W.string()).returns(W.void().or(W.void().promise())).optional(),onSidebarClick:W.function().args(W.string()).returns(W.void().or(W.void().promise())).optional(),pathRouting:K$.optional(),generateHeadingSlug:W.function().args(W.object({slug:W.string().default("headingSlug")})).returns(W.string()).optional(),generateModelSlug:W.function().args(W.object({name:W.string().default("modelName")})).returns(W.string()).optional(),generateTagSlug:W.function().args(W.object({name:W.string().default("tagName")})).returns(W.string()).optional(),generateOperationSlug:W.function().args(W.object({path:W.string(),operationId:W.string().optional(),method:W.string(),summary:W.string().optional()})).returns(W.string()).optional(),generateWebhookSlug:W.function().args(W.object({name:W.string(),method:W.string().optional()})).returns(W.string()).optional(),redirect:W.function().args(W.string()).returns(W.string().nullable().optional()).optional(),withDefaultFonts:W.boolean().optional().default(!0).catch(!0),defaultOpenAllTags:W.boolean().optional(),tagsSorter:W.union([W.literal("alpha"),W.function().args(W.any(),W.any()).returns(W.number())]).optional(),operationsSorter:W.union([W.literal("alpha"),W.literal("method"),W.function().args(W.any(),W.any()).returns(W.number())]).optional()})),T$=(n)=>{let r={...n};if(r.spec?.url)console.warn("[DEPRECATED] You're using the deprecated 'spec.url' attribute. Remove the spec prefix and move the 'url' attribute to the top level."),r.url=r.spec.url,delete r.spec;if(r.spec?.content)console.warn("[DEPRECATED] You're using the deprecated 'spec.content' attribute. Remove the spec prefix and move the 'content' attribute to the top level."),r.content=r.spec.content,delete r.spec;if(r.customCss)r.customCss=ei(r.customCss);if(r.proxy){if(console.warn("[DEPRECATED] You're using the deprecated 'proxy' attribute, rename it to 'proxyUrl' or update the package."),!r.proxyUrl)r.proxyUrl=r.proxy;delete r.proxy}if(r.proxyUrl===yg)console.warn(`[DEPRECATED] Warning: configuration.proxyUrl points to our old proxy (${yg}).`),console.warn(`[DEPRECATED] We are overwriting the value and use the new proxy URL (${$l}) instead.`),console.warn(`[DEPRECATED] Action Required: You should manually update your configuration to use the new URL (${$l}). Read more: https://github.com/scalar/scalar`),r.proxyUrl=$l;return r},I$=v$.transform(T$);var Z$=W.object({cdn:W.string().optional().default("https://cdn.jsdelivr.net/npm/@scalar/api-reference"),pageTitle:W.string().optional().default("Scalar API Reference")});var y$={alternate:Ug,default:Yg,moon:Vg,elysiajs:ri,fastify:Jg,purple:Cg,solarized:Pg,bluePlanet:Bg,deepSpace:Wg,saturn:Qg,kepler:Xg,mars:Lg};var XH=Object.keys(y$);import{replaceSchemaType as aA,t as Rl}from"elysia";function Al(n){return"type"in n||"properties"in n||"items"in n}function rA(n,r){return(n==="createdAt"||n==="updatedAt")&&"anyOf"in r&&Array.isArray(r.anyOf)}function a_(n){if(!Al(n)||typeof n!=="object"||n===null)return n;let r={...n};return Object.entries(r).forEach(([t,o])=>{if(Al(o))if(rA(t,o)){let a=o.anyOf?.find((c)=>Al(c)&&c.format==="date-time");if(a){let c={type:"string",format:"date-time",default:a.default};r[t]=c}}else r[t]=a_(o)}),r}var tA=(n,r,t,o,a)=>{let c=JSON.parse(o);if(c.components&&c.components.schemas)c.components.schemas=Object.fromEntries(Object.entries(c.components.schemas).map(([i,s])=>[i,a_(s)]));let e=JSON.stringify(c);return`<!DOCTYPE html>
1450
+ `;var W={};co(W,{void:()=>m$,util:()=>bn,unknown:()=>g$,union:()=>A$,undefined:()=>d$,tuple:()=>E$,transformer:()=>J$,symbol:()=>l$,string:()=>Kg,strictObject:()=>$$,setErrorMap:()=>L5,set:()=>D$,record:()=>S$,quotelessJson:()=>J5,promise:()=>Y$,preprocess:()=>V$,pipeline:()=>C$,ostring:()=>Q$,optional:()=>X$,onumber:()=>P$,oboolean:()=>G$,objectUtil:()=>ml,object:()=>h$,number:()=>vg,nullable:()=>L$,null:()=>u$,never:()=>_$,nativeEnum:()=>W$,nan:()=>i$,map:()=>M$,makeIssue:()=>Sc,literal:()=>U$,lazy:()=>z$,late:()=>c$,isValid:()=>_o,isDirty:()=>oi,isAsync:()=>ha,isAborted:()=>ti,intersection:()=>k$,instanceof:()=>e$,getParsedType:()=>Ut,getErrorMap:()=>wa,function:()=>H$,enum:()=>B$,effect:()=>J$,discriminatedUnion:()=>R$,defaultErrorMap:()=>Ft,datetimeRegex:()=>Fg,date:()=>f$,custom:()=>pg,coerce:()=>O$,boolean:()=>Tg,bigint:()=>s$,array:()=>w$,any:()=>b$,addIssueToContext:()=>j,ZodVoid:()=>Dc,ZodUnknown:()=>mo,ZodUnion:()=>Sa,ZodUndefined:()=>ka,ZodType:()=>fn,ZodTuple:()=>Wt,ZodTransformer:()=>bt,ZodSymbol:()=>Mc,ZodString:()=>ft,ZodSet:()=>jo,ZodSchema:()=>fn,ZodRecord:()=>Hc,ZodReadonly:()=>Wa,ZodPromise:()=>po,ZodPipeline:()=>Bc,ZodParsedType:()=>x,ZodOptional:()=>dt,ZodObject:()=>On,ZodNumber:()=>wo,ZodNullable:()=>pt,ZodNull:()=>Ea,ZodNever:()=>Bt,ZodNativeEnum:()=>za,ZodNaN:()=>Uc,ZodMap:()=>zc,ZodLiteral:()=>Ha,ZodLazy:()=>Da,ZodIssueCode:()=>G,ZodIntersection:()=>Ma,ZodFunction:()=>Aa,ZodFirstPartyTypeKind:()=>tn,ZodError:()=>Ur,ZodEnum:()=>$o,ZodEffects:()=>bt,ZodDiscriminatedUnion:()=>ai,ZodDefault:()=>Ua,ZodDate:()=>qo,ZodCatch:()=>Ba,ZodBranded:()=>ci,ZodBoolean:()=>Ra,ZodBigInt:()=>ho,ZodArray:()=>lt,ZodAny:()=>Fo,Schema:()=>fn,ParseStatus:()=>_r,OK:()=>kr,NEVER:()=>N$,INVALID:()=>nn,EMPTY_PATH:()=>V5,DIRTY:()=>xo,BRAND:()=>a$});var bn;(function(n){n.assertEqual=(a)=>{};function r(a){}n.assertIs=r;function t(a){throw Error()}n.assertNever=t,n.arrayToEnum=(a)=>{let c={};for(let e of a)c[e]=e;return c},n.getValidEnumValues=(a)=>{let c=n.objectKeys(a).filter((i)=>typeof a[a[i]]!=="number"),e={};for(let i of c)e[i]=a[i];return n.objectValues(e)},n.objectValues=(a)=>{return n.objectKeys(a).map(function(c){return a[c]})},n.objectKeys=typeof Object.keys==="function"?(a)=>Object.keys(a):(a)=>{let c=[];for(let e in a)if(Object.prototype.hasOwnProperty.call(a,e))c.push(e);return c},n.find=(a,c)=>{for(let e of a)if(c(e))return e;return},n.isInteger=typeof Number.isInteger==="function"?(a)=>Number.isInteger(a):(a)=>typeof a==="number"&&Number.isFinite(a)&&Math.floor(a)===a;function o(a,c=" | "){return a.map((e)=>typeof e==="string"?`'${e}'`:e).join(c)}n.joinValues=o,n.jsonStringifyReplacer=(a,c)=>{if(typeof c==="bigint")return c.toString();return c}})(bn||(bn={}));var ml;(function(n){n.mergeShapes=(r,t)=>{return{...r,...t}}})(ml||(ml={}));var x=bn.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Ut=(n)=>{switch(typeof n){case"undefined":return x.undefined;case"string":return x.string;case"number":return Number.isNaN(n)?x.nan:x.number;case"boolean":return x.boolean;case"function":return x.function;case"bigint":return x.bigint;case"symbol":return x.symbol;case"object":if(Array.isArray(n))return x.array;if(n===null)return x.null;if(n.then&&typeof n.then==="function"&&n.catch&&typeof n.catch==="function")return x.promise;if(typeof Map<"u"&&n instanceof Map)return x.map;if(typeof Set<"u"&&n instanceof Set)return x.set;if(typeof Date<"u"&&n instanceof Date)return x.date;return x.object;default:return x.unknown}};var G=bn.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),J5=(n)=>{return JSON.stringify(n,null,2).replace(/"([^"]+)":/g,"$1:")};class Ur extends Error{get errors(){return this.issues}constructor(n){super();this.issues=[],this.addIssue=(t)=>{this.issues=[...this.issues,t]},this.addIssues=(t=[])=>{this.issues=[...this.issues,...t]};let r=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,r);else this.__proto__=r;this.name="ZodError",this.issues=n}format(n){let r=n||function(a){return a.message},t={_errors:[]},o=(a)=>{for(let c of a.issues)if(c.code==="invalid_union")c.unionErrors.map(o);else if(c.code==="invalid_return_type")o(c.returnTypeError);else if(c.code==="invalid_arguments")o(c.argumentsError);else if(c.path.length===0)t._errors.push(r(c));else{let e=t,i=0;while(i<c.path.length){let s=c.path[i];if(i!==c.path.length-1)e[s]=e[s]||{_errors:[]};else e[s]=e[s]||{_errors:[]},e[s]._errors.push(r(c));e=e[s],i++}}};return o(this),t}static assert(n){if(!(n instanceof Ur))throw Error(`Not a ZodError: ${n}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,bn.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(n=(r)=>r.message){let r={},t=[];for(let o of this.issues)if(o.path.length>0){let a=o.path[0];r[a]=r[a]||[],r[a].push(n(o))}else t.push(n(o));return{formErrors:t,fieldErrors:r}}get formErrors(){return this.flatten()}}Ur.create=(n)=>{return new Ur(n)};var X5=(n,r)=>{let t;switch(n.code){case G.invalid_type:if(n.received===x.undefined)t="Required";else t=`Expected ${n.expected}, received ${n.received}`;break;case G.invalid_literal:t=`Invalid literal value, expected ${JSON.stringify(n.expected,bn.jsonStringifyReplacer)}`;break;case G.unrecognized_keys:t=`Unrecognized key(s) in object: ${bn.joinValues(n.keys,", ")}`;break;case G.invalid_union:t="Invalid input";break;case G.invalid_union_discriminator:t=`Invalid discriminator value. Expected ${bn.joinValues(n.options)}`;break;case G.invalid_enum_value:t=`Invalid enum value. Expected ${bn.joinValues(n.options)}, received '${n.received}'`;break;case G.invalid_arguments:t="Invalid function arguments";break;case G.invalid_return_type:t="Invalid function return type";break;case G.invalid_date:t="Invalid date";break;case G.invalid_string:if(typeof n.validation==="object")if("includes"in n.validation){if(t=`Invalid input: must include "${n.validation.includes}"`,typeof n.validation.position==="number")t=`${t} at one or more positions greater than or equal to ${n.validation.position}`}else if("startsWith"in n.validation)t=`Invalid input: must start with "${n.validation.startsWith}"`;else if("endsWith"in n.validation)t=`Invalid input: must end with "${n.validation.endsWith}"`;else bn.assertNever(n.validation);else if(n.validation!=="regex")t=`Invalid ${n.validation}`;else t="Invalid";break;case G.too_small:if(n.type==="array")t=`Array must contain ${n.exact?"exactly":n.inclusive?"at least":"more than"} ${n.minimum} element(s)`;else if(n.type==="string")t=`String must contain ${n.exact?"exactly":n.inclusive?"at least":"over"} ${n.minimum} character(s)`;else if(n.type==="number")t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`;else if(n.type==="bigint")t=`Number must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${n.minimum}`;else if(n.type==="date")t=`Date must be ${n.exact?"exactly equal to ":n.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(n.minimum))}`;else t="Invalid input";break;case G.too_big:if(n.type==="array")t=`Array must contain ${n.exact?"exactly":n.inclusive?"at most":"less than"} ${n.maximum} element(s)`;else if(n.type==="string")t=`String must contain ${n.exact?"exactly":n.inclusive?"at most":"under"} ${n.maximum} character(s)`;else if(n.type==="number")t=`Number must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`;else if(n.type==="bigint")t=`BigInt must be ${n.exact?"exactly":n.inclusive?"less than or equal to":"less than"} ${n.maximum}`;else if(n.type==="date")t=`Date must be ${n.exact?"exactly":n.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(n.maximum))}`;else t="Invalid input";break;case G.custom:t="Invalid input";break;case G.invalid_intersection_types:t="Intersection results could not be merged";break;case G.not_multiple_of:t=`Number must be a multiple of ${n.multipleOf}`;break;case G.not_finite:t="Number must be finite";break;default:t=r.defaultError,bn.assertNever(n)}return{message:t}},Ft=X5;var Gg=Ft;function L5(n){Gg=n}function wa(){return Gg}var Sc=(n)=>{let{data:r,path:t,errorMaps:o,issueData:a}=n,c=[...t,...a.path||[]],e={...a,path:c};if(a.message!==void 0)return{...a,path:c,message:a.message};let i="",s=o.filter((f)=>!!f).slice().reverse();for(let f of s)i=f(e,{data:r,defaultError:i}).message;return{...a,path:c,message:i}},V5=[];function j(n,r){let t=wa(),o=Sc({issueData:r,data:n.data,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,t,t===Ft?void 0:Ft].filter((a)=>!!a)});n.common.issues.push(o)}class _r{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(n,r){let t=[];for(let o of r){if(o.status==="aborted")return nn;if(o.status==="dirty")n.dirty();t.push(o.value)}return{status:n.value,value:t}}static async mergeObjectAsync(n,r){let t=[];for(let o of r){let a=await o.key,c=await o.value;t.push({key:a,value:c})}return _r.mergeObjectSync(n,t)}static mergeObjectSync(n,r){let t={};for(let o of r){let{key:a,value:c}=o;if(a.status==="aborted")return nn;if(c.status==="aborted")return nn;if(a.status==="dirty")n.dirty();if(c.status==="dirty")n.dirty();if(a.value!=="__proto__"&&(typeof c.value<"u"||o.alwaysSet))t[a.value]=c.value}return{status:n.value,value:t}}}var nn=Object.freeze({status:"aborted"}),xo=(n)=>({status:"dirty",value:n}),kr=(n)=>({status:"valid",value:n}),ti=(n)=>n.status==="aborted",oi=(n)=>n.status==="dirty",_o=(n)=>n.status==="valid",ha=(n)=>typeof Promise<"u"&&n instanceof Promise;var I;(function(n){n.errToObj=(r)=>typeof r==="string"?{message:r}:r||{},n.toString=(r)=>typeof r==="string"?r:r?.message})(I||(I={}));class ut{constructor(n,r,t,o){this._cachedPath=[],this.parent=n,this.data=r,this._path=t,this._key=o}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}var Og=(n,r)=>{if(_o(r))return{success:!0,data:r.value};else{if(!n.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new Ur(n.common.issues);return this._error=t,this._error}}}};function sn(n){if(!n)return{};let{errorMap:r,invalid_type_error:t,required_error:o,description:a}=n;if(r&&(t||o))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(r)return{errorMap:r,description:a};return{errorMap:(e,i)=>{let{message:s}=n;if(e.code==="invalid_enum_value")return{message:s??i.defaultError};if(typeof i.data>"u")return{message:s??o??i.defaultError};if(e.code!=="invalid_type")return{message:i.defaultError};return{message:s??t??i.defaultError}},description:a}}class fn{get description(){return this._def.description}_getType(n){return Ut(n.data)}_getOrReturnCtx(n,r){return r||{common:n.parent.common,data:n.data,parsedType:Ut(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}_processInputParams(n){return{status:new _r,ctx:{common:n.parent.common,data:n.data,parsedType:Ut(n.data),schemaErrorMap:this._def.errorMap,path:n.path,parent:n.parent}}}_parseSync(n){let r=this._parse(n);if(ha(r))throw Error("Synchronous parse encountered promise.");return r}_parseAsync(n){let r=this._parse(n);return Promise.resolve(r)}parse(n,r){let t=this.safeParse(n,r);if(t.success)return t.data;throw t.error}safeParse(n,r){let t={common:{issues:[],async:r?.async??!1,contextualErrorMap:r?.errorMap},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:Ut(n)},o=this._parseSync({data:n,path:t.path,parent:t});return Og(t,o)}"~validate"(n){let r={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:Ut(n)};if(!this["~standard"].async)try{let t=this._parseSync({data:n,path:[],parent:r});return _o(t)?{value:t.value}:{issues:r.common.issues}}catch(t){if(t?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;r.common={issues:[],async:!0}}return this._parseAsync({data:n,path:[],parent:r}).then((t)=>_o(t)?{value:t.value}:{issues:r.common.issues})}async parseAsync(n,r){let t=await this.safeParseAsync(n,r);if(t.success)return t.data;throw t.error}async safeParseAsync(n,r){let t={common:{issues:[],contextualErrorMap:r?.errorMap,async:!0},path:r?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:n,parsedType:Ut(n)},o=this._parse({data:n,path:t.path,parent:t}),a=await(ha(o)?o:Promise.resolve(o));return Og(t,a)}refine(n,r){let t=(o)=>{if(typeof r==="string"||typeof r>"u")return{message:r};else if(typeof r==="function")return r(o);else return r};return this._refinement((o,a)=>{let c=n(o),e=()=>a.addIssue({code:G.custom,...t(o)});if(typeof Promise<"u"&&c instanceof Promise)return c.then((i)=>{if(!i)return e(),!1;else return!0});if(!c)return e(),!1;else return!0})}refinement(n,r){return this._refinement((t,o)=>{if(!n(t))return o.addIssue(typeof r==="function"?r(t,o):r),!1;else return!0})}_refinement(n){return new bt({schema:this,typeName:tn.ZodEffects,effect:{type:"refinement",refinement:n}})}superRefine(n){return this._refinement(n)}constructor(n){this.spa=this.safeParseAsync,this._def=n,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(r)=>this["~validate"](r)}}optional(){return dt.create(this,this._def)}nullable(){return pt.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return lt.create(this)}promise(){return po.create(this,this._def)}or(n){return Sa.create([this,n],this._def)}and(n){return Ma.create(this,n,this._def)}transform(n){return new bt({...sn(this._def),schema:this,typeName:tn.ZodEffects,effect:{type:"transform",transform:n}})}default(n){let r=typeof n==="function"?n:()=>n;return new Ua({...sn(this._def),innerType:this,defaultValue:r,typeName:tn.ZodDefault})}brand(){return new ci({typeName:tn.ZodBranded,type:this,...sn(this._def)})}catch(n){let r=typeof n==="function"?n:()=>n;return new Ba({...sn(this._def),innerType:this,catchValue:r,typeName:tn.ZodCatch})}describe(n){return new this.constructor({...this._def,description:n})}pipe(n){return Bc.create(this,n)}readonly(){return Wa.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var C5=/^c[^\s-]{8,}$/i,Q5=/^[0-9a-z]+$/,P5=/^[0-9A-HJKMNP-TV-Z]{26}$/i,G5=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,O5=/^[a-z0-9_-]{21}$/i,N5=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,x5=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,q5=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,F5="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",wl,j5=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,p5=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,K5=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,v5=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,T5=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,I5=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,xg="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",Z5=new RegExp(`^${xg}$`);function qg(n){let r="[0-5]\\d";if(n.precision)r=`${r}\\.\\d{${n.precision}}`;else if(n.precision==null)r=`${r}(\\.\\d+)?`;let t=n.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${r})${t}`}function y5(n){return new RegExp(`^${qg(n)}$`)}function Fg(n){let r=`${xg}T${qg(n)}`,t=[];if(t.push(n.local?"Z?":"Z"),n.offset)t.push("([+-]\\d{2}:?\\d{2})");return r=`${r}(${t.join("|")})`,new RegExp(`^${r}$`)}function n$(n,r){if((r==="v4"||!r)&&j5.test(n))return!0;if((r==="v6"||!r)&&K5.test(n))return!0;return!1}function r$(n,r){if(!N5.test(n))return!1;try{let[t]=n.split(".");if(!t)return!1;let o=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),a=JSON.parse(atob(o));if(typeof a!=="object"||a===null)return!1;if("typ"in a&&a?.typ!=="JWT")return!1;if(!a.alg)return!1;if(r&&a.alg!==r)return!1;return!0}catch{return!1}}function t$(n,r){if((r==="v4"||!r)&&p5.test(n))return!0;if((r==="v6"||!r)&&v5.test(n))return!0;return!1}class ft extends fn{_parse(n){if(this._def.coerce)n.data=String(n.data);if(this._getType(n)!==x.string){let a=this._getOrReturnCtx(n);return j(a,{code:G.invalid_type,expected:x.string,received:a.parsedType}),nn}let t=new _r,o=void 0;for(let a of this._def.checks)if(a.kind==="min"){if(n.data.length<a.value)o=this._getOrReturnCtx(n,o),j(o,{code:G.too_small,minimum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),t.dirty()}else if(a.kind==="max"){if(n.data.length>a.value)o=this._getOrReturnCtx(n,o),j(o,{code:G.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),t.dirty()}else if(a.kind==="length"){let c=n.data.length>a.value,e=n.data.length<a.value;if(c||e){if(o=this._getOrReturnCtx(n,o),c)j(o,{code:G.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!0,message:a.message});else if(e)j(o,{code:G.too_small,minimum:a.value,type:"string",inclusive:!0,exact:!0,message:a.message});t.dirty()}}else if(a.kind==="email"){if(!q5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"email",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="emoji"){if(!wl)wl=new RegExp(F5,"u");if(!wl.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"emoji",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="uuid"){if(!G5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"uuid",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="nanoid"){if(!O5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"nanoid",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="cuid"){if(!C5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"cuid",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="cuid2"){if(!Q5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"cuid2",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="ulid"){if(!P5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"ulid",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="url")try{new URL(n.data)}catch{o=this._getOrReturnCtx(n,o),j(o,{validation:"url",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="regex"){if(a.regex.lastIndex=0,!a.regex.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"regex",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="trim")n.data=n.data.trim();else if(a.kind==="includes"){if(!n.data.includes(a.value,a.position))o=this._getOrReturnCtx(n,o),j(o,{code:G.invalid_string,validation:{includes:a.value,position:a.position},message:a.message}),t.dirty()}else if(a.kind==="toLowerCase")n.data=n.data.toLowerCase();else if(a.kind==="toUpperCase")n.data=n.data.toUpperCase();else if(a.kind==="startsWith"){if(!n.data.startsWith(a.value))o=this._getOrReturnCtx(n,o),j(o,{code:G.invalid_string,validation:{startsWith:a.value},message:a.message}),t.dirty()}else if(a.kind==="endsWith"){if(!n.data.endsWith(a.value))o=this._getOrReturnCtx(n,o),j(o,{code:G.invalid_string,validation:{endsWith:a.value},message:a.message}),t.dirty()}else if(a.kind==="datetime"){if(!Fg(a).test(n.data))o=this._getOrReturnCtx(n,o),j(o,{code:G.invalid_string,validation:"datetime",message:a.message}),t.dirty()}else if(a.kind==="date"){if(!Z5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{code:G.invalid_string,validation:"date",message:a.message}),t.dirty()}else if(a.kind==="time"){if(!y5(a).test(n.data))o=this._getOrReturnCtx(n,o),j(o,{code:G.invalid_string,validation:"time",message:a.message}),t.dirty()}else if(a.kind==="duration"){if(!x5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"duration",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="ip"){if(!n$(n.data,a.version))o=this._getOrReturnCtx(n,o),j(o,{validation:"ip",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="jwt"){if(!r$(n.data,a.alg))o=this._getOrReturnCtx(n,o),j(o,{validation:"jwt",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="cidr"){if(!t$(n.data,a.version))o=this._getOrReturnCtx(n,o),j(o,{validation:"cidr",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="base64"){if(!T5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"base64",code:G.invalid_string,message:a.message}),t.dirty()}else if(a.kind==="base64url"){if(!I5.test(n.data))o=this._getOrReturnCtx(n,o),j(o,{validation:"base64url",code:G.invalid_string,message:a.message}),t.dirty()}else bn.assertNever(a);return{status:t.value,value:n.data}}_regex(n,r,t){return this.refinement((o)=>n.test(o),{validation:r,code:G.invalid_string,...I.errToObj(t)})}_addCheck(n){return new ft({...this._def,checks:[...this._def.checks,n]})}email(n){return this._addCheck({kind:"email",...I.errToObj(n)})}url(n){return this._addCheck({kind:"url",...I.errToObj(n)})}emoji(n){return this._addCheck({kind:"emoji",...I.errToObj(n)})}uuid(n){return this._addCheck({kind:"uuid",...I.errToObj(n)})}nanoid(n){return this._addCheck({kind:"nanoid",...I.errToObj(n)})}cuid(n){return this._addCheck({kind:"cuid",...I.errToObj(n)})}cuid2(n){return this._addCheck({kind:"cuid2",...I.errToObj(n)})}ulid(n){return this._addCheck({kind:"ulid",...I.errToObj(n)})}base64(n){return this._addCheck({kind:"base64",...I.errToObj(n)})}base64url(n){return this._addCheck({kind:"base64url",...I.errToObj(n)})}jwt(n){return this._addCheck({kind:"jwt",...I.errToObj(n)})}ip(n){return this._addCheck({kind:"ip",...I.errToObj(n)})}cidr(n){return this._addCheck({kind:"cidr",...I.errToObj(n)})}datetime(n){if(typeof n==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:n});return this._addCheck({kind:"datetime",precision:typeof n?.precision>"u"?null:n?.precision,offset:n?.offset??!1,local:n?.local??!1,...I.errToObj(n?.message)})}date(n){return this._addCheck({kind:"date",message:n})}time(n){if(typeof n==="string")return this._addCheck({kind:"time",precision:null,message:n});return this._addCheck({kind:"time",precision:typeof n?.precision>"u"?null:n?.precision,...I.errToObj(n?.message)})}duration(n){return this._addCheck({kind:"duration",...I.errToObj(n)})}regex(n,r){return this._addCheck({kind:"regex",regex:n,...I.errToObj(r)})}includes(n,r){return this._addCheck({kind:"includes",value:n,position:r?.position,...I.errToObj(r?.message)})}startsWith(n,r){return this._addCheck({kind:"startsWith",value:n,...I.errToObj(r)})}endsWith(n,r){return this._addCheck({kind:"endsWith",value:n,...I.errToObj(r)})}min(n,r){return this._addCheck({kind:"min",value:n,...I.errToObj(r)})}max(n,r){return this._addCheck({kind:"max",value:n,...I.errToObj(r)})}length(n,r){return this._addCheck({kind:"length",value:n,...I.errToObj(r)})}nonempty(n){return this.min(1,I.errToObj(n))}trim(){return new ft({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new ft({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new ft({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find((n)=>n.kind==="datetime")}get isDate(){return!!this._def.checks.find((n)=>n.kind==="date")}get isTime(){return!!this._def.checks.find((n)=>n.kind==="time")}get isDuration(){return!!this._def.checks.find((n)=>n.kind==="duration")}get isEmail(){return!!this._def.checks.find((n)=>n.kind==="email")}get isURL(){return!!this._def.checks.find((n)=>n.kind==="url")}get isEmoji(){return!!this._def.checks.find((n)=>n.kind==="emoji")}get isUUID(){return!!this._def.checks.find((n)=>n.kind==="uuid")}get isNANOID(){return!!this._def.checks.find((n)=>n.kind==="nanoid")}get isCUID(){return!!this._def.checks.find((n)=>n.kind==="cuid")}get isCUID2(){return!!this._def.checks.find((n)=>n.kind==="cuid2")}get isULID(){return!!this._def.checks.find((n)=>n.kind==="ulid")}get isIP(){return!!this._def.checks.find((n)=>n.kind==="ip")}get isCIDR(){return!!this._def.checks.find((n)=>n.kind==="cidr")}get isBase64(){return!!this._def.checks.find((n)=>n.kind==="base64")}get isBase64url(){return!!this._def.checks.find((n)=>n.kind==="base64url")}get minLength(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n}get maxLength(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n}}ft.create=(n)=>{return new ft({checks:[],typeName:tn.ZodString,coerce:n?.coerce??!1,...sn(n)})};function o$(n,r){let t=(n.toString().split(".")[1]||"").length,o=(r.toString().split(".")[1]||"").length,a=t>o?t:o,c=Number.parseInt(n.toFixed(a).replace(".","")),e=Number.parseInt(r.toFixed(a).replace(".",""));return c%e/10**a}class wo extends fn{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(n){if(this._def.coerce)n.data=Number(n.data);if(this._getType(n)!==x.number){let a=this._getOrReturnCtx(n);return j(a,{code:G.invalid_type,expected:x.number,received:a.parsedType}),nn}let t=void 0,o=new _r;for(let a of this._def.checks)if(a.kind==="int"){if(!bn.isInteger(n.data))t=this._getOrReturnCtx(n,t),j(t,{code:G.invalid_type,expected:"integer",received:"float",message:a.message}),o.dirty()}else if(a.kind==="min"){if(a.inclusive?n.data<a.value:n.data<=a.value)t=this._getOrReturnCtx(n,t),j(t,{code:G.too_small,minimum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),o.dirty()}else if(a.kind==="max"){if(a.inclusive?n.data>a.value:n.data>=a.value)t=this._getOrReturnCtx(n,t),j(t,{code:G.too_big,maximum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),o.dirty()}else if(a.kind==="multipleOf"){if(o$(n.data,a.value)!==0)t=this._getOrReturnCtx(n,t),j(t,{code:G.not_multiple_of,multipleOf:a.value,message:a.message}),o.dirty()}else if(a.kind==="finite"){if(!Number.isFinite(n.data))t=this._getOrReturnCtx(n,t),j(t,{code:G.not_finite,message:a.message}),o.dirty()}else bn.assertNever(a);return{status:o.value,value:n.data}}gte(n,r){return this.setLimit("min",n,!0,I.toString(r))}gt(n,r){return this.setLimit("min",n,!1,I.toString(r))}lte(n,r){return this.setLimit("max",n,!0,I.toString(r))}lt(n,r){return this.setLimit("max",n,!1,I.toString(r))}setLimit(n,r,t,o){return new wo({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:t,message:I.toString(o)}]})}_addCheck(n){return new wo({...this._def,checks:[...this._def.checks,n]})}int(n){return this._addCheck({kind:"int",message:I.toString(n)})}positive(n){return this._addCheck({kind:"min",value:0,inclusive:!1,message:I.toString(n)})}negative(n){return this._addCheck({kind:"max",value:0,inclusive:!1,message:I.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:0,inclusive:!0,message:I.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:0,inclusive:!0,message:I.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:I.toString(r)})}finite(n){return this._addCheck({kind:"finite",message:I.toString(n)})}safe(n){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:I.toString(n)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:I.toString(n)})}get minValue(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n}get maxValue(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n}get isInt(){return!!this._def.checks.find((n)=>n.kind==="int"||n.kind==="multipleOf"&&bn.isInteger(n.value))}get isFinite(){let n=null,r=null;for(let t of this._def.checks)if(t.kind==="finite"||t.kind==="int"||t.kind==="multipleOf")return!0;else if(t.kind==="min"){if(r===null||t.value>r)r=t.value}else if(t.kind==="max"){if(n===null||t.value<n)n=t.value}return Number.isFinite(r)&&Number.isFinite(n)}}wo.create=(n)=>{return new wo({checks:[],typeName:tn.ZodNumber,coerce:n?.coerce||!1,...sn(n)})};class ho extends fn{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse(n){if(this._def.coerce)try{n.data=BigInt(n.data)}catch{return this._getInvalidInput(n)}if(this._getType(n)!==x.bigint)return this._getInvalidInput(n);let t=void 0,o=new _r;for(let a of this._def.checks)if(a.kind==="min"){if(a.inclusive?n.data<a.value:n.data<=a.value)t=this._getOrReturnCtx(n,t),j(t,{code:G.too_small,type:"bigint",minimum:a.value,inclusive:a.inclusive,message:a.message}),o.dirty()}else if(a.kind==="max"){if(a.inclusive?n.data>a.value:n.data>=a.value)t=this._getOrReturnCtx(n,t),j(t,{code:G.too_big,type:"bigint",maximum:a.value,inclusive:a.inclusive,message:a.message}),o.dirty()}else if(a.kind==="multipleOf"){if(n.data%a.value!==BigInt(0))t=this._getOrReturnCtx(n,t),j(t,{code:G.not_multiple_of,multipleOf:a.value,message:a.message}),o.dirty()}else bn.assertNever(a);return{status:o.value,value:n.data}}_getInvalidInput(n){let r=this._getOrReturnCtx(n);return j(r,{code:G.invalid_type,expected:x.bigint,received:r.parsedType}),nn}gte(n,r){return this.setLimit("min",n,!0,I.toString(r))}gt(n,r){return this.setLimit("min",n,!1,I.toString(r))}lte(n,r){return this.setLimit("max",n,!0,I.toString(r))}lt(n,r){return this.setLimit("max",n,!1,I.toString(r))}setLimit(n,r,t,o){return new ho({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:t,message:I.toString(o)}]})}_addCheck(n){return new ho({...this._def,checks:[...this._def.checks,n]})}positive(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:I.toString(n)})}negative(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:I.toString(n)})}nonpositive(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:I.toString(n)})}nonnegative(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:I.toString(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:I.toString(r)})}get minValue(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n}get maxValue(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n}}ho.create=(n)=>{return new ho({checks:[],typeName:tn.ZodBigInt,coerce:n?.coerce??!1,...sn(n)})};class Ra extends fn{_parse(n){if(this._def.coerce)n.data=Boolean(n.data);if(this._getType(n)!==x.boolean){let t=this._getOrReturnCtx(n);return j(t,{code:G.invalid_type,expected:x.boolean,received:t.parsedType}),nn}return kr(n.data)}}Ra.create=(n)=>{return new Ra({typeName:tn.ZodBoolean,coerce:n?.coerce||!1,...sn(n)})};class qo extends fn{_parse(n){if(this._def.coerce)n.data=new Date(n.data);if(this._getType(n)!==x.date){let a=this._getOrReturnCtx(n);return j(a,{code:G.invalid_type,expected:x.date,received:a.parsedType}),nn}if(Number.isNaN(n.data.getTime())){let a=this._getOrReturnCtx(n);return j(a,{code:G.invalid_date}),nn}let t=new _r,o=void 0;for(let a of this._def.checks)if(a.kind==="min"){if(n.data.getTime()<a.value)o=this._getOrReturnCtx(n,o),j(o,{code:G.too_small,message:a.message,inclusive:!0,exact:!1,minimum:a.value,type:"date"}),t.dirty()}else if(a.kind==="max"){if(n.data.getTime()>a.value)o=this._getOrReturnCtx(n,o),j(o,{code:G.too_big,message:a.message,inclusive:!0,exact:!1,maximum:a.value,type:"date"}),t.dirty()}else bn.assertNever(a);return{status:t.value,value:new Date(n.data.getTime())}}_addCheck(n){return new qo({...this._def,checks:[...this._def.checks,n]})}min(n,r){return this._addCheck({kind:"min",value:n.getTime(),message:I.toString(r)})}max(n,r){return this._addCheck({kind:"max",value:n.getTime(),message:I.toString(r)})}get minDate(){let n=null;for(let r of this._def.checks)if(r.kind==="min"){if(n===null||r.value>n)n=r.value}return n!=null?new Date(n):null}get maxDate(){let n=null;for(let r of this._def.checks)if(r.kind==="max"){if(n===null||r.value<n)n=r.value}return n!=null?new Date(n):null}}qo.create=(n)=>{return new qo({checks:[],coerce:n?.coerce||!1,typeName:tn.ZodDate,...sn(n)})};class Mc extends fn{_parse(n){if(this._getType(n)!==x.symbol){let t=this._getOrReturnCtx(n);return j(t,{code:G.invalid_type,expected:x.symbol,received:t.parsedType}),nn}return kr(n.data)}}Mc.create=(n)=>{return new Mc({typeName:tn.ZodSymbol,...sn(n)})};class ka extends fn{_parse(n){if(this._getType(n)!==x.undefined){let t=this._getOrReturnCtx(n);return j(t,{code:G.invalid_type,expected:x.undefined,received:t.parsedType}),nn}return kr(n.data)}}ka.create=(n)=>{return new ka({typeName:tn.ZodUndefined,...sn(n)})};class Ea extends fn{_parse(n){if(this._getType(n)!==x.null){let t=this._getOrReturnCtx(n);return j(t,{code:G.invalid_type,expected:x.null,received:t.parsedType}),nn}return kr(n.data)}}Ea.create=(n)=>{return new Ea({typeName:tn.ZodNull,...sn(n)})};class Fo extends fn{constructor(){super(...arguments);this._any=!0}_parse(n){return kr(n.data)}}Fo.create=(n)=>{return new Fo({typeName:tn.ZodAny,...sn(n)})};class mo extends fn{constructor(){super(...arguments);this._unknown=!0}_parse(n){return kr(n.data)}}mo.create=(n)=>{return new mo({typeName:tn.ZodUnknown,...sn(n)})};class Bt extends fn{_parse(n){let r=this._getOrReturnCtx(n);return j(r,{code:G.invalid_type,expected:x.never,received:r.parsedType}),nn}}Bt.create=(n)=>{return new Bt({typeName:tn.ZodNever,...sn(n)})};class Dc extends fn{_parse(n){if(this._getType(n)!==x.undefined){let t=this._getOrReturnCtx(n);return j(t,{code:G.invalid_type,expected:x.void,received:t.parsedType}),nn}return kr(n.data)}}Dc.create=(n)=>{return new Dc({typeName:tn.ZodVoid,...sn(n)})};class lt extends fn{_parse(n){let{ctx:r,status:t}=this._processInputParams(n),o=this._def;if(r.parsedType!==x.array)return j(r,{code:G.invalid_type,expected:x.array,received:r.parsedType}),nn;if(o.exactLength!==null){let c=r.data.length>o.exactLength.value,e=r.data.length<o.exactLength.value;if(c||e)j(r,{code:c?G.too_big:G.too_small,minimum:e?o.exactLength.value:void 0,maximum:c?o.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:o.exactLength.message}),t.dirty()}if(o.minLength!==null){if(r.data.length<o.minLength.value)j(r,{code:G.too_small,minimum:o.minLength.value,type:"array",inclusive:!0,exact:!1,message:o.minLength.message}),t.dirty()}if(o.maxLength!==null){if(r.data.length>o.maxLength.value)j(r,{code:G.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),t.dirty()}if(r.common.async)return Promise.all([...r.data].map((c,e)=>{return o.type._parseAsync(new ut(r,c,r.path,e))})).then((c)=>{return _r.mergeArray(t,c)});let a=[...r.data].map((c,e)=>{return o.type._parseSync(new ut(r,c,r.path,e))});return _r.mergeArray(t,a)}get element(){return this._def.type}min(n,r){return new lt({...this._def,minLength:{value:n,message:I.toString(r)}})}max(n,r){return new lt({...this._def,maxLength:{value:n,message:I.toString(r)}})}length(n,r){return new lt({...this._def,exactLength:{value:n,message:I.toString(r)}})}nonempty(n){return this.min(1,n)}}lt.create=(n,r)=>{return new lt({type:n,minLength:null,maxLength:null,exactLength:null,typeName:tn.ZodArray,...sn(r)})};function $a(n){if(n instanceof On){let r={};for(let t in n.shape){let o=n.shape[t];r[t]=dt.create($a(o))}return new On({...n._def,shape:()=>r})}else if(n instanceof lt)return new lt({...n._def,type:$a(n.element)});else if(n instanceof dt)return dt.create($a(n.unwrap()));else if(n instanceof pt)return pt.create($a(n.unwrap()));else if(n instanceof Wt)return Wt.create(n.items.map((r)=>$a(r)));else return n}class On extends fn{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let n=this._def.shape(),r=bn.objectKeys(n);return this._cached={shape:n,keys:r},this._cached}_parse(n){if(this._getType(n)!==x.object){let s=this._getOrReturnCtx(n);return j(s,{code:G.invalid_type,expected:x.object,received:s.parsedType}),nn}let{status:t,ctx:o}=this._processInputParams(n),{shape:a,keys:c}=this._getCached(),e=[];if(!(this._def.catchall instanceof Bt&&this._def.unknownKeys==="strip")){for(let s in o.data)if(!c.includes(s))e.push(s)}let i=[];for(let s of c){let f=a[s],l=o.data[s];i.push({key:{status:"valid",value:s},value:f._parse(new ut(o,l,o.path,s)),alwaysSet:s in o.data})}if(this._def.catchall instanceof Bt){let s=this._def.unknownKeys;if(s==="passthrough")for(let f of e)i.push({key:{status:"valid",value:f},value:{status:"valid",value:o.data[f]}});else if(s==="strict"){if(e.length>0)j(o,{code:G.unrecognized_keys,keys:e}),t.dirty()}else if(s==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let s=this._def.catchall;for(let f of e){let l=o.data[f];i.push({key:{status:"valid",value:f},value:s._parse(new ut(o,l,o.path,f)),alwaysSet:f in o.data})}}if(o.common.async)return Promise.resolve().then(async()=>{let s=[];for(let f of i){let l=await f.key,d=await f.value;s.push({key:l,value:d,alwaysSet:f.alwaysSet})}return s}).then((s)=>{return _r.mergeObjectSync(t,s)});else return _r.mergeObjectSync(t,i)}get shape(){return this._def.shape()}strict(n){return I.errToObj,new On({...this._def,unknownKeys:"strict",...n!==void 0?{errorMap:(r,t)=>{let o=this._def.errorMap?.(r,t).message??t.defaultError;if(r.code==="unrecognized_keys")return{message:I.errToObj(n).message??o};return{message:o}}}:{}})}strip(){return new On({...this._def,unknownKeys:"strip"})}passthrough(){return new On({...this._def,unknownKeys:"passthrough"})}extend(n){return new On({...this._def,shape:()=>({...this._def.shape(),...n})})}merge(n){return new On({unknownKeys:n._def.unknownKeys,catchall:n._def.catchall,shape:()=>({...this._def.shape(),...n._def.shape()}),typeName:tn.ZodObject})}setKey(n,r){return this.augment({[n]:r})}catchall(n){return new On({...this._def,catchall:n})}pick(n){let r={};for(let t of bn.objectKeys(n))if(n[t]&&this.shape[t])r[t]=this.shape[t];return new On({...this._def,shape:()=>r})}omit(n){let r={};for(let t of bn.objectKeys(this.shape))if(!n[t])r[t]=this.shape[t];return new On({...this._def,shape:()=>r})}deepPartial(){return $a(this)}partial(n){let r={};for(let t of bn.objectKeys(this.shape)){let o=this.shape[t];if(n&&!n[t])r[t]=o;else r[t]=o.optional()}return new On({...this._def,shape:()=>r})}required(n){let r={};for(let t of bn.objectKeys(this.shape))if(n&&!n[t])r[t]=this.shape[t];else{let a=this.shape[t];while(a instanceof dt)a=a._def.innerType;r[t]=a}return new On({...this._def,shape:()=>r})}keyof(){return jg(bn.objectKeys(this.shape))}}On.create=(n,r)=>{return new On({shape:()=>n,unknownKeys:"strip",catchall:Bt.create(),typeName:tn.ZodObject,...sn(r)})};On.strictCreate=(n,r)=>{return new On({shape:()=>n,unknownKeys:"strict",catchall:Bt.create(),typeName:tn.ZodObject,...sn(r)})};On.lazycreate=(n,r)=>{return new On({shape:n,unknownKeys:"strip",catchall:Bt.create(),typeName:tn.ZodObject,...sn(r)})};class Sa extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t=this._def.options;function o(a){for(let e of a)if(e.result.status==="valid")return e.result;for(let e of a)if(e.result.status==="dirty")return r.common.issues.push(...e.ctx.common.issues),e.result;let c=a.map((e)=>new Ur(e.ctx.common.issues));return j(r,{code:G.invalid_union,unionErrors:c}),nn}if(r.common.async)return Promise.all(t.map(async(a)=>{let c={...r,common:{...r.common,issues:[]},parent:null};return{result:await a._parseAsync({data:r.data,path:r.path,parent:c}),ctx:c}})).then(o);else{let a=void 0,c=[];for(let i of t){let s={...r,common:{...r.common,issues:[]},parent:null},f=i._parseSync({data:r.data,path:r.path,parent:s});if(f.status==="valid")return f;else if(f.status==="dirty"&&!a)a={result:f,ctx:s};if(s.common.issues.length)c.push(s.common.issues)}if(a)return r.common.issues.push(...a.ctx.common.issues),a.result;let e=c.map((i)=>new Ur(i));return j(r,{code:G.invalid_union,unionErrors:e}),nn}}get options(){return this._def.options}}Sa.create=(n,r)=>{return new Sa({options:n,typeName:tn.ZodUnion,...sn(r)})};var jt=(n)=>{if(n instanceof Da)return jt(n.schema);else if(n instanceof bt)return jt(n.innerType());else if(n instanceof Ha)return[n.value];else if(n instanceof $o)return n.options;else if(n instanceof za)return bn.objectValues(n.enum);else if(n instanceof Ua)return jt(n._def.innerType);else if(n instanceof ka)return[void 0];else if(n instanceof Ea)return[null];else if(n instanceof dt)return[void 0,...jt(n.unwrap())];else if(n instanceof pt)return[null,...jt(n.unwrap())];else if(n instanceof ci)return jt(n.unwrap());else if(n instanceof Wa)return jt(n.unwrap());else if(n instanceof Ba)return jt(n._def.innerType);else return[]};class ai extends fn{_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==x.object)return j(r,{code:G.invalid_type,expected:x.object,received:r.parsedType}),nn;let t=this.discriminator,o=r.data[t],a=this.optionsMap.get(o);if(!a)return j(r,{code:G.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[t]}),nn;if(r.common.async)return a._parseAsync({data:r.data,path:r.path,parent:r});else return a._parseSync({data:r.data,path:r.path,parent:r})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(n,r,t){let o=new Map;for(let a of r){let c=jt(a.shape[n]);if(!c.length)throw Error(`A discriminator value for key \`${n}\` could not be extracted from all schema options`);for(let e of c){if(o.has(e))throw Error(`Discriminator property ${String(n)} has duplicate value ${String(e)}`);o.set(e,a)}}return new ai({typeName:tn.ZodDiscriminatedUnion,discriminator:n,options:r,optionsMap:o,...sn(t)})}}function hl(n,r){let t=Ut(n),o=Ut(r);if(n===r)return{valid:!0,data:n};else if(t===x.object&&o===x.object){let a=bn.objectKeys(r),c=bn.objectKeys(n).filter((i)=>a.indexOf(i)!==-1),e={...n,...r};for(let i of c){let s=hl(n[i],r[i]);if(!s.valid)return{valid:!1};e[i]=s.data}return{valid:!0,data:e}}else if(t===x.array&&o===x.array){if(n.length!==r.length)return{valid:!1};let a=[];for(let c=0;c<n.length;c++){let e=n[c],i=r[c],s=hl(e,i);if(!s.valid)return{valid:!1};a.push(s.data)}return{valid:!0,data:a}}else if(t===x.date&&o===x.date&&+n===+r)return{valid:!0,data:n};else return{valid:!1}}class Ma extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n),o=(a,c)=>{if(ti(a)||ti(c))return nn;let e=hl(a.value,c.value);if(!e.valid)return j(t,{code:G.invalid_intersection_types}),nn;if(oi(a)||oi(c))r.dirty();return{status:r.value,value:e.data}};if(t.common.async)return Promise.all([this._def.left._parseAsync({data:t.data,path:t.path,parent:t}),this._def.right._parseAsync({data:t.data,path:t.path,parent:t})]).then(([a,c])=>o(a,c));else return o(this._def.left._parseSync({data:t.data,path:t.path,parent:t}),this._def.right._parseSync({data:t.data,path:t.path,parent:t}))}}Ma.create=(n,r,t)=>{return new Ma({left:n,right:r,typeName:tn.ZodIntersection,...sn(t)})};class Wt extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==x.array)return j(t,{code:G.invalid_type,expected:x.array,received:t.parsedType}),nn;if(t.data.length<this._def.items.length)return j(t,{code:G.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),nn;if(!this._def.rest&&t.data.length>this._def.items.length)j(t,{code:G.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty();let a=[...t.data].map((c,e)=>{let i=this._def.items[e]||this._def.rest;if(!i)return null;return i._parse(new ut(t,c,t.path,e))}).filter((c)=>!!c);if(t.common.async)return Promise.all(a).then((c)=>{return _r.mergeArray(r,c)});else return _r.mergeArray(r,a)}get items(){return this._def.items}rest(n){return new Wt({...this._def,rest:n})}}Wt.create=(n,r)=>{if(!Array.isArray(n))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new Wt({items:n,typeName:tn.ZodTuple,rest:null,...sn(r)})};class Hc extends fn{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==x.object)return j(t,{code:G.invalid_type,expected:x.object,received:t.parsedType}),nn;let o=[],a=this._def.keyType,c=this._def.valueType;for(let e in t.data)o.push({key:a._parse(new ut(t,e,t.path,e)),value:c._parse(new ut(t,t.data[e],t.path,e)),alwaysSet:e in t.data});if(t.common.async)return _r.mergeObjectAsync(r,o);else return _r.mergeObjectSync(r,o)}get element(){return this._def.valueType}static create(n,r,t){if(r instanceof fn)return new Hc({keyType:n,valueType:r,typeName:tn.ZodRecord,...sn(t)});return new Hc({keyType:ft.create(),valueType:n,typeName:tn.ZodRecord,...sn(r)})}}class zc extends fn{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==x.map)return j(t,{code:G.invalid_type,expected:x.map,received:t.parsedType}),nn;let o=this._def.keyType,a=this._def.valueType,c=[...t.data.entries()].map(([e,i],s)=>{return{key:o._parse(new ut(t,e,t.path,[s,"key"])),value:a._parse(new ut(t,i,t.path,[s,"value"]))}});if(t.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let i of c){let s=await i.key,f=await i.value;if(s.status==="aborted"||f.status==="aborted")return nn;if(s.status==="dirty"||f.status==="dirty")r.dirty();e.set(s.value,f.value)}return{status:r.value,value:e}})}else{let e=new Map;for(let i of c){let{key:s,value:f}=i;if(s.status==="aborted"||f.status==="aborted")return nn;if(s.status==="dirty"||f.status==="dirty")r.dirty();e.set(s.value,f.value)}return{status:r.value,value:e}}}}zc.create=(n,r,t)=>{return new zc({valueType:r,keyType:n,typeName:tn.ZodMap,...sn(t)})};class jo extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.parsedType!==x.set)return j(t,{code:G.invalid_type,expected:x.set,received:t.parsedType}),nn;let o=this._def;if(o.minSize!==null){if(t.data.size<o.minSize.value)j(t,{code:G.too_small,minimum:o.minSize.value,type:"set",inclusive:!0,exact:!1,message:o.minSize.message}),r.dirty()}if(o.maxSize!==null){if(t.data.size>o.maxSize.value)j(t,{code:G.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),r.dirty()}let a=this._def.valueType;function c(i){let s=new Set;for(let f of i){if(f.status==="aborted")return nn;if(f.status==="dirty")r.dirty();s.add(f.value)}return{status:r.value,value:s}}let e=[...t.data.values()].map((i,s)=>a._parse(new ut(t,i,t.path,s)));if(t.common.async)return Promise.all(e).then((i)=>c(i));else return c(e)}min(n,r){return new jo({...this._def,minSize:{value:n,message:I.toString(r)}})}max(n,r){return new jo({...this._def,maxSize:{value:n,message:I.toString(r)}})}size(n,r){return this.min(n,r).max(n,r)}nonempty(n){return this.min(1,n)}}jo.create=(n,r)=>{return new jo({valueType:n,minSize:null,maxSize:null,typeName:tn.ZodSet,...sn(r)})};class Aa extends fn{constructor(){super(...arguments);this.validate=this.implement}_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==x.function)return j(r,{code:G.invalid_type,expected:x.function,received:r.parsedType}),nn;function t(e,i){return Sc({data:e,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,wa(),Ft].filter((s)=>!!s),issueData:{code:G.invalid_arguments,argumentsError:i}})}function o(e,i){return Sc({data:e,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,wa(),Ft].filter((s)=>!!s),issueData:{code:G.invalid_return_type,returnTypeError:i}})}let a={errorMap:r.common.contextualErrorMap},c=r.data;if(this._def.returns instanceof po){let e=this;return kr(async function(...i){let s=new Ur([]),f=await e._def.args.parseAsync(i,a).catch((b)=>{throw s.addIssue(t(i,b)),s}),l=await Reflect.apply(c,this,f);return await e._def.returns._def.type.parseAsync(l,a).catch((b)=>{throw s.addIssue(o(l,b)),s})})}else{let e=this;return kr(function(...i){let s=e._def.args.safeParse(i,a);if(!s.success)throw new Ur([t(i,s.error)]);let f=Reflect.apply(c,this,s.data),l=e._def.returns.safeParse(f,a);if(!l.success)throw new Ur([o(f,l.error)]);return l.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...n){return new Aa({...this._def,args:Wt.create(n).rest(mo.create())})}returns(n){return new Aa({...this._def,returns:n})}implement(n){return this.parse(n)}strictImplement(n){return this.parse(n)}static create(n,r,t){return new Aa({args:n?n:Wt.create([]).rest(mo.create()),returns:r||mo.create(),typeName:tn.ZodFunction,...sn(t)})}}class Da extends fn{get schema(){return this._def.getter()}_parse(n){let{ctx:r}=this._processInputParams(n);return this._def.getter()._parse({data:r.data,path:r.path,parent:r})}}Da.create=(n,r)=>{return new Da({getter:n,typeName:tn.ZodLazy,...sn(r)})};class Ha extends fn{_parse(n){if(n.data!==this._def.value){let r=this._getOrReturnCtx(n);return j(r,{received:r.data,code:G.invalid_literal,expected:this._def.value}),nn}return{status:"valid",value:n.data}}get value(){return this._def.value}}Ha.create=(n,r)=>{return new Ha({value:n,typeName:tn.ZodLiteral,...sn(r)})};function jg(n,r){return new $o({values:n,typeName:tn.ZodEnum,...sn(r)})}class $o extends fn{_parse(n){if(typeof n.data!=="string"){let r=this._getOrReturnCtx(n),t=this._def.values;return j(r,{expected:bn.joinValues(t),received:r.parsedType,code:G.invalid_type}),nn}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has(n.data)){let r=this._getOrReturnCtx(n),t=this._def.values;return j(r,{received:r.data,code:G.invalid_enum_value,options:t}),nn}return kr(n.data)}get options(){return this._def.values}get enum(){let n={};for(let r of this._def.values)n[r]=r;return n}get Values(){let n={};for(let r of this._def.values)n[r]=r;return n}get Enum(){let n={};for(let r of this._def.values)n[r]=r;return n}extract(n,r=this._def){return $o.create(n,{...this._def,...r})}exclude(n,r=this._def){return $o.create(this.options.filter((t)=>!n.includes(t)),{...this._def,...r})}}$o.create=jg;class za extends fn{_parse(n){let r=bn.getValidEnumValues(this._def.values),t=this._getOrReturnCtx(n);if(t.parsedType!==x.string&&t.parsedType!==x.number){let o=bn.objectValues(r);return j(t,{expected:bn.joinValues(o),received:t.parsedType,code:G.invalid_type}),nn}if(!this._cache)this._cache=new Set(bn.getValidEnumValues(this._def.values));if(!this._cache.has(n.data)){let o=bn.objectValues(r);return j(t,{received:t.data,code:G.invalid_enum_value,options:o}),nn}return kr(n.data)}get enum(){return this._def.values}}za.create=(n,r)=>{return new za({values:n,typeName:tn.ZodNativeEnum,...sn(r)})};class po extends fn{unwrap(){return this._def.type}_parse(n){let{ctx:r}=this._processInputParams(n);if(r.parsedType!==x.promise&&r.common.async===!1)return j(r,{code:G.invalid_type,expected:x.promise,received:r.parsedType}),nn;let t=r.parsedType===x.promise?r.data:Promise.resolve(r.data);return kr(t.then((o)=>{return this._def.type.parseAsync(o,{path:r.path,errorMap:r.common.contextualErrorMap})}))}}po.create=(n,r)=>{return new po({type:n,typeName:tn.ZodPromise,...sn(r)})};class bt extends fn{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===tn.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(n){let{status:r,ctx:t}=this._processInputParams(n),o=this._def.effect||null,a={addIssue:(c)=>{if(j(t,c),c.fatal)r.abort();else r.dirty()},get path(){return t.path}};if(a.addIssue=a.addIssue.bind(a),o.type==="preprocess"){let c=o.transform(t.data,a);if(t.common.async)return Promise.resolve(c).then(async(e)=>{if(r.value==="aborted")return nn;let i=await this._def.schema._parseAsync({data:e,path:t.path,parent:t});if(i.status==="aborted")return nn;if(i.status==="dirty")return xo(i.value);if(r.value==="dirty")return xo(i.value);return i});else{if(r.value==="aborted")return nn;let e=this._def.schema._parseSync({data:c,path:t.path,parent:t});if(e.status==="aborted")return nn;if(e.status==="dirty")return xo(e.value);if(r.value==="dirty")return xo(e.value);return e}}if(o.type==="refinement"){let c=(e)=>{let i=o.refinement(e,a);if(t.common.async)return Promise.resolve(i);if(i instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(t.common.async===!1){let e=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(e.status==="aborted")return nn;if(e.status==="dirty")r.dirty();return c(e.value),{status:r.value,value:e.value}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then((e)=>{if(e.status==="aborted")return nn;if(e.status==="dirty")r.dirty();return c(e.value).then(()=>{return{status:r.value,value:e.value}})})}if(o.type==="transform")if(t.common.async===!1){let c=this._def.schema._parseSync({data:t.data,path:t.path,parent:t});if(!_o(c))return nn;let e=o.transform(c.value,a);if(e instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:e}}else return this._def.schema._parseAsync({data:t.data,path:t.path,parent:t}).then((c)=>{if(!_o(c))return nn;return Promise.resolve(o.transform(c.value,a)).then((e)=>({status:r.value,value:e}))});bn.assertNever(o)}}bt.create=(n,r,t)=>{return new bt({schema:n,typeName:tn.ZodEffects,effect:r,...sn(t)})};bt.createWithPreprocess=(n,r,t)=>{return new bt({schema:r,effect:{type:"preprocess",transform:n},typeName:tn.ZodEffects,...sn(t)})};class dt extends fn{_parse(n){if(this._getType(n)===x.undefined)return kr(void 0);return this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}dt.create=(n,r)=>{return new dt({innerType:n,typeName:tn.ZodOptional,...sn(r)})};class pt extends fn{_parse(n){if(this._getType(n)===x.null)return kr(null);return this._def.innerType._parse(n)}unwrap(){return this._def.innerType}}pt.create=(n,r)=>{return new pt({innerType:n,typeName:tn.ZodNullable,...sn(r)})};class Ua extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t=r.data;if(r.parsedType===x.undefined)t=this._def.defaultValue();return this._def.innerType._parse({data:t,path:r.path,parent:r})}removeDefault(){return this._def.innerType}}Ua.create=(n,r)=>{return new Ua({innerType:n,typeName:tn.ZodDefault,defaultValue:typeof r.default==="function"?r.default:()=>r.default,...sn(r)})};class Ba extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t={...r,common:{...r.common,issues:[]}},o=this._def.innerType._parse({data:t.data,path:t.path,parent:{...t}});if(ha(o))return o.then((a)=>{return{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new Ur(t.common.issues)},input:t.data})}});else return{status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new Ur(t.common.issues)},input:t.data})}}removeCatch(){return this._def.innerType}}Ba.create=(n,r)=>{return new Ba({innerType:n,typeName:tn.ZodCatch,catchValue:typeof r.catch==="function"?r.catch:()=>r.catch,...sn(r)})};class Uc extends fn{_parse(n){if(this._getType(n)!==x.nan){let t=this._getOrReturnCtx(n);return j(t,{code:G.invalid_type,expected:x.nan,received:t.parsedType}),nn}return{status:"valid",value:n.data}}}Uc.create=(n)=>{return new Uc({typeName:tn.ZodNaN,...sn(n)})};var a$=Symbol("zod_brand");class ci extends fn{_parse(n){let{ctx:r}=this._processInputParams(n),t=r.data;return this._def.type._parse({data:t,path:r.path,parent:r})}unwrap(){return this._def.type}}class Bc extends fn{_parse(n){let{status:r,ctx:t}=this._processInputParams(n);if(t.common.async)return(async()=>{let a=await this._def.in._parseAsync({data:t.data,path:t.path,parent:t});if(a.status==="aborted")return nn;if(a.status==="dirty")return r.dirty(),xo(a.value);else return this._def.out._parseAsync({data:a.value,path:t.path,parent:t})})();else{let o=this._def.in._parseSync({data:t.data,path:t.path,parent:t});if(o.status==="aborted")return nn;if(o.status==="dirty")return r.dirty(),{status:"dirty",value:o.value};else return this._def.out._parseSync({data:o.value,path:t.path,parent:t})}}static create(n,r){return new Bc({in:n,out:r,typeName:tn.ZodPipeline})}}class Wa extends fn{_parse(n){let r=this._def.innerType._parse(n),t=(o)=>{if(_o(o))o.value=Object.freeze(o.value);return o};return ha(r)?r.then((o)=>t(o)):t(r)}unwrap(){return this._def.innerType}}Wa.create=(n,r)=>{return new Wa({innerType:n,typeName:tn.ZodReadonly,...sn(r)})};function Ng(n,r){let t=typeof n==="function"?n(r):typeof n==="string"?{message:n}:n;return typeof t==="string"?{message:t}:t}function pg(n,r={},t){if(n)return Fo.create().superRefine((o,a)=>{let c=n(o);if(c instanceof Promise)return c.then((e)=>{if(!e){let i=Ng(r,o),s=i.fatal??t??!0;a.addIssue({code:"custom",...i,fatal:s})}});if(!c){let e=Ng(r,o),i=e.fatal??t??!0;a.addIssue({code:"custom",...e,fatal:i})}return});return Fo.create()}var c$={object:On.lazycreate},tn;(function(n){n.ZodString="ZodString",n.ZodNumber="ZodNumber",n.ZodNaN="ZodNaN",n.ZodBigInt="ZodBigInt",n.ZodBoolean="ZodBoolean",n.ZodDate="ZodDate",n.ZodSymbol="ZodSymbol",n.ZodUndefined="ZodUndefined",n.ZodNull="ZodNull",n.ZodAny="ZodAny",n.ZodUnknown="ZodUnknown",n.ZodNever="ZodNever",n.ZodVoid="ZodVoid",n.ZodArray="ZodArray",n.ZodObject="ZodObject",n.ZodUnion="ZodUnion",n.ZodDiscriminatedUnion="ZodDiscriminatedUnion",n.ZodIntersection="ZodIntersection",n.ZodTuple="ZodTuple",n.ZodRecord="ZodRecord",n.ZodMap="ZodMap",n.ZodSet="ZodSet",n.ZodFunction="ZodFunction",n.ZodLazy="ZodLazy",n.ZodLiteral="ZodLiteral",n.ZodEnum="ZodEnum",n.ZodEffects="ZodEffects",n.ZodNativeEnum="ZodNativeEnum",n.ZodOptional="ZodOptional",n.ZodNullable="ZodNullable",n.ZodDefault="ZodDefault",n.ZodCatch="ZodCatch",n.ZodPromise="ZodPromise",n.ZodBranded="ZodBranded",n.ZodPipeline="ZodPipeline",n.ZodReadonly="ZodReadonly"})(tn||(tn={}));var e$=(n,r={message:`Input not instance of ${n.name}`})=>pg((t)=>t instanceof n,r),Kg=ft.create,vg=wo.create,i$=Uc.create,s$=ho.create,Tg=Ra.create,f$=qo.create,l$=Mc.create,d$=ka.create,u$=Ea.create,b$=Fo.create,g$=mo.create,_$=Bt.create,m$=Dc.create,w$=lt.create,h$=On.create,$$=On.strictCreate,A$=Sa.create,R$=ai.create,k$=Ma.create,E$=Wt.create,S$=Hc.create,M$=zc.create,D$=jo.create,H$=Aa.create,z$=Da.create,U$=Ha.create,B$=$o.create,W$=za.create,Y$=po.create,J$=bt.create,X$=dt.create,L$=pt.create,V$=bt.createWithPreprocess,C$=Bc.create,Q$=()=>Kg().optional(),P$=()=>vg().optional(),G$=()=>Tg().optional(),O$={string:(n)=>ft.create({...n,coerce:!0}),number:(n)=>wo.create({...n,coerce:!0}),boolean:(n)=>Ra.create({...n,coerce:!0}),bigint:(n)=>ho.create({...n,coerce:!0}),date:(n)=>qo.create({...n,coerce:!0})};var N$=nn;var x$=W.object({name:W.string().regex(/^x-/),component:W.unknown()}),Ig=W.function().returns(W.object({name:W.string(),extensions:W.array(x$)}));var Zg=[["--theme-","--scalar-"],["--sidebar-","--scalar-sidebar-"]],q$=Zg.map(([n])=>n);function ei(n){if(!q$.some((t)=>n.includes(t)))return n;return console.warn("DEPRECATION WARNING: It looks like you're using legacy CSS variables in your custom CSS string. Please migrate them to use the updated prefixes. See https://github.com/scalar/scalar/blob/main/documentation/themes.md#theme-prefix-changes"),Zg.reduce((t,[o,a])=>t.replaceAll(o,a),n)}var F$=W.enum(["alternate","default","moon","purple","solarized","bluePlanet","deepSpace","saturn","kepler","elysiajs","fastify","mars","none"]),j$=W.enum(["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]),p$=W.enum(["adonisjs","docusaurus","dotnet","elysiajs","express","fastapi","fastify","go","hono","html","laravel","litestar","nestjs","nextjs","nitro","nuxt","platformatic","react","rust","vue"]).nullable(),n_=W.object({url:W.string().optional(),content:W.union([W.string(),W.record(W.any()),W.function().returns(W.record(W.any())),W.null()]).optional(),title:W.string().optional(),slug:W.string().optional()}),K$=W.object({basePath:W.string()}),r_=W.object({url:W.string().optional(),content:W.union([W.string(),W.record(W.any()),W.function().returns(W.record(W.any())),W.null()]).optional(),title:W.string().optional(),slug:W.string().optional(),spec:n_.optional(),authentication:W.any().optional(),baseServerURL:W.string().optional(),hideClientButton:W.boolean().optional().default(!1).catch(!1),proxyUrl:W.string().optional(),searchHotKey:j$.optional(),servers:W.array(W.any()).optional(),showSidebar:W.boolean().optional().default(!0).catch(!0),theme:F$.optional().default("default").catch("default"),_integration:p$.optional(),onRequestSent:W.function().args(W.string()).returns(W.void()).optional()}),yg="https://api.scalar.com/request-proxy",$l="https://proxy.scalar.com",v$=r_.merge(W.object({layout:W.enum(["modern","classic"]).optional().default("modern").catch("modern"),proxy:W.string().optional(),plugins:W.array(Ig).optional(),isEditable:W.boolean().optional().default(!1).catch(!1),isLoading:W.boolean().optional().default(!1).catch(!1),hideModels:W.boolean().optional().default(!1).catch(!1),hideDownloadButton:W.boolean().optional().default(!1).catch(!1),hideTestRequestButton:W.boolean().optional().default(!1).catch(!1),hideSearch:W.boolean().optional().default(!1).catch(!1),darkMode:W.boolean().optional(),forceDarkModeState:W.enum(["dark","light"]).optional(),hideDarkModeToggle:W.boolean().optional().default(!1).catch(!1),metaData:W.any().optional(),favicon:W.string().optional(),hiddenClients:W.union([W.record(W.union([W.boolean(),W.array(W.string())])),W.array(W.string()),W.literal(!0)]).optional(),defaultHttpClient:W.object({targetKey:W.custom(),clientKey:W.string()}).optional(),customCss:W.string().optional(),onSpecUpdate:W.function().args(W.string()).returns(W.void()).optional(),onServerChange:W.function().args(W.string()).returns(W.void()).optional(),onDocumentSelect:W.function().returns(W.void().or(W.void().promise())).optional(),onLoaded:W.function().returns(W.void().or(W.void().promise())).optional(),onShowMore:W.function().args(W.string()).returns(W.void().or(W.void().promise())).optional(),onSidebarClick:W.function().args(W.string()).returns(W.void().or(W.void().promise())).optional(),pathRouting:K$.optional(),generateHeadingSlug:W.function().args(W.object({slug:W.string().default("headingSlug")})).returns(W.string()).optional(),generateModelSlug:W.function().args(W.object({name:W.string().default("modelName")})).returns(W.string()).optional(),generateTagSlug:W.function().args(W.object({name:W.string().default("tagName")})).returns(W.string()).optional(),generateOperationSlug:W.function().args(W.object({path:W.string(),operationId:W.string().optional(),method:W.string(),summary:W.string().optional()})).returns(W.string()).optional(),generateWebhookSlug:W.function().args(W.object({name:W.string(),method:W.string().optional()})).returns(W.string()).optional(),redirect:W.function().args(W.string()).returns(W.string().nullable().optional()).optional(),withDefaultFonts:W.boolean().optional().default(!0).catch(!0),defaultOpenAllTags:W.boolean().optional(),tagsSorter:W.union([W.literal("alpha"),W.function().args(W.any(),W.any()).returns(W.number())]).optional(),operationsSorter:W.union([W.literal("alpha"),W.literal("method"),W.function().args(W.any(),W.any()).returns(W.number())]).optional()})),T$=(n)=>{let r={...n};if(r.spec?.url)console.warn("[DEPRECATED] You're using the deprecated 'spec.url' attribute. Remove the spec prefix and move the 'url' attribute to the top level."),r.url=r.spec.url,delete r.spec;if(r.spec?.content)console.warn("[DEPRECATED] You're using the deprecated 'spec.content' attribute. Remove the spec prefix and move the 'content' attribute to the top level."),r.content=r.spec.content,delete r.spec;if(r.customCss)r.customCss=ei(r.customCss);if(r.proxy){if(console.warn("[DEPRECATED] You're using the deprecated 'proxy' attribute, rename it to 'proxyUrl' or update the package."),!r.proxyUrl)r.proxyUrl=r.proxy;delete r.proxy}if(r.proxyUrl===yg)console.warn(`[DEPRECATED] Warning: configuration.proxyUrl points to our old proxy (${yg}).`),console.warn(`[DEPRECATED] We are overwriting the value and use the new proxy URL (${$l}) instead.`),console.warn(`[DEPRECATED] Action Required: You should manually update your configuration to use the new URL (${$l}). Read more: https://github.com/scalar/scalar`),r.proxyUrl=$l;return r},I$=v$.transform(T$);var Z$=W.object({cdn:W.string().optional().default("https://cdn.jsdelivr.net/npm/@scalar/api-reference"),pageTitle:W.string().optional().default("Scalar API Reference")});var y$={alternate:Ug,default:Yg,moon:Vg,elysiajs:ri,fastify:Jg,purple:Cg,solarized:Pg,bluePlanet:Bg,deepSpace:Wg,saturn:Qg,kepler:Xg,mars:Lg};var XH=Object.keys(y$);import{replaceSchemaType as aA,t as Rl}from"elysia";function Al(n){return"type"in n||"properties"in n||"items"in n}function rA(n,r){return(n==="createdAt"||n==="updatedAt")&&"anyOf"in r&&Array.isArray(r.anyOf)}function a_(n){if(!Al(n)||typeof n!=="object"||n===null)return n;let r={...n};return Object.entries(r).forEach(([t,o])=>{if(Al(o))if(rA(t,o)){let a=o.anyOf?.find((c)=>Al(c)&&c.format==="date-time");if(a){let c={type:"string",format:"date-time",default:a.default};r[t]=c}}else r[t]=a_(o)}),r}var tA=(n,r,t,o,a)=>{let c=JSON.parse(o);if(c.components&&c.components.schemas)c.components.schemas=Object.fromEntries(Object.entries(c.components.schemas).map(([i,s])=>[i,a_(s)]));let e=JSON.stringify(c);return`<!DOCTYPE html>
1451
1451
  <html lang="en">
1452
1452
  <head>
1453
1453
  <meta charset="utf-8" />
@@ -1523,7 +1523,7 @@ data: ${t}
1523
1523
  </script>
1524
1524
  <script src="${o?o:`https://cdn.jsdelivr.net/npm/@scalar/api-reference@${r}/dist/browser/standalone.min.js`}" crossorigin></script>
1525
1525
  </body>
1526
- </html>`;var El=Symbol.for("TypeBox.Kind"),cA=(n)=>n.split("/").map((r)=>{if(r.startsWith(":")){if(r=r.slice(1,r.length),r.endsWith("?"))r=r.slice(0,-1);r=`{${r}}`}return r}).join("/"),kl=(n,r,t)=>{if(r===void 0)return[];if(typeof r==="string")if(r in t)r=t[r];else throw Error(`Can't find model ${r}`);return Object.entries(r?.properties??[]).map(([o,a])=>{let{type:c=void 0,description:e,examples:i,...s}=a;return{description:e,examples:i,schema:{type:c,...s},in:n,name:o,required:r.required?.includes(o)??!1}})},Wc=(n,r)=>{if(typeof r==="object"&&["void","undefined","null"].includes(r.type))return;let t={};for(let o of n)t[o]={schema:typeof r==="string"?{$ref:`#/components/schemas/${r}`}:("$ref"in r)&&(El in r)&&r[El]==="Ref"?{...r,$ref:`#/components/schemas/${r.$ref}`}:aA({...r},{from:Rl.Ref(""),to:({$ref:a,...c})=>{if(!a.startsWith("#/components/schemas/"))return Rl.Ref(`#/components/schemas/${a}`,c);return Rl.Ref(a,c)}})};return t},t_=(n)=>n.charAt(0).toUpperCase()+n.slice(1),eA=(n,r)=>{let t=n.toLowerCase();if(r==="/")return t+"Index";for(let o of r.split("/"))if(o.charCodeAt(0)===123)t+="By"+t_(o.slice(1,-1));else t+=t_(o);return t},Ya=(n)=>{if(!n)return;if(typeof n==="string")return n;if(Array.isArray(n))return[...n];return{...n}},o_=({schema:n,path:r,method:t,hook:o,models:a})=>{if(o=Ya(o),o.parse&&!Array.isArray(o.parse))o.parse=[o.parse];let c=o.parse?.map((w)=>{switch(typeof w){case"string":return w;case"object":if(w&&typeof w?.fn!=="string")return;switch(w?.fn){case"json":case"application/json":return"application/json";case"text":case"text/plain":return"text/plain";case"urlencoded":case"application/x-www-form-urlencoded":return"application/x-www-form-urlencoded";case"arrayBuffer":case"application/octet-stream":return"application/octet-stream";case"formdata":case"multipart/form-data":return"multipart/form-data"}}}).filter((w)=>w!==void 0);if(!c||c.length===0)c=["application/json","multipart/form-data","text/plain"];r=cA(r);let e=typeof c==="string"?[c]:c??["application/json"],i=Ya(o?.body),s=Ya(o?.params),f=Ya(o?.headers),l=Ya(o?.query),d=Ya(o?.response);if(typeof d==="object")if(El in d){let{type:w,properties:h,required:_,additionalProperties:g,patternProperties:R,$ref:k,...M}=d;d={"200":{...M,description:M.description,content:Wc(e,w==="object"||w==="array"?{type:w,properties:h,patternProperties:R,items:d.items,required:_}:d)}}}else Object.entries(d).forEach(([w,h])=>{if(typeof h==="string"){if(!a[h])return;let{type:_,properties:g,required:R,additionalProperties:k,patternProperties:M,...C}=a[h];d[w]={...C,description:C.description,content:Wc(e,h)}}else{let{type:_,properties:g,required:R,additionalProperties:k,patternProperties:M,...C}=h;d[w]={...C,description:C.description,content:Wc(e,_==="object"||_==="array"?{type:_,properties:g,patternProperties:M,items:h.items,required:R}:h)}}});else if(typeof d==="string"){if(!(d in a))return;let{type:w,properties:h,required:_,$ref:g,additionalProperties:R,patternProperties:k,...M}=a[d];d={"200":{...M,content:Wc(e,d)}}}let b=[...kl("header",f,a),...kl("path",s,a),...kl("query",l,a)];n[r]={...n[r]?n[r]:{},[t.toLowerCase()]:{...f||s||l||i?{parameters:b}:{},...d?{responses:d}:{},operationId:o?.detail?.operationId??eA(t,r),...o?.detail,...i?{requestBody:{required:!0,content:Wc(e,typeof i==="string"?{$ref:`#/components/schemas/${i}`}:i)}}:null}}},iA=(n,{excludeStaticFile:r=!0,exclude:t=[]})=>{let o={};for(let[a,c]of Object.entries(n))if(!t.some((e)=>{if(typeof e==="string")return a===e;return e.test(a)})&&!a.includes("*")&&(r?!a.includes("."):!0))Object.keys(c).forEach((e)=>{let i=c[e];if(a.includes("{")){if(!i.parameters)i.parameters=[];i.parameters=[...a.split("/").filter((s)=>s.startsWith("{")&&!i.parameters.find((f)=>f.in==="path"&&f.name===s.slice(1,s.length-1))).map((s)=>({schema:{type:"string"},in:"path",name:s.slice(1,s.length-1),required:!0})),...i.parameters]}if(!i.responses)i.responses={200:{}}}),o[a]=c;return o},c_=({provider:n="scalar",scalarVersion:r="latest",scalarCDN:t="",scalarConfig:o={},documentation:a={},version:c="5.9.0",excludeStaticFile:e=!0,path:i="/swagger",specPath:s=`${i}/json`,exclude:f=[],swaggerOptions:l={},theme:d=`https://unpkg.com/swagger-ui-dist@${c}/swagger-ui.css`,autoDarkMode:b=!0,excludeMethods:w=["OPTIONS"],excludeTags:h=[]}={})=>{let _={},g=0;if(!c)c=`https://unpkg.com/swagger-ui-dist@${c}/swagger-ui.css`;let R={title:"Elysia Documentation",description:"Development documentation",version:"0.0.0",...a.info},k=s.startsWith("/")?s.slice(1):s,M=new nA({name:"@elysiajs/swagger"}),C=new Response(n==="swagger-ui"?tA(R,c,d,JSON.stringify({url:k,dom_id:"#swagger-ui",...l},(N,m)=>typeof m==="function"?void 0:m),b):oA(R,r,{spec:{url:k,...o.spec},...o,_integration:"elysiajs"},t),{headers:{"content-type":"text/html; charset=utf8"}});return M.get(i,C,{detail:{hide:!0}}).get(s,function(){let m=M.getGlobalRoutes();if(m.length!==g){let A=["GET","PUT","POST","DELETE","OPTIONS","HEAD","PATCH","TRACE"];g=m.length,m.forEach((H)=>{if(H.hooks?.detail?.hide===!0)return;if(w.includes(H.method))return;if(A.includes(H.method)===!1&&H.method!=="ALL")return;if(H.method==="ALL")A.forEach((D)=>{o_({schema:_,hook:H.hooks,method:D,path:H.path,models:M.getGlobalDefinitions?.().type,contentType:H.hooks.type})});else o_({schema:_,hook:H.hooks,method:H.method,path:H.path,models:M.getGlobalDefinitions?.().type,contentType:H.hooks.type})})}return{openapi:"3.0.3",...{...a,tags:a.tags?.filter((A)=>!h?.includes(A?.name)),info:{title:"Elysia Documentation",description:"Development documentation",version:"0.0.0",...a.info}},paths:{...iA(_,{excludeStaticFile:e,exclude:Array.isArray(f)?f:[f]}),...a.paths},components:{...a.components,schemas:{...M.getGlobalDefinitions?.().type,...a.components?.schemas}}}},{detail:{hide:!0}}),M};function Sl(n){if(n?.enabled===!1)return null;let r={path:n?.path??"/swagger",provider:n?.provider??"scalar",excludeStaticFile:n?.excludeStaticFile??!0,exclude:n?.exclude??[],documentation:{info:{title:n?.documentation?.info?.title??"Nucleus API",description:n?.documentation?.info?.description??"Auto-generated API documentation",version:n?.documentation?.info?.version??"1.0.0",contact:n?.documentation?.info?.contact,license:n?.documentation?.info?.license},tags:n?.documentation?.tags??[],servers:n?.documentation?.servers},scalarConfig:n?.scalarConfig};return c_(r)}Ie();Qd();ni();var HE=(n)=>{let r=new Map;for(let t of n){let o=r.get(t.table_name),a=t.columns??o?.columns;r.set(t.table_name,{...o||{},...t,columns:a})}return Array.from(r.values())},zE=(n)=>({table_name:n.table_name,excluded_methods:n.excluded_methods?[...n.excluded_methods]:void 0,columns:n.columns?n.columns.map((r)=>({name:r.name,type:r.type})):void 0}),UE=(n)=>{let r=[];for(let[t,o]of Object.entries(n)){if(!o||typeof o!=="object")continue;let a=o,c=a._;if(c?.name){r.push({table_name:c.name});continue}let e=Object.getOwnPropertySymbols(a);for(let i of e){let s=a[i];if(s&&typeof s==="object"){let f=s;if(f.name&&typeof f.name==="string"){r.push({table_name:f.name});break}}}}return r};async function BE(n){let r=new DE;if(r.get("/health",()=>({status:"ok",timestamp:Date.now()})),n.staticAssets!==!1){let E=Sn("path"),S=Sn("fs"),z;if(typeof n.staticAssets==="string")z=n.staticAssets;else{let U=E.join(process.cwd(),"public"),P="";for(let p of["nucleus-core-ts","nucleus-core"])try{let K=Sn.resolve(`${p}/package.json`),B=E.join(E.dirname(K),"public");if(S.existsSync(B)){P=B;break}}catch{}if(P)z=P;else if(S.existsSync(U))z=U;else z=U}try{r.use(await au({prefix:"/nucleus-core",assets:z}))}catch{}}let t=[],o,a=process.cwd();if(typeof n.options==="string"){let E=Sn("fs"),S=Sn("path"),z=S.isAbsolute(n.options)?n.options:S.resolve(process.cwd(),n.options);a=S.dirname(z);let U=E.readFileSync(z,"utf-8");o=JSON.parse(U)}else o=n.options;if(o.email?.gmail?.json_file_path){let E=Sn("path"),S=o.email.gmail.json_file_path;if(!E.isAbsolute(S))o.email.gmail.json_file_path=E.resolve(a,S)}let{authentication:c,audit:e,entities:i,database:s}=o,f=o.mode==="development",l=new Cr({service:o.appId||"nucleus",prettyPrint:f,colorize:f,auditEnabled:e?.enabled??!1}),d=ug(o);if(!d.valid){for(let E of d.errors)l.error(`[CONFIG] ${E.message}`,{field:E.field,envName:E.envName});throw Error("Nucleus configuration error: Missing required environment variables. Check logs for details.")}let{resolved:b}=d,w={access_token:c?.accessToken?.name||"access_token",refresh_token:c?.refreshToken?.name||"refresh_token",session_token:c?.sessionToken?.name||"session_token"},h=s?.schemas?.[0]||"main",_=ME(h);if(b.databaseUrl)await bg(b.databaseUrl,l);let g=b.databaseUrl?SE(b.databaseUrl):null,R={},k={};if(n.schema){let S=Sn("path").resolve(process.cwd(),n.schema),z=Sn(S);R=z.createAllTablesForSchema?z.createAllTablesForSchema(_):{}}if(n.relations){let S=Sn("path").resolve(process.cwd(),n.relations);k=Sn(S)}let M=Sl(n.swagger);if(M)r.use(M);let C=n.systemTables||[];t=Nf(o,C,"",h),l.info(`[AUTH] Built ${t.length} public routes`);let N=null,m=null,A=null,H=null;if(o.email?.gmail?.enabled&&o.email.gmail.json_file_path)l.info("[GmailService] Initializing...",{jsonFilePath:o.email.gmail.json_file_path,fromEmail:o.email.gmail.from_email}),H=new Jf({enabled:!0,jsonFilePath:o.email.gmail.json_file_path,fromEmail:o.email.gmail.from_email||"",fromName:o.email.gmail.from_name},l),l.info("[GmailService] isAvailable:",{available:H.isAvailable()});if(o.liveMonitoring?.enabled){let E=o.liveMonitoring.basePath||"/monitoring",S=o.liveMonitoring.streamInterval||150;r.use(Ag({getService:()=>A,logger:l,basePath:E,streamInterval:S}))}r.onStart(async()=>{tl(o);let E=Te();if(E&&o.rateLimit?.enabled!==!1)N=new Qf({redis:E,logger:l,config:o.rateLimit||{}}),l.info(`[RateLimit] Enabled with strategy: ${o.rateLimit?.strategy||"sliding-window"}`);if(E&&o.monitoring?.enabled){if(m=new Vf({redis:E,logger:l,gmail:H||void 0,config:o.monitoring,appId:o.appId}),m.start(),l.info("[Monitoring] Service started"),o.monitoring.endpoints?.enabled){let z={enabled:!0,basePath:o.monitoring.endpoints.basePath||"/monitoring",stream:{enabled:o.monitoring.endpoints.stream?.enabled!==!1,path:o.monitoring.endpoints.stream?.path||"/stream",interval:o.monitoring.endpoints.stream?.interval||"5s"},snapshot:{enabled:o.monitoring.endpoints.snapshot?.enabled!==!1,path:o.monitoring.endpoints.snapshot?.path||"/snapshot"},history:{enabled:o.monitoring.endpoints.history?.enabled!==!1,path:o.monitoring.endpoints.history?.path||"/history",maxMinutes:o.monitoring.endpoints.history?.maxMinutes||60},alerts:{enabled:o.monitoring.endpoints.alerts?.enabled!==!1,path:o.monitoring.endpoints.alerts?.path||"/alerts"}};r.use(ll({monitoringService:m,logger:l,endpoints:z}))}}if(o.liveMonitoring?.enabled)A=new Ce(o.liveMonitoring),A.start(),l.info("[LiveMonitoring] Service started");let S=c?.mode==="consumer";if(g&&n.schema&&!S){let P=await import(Sn("path").resolve(process.cwd(),n.schema)),p=R.auditLogs||P.auditLogs;if(e?.enabled&&p)l.addAuditTransport(new de({db:g,table:p,enabled:!0}));try{l.info(`Syncing schema to database (target: ${h})...`);let{sql:B}=await import("drizzle-orm");await g.execute(B.raw(`CREATE SCHEMA IF NOT EXISTS "${h}"`));try{let L=Object.fromEntries(Object.entries(R).filter(([q,F])=>{if(F===void 0||F===null)return!1;if(typeof F==="object"&&F!==null)return Object.getOwnPropertySymbols(F).length>0||F._!==void 0;return!1})),Y=Object.keys(L);l.info("[Schema] Tables to sync:",{tables:Y,count:Y.length});let Q=L.users;if(Q){let q=Object.getOwnPropertyNames(Q).filter((F)=>!F.startsWith("_"));l.info("[Schema] Users table columns:",{columns:q})}await(await EE({schema:_,...L},g,[h])).apply(),l.info("[Schema] pushSchema completed successfully")}catch(L){let Y=L instanceof Error?L.message:String(L);l.warn(`[Schema] pushSchema warning: ${Y}`)}console.log("Schema sync completed")}catch(B){let L=B instanceof Error?B.message:String(B);console.error("Schema sync failed:",L)}if(console.log("Database connection established"),o.authorization?.enabled){let B={...ib,...o.authorization};if(B.autoSeedClaims){let L=UE(R),Y=qe.map((q)=>zE(q)),Q=o.entities||[],V=HE([...L,...Q,...Y,...n.systemTables||[]]);l.info("[Authorization] Seeding claims...",{schemaEntities:L.length,systemEntities:Y.length,configEntities:Q.length,totalEntities:V.length}),await yu(g,R,k,V,B,l)}if(B.godminEmail&&B.godminPassword)l.info("[Authorization] Setting up godmin..."),await rb(g,R,B,l);l.info("[Authorization] Enabled")}let K=R.userSessions;if(K&&o.authentication?.sessions?.enabled){let{lt:B}=await import("drizzle-orm"),L=await g.update(K).set({isActive:!1,revokedAt:new Date,revokedReason:"expired"}).where(ie($r(K.isActive,!0),B(K.expiresAt,new Date)));l.info("[AUTH] Expired sessions cleanup completed",{expiredCount:L}),setInterval(async()=>{try{await g.update(K).set({isActive:!1,revokedAt:new Date,revokedReason:"expired"}).where(ie($r(K.isActive,!0),B(K.expiresAt,new Date)))}catch(Y){l.warn("[AUTH] Session cleanup failed",{error:Y})}},3600000)}}}).onRequest(async({request:E,set:S})=>{let z=Date.now();E.headers.set("x-request-start-time",String(z));let U=new URL(E.url),P=U.pathname,p=E.method,K=U.search,B=E.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||E.headers.get("x-real-ip")?.trim()||"unknown",L=E.headers.get("user-agent")||"unknown",Y,Q={};if(E.method!=="GET"&&E.method!=="HEAD")try{let v=await E.clone().text();Q=v?JSON.parse(v):{}}catch{Q={}}let V=e?.enabled?{id:kE(),user_id:"unknown",entity_name:P.split("/").filter(Boolean)[0]||"root",entity_id:null,operation_type:p,summary:"",old_values:{},new_values:Q,ip_address:B,user_agent:L,timestamp:new Date().toISOString(),path:P,query:K}:null,q=xf(t,P,p);if(N){let F=q?"public":"private",v;if(P.includes("/auth/login"))v="login";else if(P.includes("/auth/register"))v="register";else if(P.includes("/auth/password-reset"))v="passwordReset";else if(P.includes("/auth/magic-link"))v="magicLink";let dn=v?"auth":F,tn=await N.check({ip:B,endpoint:P,category:dn,authType:v}),un=N.getHeaders(tn);for(let[sn,Yn]of Object.entries(un))S.headers[sn]=Yn;if(!tn.allowed){if(S.status=429,tn.retryAfter)S.headers["Retry-After"]=String(tn.retryAfter);if(l.warn(`[RateLimit] Blocked request from ${B} to ${P}`),m)m.recordRateLimitBlock();return new Response(JSON.stringify({error:"Too Many Requests",retryAfter:tn.retryAfter}),{status:429,headers:{"Content-Type":"application/json"}})}}if(P==="/health")return;if(c?.enabled&&!q){if(!c.accessToken?.secret)return S.status=500,l.traceSync({message:"Authentication secrets not defined",level:"error",context:{path:P,method:p},audit:xt(V,"Authentication secrets not defined")}),Error("One or more authentication secrets are not defined");if(c.mode==="consumer"){Y=rl(E.headers,w);let v=so(Y.access_token||"",b.accessTokenSecret||"");if(!v.valid)return S.status=401,l.traceSync({message:"Invalid or missing access token",level:"warn",context:{path:P,method:p},audit:xt(V,"Invalid or missing access token")}),Error("Unauthenticated");let dn=v.payload.sub,tn=v.payload.roles,un=v.payload.claims;if(E.headers.set("x-access-token",Y.access_token||""),E.headers.set("x-user-id",dn||""),tn&&tn.length>0)E.headers.set("x-user-roles",tn.join(","));if(un&&un.length>0)E.headers.set("x-user-claims",un.join(","))}else{if(!c.refreshToken?.secret||!c.sessionToken?.secret)return S.status=500,l.traceSync({message:"Authentication secrets not defined",level:"error",context:{path:P,method:p},audit:xt(V,"Authentication secrets not defined")}),Error("One or more authentication secrets are not defined");if(Y=rl(E.headers,w),!Y.session_token)return S.status=401,l.traceSync({message:"No session token",level:"warn",context:{path:P,method:p},audit:xt(V,"No session token")}),Error("Unauthenticated");let v=await Qo({sessionId:Y.session_token});if(!v)return S.status=401,l.traceSync({message:"Invalid session",level:"warn",context:{path:P,method:p,sessionId:Y.session_token},audit:xt(V,"Invalid session")}),Error("Unauthenticated");let dn=R.userSessions;if(dn&&g){let T=(await g.select().from(dn).where($r(dn.id,Y.session_token)).limit(1))[0],Jn=T?.revokedAt!==null&&T?.revokedAt!==void 0&&!(typeof T?.revokedAt==="object"&&Object.keys(T.revokedAt).length===0);if(!T||T.isActive===!1||Jn)return S.status=401,l.traceSync({message:"Session revoked or inactive",level:"warn",context:{path:P,method:p,sessionId:Y.session_token,isActive:T?.isActive,revokedAt:T?.revokedAt},audit:xt(V,"Session revoked")}),Error("Session has been revoked");if(T.expiresAt&&new Date(T.expiresAt)<new Date)return S.status=401,l.traceSync({message:"Session expired",level:"warn",context:{path:P,method:p,sessionId:Y.session_token,expiresAt:T.expiresAt},audit:xt(V,"Session expired")}),Error("Session has expired")}if(v.lastActiveAt&&c.sessions?.inactivityTimeout){let _n=new Date(v.lastActiveAt).getTime(),T=st(c.sessions.inactivityTimeout)*1000;if(Date.now()-_n>T)return S.status=401,l.traceSync({message:"Session inactive timeout",level:"warn",context:{path:P,method:p,sessionId:Y.session_token,lastActiveAt:v.lastActiveAt},audit:xt(V,"Session inactive timeout")}),Error("Session expired due to inactivity")}Af(Y.session_token).catch(()=>{});let tn=R.userSessions;if(tn&&g)g.update(tn).set({lastActivityAt:new Date}).where($r(tn.id,Y.session_token)).catch(()=>{});let un=so(Y.access_token||"",b.accessTokenSecret||""),sn=Y.access_token?un.valid:!1,Yn=Y.refresh_token?so(Y.refresh_token,b.refreshTokenSecret||"").valid:!1;if(!sn&&Yn&&Y.refresh_token&&v.rememberMe===!0){let _n=await dg(v.userId,v.id,()=>fg({refreshTokenId:Y.refresh_token,options:o,sessionData:v}));if(_n.success&&_n.accessToken){Y.access_token=_n.accessToken;let T=`${w.access_token}=${_n.accessToken}; Path=/; HttpOnly; SameSite=Strict;Secure; Max-Age=${st(c.accessToken.expiresIn??"15m")}`;S.headers["Set-Cookie"]=T}}let fr=un.valid?un.payload.sub:v.userId,gn=un.valid?un.payload.roles:void 0,et=un.valid?un.payload.claims:void 0;if(E.headers.set("x-access-token",Y.access_token||""),E.headers.set("x-refresh-token",Y.refresh_token||""),E.headers.set("x-session-id",Y.session_token||""),E.headers.set("x-user-id",fr||""),gn&&gn.length>0)E.headers.set("x-user-roles",gn.join(","));if(et&&et.length>0)E.headers.set("x-user-claims",et.join(","))}}}).onAfterHandle(({request:E,set:S})=>{if(m){let z=E.headers.get("x-request-start-time"),U=z?parseInt(z,10):Date.now(),P=Date.now()-U,p=new URL(E.url),K=typeof S.status==="number"?S.status:200;m.recordRequest({endpoint:p.pathname,method:E.method,status:K,responseTimeMs:P,isError:K>=400,errorType:K>=500?"server_error":K>=400?"client_error":void 0})}if(A){let z=new URL(E.url),U={};E.headers.forEach((P,p)=>{U[p]=P}),A.recordRequest({path:z.pathname,method:E.method,timestamp:Date.now(),headers:U})}}).onError((E)=>{let{set:S,code:z,error:U}=E,P=typeof z==="number"?z:500,p=U instanceof Error?U.message:"Internal Server Error";return S.status=P,Response.json({isSuccess:!1,message:p,status:P,errors:[U],data:null})}),l.info("Creating routes for entities"),fl(r,{db:g,schemaTables:R,schemaRelations:k,entities:i,logger:l,databaseUrl:b.databaseUrl,storage:o.storage,authorization:o.authorization,emailServiceAvailable:!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path)});let D=c?.mode==="consumer";if(c?.enabled&&!D&&g){let E=R.users,S=R.userSessions||R.user_sessions||R.sessions;if(!S&&c.sessions?.enabled)l.warn("[AUTH] sessions is enabled but user_sessions table not found in schema. Disabling sessions.");if(E){tl(o);let{createAuthRoutes:z}=(Qd(),se(M2)),{signJWT:U,verifyJWT:P}=(Vo(),se(wu)),{generateSession:p,deleteSession:K}=(Rf(),se(Iu));z(r,{authConfig:{db:g,logger:l,usersTable:E,sessionsTable:S,userRolesTable:R.userRoles,rolesTable:R.roles,roleClaimsTable:R.roleClaims,claimsTable:R.claims,authentication:{enabled:c.enabled,accessToken:c.accessToken,refreshToken:c.refreshToken,sessionToken:c.sessionToken}},features:{login:c.login,register:c.register,logout:c.logout,refresh:c.refresh,passwordReset:(()=>{let B=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(c.passwordReset?.enabled&&!B)return l.warn("[AUTH] passwordReset is enabled but no email provider is configured. Disabling passwordReset."),{...c.passwordReset,enabled:!1};return c.passwordReset})(),passwordChange:c.passwordChange,passwordSet:c.passwordSet,sessions:c.sessions,magicLink:(()=>{let B=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(c.magicLink?.enabled&&!B)return l.warn("[AUTH] magicLink is enabled but no email provider is configured. Disabling magicLink."),{...c.magicLink,enabled:!1};return c.magicLink})(),me:c.me||{enabled:!0,route:"/auth/me"},invite:(()=>{let B=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(c.invite?.enabled&&!B)return l.warn("[AUTH] invite is enabled but no email provider is configured. Disabling invite."),{...c.invite,enabled:!1};return c.invite})(),captcha:c.captcha,oauth:c.oauth?.enabled&&b.oauthProviders?{...c.oauth,providers:b.oauthProviders}:void 0},sessionsTable:S,oauthAccountsTable:R.oauthAccounts,schemaTables:R,schemaRelations:k,databaseUrl:b.databaseUrl,admin:{impersonate:{enabled:!0},changeUserId:{enabled:!0}},emailService:H,appName:o.appId,captchaService:(()=>{let B=Te();if(!c.captcha?.enabled||!B)return null;return new Wf({redis:{get:async(Y)=>{let Q=await B.read(Y);return Q.success?Q.data:null},set:async(Y,Q,V)=>{await B.create(Y,Q,V?.ex)},del:async(Y)=>{await B.remove(Y)}},logger:l,config:{enabled:!0,type:c.captcha.type||"math",difficulty:c.captcha.difficulty||"medium",expiresIn:c.captcha.expiresIn||"5m",maxAttempts:c.captcha.maxAttempts||3,caseSensitive:c.captcha.caseSensitive??!1}})})(),tokenResponseConfig:{accessToken:{setHeadersEnabled:c.accessToken?.setHeadersEnabled??!0,returnJson:c.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:c.refreshToken?.setHeadersEnabled??!0,returnJson:c.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:c.sessionToken?.setHeadersEnabled??!0,returnJson:c.sessionToken?.returnJson??!0}},helpers:{signAccessToken:(B,L,Y)=>U({subject:B,expiresInSeconds:st(c.accessToken?.expiresIn||"15m"),issuer:c.accessToken?.issuer,audience:c.accessToken?.audience,customClaims:{...L&&L.length>0?{roles:L}:{},...Y&&Y.length>0?{claims:Y}:{}}},b.accessTokenSecret||"",c.accessToken?.algorithm||"HS256"),signRefreshToken:(B)=>U({subject:B,expiresInSeconds:st(c.refreshToken?.expiresIn||"7d"),issuer:c.refreshToken?.issuer,audience:c.refreshToken?.audience},b.refreshTokenSecret||"",c.refreshToken?.algorithm||"HS256"),verifyRefreshToken:(B)=>P(B,b.refreshTokenSecret||""),createSession:async(B)=>{let L=await p({userId:B.userId,deviceInfo:B.deviceInfo});return L.success?L.session.id:""},destroySession:async(B)=>K({sessionId:B}),saveSessionToDb:async(B,L)=>{if(!S||!g)return;let Y=c.sessions,Q=L.deviceInfo||{},V=`${Q.browserName||""}-${Q.osName||""}-${Q.deviceType||""}`,q=await g.select().from(S).where(ie($r(S.userId,L.userId),$r(S.isActive,!0))),F=V&&!V.includes("--unknown")&&!V.includes("Bot/Crawler")&&!V.includes("Headless")&&V!=="--"&&V!=="--unknown",v=F?!q.some((Gn)=>Gn.deviceFingerprint===V):!1,dn=q.some((Gn)=>Gn.approvalStatus==="approved"),tn=Y?.trustNewDevices===!1&&v&&F&&dn;l.info("[AUTH] Device fingerprint analysis",{userId:L.userId,deviceFingerprint:V,hasValidFingerprint:F,isNewDevice:v,existingSessionCount:q.length,hasAnyApprovedSession:dn,requiresApproval:tn});let un=null,sn="approved";if(tn){let{randomBytes:Gn}=await import("crypto");un=Gn(32).toString("hex"),sn="pending",l.info("[AUTH] New device requires approval",{userId:L.userId,deviceFingerprint:V,ipAddress:Q.ipAddress})}let Yn=q.filter((Gn)=>{let qn=Gn,gr=qn.deviceFingerprint||"",Ar=qn.ipAddress||"";return(!gr||gr==="--"||gr==="--unknown"||gr.includes("Bot/Crawler")||gr.includes("Headless")||gr.includes("unknown-unknown"))&&(Ar==="127.0.0.1"||Ar==="::1"||Ar==="localhost"||!Ar)});if(Yn.length>0){for(let Gn of Yn)await g.update(S).set({isActive:!1,revokedAt:new Date,revokedReason:"bot_session_cleanup"}).where($r(S.id,Gn.id));l.info("[AUTH] Cleaned up stale bot/crawler sessions",{userId:L.userId,cleanedCount:Yn.length})}let fr=L.loginMethod==="impersonation"||L.loginMethod==="impersonation_stop";if(F&&!v&&!fr){let Gn=q.filter((qn)=>qn.deviceFingerprint===V);for(let qn of Gn)await g.update(S).set({isActive:!1,revokedAt:new Date,revokedReason:"relogin_same_device"}).where($r(S.id,qn.id));l.info("[AUTH] Revoked old sessions from same device",{userId:L.userId,deviceFingerprint:V,revokedCount:Gn.length})}if(!Y?.allowMultipleDevices&&q.length>0){if(q.filter((qn)=>qn.deviceFingerprint===V).length===0&&v)for(let qn of q)await g.update(S).set({isActive:!1,revokedAt:new Date,revokedReason:"new_device_login"}).where($r(S.id,qn.id))}if(Y?.maxActiveSessions){let{count:Gn}=await import("drizzle-orm"),gr=(await g.select({count:Gn()}).from(S).where(ie($r(S.userId,L.userId),$r(S.isActive,!0))))[0]?.count||0;if(gr>=Y.maxActiveSessions){let{asc:Ar}=await import("drizzle-orm"),Mt=await g.select().from(S).where(ie($r(S.userId,L.userId),$r(S.isActive,!0))).orderBy(Ar(S.createdAt)).limit(gr-Y.maxActiveSessions+1);for(let er of Mt)await g.update(S).set({isActive:!1,revokedAt:new Date,revokedReason:"max_sessions_exceeded"}).where($r(S.id,er.id))}}let gn=100;if(Q.isHeadless)gn-=50;if(Q.isBot)gn-=40;if(Q.isSuspicious)l.warn("[AUTH] Suspicious login detected",{userId:L.userId,suspiciousPatterns:Q.suspiciousPatterns,userAgent:Q.userAgent,ipAddress:Q.ipAddress});if(v)gn-=25;if(!Q.ipAddress||Q.ipAddress==="unknown")gn-=20;if(!Q.browserName)gn-=15;if(!Q.osName)gn-=15;if(!Q.deviceType||Q.deviceType==="unknown")gn-=10;if(!Q.deviceName||Q.deviceName==="Unknown Device")gn-=5;let et=V&&!V.includes("--unknown")&&V!=="--",_n=Q.ipAddress&&Q.ipAddress!=="unknown";if(et){if(q.filter((qn)=>qn.deviceFingerprint===V).length>0)gn+=20}if(_n){if(q.filter((qn)=>qn.ipAddress===Q.ipAddress).length>0)gn+=15}gn=Math.max(0,Math.min(100,gn));let T=50;if(await g.insert(S).values({id:B,userId:L.userId,tokenHash:B,deviceFingerprint:V,deviceName:Q.deviceName,deviceType:Q.deviceType,browserName:Q.browserName,browserVersion:Q.browserVersion,osName:Q.osName,osVersion:Q.osVersion,ipAddress:Q.ipAddress,locationCountry:Q.locationCountry,locationCity:Q.locationCity,loginMethod:L.loginMethod||"password",rememberMe:L.rememberMe??!1,trustScore:gn,lastActivityAt:new Date,createdAt:new Date,expiresAt:new Date(Date.now()+st(c.sessionToken?.expiresIn||"30d")*1000),isActive:sn==="approved",approvalStatus:sn,approvalToken:un,approvalRequestedAt:tn?new Date:null}),H&&(Y?.notifyOnNewDevice&&v||gn<T||tn)){let Gn=R.users;if(Gn){let gr=(await g.select().from(Gn).where($r(Gn.id,L.userId)).limit(1))[0];if(gr?.email){let Ar=gn<T,Mt=c.sessions?.approvalRedirectUrl||"http://localhost:3000/devices",er=un?`${Mt}?action=approve&token=${un}`:"",lr=un?`${Mt}?action=reject&token=${un}`:"",Rs,ks;if(tn)Rs="\uD83D\uDD10 New Device Login Requires Approval",ks=`
1526
+ </html>`;var El=Symbol.for("TypeBox.Kind"),cA=(n)=>n.split("/").map((r)=>{if(r.startsWith(":")){if(r=r.slice(1,r.length),r.endsWith("?"))r=r.slice(0,-1);r=`{${r}}`}return r}).join("/"),kl=(n,r,t)=>{if(r===void 0)return[];if(typeof r==="string")if(r in t)r=t[r];else throw Error(`Can't find model ${r}`);return Object.entries(r?.properties??[]).map(([o,a])=>{let{type:c=void 0,description:e,examples:i,...s}=a;return{description:e,examples:i,schema:{type:c,...s},in:n,name:o,required:r.required?.includes(o)??!1}})},Wc=(n,r)=>{if(typeof r==="object"&&["void","undefined","null"].includes(r.type))return;let t={};for(let o of n)t[o]={schema:typeof r==="string"?{$ref:`#/components/schemas/${r}`}:("$ref"in r)&&(El in r)&&r[El]==="Ref"?{...r,$ref:`#/components/schemas/${r.$ref}`}:aA({...r},{from:Rl.Ref(""),to:({$ref:a,...c})=>{if(!a.startsWith("#/components/schemas/"))return Rl.Ref(`#/components/schemas/${a}`,c);return Rl.Ref(a,c)}})};return t},t_=(n)=>n.charAt(0).toUpperCase()+n.slice(1),eA=(n,r)=>{let t=n.toLowerCase();if(r==="/")return t+"Index";for(let o of r.split("/"))if(o.charCodeAt(0)===123)t+="By"+t_(o.slice(1,-1));else t+=t_(o);return t},Ya=(n)=>{if(!n)return;if(typeof n==="string")return n;if(Array.isArray(n))return[...n];return{...n}},o_=({schema:n,path:r,method:t,hook:o,models:a})=>{if(o=Ya(o),o.parse&&!Array.isArray(o.parse))o.parse=[o.parse];let c=o.parse?.map((w)=>{switch(typeof w){case"string":return w;case"object":if(w&&typeof w?.fn!=="string")return;switch(w?.fn){case"json":case"application/json":return"application/json";case"text":case"text/plain":return"text/plain";case"urlencoded":case"application/x-www-form-urlencoded":return"application/x-www-form-urlencoded";case"arrayBuffer":case"application/octet-stream":return"application/octet-stream";case"formdata":case"multipart/form-data":return"multipart/form-data"}}}).filter((w)=>w!==void 0);if(!c||c.length===0)c=["application/json","multipart/form-data","text/plain"];r=cA(r);let e=typeof c==="string"?[c]:c??["application/json"],i=Ya(o?.body),s=Ya(o?.params),f=Ya(o?.headers),l=Ya(o?.query),d=Ya(o?.response);if(typeof d==="object")if(El in d){let{type:w,properties:h,required:_,additionalProperties:g,patternProperties:R,$ref:k,...M}=d;d={"200":{...M,description:M.description,content:Wc(e,w==="object"||w==="array"?{type:w,properties:h,patternProperties:R,items:d.items,required:_}:d)}}}else Object.entries(d).forEach(([w,h])=>{if(typeof h==="string"){if(!a[h])return;let{type:_,properties:g,required:R,additionalProperties:k,patternProperties:M,...C}=a[h];d[w]={...C,description:C.description,content:Wc(e,h)}}else{let{type:_,properties:g,required:R,additionalProperties:k,patternProperties:M,...C}=h;d[w]={...C,description:C.description,content:Wc(e,_==="object"||_==="array"?{type:_,properties:g,patternProperties:M,items:h.items,required:R}:h)}}});else if(typeof d==="string"){if(!(d in a))return;let{type:w,properties:h,required:_,$ref:g,additionalProperties:R,patternProperties:k,...M}=a[d];d={"200":{...M,content:Wc(e,d)}}}let b=[...kl("header",f,a),...kl("path",s,a),...kl("query",l,a)];n[r]={...n[r]?n[r]:{},[t.toLowerCase()]:{...f||s||l||i?{parameters:b}:{},...d?{responses:d}:{},operationId:o?.detail?.operationId??eA(t,r),...o?.detail,...i?{requestBody:{required:!0,content:Wc(e,typeof i==="string"?{$ref:`#/components/schemas/${i}`}:i)}}:null}}},iA=(n,{excludeStaticFile:r=!0,exclude:t=[]})=>{let o={};for(let[a,c]of Object.entries(n))if(!t.some((e)=>{if(typeof e==="string")return a===e;return e.test(a)})&&!a.includes("*")&&(r?!a.includes("."):!0))Object.keys(c).forEach((e)=>{let i=c[e];if(a.includes("{")){if(!i.parameters)i.parameters=[];i.parameters=[...a.split("/").filter((s)=>s.startsWith("{")&&!i.parameters.find((f)=>f.in==="path"&&f.name===s.slice(1,s.length-1))).map((s)=>({schema:{type:"string"},in:"path",name:s.slice(1,s.length-1),required:!0})),...i.parameters]}if(!i.responses)i.responses={200:{}}}),o[a]=c;return o},c_=({provider:n="scalar",scalarVersion:r="latest",scalarCDN:t="",scalarConfig:o={},documentation:a={},version:c="5.9.0",excludeStaticFile:e=!0,path:i="/swagger",specPath:s=`${i}/json`,exclude:f=[],swaggerOptions:l={},theme:d=`https://unpkg.com/swagger-ui-dist@${c}/swagger-ui.css`,autoDarkMode:b=!0,excludeMethods:w=["OPTIONS"],excludeTags:h=[]}={})=>{let _={},g=0;if(!c)c=`https://unpkg.com/swagger-ui-dist@${c}/swagger-ui.css`;let R={title:"Elysia Documentation",description:"Development documentation",version:"0.0.0",...a.info},k=s.startsWith("/")?s.slice(1):s,M=new nA({name:"@elysiajs/swagger"}),C=new Response(n==="swagger-ui"?tA(R,c,d,JSON.stringify({url:k,dom_id:"#swagger-ui",...l},(N,m)=>typeof m==="function"?void 0:m),b):oA(R,r,{spec:{url:k,...o.spec},...o,_integration:"elysiajs"},t),{headers:{"content-type":"text/html; charset=utf8"}});return M.get(i,C,{detail:{hide:!0}}).get(s,function(){let m=M.getGlobalRoutes();if(m.length!==g){let A=["GET","PUT","POST","DELETE","OPTIONS","HEAD","PATCH","TRACE"];g=m.length,m.forEach((H)=>{if(H.hooks?.detail?.hide===!0)return;if(w.includes(H.method))return;if(A.includes(H.method)===!1&&H.method!=="ALL")return;if(H.method==="ALL")A.forEach((D)=>{o_({schema:_,hook:H.hooks,method:D,path:H.path,models:M.getGlobalDefinitions?.().type,contentType:H.hooks.type})});else o_({schema:_,hook:H.hooks,method:H.method,path:H.path,models:M.getGlobalDefinitions?.().type,contentType:H.hooks.type})})}return{openapi:"3.0.3",...{...a,tags:a.tags?.filter((A)=>!h?.includes(A?.name)),info:{title:"Elysia Documentation",description:"Development documentation",version:"0.0.0",...a.info}},paths:{...iA(_,{excludeStaticFile:e,exclude:Array.isArray(f)?f:[f]}),...a.paths},components:{...a.components,schemas:{...M.getGlobalDefinitions?.().type,...a.components?.schemas}}}},{detail:{hide:!0}}),M};function Sl(n){if(n?.enabled===!1)return null;let r={path:n?.path??"/swagger",provider:n?.provider??"scalar",excludeStaticFile:n?.excludeStaticFile??!0,exclude:n?.exclude??[],documentation:{info:{title:n?.documentation?.info?.title??"Nucleus API",description:n?.documentation?.info?.description??"Auto-generated API documentation",version:n?.documentation?.info?.version??"1.0.0",contact:n?.documentation?.info?.contact,license:n?.documentation?.info?.license},tags:n?.documentation?.tags??[],servers:n?.documentation?.servers},scalarConfig:n?.scalarConfig};return c_(r)}Ie();Qd();ni();var HE=(n)=>{let r=new Map;for(let t of n){let o=r.get(t.table_name),a=t.columns??o?.columns;r.set(t.table_name,{...o||{},...t,columns:a})}return Array.from(r.values())},zE=(n)=>({table_name:n.table_name,excluded_methods:n.excluded_methods?[...n.excluded_methods]:void 0,columns:n.columns?n.columns.map((r)=>({name:r.name,type:r.type})):void 0}),UE=(n)=>{let r=[];for(let[t,o]of Object.entries(n)){if(!o||typeof o!=="object")continue;let a=o,c=a._;if(c?.name){r.push({table_name:c.name});continue}let e=Object.getOwnPropertySymbols(a);for(let i of e){let s=a[i];if(s&&typeof s==="object"){let f=s;if(f.name&&typeof f.name==="string"){r.push({table_name:f.name});break}}}}return r};async function BE(n){let r=new DE;if(r.get("/health",()=>({status:"ok",timestamp:Date.now()})),n.staticAssets!==!1){let E=Sn("path"),S=Sn("fs"),z;if(typeof n.staticAssets==="string")z=n.staticAssets;else{let U=E.join(process.cwd(),"public"),P="";for(let p of["nucleus-core-ts","nucleus-core"])try{let K=Sn.resolve(`${p}/package.json`),B=E.join(E.dirname(K),"public");if(S.existsSync(B)){P=B;break}}catch{}if(P)z=P;else if(S.existsSync(U))z=U;else z=U}try{r.use(await au({prefix:"/nucleus-core",assets:z}))}catch{}}let t=[],o,a=process.cwd();if(typeof n.options==="string"){let E=Sn("fs"),S=Sn("path"),z=S.isAbsolute(n.options)?n.options:S.resolve(process.cwd(),n.options);a=S.dirname(z);let U=E.readFileSync(z,"utf-8");o=JSON.parse(U)}else o=n.options;if(o.email?.gmail?.json_file_path){let E=Sn("path"),S=o.email.gmail.json_file_path;if(!E.isAbsolute(S))o.email.gmail.json_file_path=E.resolve(a,S)}let{authentication:c,audit:e,entities:i,database:s}=o,f=o.mode==="development",l=new Cr({service:o.appId||"nucleus",prettyPrint:f,colorize:f,auditEnabled:e?.enabled??!1}),d=ug(o);if(!d.valid){for(let E of d.errors)l.error(`[CONFIG] ${E.message}`,{field:E.field,envName:E.envName});throw Error("Nucleus configuration error: Missing required environment variables. Check logs for details.")}let{resolved:b}=d,w={access_token:c?.accessToken?.name||"access_token",refresh_token:c?.refreshToken?.name||"refresh_token",session_token:c?.sessionToken?.name||"session_token"},h=s?.schemas?.[0]||"main",_=ME(h);if(b.databaseUrl)await bg(b.databaseUrl,l);let g=b.databaseUrl?SE(b.databaseUrl):null,R={},k={};if(n.schema){let S=Sn("path").resolve(process.cwd(),n.schema),z=Sn(S);R=z.createAllTablesForSchema?z.createAllTablesForSchema(_):{}}if(n.relations){let S=Sn("path").resolve(process.cwd(),n.relations);k=Sn(S)}let M=Sl(n.swagger);if(M)r.use(M);let C=n.systemTables||[];t=Nf(o,C,"",h),l.info(`[AUTH] Built ${t.length} public routes`);let N=null,m=null,A=null,H=null;if(o.email?.gmail?.enabled&&o.email.gmail.json_file_path)l.info("[GmailService] Initializing...",{jsonFilePath:o.email.gmail.json_file_path,fromEmail:o.email.gmail.from_email}),H=new Jf({enabled:!0,jsonFilePath:o.email.gmail.json_file_path,fromEmail:o.email.gmail.from_email||"",fromName:o.email.gmail.from_name},l),l.info("[GmailService] isAvailable:",{available:H.isAvailable()});if(o.liveMonitoring?.enabled){let E=o.liveMonitoring.basePath||"/monitoring",S=o.liveMonitoring.streamInterval||150;r.use(Ag({getService:()=>A,logger:l,basePath:E,streamInterval:S}))}r.onStart(async()=>{tl(o);let E=Te();if(E&&o.rateLimit?.enabled!==!1)N=new Qf({redis:E,logger:l,config:o.rateLimit||{}}),l.info(`[RateLimit] Enabled with strategy: ${o.rateLimit?.strategy||"sliding-window"}`);if(E&&o.monitoring?.enabled){if(m=new Vf({redis:E,logger:l,gmail:H||void 0,config:o.monitoring,appId:o.appId}),m.start(),l.info("[Monitoring] Service started"),o.monitoring.endpoints?.enabled){let z={enabled:!0,basePath:o.monitoring.endpoints.basePath||"/monitoring",stream:{enabled:o.monitoring.endpoints.stream?.enabled!==!1,path:o.monitoring.endpoints.stream?.path||"/stream",interval:o.monitoring.endpoints.stream?.interval||"5s"},snapshot:{enabled:o.monitoring.endpoints.snapshot?.enabled!==!1,path:o.monitoring.endpoints.snapshot?.path||"/snapshot"},history:{enabled:o.monitoring.endpoints.history?.enabled!==!1,path:o.monitoring.endpoints.history?.path||"/history",maxMinutes:o.monitoring.endpoints.history?.maxMinutes||60},alerts:{enabled:o.monitoring.endpoints.alerts?.enabled!==!1,path:o.monitoring.endpoints.alerts?.path||"/alerts"}};r.use(ll({monitoringService:m,logger:l,endpoints:z}))}}if(o.liveMonitoring?.enabled)A=new Ce(o.liveMonitoring),A.start(),l.info("[LiveMonitoring] Service started");let S=c?.mode==="consumer";if(g&&n.schema&&!S){let P=await import(Sn("path").resolve(process.cwd(),n.schema)),p=R.auditLogs||P.auditLogs;if(e?.enabled&&p)l.addAuditTransport(new de({db:g,table:p,enabled:!0}));try{l.info(`Syncing schema to database (target: ${h})...`);let{sql:B}=await import("drizzle-orm");await g.execute(B.raw(`CREATE SCHEMA IF NOT EXISTS "${h}"`));try{let L=Object.fromEntries(Object.entries(R).filter(([q,F])=>{if(F===void 0||F===null)return!1;if(typeof F==="object"&&F!==null)return Object.getOwnPropertySymbols(F).length>0||F._!==void 0;return!1})),Y=Object.keys(L);l.info("[Schema] Tables to sync:",{tables:Y,count:Y.length});let Q=L.users;if(Q){let q=Object.getOwnPropertyNames(Q).filter((F)=>!F.startsWith("_"));l.info("[Schema] Users table columns:",{columns:q})}await(await EE({schema:_,...L},g,[h])).apply(),l.info("[Schema] pushSchema completed successfully")}catch(L){let Y=L instanceof Error?L.message:String(L);l.warn(`[Schema] pushSchema warning: ${Y}`)}console.log("Schema sync completed")}catch(B){let L=B instanceof Error?B.message:String(B);console.error("Schema sync failed:",L)}if(console.log("Database connection established"),o.authorization?.enabled){let B={...ib,...o.authorization};if(B.autoSeedClaims){let L=UE(R),Y=qe.map((q)=>zE(q)),Q=o.entities||[],V=HE([...L,...Q,...Y,...n.systemTables||[]]);l.info("[Authorization] Seeding claims...",{schemaEntities:L.length,systemEntities:Y.length,configEntities:Q.length,totalEntities:V.length}),await yu(g,R,k,V,B,l)}if(B.godminEmail&&B.godminPassword)l.info("[Authorization] Setting up godmin..."),await rb(g,R,B,l);l.info("[Authorization] Enabled")}let K=R.userSessions;if(K&&o.authentication?.sessions?.enabled){let{lt:B}=await import("drizzle-orm"),L=await g.update(K).set({isActive:!1,revokedAt:new Date,revokedReason:"expired"}).where(ie($r(K.isActive,!0),B(K.expiresAt,new Date)));l.info("[AUTH] Expired sessions cleanup completed",{expiredCount:L}),setInterval(async()=>{try{await g.update(K).set({isActive:!1,revokedAt:new Date,revokedReason:"expired"}).where(ie($r(K.isActive,!0),B(K.expiresAt,new Date)))}catch(Y){l.warn("[AUTH] Session cleanup failed",{error:Y})}},3600000)}}}).onRequest(async({request:E,set:S})=>{let z=Date.now();E.headers.set("x-request-start-time",String(z));let U=new URL(E.url),P=U.pathname,p=E.method,K=U.search,B=E.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||E.headers.get("x-real-ip")?.trim()||"unknown",L=E.headers.get("user-agent")||"unknown",Y,Q={};if(E.method!=="GET"&&E.method!=="HEAD")try{let v=await E.clone().text();Q=v?JSON.parse(v):{}}catch{Q={}}let V=e?.enabled?{id:kE(),user_id:"unknown",entity_name:P.split("/").filter(Boolean)[0]||"root",entity_id:null,operation_type:p,summary:"",old_values:{},new_values:Q,ip_address:B,user_agent:L,timestamp:new Date().toISOString(),path:P,query:K}:null,q=xf(t,P,p);if(N){let F=q?"public":"private",v;if(P.includes("/auth/login"))v="login";else if(P.includes("/auth/register"))v="register";else if(P.includes("/auth/password-reset"))v="passwordReset";else if(P.includes("/auth/magic-link"))v="magicLink";let dn=v?"auth":F,on=await N.check({ip:B,endpoint:P,category:dn,authType:v}),un=N.getHeaders(on);for(let[en,Yn]of Object.entries(un))S.headers[en]=Yn;if(!on.allowed){if(S.status=429,on.retryAfter)S.headers["Retry-After"]=String(on.retryAfter);if(l.warn(`[RateLimit] Blocked request from ${B} to ${P}`),m)m.recordRateLimitBlock();return new Response(JSON.stringify({error:"Too Many Requests",retryAfter:on.retryAfter}),{status:429,headers:{"Content-Type":"application/json"}})}}if(P==="/health")return;if(c?.enabled&&!q){if(!c.accessToken?.secret)return S.status=500,l.traceSync({message:"Authentication secrets not defined",level:"error",context:{path:P,method:p},audit:xt(V,"Authentication secrets not defined")}),Error("One or more authentication secrets are not defined");if(c.mode==="consumer"){Y=rl(E.headers,w);let v=so(Y.access_token||"",b.accessTokenSecret||"");if(!v.valid)return S.status=401,l.traceSync({message:"Invalid or missing access token",level:"warn",context:{path:P,method:p},audit:xt(V,"Invalid or missing access token")}),Error("Unauthenticated");let dn=v.payload.sub,on=v.payload.roles,un=v.payload.claims;if(E.headers.set("x-access-token",Y.access_token||""),E.headers.set("x-user-id",dn||""),on&&on.length>0)E.headers.set("x-user-roles",on.join(","));if(un&&un.length>0)E.headers.set("x-user-claims",un.join(","))}else{if(!c.refreshToken?.secret||!c.sessionToken?.secret)return S.status=500,l.traceSync({message:"Authentication secrets not defined",level:"error",context:{path:P,method:p},audit:xt(V,"Authentication secrets not defined")}),Error("One or more authentication secrets are not defined");if(Y=rl(E.headers,w),!Y.session_token)return S.status=401,l.traceSync({message:"No session token",level:"warn",context:{path:P,method:p},audit:xt(V,"No session token")}),Error("Unauthenticated");let v=await Qo({sessionId:Y.session_token});if(!v)return S.status=401,l.traceSync({message:"Invalid session",level:"warn",context:{path:P,method:p,sessionId:Y.session_token},audit:xt(V,"Invalid session")}),Error("Unauthenticated");let dn=R.userSessions;if(dn&&g){let T=(await g.select().from(dn).where($r(dn.id,Y.session_token)).limit(1))[0],Jn=T?.revokedAt!==null&&T?.revokedAt!==void 0&&!(typeof T?.revokedAt==="object"&&Object.keys(T.revokedAt).length===0);if(!T||T.isActive===!1||Jn)return S.status=401,l.traceSync({message:"Session revoked or inactive",level:"warn",context:{path:P,method:p,sessionId:Y.session_token,isActive:T?.isActive,revokedAt:T?.revokedAt},audit:xt(V,"Session revoked")}),Error("Session has been revoked");if(T.expiresAt&&new Date(T.expiresAt)<new Date)return S.status=401,l.traceSync({message:"Session expired",level:"warn",context:{path:P,method:p,sessionId:Y.session_token,expiresAt:T.expiresAt},audit:xt(V,"Session expired")}),Error("Session has expired")}if(v.lastActiveAt&&c.sessions?.inactivityTimeout){let _n=new Date(v.lastActiveAt).getTime(),T=st(c.sessions.inactivityTimeout)*1000;if(Date.now()-_n>T)return S.status=401,l.traceSync({message:"Session inactive timeout",level:"warn",context:{path:P,method:p,sessionId:Y.session_token,lastActiveAt:v.lastActiveAt},audit:xt(V,"Session inactive timeout")}),Error("Session expired due to inactivity")}Af(Y.session_token).catch(()=>{});let on=R.userSessions;if(on&&g)g.update(on).set({lastActivityAt:new Date}).where($r(on.id,Y.session_token)).catch(()=>{});let un=so(Y.access_token||"",b.accessTokenSecret||""),en=Y.access_token?un.valid:!1,Yn=Y.refresh_token?so(Y.refresh_token,b.refreshTokenSecret||"").valid:!1;if(!en&&Yn&&Y.refresh_token&&v.rememberMe===!0){let _n=await dg(v.userId,v.id,()=>fg({refreshTokenId:Y.refresh_token,options:o,sessionData:v}));if(_n.success&&_n.accessToken){Y.access_token=_n.accessToken;let T=`${w.access_token}=${_n.accessToken}; Path=/; HttpOnly; SameSite=Strict;Secure; Max-Age=${st(c.accessToken.expiresIn??"15m")}`;S.headers["Set-Cookie"]=T}}let nr=un.valid?un.payload.sub:v.userId,gn=un.valid?un.payload.roles:void 0,et=un.valid?un.payload.claims:void 0;if(E.headers.set("x-access-token",Y.access_token||""),E.headers.set("x-refresh-token",Y.refresh_token||""),E.headers.set("x-session-id",Y.session_token||""),E.headers.set("x-user-id",nr||""),gn&&gn.length>0)E.headers.set("x-user-roles",gn.join(","));if(et&&et.length>0)E.headers.set("x-user-claims",et.join(","))}}}).onAfterHandle(({request:E,set:S})=>{if(m){let z=E.headers.get("x-request-start-time"),U=z?parseInt(z,10):Date.now(),P=Date.now()-U,p=new URL(E.url),K=typeof S.status==="number"?S.status:200;m.recordRequest({endpoint:p.pathname,method:E.method,status:K,responseTimeMs:P,isError:K>=400,errorType:K>=500?"server_error":K>=400?"client_error":void 0})}if(A){let z=new URL(E.url),U={};E.headers.forEach((P,p)=>{U[p]=P}),A.recordRequest({path:z.pathname,method:E.method,timestamp:Date.now(),headers:U})}}).onError((E)=>{let{set:S,code:z,error:U}=E,P=typeof z==="number"?z:500,p=U instanceof Error?U.message:"Internal Server Error";return S.status=P,Response.json({isSuccess:!1,message:p,status:P,errors:[U],data:null})}),l.info("Creating routes for entities"),fl(r,{db:g,schemaTables:R,schemaRelations:k,entities:i,logger:l,databaseUrl:b.databaseUrl,storage:o.storage,authorization:o.authorization,emailServiceAvailable:!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path)});let D=c?.mode==="consumer";if(c?.enabled&&!D&&g){let E=R.users,S=R.userSessions||R.user_sessions||R.sessions;if(!S&&c.sessions?.enabled)l.warn("[AUTH] sessions is enabled but user_sessions table not found in schema. Disabling sessions.");if(E){tl(o);let{createAuthRoutes:z}=(Qd(),se(M2)),{signJWT:U,verifyJWT:P}=(Vo(),se(wu)),{generateSession:p,deleteSession:K}=(Rf(),se(Iu));z(r,{authConfig:{db:g,logger:l,usersTable:E,sessionsTable:S,userRolesTable:R.userRoles,rolesTable:R.roles,roleClaimsTable:R.roleClaims,claimsTable:R.claims,authentication:{enabled:c.enabled,accessToken:c.accessToken,refreshToken:c.refreshToken,sessionToken:c.sessionToken}},features:{login:c.login,register:c.register,logout:c.logout,refresh:c.refresh,passwordReset:(()=>{let B=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(c.passwordReset?.enabled&&!B)return l.warn("[AUTH] passwordReset is enabled but no email provider is configured. Disabling passwordReset."),{...c.passwordReset,enabled:!1};return c.passwordReset})(),passwordChange:c.passwordChange,passwordSet:c.passwordSet,sessions:c.sessions,magicLink:(()=>{let B=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(c.magicLink?.enabled&&!B)return l.warn("[AUTH] magicLink is enabled but no email provider is configured. Disabling magicLink."),{...c.magicLink,enabled:!1};return c.magicLink})(),me:c.me||{enabled:!0,route:"/auth/me"},invite:(()=>{let B=!!(o.email?.gmail?.enabled&&o.email.gmail.json_file_path);if(c.invite?.enabled&&!B)return l.warn("[AUTH] invite is enabled but no email provider is configured. Disabling invite."),{...c.invite,enabled:!1};return c.invite})(),captcha:c.captcha,oauth:c.oauth?.enabled&&b.oauthProviders?{...c.oauth,providers:b.oauthProviders}:void 0},sessionsTable:S,oauthAccountsTable:R.oauthAccounts,schemaTables:R,schemaRelations:k,databaseUrl:b.databaseUrl,admin:{impersonate:{enabled:!0},changeUserId:{enabled:!0}},emailService:H,appName:o.appId,captchaService:(()=>{let B=Te();if(!c.captcha?.enabled||!B)return null;return new Wf({redis:{get:async(Y)=>{let Q=await B.read(Y);return Q.success?Q.data:null},set:async(Y,Q,V)=>{await B.create(Y,Q,V?.ex)},del:async(Y)=>{await B.remove(Y)}},logger:l,config:{enabled:!0,type:c.captcha.type||"math",difficulty:c.captcha.difficulty||"medium",expiresIn:c.captcha.expiresIn||"5m",maxAttempts:c.captcha.maxAttempts||3,caseSensitive:c.captcha.caseSensitive??!1}})})(),tokenResponseConfig:{accessToken:{setHeadersEnabled:c.accessToken?.setHeadersEnabled??!0,returnJson:c.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:c.refreshToken?.setHeadersEnabled??!0,returnJson:c.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:c.sessionToken?.setHeadersEnabled??!0,returnJson:c.sessionToken?.returnJson??!0}},helpers:{signAccessToken:(B,L,Y)=>U({subject:B,expiresInSeconds:st(c.accessToken?.expiresIn||"15m"),issuer:c.accessToken?.issuer,audience:c.accessToken?.audience,customClaims:{...L&&L.length>0?{roles:L}:{},...Y&&Y.length>0?{claims:Y}:{}}},b.accessTokenSecret||"",c.accessToken?.algorithm||"HS256"),signRefreshToken:(B)=>U({subject:B,expiresInSeconds:st(c.refreshToken?.expiresIn||"7d"),issuer:c.refreshToken?.issuer,audience:c.refreshToken?.audience},b.refreshTokenSecret||"",c.refreshToken?.algorithm||"HS256"),verifyRefreshToken:(B)=>P(B,b.refreshTokenSecret||""),createSession:async(B)=>{let L=await p({userId:B.userId,deviceInfo:B.deviceInfo});return L.success?L.session.id:""},destroySession:async(B)=>K({sessionId:B}),saveSessionToDb:async(B,L)=>{if(!S||!g)return;let Y=c.sessions,Q=L.deviceInfo||{},V=`${Q.browserName||""}-${Q.osName||""}-${Q.deviceType||""}`,q=await g.select().from(S).where(ie($r(S.userId,L.userId),$r(S.isActive,!0))),F=V&&!V.includes("--unknown")&&!V.includes("Bot/Crawler")&&!V.includes("Headless")&&V!=="--"&&V!=="--unknown",v=F?!q.some((Gn)=>Gn.deviceFingerprint===V):!1,dn=q.some((Gn)=>Gn.approvalStatus==="approved"),on=L.loginMethod==="impersonation"||L.loginMethod==="impersonation_stop",un=!on&&Y?.trustNewDevices===!1&&v&&F&&dn;l.info("[AUTH] Device fingerprint analysis",{userId:L.userId,deviceFingerprint:V,hasValidFingerprint:F,isNewDevice:v,existingSessionCount:q.length,hasAnyApprovedSession:dn,requiresApproval:un});let en=null,Yn="approved";if(un){let{randomBytes:Gn}=await import("crypto");en=Gn(32).toString("hex"),Yn="pending",l.info("[AUTH] New device requires approval",{userId:L.userId,deviceFingerprint:V,ipAddress:Q.ipAddress})}let nr=q.filter((Gn)=>{let qn=Gn,gr=qn.deviceFingerprint||"",Ar=qn.ipAddress||"";return(!gr||gr==="--"||gr==="--unknown"||gr.includes("Bot/Crawler")||gr.includes("Headless")||gr.includes("unknown-unknown"))&&(Ar==="127.0.0.1"||Ar==="::1"||Ar==="localhost"||!Ar)});if(nr.length>0){for(let Gn of nr)await g.update(S).set({isActive:!1,revokedAt:new Date,revokedReason:"bot_session_cleanup"}).where($r(S.id,Gn.id));l.info("[AUTH] Cleaned up stale bot/crawler sessions",{userId:L.userId,cleanedCount:nr.length})}if(F&&!v&&!on){let Gn=q.filter((qn)=>qn.deviceFingerprint===V);for(let qn of Gn)await g.update(S).set({isActive:!1,revokedAt:new Date,revokedReason:"relogin_same_device"}).where($r(S.id,qn.id));l.info("[AUTH] Revoked old sessions from same device",{userId:L.userId,deviceFingerprint:V,revokedCount:Gn.length})}if(!Y?.allowMultipleDevices&&q.length>0){if(q.filter((qn)=>qn.deviceFingerprint===V).length===0&&v)for(let qn of q)await g.update(S).set({isActive:!1,revokedAt:new Date,revokedReason:"new_device_login"}).where($r(S.id,qn.id))}if(Y?.maxActiveSessions){let{count:Gn}=await import("drizzle-orm"),gr=(await g.select({count:Gn()}).from(S).where(ie($r(S.userId,L.userId),$r(S.isActive,!0))))[0]?.count||0;if(gr>=Y.maxActiveSessions){let{asc:Ar}=await import("drizzle-orm"),Mt=await g.select().from(S).where(ie($r(S.userId,L.userId),$r(S.isActive,!0))).orderBy(Ar(S.createdAt)).limit(gr-Y.maxActiveSessions+1);for(let ir of Mt)await g.update(S).set({isActive:!1,revokedAt:new Date,revokedReason:"max_sessions_exceeded"}).where($r(S.id,ir.id))}}let gn=100;if(Q.isHeadless)gn-=50;if(Q.isBot)gn-=40;if(Q.isSuspicious)l.warn("[AUTH] Suspicious login detected",{userId:L.userId,suspiciousPatterns:Q.suspiciousPatterns,userAgent:Q.userAgent,ipAddress:Q.ipAddress});if(v)gn-=25;if(!Q.ipAddress||Q.ipAddress==="unknown")gn-=20;if(!Q.browserName)gn-=15;if(!Q.osName)gn-=15;if(!Q.deviceType||Q.deviceType==="unknown")gn-=10;if(!Q.deviceName||Q.deviceName==="Unknown Device")gn-=5;let et=V&&!V.includes("--unknown")&&V!=="--",_n=Q.ipAddress&&Q.ipAddress!=="unknown";if(et){if(q.filter((qn)=>qn.deviceFingerprint===V).length>0)gn+=20}if(_n){if(q.filter((qn)=>qn.ipAddress===Q.ipAddress).length>0)gn+=15}gn=Math.max(0,Math.min(100,gn));let T=50;if(await g.insert(S).values({id:B,userId:L.userId,tokenHash:B,deviceFingerprint:V,deviceName:Q.deviceName,deviceType:Q.deviceType,browserName:Q.browserName,browserVersion:Q.browserVersion,osName:Q.osName,osVersion:Q.osVersion,ipAddress:Q.ipAddress,locationCountry:Q.locationCountry,locationCity:Q.locationCity,loginMethod:L.loginMethod||"password",rememberMe:L.rememberMe??!1,trustScore:gn,lastActivityAt:new Date,createdAt:new Date,expiresAt:new Date(Date.now()+st(c.sessionToken?.expiresIn||"30d")*1000),isActive:Yn==="approved",approvalStatus:Yn,approvalToken:en,approvalRequestedAt:un?new Date:null}),H&&(Y?.notifyOnNewDevice&&v||gn<T||un)){let Gn=R.users;if(Gn){let gr=(await g.select().from(Gn).where($r(Gn.id,L.userId)).limit(1))[0];if(gr?.email){let Ar=gn<T,Mt=c.sessions?.approvalRedirectUrl||"http://localhost:3000/devices",ir=en?`${Mt}?action=approve&token=${en}`:"",lr=en?`${Mt}?action=reject&token=${en}`:"",Rs,ks;if(un)Rs="\uD83D\uDD10 New Device Login Requires Approval",ks=`
1527
1527
  <h2>\uD83D\uDD10 New Device Login Requires Your Approval</h2>
1528
1528
  <p>Someone is trying to log into your account from a new device:</p>
1529
1529
  <ul>
@@ -1534,7 +1534,7 @@ data: ${t}
1534
1534
  <li><strong>Time:</strong> ${new Date().toISOString()}</li>
1535
1535
  </ul>
1536
1536
  <p style="margin-top: 20px;">
1537
- <a href="${er}" style="display: inline-block; padding: 12px 24px; background-color: #22c55e; color: white; text-decoration: none; border-radius: 6px; margin-right: 10px;">\u2713 Approve This Device</a>
1537
+ <a href="${ir}" style="display: inline-block; padding: 12px 24px; background-color: #22c55e; color: white; text-decoration: none; border-radius: 6px; margin-right: 10px;">\u2713 Approve This Device</a>
1538
1538
  <a href="${lr}" style="display: inline-block; padding: 12px 24px; background-color: #ef4444; color: white; text-decoration: none; border-radius: 6px;">\u2717 Reject & Block</a>
1539
1539
  </p>
1540
1540
  <p style="margin-top: 20px; color: #666; font-size: 14px;">If you didn't attempt this login, click "Reject & Block" and change your password immediately.</p>
@@ -1551,4 +1551,4 @@ data: ${t}
1551
1551
  <li><strong>Time:</strong> ${new Date().toISOString()}</li>
1552
1552
  </ul>
1553
1553
  <p>If this wasn't you, please secure your account immediately.</p>
1554
- `}H?.sendEmail({to:gr.email,subject:Rs,html:ks}).catch((Es)=>{l.warn("[AUTH] Failed to send login notification email",{error:Es,userId:L.userId,trustScore:gn,requiresApproval:tn})})}}}l.info("[AUTH] Session saved to DB",{sessionId:B,userId:L.userId,isNewDevice:v,deviceFingerprint:V,ipAddress:Q.ipAddress})},storeResetToken:async(B,L,Y)=>{let Q=R.passwordResetTokens;if(!Q||!g)return;await g.insert(Q).values({userId:B,tokenHash:L,expiresAt:Y})},getResetToken:async(B)=>{let{eq:L}=Sn("drizzle-orm"),Y=R.passwordResetTokens;if(!Y||!g)return null;let V=(await g.select().from(Y).where(L(Y.tokenHash,B)).limit(1))[0];if(!V||V.usedAt)return null;return{userId:V.userId,expiresAt:V.expiresAt}},deleteResetToken:async(B)=>{let{eq:L}=Sn("drizzle-orm"),Y=R.passwordResetTokens;if(!Y||!g)return;await g.delete(Y).where(L(Y.tokenHash,B))},revokeSessionInDb:async(B,L)=>{if(!S||!g)return;await g.update(S).set({isActive:!1,revokedAt:new Date,revokedReason:L}).where($r(S.id,B)),l.info("[AUTH] Session revoked in DB",{sessionId:B,reason:L})},sendResetEmail:async(B,L)=>{if(!H?.isAvailable()){l.warn("[AUTH] Cannot send reset email - gmail service not available");return}let Y=`${c.passwordReset?.redirectUrl||"http://localhost:3000/reset-password"}?token=${L}`;await H.sendEmail({to:B,subject:"Password Reset Request",html:`<p>Click the link to reset your password:</p><a href="${Y}">${Y}</a>`})},storeMagicToken:async(B)=>{let L=R.magicLinkTokens;if(!L||!g)return;await g.insert(L).values({userId:B.userId,email:B.email,tokenHash:B.tokenHash,expiresAt:B.expiresAt})},getMagicToken:async(B)=>{let{eq:L}=Sn("drizzle-orm"),Y=R.magicLinkTokens;if(!Y||!g)return null;let V=(await g.select().from(Y).where(L(Y.tokenHash,B)).limit(1))[0];if(!V||V.usedAt)return null;return{userId:V.userId,email:V.email,tokenHash:V.tokenHash,expiresAt:V.expiresAt}},deleteMagicToken:async(B)=>{let{eq:L}=Sn("drizzle-orm"),Y=R.magicLinkTokens;if(!Y||!g)return;await g.delete(Y).where(L(Y.tokenHash,B))}}}),l.info("[AUTH] Routes registered")}}if(o.storage?.enabled&&o.storage?.cdn?.enabled){let{createCdnRoutes:E,mergeCdnConfig:S,mergeStorageConfig:z}=(ni(),se(wg)),U=S(o.storage.cdn),P=z(o.storage),p=R.files;r.use(E({cdn:U,storagePath:P.basePath,logger:l,getFileRecord:p&&g?async(K)=>{let B=p,L=await g.select().from(B).where($r(B.id,K)).limit(1);if(L.length===0)return null;let Y=L[0];return{id:Y.id,name:Y.name,path:Y.path,mime_type:Y.mimeType||Y.mime_type}}:void 0})),l.info(`[Storage] CDN routes enabled at ${U.basePath}`)}if(o.verification?.enabled&&g)r.use(zg({db:g,schemaTables:R,config:o.verification,logger:l}));if(o.pubsub?.enabled){let E=Te();if(E){let S=o.pubsub,{plugin:z}=_l({redis:E,logger:l,basePath:S.basePath||"/subs",wsPath:S.wsPath||"/api/events/subscribe",pubsubName:S.pubsubName||"pubsub-redis",maxClientsPerUser:S.maxClientsPerUser??10,wsIdleTimeout:S.wsIdleTimeout??120,ack:{enabled:S.ack?.enabled??!0,ttlSeconds:S.ack?.ttlSeconds??300,maxRetries:S.ack?.maxRetries??3,retryIntervalMs:S.ack?.retryIntervalMs??5000},presence:{enabled:S.presence?.enabled??!0,debounceMs:S.presence?.debounceMs??5000},cleanupIntervalMs:S.cleanupIntervalMs??60000,getLiveMonitoringService:()=>A});r.use(z),l.info("[PubSub] Enabled",{basePath:S.basePath||"/subs",wsPath:S.wsPath||"/api/events/subscribe"})}else l.warn("[PubSub] pubsub is enabled but Redis is not configured. Disabling PubSub.")}return r.onStart(()=>{let E=Number(process.env.PORT)||3000,S=o.appId||"nucleus",z=o.mode||"production";console.log(""),console.log(` \x1B[32m\uD83D\uDE80 ${S}\x1B[0m \x1B[90mv${Date.now()}\x1B[0m`),console.log(` \x1B[36m\u279C\x1B[0m Local: \x1B[36mhttp://localhost:${E}\x1B[0m`),console.log(` \x1B[36m\u279C\x1B[0m Mode: \x1B[33m${z}\x1B[0m`),console.log("")}),r}export{Qs as usePubSubStore,oh as usePubSub,F2 as serverFetch,jd as generateSystemTableEndpoints,pd as generateMonitoringEndpoints,qd as generateEndpointsFromConfig,Fd as generateAuthEndpoints,Q2 as generateAllEndpoints,Kd as generateAdminEndpoints,I2 as createServerFactory,J2 as createApiHook,cc as ServerFetch,BE as NucleusElysiaPlugin,Ms as AUTH_ENDPOINT_CONFIGS};
1554
+ `}H?.sendEmail({to:gr.email,subject:Rs,html:ks}).catch((Es)=>{l.warn("[AUTH] Failed to send login notification email",{error:Es,userId:L.userId,trustScore:gn,requiresApproval:un})})}}}l.info("[AUTH] Session saved to DB",{sessionId:B,userId:L.userId,isNewDevice:v,deviceFingerprint:V,ipAddress:Q.ipAddress})},storeResetToken:async(B,L,Y)=>{let Q=R.passwordResetTokens;if(!Q||!g)return;await g.insert(Q).values({userId:B,tokenHash:L,expiresAt:Y})},getResetToken:async(B)=>{let{eq:L}=Sn("drizzle-orm"),Y=R.passwordResetTokens;if(!Y||!g)return null;let V=(await g.select().from(Y).where(L(Y.tokenHash,B)).limit(1))[0];if(!V||V.usedAt)return null;return{userId:V.userId,expiresAt:V.expiresAt}},deleteResetToken:async(B)=>{let{eq:L}=Sn("drizzle-orm"),Y=R.passwordResetTokens;if(!Y||!g)return;await g.delete(Y).where(L(Y.tokenHash,B))},revokeSessionInDb:async(B,L)=>{if(!S||!g)return;await g.update(S).set({isActive:!1,revokedAt:new Date,revokedReason:L}).where($r(S.id,B)),l.info("[AUTH] Session revoked in DB",{sessionId:B,reason:L})},sendResetEmail:async(B,L)=>{if(!H?.isAvailable()){l.warn("[AUTH] Cannot send reset email - gmail service not available");return}let Y=`${c.passwordReset?.redirectUrl||"http://localhost:3000/reset-password"}?token=${L}`;await H.sendEmail({to:B,subject:"Password Reset Request",html:`<p>Click the link to reset your password:</p><a href="${Y}">${Y}</a>`})},storeMagicToken:async(B)=>{let L=R.magicLinkTokens;if(!L||!g)return;await g.insert(L).values({userId:B.userId,email:B.email,tokenHash:B.tokenHash,expiresAt:B.expiresAt})},getMagicToken:async(B)=>{let{eq:L}=Sn("drizzle-orm"),Y=R.magicLinkTokens;if(!Y||!g)return null;let V=(await g.select().from(Y).where(L(Y.tokenHash,B)).limit(1))[0];if(!V||V.usedAt)return null;return{userId:V.userId,email:V.email,tokenHash:V.tokenHash,expiresAt:V.expiresAt}},deleteMagicToken:async(B)=>{let{eq:L}=Sn("drizzle-orm"),Y=R.magicLinkTokens;if(!Y||!g)return;await g.delete(Y).where(L(Y.tokenHash,B))}}}),l.info("[AUTH] Routes registered")}}if(o.storage?.enabled&&o.storage?.cdn?.enabled){let{createCdnRoutes:E,mergeCdnConfig:S,mergeStorageConfig:z}=(ni(),se(wg)),U=S(o.storage.cdn),P=z(o.storage),p=R.files;r.use(E({cdn:U,storagePath:P.basePath,logger:l,getFileRecord:p&&g?async(K)=>{let B=p,L=await g.select().from(B).where($r(B.id,K)).limit(1);if(L.length===0)return null;let Y=L[0];return{id:Y.id,name:Y.name,path:Y.path,mime_type:Y.mimeType||Y.mime_type}}:void 0})),l.info(`[Storage] CDN routes enabled at ${U.basePath}`)}if(o.verification?.enabled&&g)r.use(zg({db:g,schemaTables:R,config:o.verification,logger:l}));if(o.pubsub?.enabled){let E=Te();if(E){let S=o.pubsub,{plugin:z}=_l({redis:E,logger:l,basePath:S.basePath||"/subs",wsPath:S.wsPath||"/api/events/subscribe",pubsubName:S.pubsubName||"pubsub-redis",maxClientsPerUser:S.maxClientsPerUser??10,wsIdleTimeout:S.wsIdleTimeout??120,ack:{enabled:S.ack?.enabled??!0,ttlSeconds:S.ack?.ttlSeconds??300,maxRetries:S.ack?.maxRetries??3,retryIntervalMs:S.ack?.retryIntervalMs??5000},presence:{enabled:S.presence?.enabled??!0,debounceMs:S.presence?.debounceMs??5000},cleanupIntervalMs:S.cleanupIntervalMs??60000,getLiveMonitoringService:()=>A});r.use(z),l.info("[PubSub] Enabled",{basePath:S.basePath||"/subs",wsPath:S.wsPath||"/api/events/subscribe"})}else l.warn("[PubSub] pubsub is enabled but Redis is not configured. Disabling PubSub.")}return r.onStart(()=>{let E=Number(process.env.PORT)||3000,S=o.appId||"nucleus",z=o.mode||"production";console.log(""),console.log(` \x1B[32m\uD83D\uDE80 ${S}\x1B[0m \x1B[90mv${Date.now()}\x1B[0m`),console.log(` \x1B[36m\u279C\x1B[0m Local: \x1B[36mhttp://localhost:${E}\x1B[0m`),console.log(` \x1B[36m\u279C\x1B[0m Mode: \x1B[33m${z}\x1B[0m`),console.log("")}),r}export{Qs as usePubSubStore,oh as usePubSub,F2 as serverFetch,jd as generateSystemTableEndpoints,pd as generateMonitoringEndpoints,qd as generateEndpointsFromConfig,Fd as generateAuthEndpoints,Q2 as generateAllEndpoints,Kd as generateAdminEndpoints,I2 as createServerFactory,J2 as createApiHook,cc as ServerFetch,BE as NucleusElysiaPlugin,Ms as AUTH_ENDPOINT_CONFIGS};