nucleus-core-ts 0.8.159 → 0.8.161
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/scripts/generate-schema.ts +8 -4
package/dist/index.js
CHANGED
|
@@ -98,7 +98,7 @@ var l5=Object.create;var{getPrototypeOf:d5,defineProperty:Si,getOwnPropertyNames
|
|
|
98
98
|
AND c2.column_name = 'owner_type'
|
|
99
99
|
AND c1.table_schema = ${r}
|
|
100
100
|
AND c1.data_type = 'uuid'
|
|
101
|
-
`),R=(Array.isArray(A)?A:A.rows||[]).map((B)=>String(B.table_name||""));o.info("[AUTH] Change User ID - discovered schema references",{fkConstraints:$.map((B)=>`${B.table_name}.${B.column_name} (${B.constraint_name})`),userIdColumns:W.map((B)=>`${B.table_name}.${B.column_name}`),auditColumns:D.map((B)=>`${B.table_name}.${B.column_name}`),polyTables:R});let z=new Map,V=(B,J)=>{if(!z.has(B))z.set(B,new Set);z.get(B)?.add(J)};for(let B of $)V(B.table_name,B.column_name);for(let B of W)V(B.table_name,B.column_name);for(let B of D)V(B.table_name,B.column_name);o.info("[AUTH] Change User ID - all column updates to execute",{updates:Array.from(z.entries()).map(([B,J])=>`${B}: [${Array.from(J).join(", ")}]`)}),await t.transaction(async(B)=>{for(let J of $)await B.execute(ao.raw(`ALTER TABLE "${r}"."${J.table_name}" DROP CONSTRAINT "${J.constraint_name}"`));await B.execute(ao.raw(`UPDATE "${r}"."users" SET "id" = '${_}' WHERE "id" = '${d}'`));for(let[J,G]of z.entries())for(let F of G)await B.execute(ao.raw(`UPDATE "${r}"."${J}" SET "${F}" = '${_}' WHERE "${F}" = '${d}'`));for(let J of R)await B.execute(ao.raw(`UPDATE "${r}"."${J}" SET "owner_id" = '${_}' WHERE "owner_id" = '${d}' AND "owner_type" IN ('user', 'users', 'User')`));for(let J of $){let G=J.delete_rule==="CASCADE"?"ON DELETE CASCADE":J.delete_rule==="SET NULL"?"ON DELETE SET NULL":"";await B.execute(ao.raw(`ALTER TABLE "${r}"."${J.table_name}" ADD CONSTRAINT "${J.constraint_name}" FOREIGN KEY ("${J.column_name}") REFERENCES "${r}"."users" ("id") ${G}`))}});let Q=[...new Set([...$.map((B)=>B.table_name),...W.map((B)=>B.table_name),...D.map((B)=>B.table_name),...R])];return o.info("[AUTH] User ID changed successfully",{godminId:e,currentId:d,newId:_,email:u.email,affectedTables:Q,fkConstraintsDroppedAndReadded:$.length}),await o.audit({entityName:"users",entityId:_,operation:"CHANGE_USER_ID",userId:e,summary:`Godmin changed user ID: ${d} \u2192 ${_} (${u.email})`,oldValues:{id:d},newValues:{id:_},ipAddress:a.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",userAgent:a.request.headers.get("user-agent")||"unknown",path:new URL(a.request.url).pathname,query:""}),{success:!0,data:{oldId:d,newId:_,email:u.email,affectedTables:Q}}}catch(l){return o.error("[AUTH] Failed to change user ID",{error:l instanceof Error?l.message:String(l),stack:l instanceof Error?l.stack:void 0,currentId:d,newId:_}),a.set.status=500,{success:!1,message:l instanceof Error?l.message:"Failed to change user ID"}}},{body:If.Object({currentId:If.String(),newId:If.String()}),detail:{tags:["Authentication"],summary:"Change User ID",description:"Godmin: change a user's UUID while preserving all FK relations, audit columns, and polymorphic references"}}),i}var pf=()=>{};import{eq as yf}from"drizzle-orm";import{Elysia as T3,t as Ob}from"elysia";function Be(n,r,t,o,c,i){let{db:a,logger:e,usersTable:s}=n,f=new T3,d={accessTokenName:i?.accessTokenName||"access_token",refreshTokenName:i?.refreshTokenName||"refresh_token",sessionTokenName:i?.sessionTokenName||"session_token",accessTokenMaxAge:i?.accessTokenMaxAge||900,refreshTokenMaxAge:i?.refreshTokenMaxAge||604800,sessionTokenMaxAge:i?.sessionTokenMaxAge||900,secure:i?.secure??!0,sameSite:i?.sameSite||"strict",path:i?.path||"/"};return f.post("/auth/admin/impersonate",async(_)=>{if(!a||!s)return{success:!1,message:"Database not configured"};let w=_.request.headers.get("x-user-id");if(!w)return _.set.status=401,{success:!1,message:"Unauthorized"};let{targetUserId:g}=_.body,m=(await a.select().from(s).where(yf(s.id,w)).limit(1))[0];if(!m||!m.isGod)return _.set.status=403,{success:!1,message:"Forbidden: godmin privileges required"};if(w===g)return _.set.status=400,{success:!1,message:"Cannot impersonate yourself"};let E=(await a.select().from(s).where(yf(s.id,g)).limit(1))[0];if(!E)return _.set.status=404,{success:!1,message:"Target user not found"};let $=r(g),S=t(g),U=_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",W={userId:g,deviceInfo:{deviceName:"Impersonation Session",browserName:"Admin",osName:"Admin",ipAddress:U},loginMethod:"impersonation"},H=await o(W);if(c)await c(H,W);e.info("[AUTH] Impersonation started",{godminId:w,targetUserId:g,targetEmail:E.email}),await e.audit({entityName:"users",entityId:g,operation:"IMPERSONATE_START",userId:w,summary:`Godmin ${m.email} started impersonating ${E.email}`,ipAddress:_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",userAgent:_.request.headers.get("user-agent")||"unknown",path:new URL(_.request.url).pathname,query:""});let k=d.secure?"; Secure":"",D=`; Path=${d.path}; HttpOnly; SameSite=${d.sameSite}${k}`,A=[`${d.accessTokenName}=${$}${D}; Max-Age=${d.accessTokenMaxAge}`,`${d.refreshTokenName}=${S}${D}; Max-Age=${d.refreshTokenMaxAge}`,`${d.sessionTokenName}=${H}${D}; Max-Age=${d.sessionTokenMaxAge}`,`nucleus_impersonating_as=${g}${D}; Max-Age=${d.sessionTokenMaxAge}`,`nucleus_godmin_id=${w}${D}; Max-Age=${d.sessionTokenMaxAge}`,`nucleus_impersonating_email=${encodeURIComponent(String(E.email))}${D}; Max-Age=${d.sessionTokenMaxAge}`],h=JSON.stringify({success:!0,data:{targetUser:{id:E.id,email:E.email},godminId:w,sessionId:H}}),R=new Headers;R.set("Content-Type","application/json");for(let z of A)R.append("Set-Cookie",z);return new Response(h,{status:200,headers:R})},{body:Ob.Object({targetUserId:Ob.String()}),detail:{tags:["Authentication"],summary:"Impersonate User",description:"Godmin: start a session as another user"}}),f.post("/auth/admin/impersonate/stop",async(_)=>{if(!a||!s)return{success:!1,message:"Database not configured"};let w=_.request.headers.get("cookie")||"",u=Object.fromEntries(w.split(";").map((z)=>{let[V,...Q]=z.trim().split("=");return[V?.trim(),Q.join("=")]})).nucleus_godmin_id;if(!u)return _.set.status=400,{success:!1,message:"No active impersonation session"};let l=(await a.select().from(s).where(yf(s.id,u)).limit(1))[0];if(!l)return _.set.status=404,{success:!1,message:"Godmin user not found"};let E=r(u),$=t(u),S=_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",U={userId:u,deviceInfo:{deviceName:"Restored Admin Session",browserName:"Admin",osName:"Admin",ipAddress:S},loginMethod:"impersonation_stop"},W=await o(U);if(c)await c(W,U);e.info("[AUTH] Impersonation stopped",{godminId:u}),await e.audit({entityName:"users",entityId:u,operation:"IMPERSONATE_STOP",userId:u,summary:`Godmin ${l.email} stopped impersonation`,ipAddress:_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",userAgent:_.request.headers.get("user-agent")||"unknown",path:new URL(_.request.url).pathname,query:""});let H=d.secure?"; Secure":"",k=`; Path=${d.path}; HttpOnly; SameSite=${d.sameSite}${H}`,D=`; Path=${d.path}; HttpOnly; SameSite=${d.sameSite}${H}; Max-Age=0`,A=[`${d.accessTokenName}=${E}${k}; Max-Age=${d.accessTokenMaxAge}`,`${d.refreshTokenName}=${$}${k}; Max-Age=${d.refreshTokenMaxAge}`,`${d.sessionTokenName}=${W}${k}; Max-Age=${d.sessionTokenMaxAge}`,`nucleus_impersonating_as=deleted${D}`,`nucleus_godmin_id=deleted${D}`,`nucleus_impersonating_email=deleted${D}`],h=JSON.stringify({success:!0,data:{godminUser:{id:l.id,email:l.email},sessionId:W}}),R=new Headers;R.set("Content-Type","application/json");for(let z of A)R.append("Set-Cookie",z);return new Response(h,{status:200,headers:R})},{detail:{tags:["Authentication"],summary:"Stop Impersonation",description:"Godmin: restore own session after impersonation"}}),f}var Tf=()=>{};import{and as Ue,count as nA,eq as Ar,sql as rA}from"drizzle-orm";function We(n,r,t){let o=t.route||"/auth/api-keys",c=r.apiKeysTable,{db:i,logger:a}=r;if(!c||!i){a.warn("[API_KEYS] api_keys table or database not available. Skipping API key routes.");return}let e=t.keyPrefix||"nk_live",s=t.maxKeysPerUser||10,f=t.preventApiKeyManagement??!1;n.post(o,async({request:d,set:_})=>{if(f)return _.status=403,{isSuccess:!1,message:"API key management is disabled via configuration",data:null};if(d.headers.get("x-auth-type")==="api_key")return _.status=403,{isSuccess:!1,message:"API keys cannot be created using another API key",data:null};let g=d.headers.get("x-user-id");if(!g)return _.status=401,{isSuccess:!1,message:"Unauthenticated",data:null};let u;try{u=await d.json()}catch{return _.status=400,{isSuccess:!1,message:"Invalid request body",data:null}}if(!u.name||typeof u.name!=="string"||u.name.trim().length===0)return _.status=400,{isSuccess:!1,message:"Name is required",data:null};if(u.ownerType==="application"){if(!(t.allowApplicationKeys??!0))return _.status=403,{isSuccess:!1,message:"Application API keys are not allowed",data:null};if(!u.applicationName||u.applicationName.trim().length===0)return _.status=400,{isSuccess:!1,message:"Application name is required for application keys",data:null}}if(((await i.select({count:nA()}).from(c).where(Ue(Ar(Kn(c,"userId"),g),Ar(Kn(c,"isActive"),!0))))[0]?.count||0)>=s)return _.status=400,{isSuccess:!1,message:`Maximum API key limit reached (${s})`,data:null};let E=await Nb(r,g),$=await xb(r,g),S=E.some((V)=>nc(V)),U=u.allowedRoles||[],W=u.allowedClaims||[],H=u.allowedScopes||[],k=(V)=>V.filter((Q)=>!nc(Q)),D,A;if(S)D=U.length>0?k(U):[],A=W.length>0?W:$;else{let V=Qt(E,U),Q=Qt($,W);if(U.length>0&&V.length!==U.length){let B=U.filter((J)=>!E.includes(J));return _.status=403,{isSuccess:!1,message:`Cannot assign roles you do not have: ${B.join(", ")}`,data:null}}if(W.length>0&&Q.length!==W.length){let B=W.filter((J)=>!$.includes(J));return _.status=403,{isSuccess:!1,message:`Cannot assign claims you do not have: ${B.join(", ")}`,data:null}}if(H.length>0){let B=await Pb(r,g);if(Qt(B,H).length!==H.length){let G=H.filter((F)=>!B.includes(F));return _.status=403,{isSuccess:!1,message:`Cannot assign scopes you do not have: ${G.join(", ")}`,data:null}}}D=k(U.length>0?V:E),A=W.length>0?Q:$}let h=null,R=u.expiresIn||t.defaultExpiresIn;if(R){let V=pr(R);h=new Date(Date.now()+V*1000)}let z=Yd(e);try{return await i.insert(c).values({userId:g,name:u.name.trim(),description:u.description?.trim()||null,keyHash:z.keyHash,keyPreview:z.keyPreview,ownerType:u.ownerType||"personal",applicationName:u.applicationName?.trim()||null,allowedRoles:JSON.stringify(D),allowedClaims:JSON.stringify(A),allowedScopes:JSON.stringify(H),expiresAt:h,isActive:!0,usageCount:0,createdAt:new Date,updatedAt:new Date}),a.info("[API_KEYS] API key created",{userId:g,ownerType:u.ownerType||"personal",applicationName:u.applicationName,rolesCount:D.length,claimsCount:A.length,expiresAt:h?.toISOString()||"never"}),{isSuccess:!0,message:"API key created successfully. Save this key \u2014 it will not be shown again.",data:{key:z.rawKey,keyPreview:z.keyPreview,name:u.name.trim(),ownerType:u.ownerType||"personal",applicationName:u.applicationName||null,allowedRoles:D,allowedClaims:A,allowedScopes:H,expiresAt:h?.toISOString()||null}}}catch(V){let Q=V instanceof Error?V.message:String(V);return a.error("[API_KEYS] Failed to create API key",{error:Q,userId:g}),_.status=500,{isSuccess:!1,message:`Failed to create API key: ${Q}`,data:null}}}),n.get(o,async({request:d,set:_})=>{let w=d.headers.get("x-user-id");if(!w)return _.status=401,{isSuccess:!1,message:"Unauthenticated",data:null};let u=(await i.select().from(c).where(Ar(Kn(c,"userId"),w)).orderBy(rA`created_at DESC`)).map((m)=>n_(m));return{isSuccess:!0,data:{items:u,totalCount:u.length}}}),n.get(`${o}/:id`,async({params:d,request:_,set:w})=>{let g=_.headers.get("x-user-id");if(!g)return w.status=401,{isSuccess:!1,message:"Unauthenticated",data:null};let u=d.id,l=(await i.select().from(c).where(Ue(Ar(Kn(c,"id"),u),Ar(Kn(c,"userId"),g))).limit(1))[0];if(!l)return w.status=404,{isSuccess:!1,message:"API key not found",data:null};return{isSuccess:!0,data:n_(l)}}),n.patch(`${o}/:id`,async({params:d,request:_,set:w})=>{if(f)return w.status=403,{isSuccess:!1,message:"API key management is disabled via configuration",data:null};if(_.headers.get("x-auth-type")==="api_key")return w.status=403,{isSuccess:!1,message:"API keys cannot be modified using another API key",data:null};let u=_.headers.get("x-user-id");if(!u)return w.status=401,{isSuccess:!1,message:"Unauthenticated",data:null};let m=d.id,l;try{l=await _.json()}catch{return w.status=400,{isSuccess:!1,message:"Invalid request body",data:null}}let $=(await i.select().from(c).where(Ue(Ar(Kn(c,"id"),m),Ar(Kn(c,"userId"),u))).limit(1))[0];if(!$)return w.status=404,{isSuccess:!1,message:"API key not found",data:null};if($.revokedAt)return w.status=400,{isSuccess:!1,message:"Cannot modify a revoked API key",data:null};let S=await Nb(r,u),U=await xb(r,u),W={updatedAt:new Date};if(l.name!==void 0){if(typeof l.name!=="string"||l.name.trim().length===0)return w.status=400,{isSuccess:!1,message:"Name cannot be empty",data:null};W.name=l.name.trim()}if(l.description!==void 0)W.description=l.description?.trim()||null;if(l.allowedRoles!==void 0){if(Qt(S,l.allowedRoles).length!==l.allowedRoles.length){let k=l.allowedRoles.filter((D)=>!S.includes(D));return w.status=403,{isSuccess:!1,message:`Cannot assign roles you do not have: ${k.join(", ")}`,data:null}}W.allowedRoles=l.allowedRoles.filter((k)=>!nc(k))}if(l.allowedClaims!==void 0){if(Qt(U,l.allowedClaims).length!==l.allowedClaims.length){let k=l.allowedClaims.filter((D)=>!U.includes(D));return w.status=403,{isSuccess:!1,message:`Cannot assign claims you do not have: ${k.join(", ")}`,data:null}}W.allowedClaims=l.allowedClaims}if(l.allowedScopes!==void 0){if(l.allowedScopes.length>0){let H=await Pb(r,u);if(Qt(H,l.allowedScopes).length!==l.allowedScopes.length){let D=l.allowedScopes.filter((A)=>!H.includes(A));return w.status=403,{isSuccess:!1,message:`Cannot assign scopes you do not have: ${D.join(", ")}`,data:null}}}W.allowedScopes=l.allowedScopes}try{await i.update(c).set(W).where(Ar(Kn(c,"id"),m)),a.info("[API_KEYS] API key updated",{keyId:m,userId:u});let H=await i.select().from(c).where(Ar(Kn(c,"id"),m)).limit(1);return{isSuccess:!0,message:"API key updated successfully",data:n_(H[0])}}catch(H){return a.error("[API_KEYS] Failed to update API key",{error:H,keyId:m,userId:u}),w.status=500,{isSuccess:!1,message:"Failed to update API key",data:null}}}),n.delete(`${o}/:id`,async({params:d,request:_,set:w})=>{if(_.headers.get("x-auth-type")==="api_key")return w.status=403,{isSuccess:!1,message:"API keys cannot be revoked using another API key",data:null};let u=_.headers.get("x-user-id");if(!u)return w.status=401,{isSuccess:!1,message:"Unauthenticated",data:null};let m=d.id,l={};try{let U=await _.clone().text();if(U)l=JSON.parse(U)}catch{}let $=(await i.select().from(c).where(Ue(Ar(Kn(c,"id"),m),Ar(Kn(c,"userId"),u))).limit(1))[0];if(!$)return w.status=404,{isSuccess:!1,message:"API key not found",data:null};if($.revokedAt)return w.status=400,{isSuccess:!1,message:"API key is already revoked",data:null};try{return await i.update(c).set({isActive:!1,revokedAt:new Date,revokedReason:l.reason||"user_revoked",updatedAt:new Date}).where(Ar(Kn(c,"id"),m)),a.info("[API_KEYS] API key revoked",{keyId:m,userId:u,reason:l.reason||"user_revoked"}),{isSuccess:!0,message:"API key revoked successfully",data:null}}catch(S){return a.error("[API_KEYS] Failed to revoke API key",{error:S,keyId:m,userId:u}),w.status=500,{isSuccess:!1,message:"Failed to revoke API key",data:null}}}),a.info(`[API_KEYS] Routes registered at ${o}`)}var Kn=(n,r)=>n[r],Nb=async(n,r)=>{if(!n.db||!n.userRolesTable||!n.rolesTable)return[];return(await n.db.select({name:Kn(n.rolesTable,"name")}).from(n.userRolesTable).innerJoin(n.rolesTable,Ar(Kn(n.rolesTable,"id"),Kn(n.userRolesTable,"roleId"))).where(Ar(Kn(n.userRolesTable,"userId"),r))).map((o)=>o.name).filter((o)=>o!==void 0)},xb=async(n,r)=>{if(!n.db||!n.userRolesTable||!n.roleClaimsTable||!n.claimsTable)return[];let t=await n.db.select({action:Kn(n.claimsTable,"action")}).from(n.userRolesTable).innerJoin(n.roleClaimsTable,Ar(Kn(n.roleClaimsTable,"roleId"),Kn(n.userRolesTable,"roleId"))).innerJoin(n.claimsTable,Ar(Kn(n.claimsTable,"id"),Kn(n.roleClaimsTable,"claimId"))).where(Ar(Kn(n.userRolesTable,"userId"),r)),o=new Set(t.map((c)=>c.action));return Array.from(o).filter((c)=>c!==void 0)},Pb=async(n,r)=>{if(!n.db||!n.userRolesTable||!n.roleClaimsTable)return[];let t=await n.db.select({scope:Kn(n.roleClaimsTable,"scope")}).from(n.userRolesTable).innerJoin(n.roleClaimsTable,Ar(Kn(n.roleClaimsTable,"roleId"),Kn(n.userRolesTable,"roleId"))).where(Ar(Kn(n.userRolesTable,"userId"),r)),o=new Set(t.map((c)=>c.scope).filter((c)=>c!==null&&c!==void 0&&c.length>0));return Array.from(o)},n_=(n)=>{let{keyHash:r,...t}=n;return t};var r_=b(()=>{Xa();te();Qi()});import{Elysia as tA,t as Gr}from"elysia";function Cb(n){let{captchaService:r,logger:t,basePath:o="/auth/captcha"}=n,c=new tA;if(!r.isEnabled())return c;return c.get(`${o}/generate`,async(i)=>{let{type:a,difficulty:e}=i.query,s=i.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||i.request.headers.get("x-real-ip")?.trim()||i.request.headers.get("cf-connecting-ip")?.trim()||"unknown",f=await r.generate(a,e,s);if(f.rateLimited)return i.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:oA,detail:{tags:["Captcha"],summary:"Generate Captcha",description:"Generate a new captcha challenge"}}),c.post(`${o}/validate`,async(i)=>{let{challengeId:a,answer:e}=i.body,s=await r.validate(a,e);if(!s.valid)i.set.status=400;return s},{body:cA,detail:{tags:["Captcha"],summary:"Validate Captcha",description:"Validate a captcha answer"}}),c}var oA,cA;var Fb=b(()=>{oA=Gr.Object({type:Gr.Optional(Gr.Union([Gr.Literal("math"),Gr.Literal("image"),Gr.Literal("puzzle"),Gr.Literal("text")])),difficulty:Gr.Optional(Gr.Union([Gr.Literal("easy"),Gr.Literal("medium"),Gr.Literal("hard")]))}),cA=Gr.Object({challengeId:Gr.String(),answer:Gr.String()})});function jb(n,r){let{db:t,logger:o}=n,c=r.route||"/auth/check";return(i)=>i.post(c,async(a)=>{let{body:e,request:s,set:f}=a,d=s.headers.get("x-user-id");if(!d)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 _=n.schemaTables;if(!_)return f.status=503,{isSuccess:!1,message:"Authorization tables not available",data:null};let{entity:w,method:g,fields:u,relations:m}=e;if(!w||!g)return f.status=400,{isSuccess:!1,message:"entity and method are required",data:null};let l=await oe({userId:d,method:g,entity:w,requestedFields:u,requestedRelations:m,db:t,schemaTables:_,logger:o});return{isSuccess:!0,message:l.authorized?"Authorized":"Forbidden",data:{authorized:l.authorized,reason:l.reason,allowedFields:l.allowedFields,allowedRelations:l.allowedRelations,scopeFilters:l.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 qb=b(()=>{Ks()});import iA from"crypto";var{password:aA}=globalThis.Bun;async function Xo(n){return await aA.hash(n,{algorithm:"bcrypt",cost:10})}function Ve(){return iA.randomBytes(32).toString("hex")}function Ic(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 Kb(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 pc=()=>{};import{sql as Ye}from"drizzle-orm";import{Elysia as eA,t as Je}from"elysia";function Xe(n){let{authConfig:r,registerConfig:t,emailService:o,appName:c}=n,{db:i,logger:a,usersTable:e}=r,s=new eA;if(!t.enabled||!t.emailVerification?.enabled)return s;let f="/verify-email",d="/resend-verification";return s.get(f,async(_)=>{if(!i||!e)return{success:!1,message:"Database not configured"};let w=_.query.token;if(!w)return{success:!1,message:"Verification token is required"};let g=await i.select().from(e).where(Ye`email_verification_token = ${w}`).limit(1);if(g.length===0)return a.warn("[AUTH] Email verification failed - invalid token"),{success:!1,message:"Invalid or expired verification token"};let u=g[0],m=u.emailVerificationTokenExpiresAt;if(m&&new Date>new Date(m))return a.warn("[AUTH] Email verification failed - token expired",{userId:u.id,email:u.email}),{success:!1,message:"Verification token has expired. Please request a new one."};if(await i.update(e).set({verifiedAt:new Date,emailVerificationToken:null,emailVerificationTokenExpiresAt:null}).where(Ye`id = ${u.id}`),a.info("[AUTH] Email verified successfully",{userId:u.id,email:u.email}),t.emailVerification?.templates?.welcome?.enabled&&o?.isAvailable())o.sendWelcomeEmail(u.email,u.email.split("@")[0]||"User",c||"Nucleus").catch((E)=>{a.error("[AUTH] Failed to send welcome email after verification",{email:u.email,error:E})});return{success:!0,message:"Email verified successfully. You can now log in.",data:{redirectUrl:t.emailVerification?.redirectUrl||"/login",verified:!0}}},{query:Je.Object({token:Je.String()}),detail:{tags:["Authentication"],summary:"Verify Email",description:"Verify user email address using the verification token"}}),s.post(d,async(_)=>{if(!i||!e)return{success:!1,message:"Database not configured"};if(!o?.isAvailable())return{success:!1,message:"Email service not available"};let{email:w}=_.body,g=await i.select().from(e).where(Ye`email = ${w}`).limit(1);if(g.length===0)return{success:!0,message:"If your email is registered, you will receive a verification email."};let u=g[0];if(u.verifiedAt)return{success:!1,message:"Email is already verified"};let m=t.emailVerification?.maxResendAttempts||3,l=u.emailVerificationAttempts||0;if(l>=m)return a.warn("[AUTH] Resend verification failed - max attempts reached",{email:w,attempts:l}),{success:!1,message:"Maximum resend attempts reached. Please contact support.",data:{maxAttemptsReached:!0,attemptsUsed:l,maxAttempts:m}};let E=t.emailVerification?.resendCooldown||"60s",$=Ic(E),S=u.emailVerificationSentAt;if(S){let h=Date.now()-new Date(S).getTime();if(h<$){let R=Math.ceil(($-h)/1000);return{success:!1,message:`Please wait ${R} seconds before requesting another verification email.`,data:{cooldownRemaining:R,canResendAt:new Date(Date.now()+R*1000).toISOString()}}}}let U=Ve(),W=t.emailVerification?.tokenExpiresIn||"24h",H=new Date(Date.now()+Ic(W));await i.update(e).set({emailVerificationToken:U,emailVerificationTokenExpiresAt:H,emailVerificationSentAt:new Date,emailVerificationAttempts:l+1}).where(Ye`id = ${u.id}`);let D=`${(t.emailVerification?.redirectUrl||"http://localhost:3000/login").replace("/login","/verify-email")}?token=${U}`,A=await o.sendVerificationEmail(w,w.split("@")[0]||"User",D,c||"Nucleus");if(A.success)return a.info("[AUTH] Verification email resent",{email:w}),{success:!0,message:"Verification email sent. Please check your inbox.",data:{cooldownSeconds:Math.ceil($/1000),canResendAt:new Date(Date.now()+$).toISOString(),attemptsRemaining:m-(l+1)}};return a.error("[AUTH] Failed to resend verification email",{email:w,error:A.error}),{success:!1,message:"Failed to send verification email. Please try again later."}},{body:Je.Object({email:Je.String({format:"email"})}),detail:{tags:["Authentication"],summary:"Resend Verification Email",description:"Resend the email verification link to the user"}}),s}var t_=b(()=>{pc()});import vb from"crypto";function yc(){return vb.randomBytes(32).toString("hex")}function Mt(n){return vb.createHash("sha256").update(n).digest("hex")}function Tc(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 yi=()=>{};import{eq as sA}from"drizzle-orm";import{Elysia as fA,t as Le}from"elysia";function Qe(n,r,t,o,c,i){let{db:a,logger:e,usersTable:s}=n,f=r.route||"/auth/invite",d=r.tokenExpiresIn||"7d",_=r.redirectUrl||"",w=new fA;if(!r.enabled)return w;if(w.post(f,async(g)=>{if(!a||!s)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return e.error("[AUTH] Invite requested but email service not available"),{success:!1,message:"Email service not available"};let{email:u}=g.body,m=await a.select().from(s).where(sA(s.email,u)).limit(1),l;if(m.length>0){let H=m[0];if(H.verifiedAt||H.password)return e.warn("[AUTH] Invite failed - user already verified",{email:u}),{success:!1,message:"User with this email is already verified"};l=H.id,e.info("[AUTH] Resending invitation to existing unverified user",{userId:l,email:u})}else{let H={email:u,password:null,emailVerified:!1,isLocked:!1,createdAt:new Date,updatedAt:new Date},D=(await a.insert(s).values(H).returning())[0];if(!D)return e.error("[AUTH] Failed to create invited user",{email:u}),{success:!1,message:"Failed to create user"};l=D.id,e.info("[AUTH] Invited user created",{userId:l,email:u})}let E=yc(),$=Mt(E),S=new Date(Date.now()+Tc(d));await o({userId:l,email:u,tokenHash:$,expiresAt:S});let U=_?`${_}?token=${E}&invite=true`:`/auth/magic-link/verify?token=${E}`,W=await t.sendInvitationEmail(u,U,c||"Nucleus");if(!W.success)return e.error("[AUTH] Failed to send invitation email",{email:u,error:W.error}),{success:!0,message:"User created but failed to send invitation email",data:{id:l,email:u}};return e.info("[AUTH] Invitation email sent",{email:u,userId:l}),{success:!0,message:"Invitation sent successfully",data:{id:l,email:u}}},{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"}}),i)w.post(`${f}/verify`,async(g)=>{let{token:u}=g.body;if(!u)return{success:!1,message:"Token is required"};let m=Mt(u),l=await i(m);if(!l)return e.warn("[AUTH] Invalid invite verify token"),{success:!1,message:"Invalid or expired token"};if(new Date>l.expiresAt)return e.warn("[AUTH] Expired invite verify token",{email:l.email}),{success:!1,message:"Invalid or expired token"};return e.info("[AUTH] Invite token verified (not consumed)",{email:l.email,userId:l.userId}),{success:!0,data:{userId:l.userId,email:l.email}}},{body:Le.Object({token:Le.String()}),detail:{tags:["Authentication"],summary:"Verify Invite Token",description:"Validate an invite token without consuming it. Returns user info if valid."}});return w}var _A;var o_=b(()=>{yi();_A=Le.Object({email:Le.String({format:"email"})})});import{t as cr}from"elysia";var c_,lA;var i_=b(()=>{c_=cr.Object({email:cr.String({format:"email"}),password:cr.String({minLength:1}),rememberMe:cr.Optional(cr.Boolean()),captchaId:cr.Optional(cr.String()),captchaAnswer:cr.Optional(cr.String()),deviceHint:cr.Optional(cr.String())}),lA=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()}))})});var{password:dA}=globalThis.Bun;async function Ge(n,r){try{return await dA.verify(n,r)}catch{return!1}}function Oe(n,r,t){let o=n.toLowerCase(),c=["headlesschrome","headless","phantomjs","nightmare","selenium","webdriver","puppeteer","playwright"],i=["bot","crawler","spider","scraper","curl","wget","python-requests","python-urllib","java/","httpclient","go-http-client","node-fetch","axios","postman","insomnia","httpie"],a=c.some((l)=>o.includes(l)),e=i.some((l)=>o.includes(l)),s=a||e,f=[];if(a)f.push("headless_browser");if(e)f.push("bot_user_agent");if(!o||o.length<10)f.push("missing_or_short_ua");if(o==="mozilla/5.0")f.push("generic_ua");if(o.includes("nucleusserveraction")||o.includes("serveraction"))f.push("server_action");let d="unknown";if(o.includes("ipad"))d="tablet";else if(o.includes("iphone"))d="mobile";else if(o.includes("macintosh")||o.includes("windows")&&!o.includes("windows phone")||o.includes("linux")&&!o.includes("android"))d="desktop";else if(o.includes("tablet")||o.includes("android")&&o.includes("tablet"))d="tablet";else if(o.includes("mobile")||o.includes("android"))d="mobile";let _,w;if(a)_="Headless Browser";else if(e)_="Bot/Crawler";else if(o.includes("chrome")&&!o.includes("edg")){_="Chrome";let l=n.match(/Chrome\/(\d+\.\d+)/i);if(l?.[1])w=l[1]}else if(o.includes("firefox")){_="Firefox";let l=n.match(/Firefox\/(\d+\.\d+)/i);if(l?.[1])w=l[1]}else if(o.includes("safari")&&!o.includes("chrome")){_="Safari";let l=n.match(/Version\/(\d+\.\d+)/i);if(l?.[1])w=l[1]}else if(o.includes("edg")){_="Edge";let l=n.match(/Edg\/(\d+\.\d+)/i);if(l?.[1])w=l[1]}let g,u;if(o.includes("windows nt 10"))g="Windows",u="10/11";else if(o.includes("windows nt"))g="Windows";else if(o.includes("mac os x")){g="macOS";let l=n.match(/Mac OS X (\d+[._]\d+)/i);if(l?.[1])u=l[1].replace("_",".")}else if(o.includes("android")){g="Android";let l=n.match(/Android (\d+\.?\d*)/i);if(l?.[1])u=l[1]}else if(o.includes("iphone")||o.includes("ipad")){g="iOS";let l=n.match(/OS (\d+[._]\d+)/i);if(l?.[1])u=l[1].replace("_",".")}else if(o.includes("linux"))g="Linux";return{deviceName:_&&g?`${_} on ${g}`:"Unknown Device",deviceType:d,browserName:_,browserVersion:w,osName:g,osVersion:u,ipAddress:r,userAgent:n,deviceHint:t,locationCountry:void 0,locationCity:void 0,isHeadless:a,isBot:e,isSuspicious:s,suspiciousPatterns:f}}var Ne=()=>{};import{eq as a_}from"drizzle-orm";import{Elysia as uA}from"elysia";function xe(n,r,t,o,c,i,a,e,s){let{db:f,logger:d,usersTable:_}=n,w=r.route||"/auth/login",g={accessTokenName:a?.accessTokenName||"access_token",refreshTokenName:a?.refreshTokenName||"refresh_token",sessionTokenName:a?.sessionTokenName||"session_token",accessTokenMaxAge:a?.accessTokenMaxAge||900,refreshTokenMaxAge:a?.refreshTokenMaxAge||604800,sessionTokenMaxAge:a?.sessionTokenMaxAge||900,secure:a?.secure??!0,httpOnly:a?.httpOnly??!0,sameSite:a?.sameSite||"strict",path:a?.path||"/",domain:a?.domain},u=new uA;if(!r.enabled)return u;return u.post(w,async(m)=>{if(!f||!_)return{success:!1,message:"Database not configured"};let{email:l,password:E,rememberMe:$,captchaId:S,captchaAnswer:U,deviceHint:W}=m.body;if(s?.isEnabled()){if(!S||!U)return m.set.status=400,{success:!1,message:"Captcha is required"};let rn=await s.validate(S,U);if(!rn.valid)return m.set.status=400,{success:!1,message:rn.message||"Invalid captcha",attemptsRemaining:rn.attemptsRemaining}}let k=(await f.select().from(_).where(a_(_.email,l)).limit(1))[0],D=new URL(m.request.url),A=m.request.headers.get("cf-connecting-ip")?.trim()||m.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||m.request.headers.get("x-real-ip")?.trim()||"unknown",h=m.request.headers.get("user-agent")||"unknown";if(!k)return d.warn("[AUTH] Login failed - user not found",{email:l}),await d.audit({entityName:"users",operation:"LOGIN_FAILED",summary:`Login failed: user not found (${l})`,ipAddress:A,userAgent:h,path:D.pathname,query:D.search}),{success:!1,message:"Invalid email or password"};if(k.isLocked)return d.warn("[AUTH] Login failed - account locked",{email:l,userId:k.id}),await d.audit({entityName:"users",entityId:k.id,operation:"LOGIN_FAILED",userId:k.id,summary:`Login failed: account locked (${l})`,ipAddress:A,userAgent:h,path:D.pathname,query:D.search}),{success:!1,message:"Account is locked"};if(!await Ge(E,k.password)){let rn=(k.failedLoginAttempts||0)+1;return await f.update(_).set({failedLoginAttempts:rn,isLocked:rn>=5,lockedUntil:rn>=5?new Date(Date.now()+1800000):null}).where(a_(_.id,k.id)),d.warn("[AUTH] Login failed - invalid password",{email:l,failedAttempts:rn}),await d.audit({entityName:"users",entityId:k.id,operation:"LOGIN_FAILED",userId:k.id,summary:`Login failed: invalid password (${l}, attempt ${rn})`,ipAddress:A,userAgent:h,path:D.pathname,query:D.search}),{success:!1,message:"Invalid email or password"}}await f.update(_).set({failedLoginAttempts:0,lastLoginAt:new Date,loginCount:(k.loginCount||0)+1}).where(a_(_.id,k.id));let z={};m.request.headers.forEach((rn,hn)=>{z[hn]=rn}),d.info("[AUTH] Login request headers",{headers:z});let V=m.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim(),Q=(rn)=>!rn||rn==="127.0.0.1"||rn==="::1"||rn==="localhost"||rn.startsWith("10.")||rn.startsWith("192.168.")||rn.startsWith("172."),B=m.request.headers.get("cf-connecting-ip")?.trim()||m.request.headers.get("true-client-ip")?.trim()||(!Q(V)?V:void 0)||m.request.headers.get("x-real-ip")?.trim()||m.request.headers.get("x-client-ip")?.trim()||V||"127.0.0.1",J=m.request.headers.get("user-agent")||"Unknown Browser";d.info("[AUTH] Parsed device info",{ipAddress:B,userAgent:J});let G=Oe(J,B,W);try{if(!Q(B)){let rn=await fetch(`http://ip-api.com/json/${B}?fields=country,city`);if(rn.ok){let hn=await rn.json();if(hn.country)G.locationCountry=hn.country;if(hn.city)G.locationCity=hn.city}}}catch{}let F=[],N=[],x=n.userRolesTable,y=n.rolesTable,O=n.roleClaimsTable,q=n.claimsTable;if(f&&x&&y)try{let{eq:rn,inArray:hn}=await import("drizzle-orm"),Tn=(await f.select().from(x).where(rn(x.userId,k.id))).map((Nr)=>Nr.roleId);if(Tn.length>0){if(F=(await f.select().from(y).where(hn(y.id,Tn))).map((Qr)=>Qr.name),O&&q){let Qr=await f.select().from(O).innerJoin(q,rn(O.claimId,q.id)).where(hn(O.roleId,Tn)),$r=new Set;for(let ar of Qr){let Ha=ar.claims?.action;if(Ha)$r.add(Ha)}N=Array.from($r)}}}catch{}let Z=t(k.id,F.length>0?F:void 0,N.length>0?N:void 0),nn=o(k.id),j=m.request.headers.get("origin")||m.request.headers.get("referer")?.replace(/\/[^/]*$/,"")||void 0,I={userId:k.id,deviceInfo:G,loginMethod:"password",rememberMe:$,requestOrigin:j},K=await c(I),tn=!1,wn=K;if(i){let rn=await i(K,I);if(rn?.requiresApproval){if(tn=!0,rn.sessionId)wn=rn.sessionId}}if(tn)return m.set.status=202,new Response(JSON.stringify({success:!1,requiresApproval:!0,sessionId:wn,message:"Login requires approval. Please check your email to approve this device."}),{status:202,headers:{"Content-Type":"application/json"}});d.info("[AUTH] Login successful",{userId:k.id,email:l,rememberMe:$}),await d.audit({entityName:"users",entityId:k.id,operation:"LOGIN",userId:k.id,summary:`${l} logged in successfully`,ipAddress:B,userAgent:J,path:D.pathname,query:D.search});let ln={accessToken:{setHeadersEnabled:e?.accessToken?.setHeadersEnabled??!0,returnJson:e?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:e?.refreshToken?.setHeadersEnabled??!0,returnJson:e?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:e?.sessionToken?.setHeadersEnabled??!0,returnJson:e?.sessionToken?.returnJson??!0}},Qn=g.secure?"; Secure":"",qn=g.domain?`; Domain=${g.domain}`:"",gn=`; Path=${g.path}; HttpOnly; SameSite=${g.sameSite}${Qn}${qn}`,Gn=[];if(ln.accessToken.setHeadersEnabled)Gn.push(`${g.accessTokenName}=${Z}${gn}; Max-Age=${g.accessTokenMaxAge}`);if(ln.refreshToken.setHeadersEnabled)Gn.push(`${g.refreshTokenName}=${nn}${gn}; Max-Age=${g.refreshTokenMaxAge}`);if(ln.sessionToken.setHeadersEnabled)Gn.push(`${g.sessionTokenName}=${K}${gn}; Max-Age=${g.sessionTokenMaxAge}`);m.set.headers["x-session-id"]=K;let Un={user:{id:k.id,email:k.email}};if(ln.accessToken.returnJson)Un.accessToken=Z;if(ln.refreshToken.returnJson)Un.refreshToken=nn;if(ln.sessionToken.returnJson)Un.sessionId=K;let En=JSON.stringify({success:!0,data:Un}),Sn=new Headers;Sn.set("Content-Type","application/json"),Sn.set("x-session-id",K);for(let rn of Gn)Sn.append("Set-Cookie",rn);return new Response(En,{status:200,headers:Sn})},{body:c_,detail:{tags:["Authentication"],summary:"Login",description:"Authenticate user with email and password"}}),u}var e_=b(()=>{i_();Ne();i_()});function Zb(n){let r=n?.path||"/",t=n?.sameSite||"Strict",o=n?.secure!==!1?"; Secure":"",c=n?.domain?`; Domain=${n.domain}`:"",i=n?.accessTokenName||"access_token",a=n?.refreshTokenName||"refresh_token",e=n?.sessionTokenName||"session_token",s=`; Path=${r}; HttpOnly; SameSite=${t}${o}${c}; Max-Age=0`;return{"Set-Cookie":[`${i}=${s}`,`${a}=${s}`,`${e}=${s}`].join(", ")}}import{t as Pe}from"elysia";var wA;var Ib=b(()=>{wA=Pe.Object({success:Pe.Boolean(),message:Pe.Optional(Pe.String())})});import{Elysia as bA}from"elysia";function Ce(n,r,t,o,c){let{logger:i}=n,a=r.route||"/auth/logout",e=new bA;if(!r.enabled)return e;return e.post(a,async(s)=>{let f=s.request.headers.get("x-session-id"),d=s.request.headers.get("x-user-id");if(f){if(await t(f),o)await o(f,"user_logout")}let _=Zb(c);for(let[g,u]of Object.entries(_))s.set.headers[g]=u;i.info("[AUTH] Logout successful",{userId:d,sessionId:f});let w=new URL(s.request.url);return i.audit({entityName:"users",entityId:d||void 0,operation:"LOGOUT",userId:d||void 0,summary:`User logged out${f?` (session: ${f.substring(0,8)}...)`:""}`,ipAddress:s.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||s.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:s.request.headers.get("user-agent")||"unknown",path:w.pathname,query:w.search}),{success:!0,message:"Logged out successfully"}},{detail:{tags:["Authentication"],summary:"Logout",description:"Logout and invalidate session"}}),e}var s_=b(()=>{Ib()});var Yr={};ho(Yr,{IsUndefined:()=>_r,IsUint8Array:()=>so,IsSymbol:()=>u_,IsString:()=>Fn,IsRegExp:()=>na,IsObject:()=>On,IsNumber:()=>Tr,IsNull:()=>d_,IsIterator:()=>l_,IsFunction:()=>__,IsDate:()=>_c,IsBoolean:()=>eo,IsBigInt:()=>Ti,IsAsyncIterator:()=>f_,IsArray:()=>fr,HasPropertyKey:()=>Fe});function Fe(n,r){return r in n}function f_(n){return On(n)&&!fr(n)&&!so(n)&&Symbol.asyncIterator in n}function fr(n){return Array.isArray(n)}function Ti(n){return typeof n==="bigint"}function eo(n){return typeof n==="boolean"}function _c(n){return n instanceof globalThis.Date}function __(n){return typeof n==="function"}function l_(n){return On(n)&&!fr(n)&&!so(n)&&Symbol.iterator in n}function d_(n){return n===null}function Tr(n){return typeof n==="number"}function On(n){return typeof n==="object"&&n!==null}function na(n){return n instanceof globalThis.RegExp}function Fn(n){return typeof n==="string"}function u_(n){return typeof n==="symbol"}function so(n){return n instanceof globalThis.Uint8Array}function _r(n){return n===void 0}function gA(n){return n.map((r)=>je(r))}function mA(n){return new Date(n.getTime())}function $A(n){return new Uint8Array(n)}function hA(n){return new RegExp(n.source,n.flags)}function AA(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=je(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=je(n[t]);return r}function je(n){return fr(n)?gA(n):_c(n)?mA(n):so(n)?$A(n):na(n)?hA(n):On(n)?AA(n):n}function In(n){return je(n)}var Pr=()=>{};function ni(n,r){return r===void 0?In(n):In({...r,...n})}var qe=b(()=>{Pr()});var w_=b(()=>{qe();Pr()});function pb(n){return n!==null&&typeof n==="object"}function yb(n){return globalThis.Array.isArray(n)&&!globalThis.ArrayBuffer.isView(n)}function Tb(n){return n===void 0}function n1(n){return typeof n==="number"}var r1=()=>{};var Ke;var t1=b(()=>{r1();(function(n){n.InstanceMode="default",n.ExactOptionalPropertyTypes=!1,n.AllowArrayObject=!1,n.AllowNaN=!1,n.AllowNullVoid=!1;function r(a,e){return n.ExactOptionalPropertyTypes?e in a:a[e]!==void 0}n.IsExactOptionalProperty=r;function t(a){let e=pb(a);return n.AllowArrayObject?e:e&&!yb(a)}n.IsObjectLike=t;function o(a){return t(a)&&!(a instanceof Date)&&!(a instanceof Uint8Array)}n.IsRecordLike=o;function c(a){return n.AllowNaN?n1(a):Number.isFinite(a)}n.IsNumberLike=c;function i(a){let e=Tb(a);return n.AllowNullVoid?e||a===null:e}n.IsVoidLike=i})(Ke||(Ke={}))});function EA(n){return globalThis.Object.freeze(n).map((r)=>ra(r))}function SA(n){return n}function DA(n){return n}function kA(n){return n}function MA(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=ra(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=ra(n[t]);return globalThis.Object.freeze(r)}function ra(n){return fr(n)?EA(n):_c(n)?SA(n):so(n)?DA(n):na(n)?kA(n):On(n)?MA(n):n}var o1=()=>{};function X(n,r){let t=r!==void 0?{...r,...n}:n;switch(Ke.InstanceMode){case"freeze":return ra(t);case"clone":return In(t);default:return t}}var en=b(()=>{t1();o1();Pr()});var fo=b(()=>{en()});var Hr;var c1=b(()=>{Hr=class Hr extends Error{constructor(n){super(n)}}});var Ft=b(()=>{c1()});var ur,Rt,zr,lt,C;var ta=b(()=>{ur=Symbol.for("TypeBox.Transform"),Rt=Symbol.for("TypeBox.Readonly"),zr=Symbol.for("TypeBox.Optional"),lt=Symbol.for("TypeBox.Hint"),C=Symbol.for("TypeBox.Kind")});var fn=b(()=>{ta()});function ri(n){return On(n)&&n[Rt]==="Readonly"}function Cr(n){return On(n)&&n[zr]==="Optional"}function b_(n){return Dn(n,"Any")}function g_(n){return Dn(n,"Argument")}function Ht(n){return Dn(n,"Array")}function lc(n){return Dn(n,"AsyncIterator")}function dc(n){return Dn(n,"BigInt")}function _o(n){return Dn(n,"Boolean")}function zt(n){return Dn(n,"Computed")}function Bt(n){return Dn(n,"Constructor")}function RA(n){return Dn(n,"Date")}function Ut(n){return Dn(n,"Function")}function Wt(n){return Dn(n,"Integer")}function rr(n){return Dn(n,"Intersect")}function uc(n){return Dn(n,"Iterator")}function Dn(n,r){return On(n)&&C in n&&n[C]===r}function ve(n){return eo(n)||Tr(n)||Fn(n)}function nt(n){return Dn(n,"Literal")}function rt(n){return Dn(n,"MappedKey")}function pn(n){return Dn(n,"MappedResult")}function Lo(n){return Dn(n,"Never")}function HA(n){return Dn(n,"Not")}function oa(n){return Dn(n,"Null")}function Vt(n){return Dn(n,"Number")}function lr(n){return Dn(n,"Object")}function wc(n){return Dn(n,"Promise")}function bc(n){return Dn(n,"Record")}function ir(n){return Dn(n,"Ref")}function m_(n){return Dn(n,"RegExp")}function lo(n){return Dn(n,"String")}function ca(n){return Dn(n,"Symbol")}function tt(n){return Dn(n,"TemplateLiteral")}function zA(n){return Dn(n,"This")}function Qo(n){return On(n)&&ur in n}function ot(n){return Dn(n,"Tuple")}function ia(n){return Dn(n,"Undefined")}function kn(n){return Dn(n,"Union")}function BA(n){return Dn(n,"Uint8Array")}function UA(n){return Dn(n,"Unknown")}function WA(n){return Dn(n,"Unsafe")}function VA(n){return Dn(n,"Void")}function YA(n){return On(n)&&C in n&&Fn(n[C])}function ct(n){return b_(n)||g_(n)||Ht(n)||_o(n)||dc(n)||lc(n)||zt(n)||Bt(n)||RA(n)||Ut(n)||Wt(n)||rr(n)||uc(n)||nt(n)||rt(n)||pn(n)||Lo(n)||HA(n)||oa(n)||Vt(n)||lr(n)||wc(n)||bc(n)||ir(n)||m_(n)||lo(n)||ca(n)||tt(n)||zA(n)||ot(n)||ia(n)||kn(n)||BA(n)||UA(n)||WA(n)||VA(n)||YA(n)}var zn=b(()=>{fn()});var M={};ho(M,{TypeGuardUnknownTypeError:()=>i1,IsVoid:()=>q1,IsUnsafe:()=>j1,IsUnknown:()=>F1,IsUnionLiteral:()=>PA,IsUnion:()=>A_,IsUndefined:()=>P1,IsUint8Array:()=>C1,IsTuple:()=>x1,IsTransform:()=>N1,IsThis:()=>O1,IsTemplateLiteral:()=>G1,IsSymbol:()=>Q1,IsString:()=>L1,IsSchema:()=>kr,IsRegExp:()=>X1,IsRef:()=>J1,IsRecursive:()=>xA,IsRecord:()=>Y1,IsReadonly:()=>QA,IsProperties:()=>Ze,IsPromise:()=>V1,IsOptional:()=>GA,IsObject:()=>W1,IsNumber:()=>U1,IsNull:()=>B1,IsNot:()=>z1,IsNever:()=>H1,IsMappedResult:()=>R1,IsMappedKey:()=>M1,IsLiteralValue:()=>k1,IsLiteralString:()=>S1,IsLiteralNumber:()=>D1,IsLiteralBoolean:()=>NA,IsLiteral:()=>ea,IsKindOf:()=>$n,IsKind:()=>K1,IsIterator:()=>E1,IsIntersect:()=>A1,IsInteger:()=>h1,IsImport:()=>OA,IsFunction:()=>$1,IsDate:()=>m1,IsConstructor:()=>g1,IsComputed:()=>b1,IsBoolean:()=>w1,IsBigInt:()=>u1,IsAsyncIterator:()=>d1,IsArray:()=>l1,IsArgument:()=>_1,IsAny:()=>f1});function a1(n){try{return new RegExp(n),!0}catch{return!1}}function $_(n){if(!Fn(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 e1(n){return h_(n)||kr(n)}function aa(n){return _r(n)||Ti(n)}function jn(n){return _r(n)||Tr(n)}function h_(n){return _r(n)||eo(n)}function Nn(n){return _r(n)||Fn(n)}function XA(n){return _r(n)||Fn(n)&&$_(n)&&a1(n)}function LA(n){return _r(n)||Fn(n)&&$_(n)}function s1(n){return _r(n)||kr(n)}function QA(n){return On(n)&&n[Rt]==="Readonly"}function GA(n){return On(n)&&n[zr]==="Optional"}function f1(n){return $n(n,"Any")&&Nn(n.$id)}function _1(n){return $n(n,"Argument")&&Tr(n.index)}function l1(n){return $n(n,"Array")&&n.type==="array"&&Nn(n.$id)&&kr(n.items)&&jn(n.minItems)&&jn(n.maxItems)&&h_(n.uniqueItems)&&s1(n.contains)&&jn(n.minContains)&&jn(n.maxContains)}function d1(n){return $n(n,"AsyncIterator")&&n.type==="AsyncIterator"&&Nn(n.$id)&&kr(n.items)}function u1(n){return $n(n,"BigInt")&&n.type==="bigint"&&Nn(n.$id)&&aa(n.exclusiveMaximum)&&aa(n.exclusiveMinimum)&&aa(n.maximum)&&aa(n.minimum)&&aa(n.multipleOf)}function w1(n){return $n(n,"Boolean")&&n.type==="boolean"&&Nn(n.$id)}function b1(n){return $n(n,"Computed")&&Fn(n.target)&&fr(n.parameters)&&n.parameters.every((r)=>kr(r))}function g1(n){return $n(n,"Constructor")&&n.type==="Constructor"&&Nn(n.$id)&&fr(n.parameters)&&n.parameters.every((r)=>kr(r))&&kr(n.returns)}function m1(n){return $n(n,"Date")&&n.type==="Date"&&Nn(n.$id)&&jn(n.exclusiveMaximumTimestamp)&&jn(n.exclusiveMinimumTimestamp)&&jn(n.maximumTimestamp)&&jn(n.minimumTimestamp)&&jn(n.multipleOfTimestamp)}function $1(n){return $n(n,"Function")&&n.type==="Function"&&Nn(n.$id)&&fr(n.parameters)&&n.parameters.every((r)=>kr(r))&&kr(n.returns)}function OA(n){return $n(n,"Import")&&Fe(n,"$defs")&&On(n.$defs)&&Ze(n.$defs)&&Fe(n,"$ref")&&Fn(n.$ref)&&n.$ref in n.$defs}function h1(n){return $n(n,"Integer")&&n.type==="integer"&&Nn(n.$id)&&jn(n.exclusiveMaximum)&&jn(n.exclusiveMinimum)&&jn(n.maximum)&&jn(n.minimum)&&jn(n.multipleOf)}function Ze(n){return On(n)&&Object.entries(n).every(([r,t])=>$_(r)&&kr(t))}function A1(n){return $n(n,"Intersect")&&(Fn(n.type)&&n.type!=="object"?!1:!0)&&fr(n.allOf)&&n.allOf.every((r)=>kr(r)&&!N1(r))&&Nn(n.type)&&(h_(n.unevaluatedProperties)||s1(n.unevaluatedProperties))&&Nn(n.$id)}function E1(n){return $n(n,"Iterator")&&n.type==="Iterator"&&Nn(n.$id)&&kr(n.items)}function $n(n,r){return On(n)&&C in n&&n[C]===r}function S1(n){return ea(n)&&Fn(n.const)}function D1(n){return ea(n)&&Tr(n.const)}function NA(n){return ea(n)&&eo(n.const)}function ea(n){return $n(n,"Literal")&&Nn(n.$id)&&k1(n.const)}function k1(n){return eo(n)||Tr(n)||Fn(n)}function M1(n){return $n(n,"MappedKey")&&fr(n.keys)&&n.keys.every((r)=>Tr(r)||Fn(r))}function R1(n){return $n(n,"MappedResult")&&Ze(n.properties)}function H1(n){return $n(n,"Never")&&On(n.not)&&Object.getOwnPropertyNames(n.not).length===0}function z1(n){return $n(n,"Not")&&kr(n.not)}function B1(n){return $n(n,"Null")&&n.type==="null"&&Nn(n.$id)}function U1(n){return $n(n,"Number")&&n.type==="number"&&Nn(n.$id)&&jn(n.exclusiveMaximum)&&jn(n.exclusiveMinimum)&&jn(n.maximum)&&jn(n.minimum)&&jn(n.multipleOf)}function W1(n){return $n(n,"Object")&&n.type==="object"&&Nn(n.$id)&&Ze(n.properties)&&e1(n.additionalProperties)&&jn(n.minProperties)&&jn(n.maxProperties)}function V1(n){return $n(n,"Promise")&&n.type==="Promise"&&Nn(n.$id)&&kr(n.item)}function Y1(n){return $n(n,"Record")&&n.type==="object"&&Nn(n.$id)&&e1(n.additionalProperties)&&On(n.patternProperties)&&((r)=>{let t=Object.getOwnPropertyNames(r.patternProperties);return t.length===1&&a1(t[0])&&On(r.patternProperties)&&kr(r.patternProperties[t[0]])})(n)}function xA(n){return On(n)&< in n&&n[lt]==="Recursive"}function J1(n){return $n(n,"Ref")&&Nn(n.$id)&&Fn(n.$ref)}function X1(n){return $n(n,"RegExp")&&Nn(n.$id)&&Fn(n.source)&&Fn(n.flags)&&jn(n.maxLength)&&jn(n.minLength)}function L1(n){return $n(n,"String")&&n.type==="string"&&Nn(n.$id)&&jn(n.minLength)&&jn(n.maxLength)&&XA(n.pattern)&&LA(n.format)}function Q1(n){return $n(n,"Symbol")&&n.type==="symbol"&&Nn(n.$id)}function G1(n){return $n(n,"TemplateLiteral")&&n.type==="string"&&Fn(n.pattern)&&n.pattern[0]==="^"&&n.pattern[n.pattern.length-1]==="$"}function O1(n){return $n(n,"This")&&Nn(n.$id)&&Fn(n.$ref)}function N1(n){return On(n)&&ur in n}function x1(n){return $n(n,"Tuple")&&n.type==="array"&&Nn(n.$id)&&Tr(n.minItems)&&Tr(n.maxItems)&&n.minItems===n.maxItems&&(_r(n.items)&&_r(n.additionalItems)&&n.minItems===0||fr(n.items)&&n.items.every((r)=>kr(r)))}function P1(n){return $n(n,"Undefined")&&n.type==="undefined"&&Nn(n.$id)}function PA(n){return A_(n)&&n.anyOf.every((r)=>S1(r)||D1(r))}function A_(n){return $n(n,"Union")&&Nn(n.$id)&&On(n)&&fr(n.anyOf)&&n.anyOf.every((r)=>kr(r))}function C1(n){return $n(n,"Uint8Array")&&n.type==="Uint8Array"&&Nn(n.$id)&&jn(n.minByteLength)&&jn(n.maxByteLength)}function F1(n){return $n(n,"Unknown")&&Nn(n.$id)}function j1(n){return $n(n,"Unsafe")}function q1(n){return $n(n,"Void")&&n.type==="void"&&Nn(n.$id)}function K1(n){return On(n)&&C in n&&Fn(n[C])&&!JA.includes(n[C])}function kr(n){return On(n)&&(f1(n)||_1(n)||l1(n)||w1(n)||u1(n)||d1(n)||b1(n)||g1(n)||m1(n)||$1(n)||h1(n)||A1(n)||E1(n)||ea(n)||M1(n)||R1(n)||H1(n)||z1(n)||B1(n)||U1(n)||W1(n)||V1(n)||Y1(n)||J1(n)||X1(n)||L1(n)||Q1(n)||G1(n)||O1(n)||x1(n)||P1(n)||A_(n)||C1(n)||F1(n)||j1(n)||q1(n)||K1(n))}var i1,JA;var v1=b(()=>{fn();Ft();i1=class i1 extends Hr{};JA=["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 E_=b(()=>{zn();v1()});var Z1=()=>{};var I1="(true|false)",Ie="(0|[1-9][0-9]*)",p1="(.*)",Go="^(0|[1-9][0-9]*)$",Oo="^(.*)$",y1="^(?!.*)$";var sa=()=>{};var T1=()=>{};var ng=()=>{};var rg=b(()=>{T1();ng()});function tg(n,r){return n.includes(r)}function og(n){return[...new Set(n)]}function jA(n,r){return n.filter((t)=>r.includes(t))}function qA(n,r){return n.reduce((t,o)=>{return jA(t,o)},r)}function cg(n){return n.length===1?n[0]:n.length>1?qA(n.slice(1),n[0]):[]}function ig(n){let r=[];for(let t of n)r.push(...t);return r}var fa=()=>{};function No(n){return X({[C]:"Any"},n)}var ag=b(()=>{fo();fn()});var _a=b(()=>{ag()});function ti(n,r){return X({[C]:"Array",type:"array",items:n},r)}var eg=b(()=>{en();fn()});var la=b(()=>{eg()});function sg(n){return X({[C]:"Argument",index:n})}var fg=b(()=>{en();fn()});var S_=b(()=>{fg()});function oi(n,r){return X({[C]:"AsyncIterator",type:"AsyncIterator",items:n},r)}var _g=b(()=>{fn();en()});var da=b(()=>{_g()});function vn(n,r,t){return X({[C]:"Computed",target:n,parameters:r},t)}var lg=b(()=>{fo();ta()});var xo=b(()=>{lg()});function KA(n,r){let{[r]:t,...o}=n;return o}function tr(n,r){return r.reduce((t,o)=>KA(t,o),n)}var wo=()=>{};function Mn(n){return X({[C]:"Never",not:{}},n)}var dg=b(()=>{en();fn()});var Br=b(()=>{dg()});var ug=()=>{};function Bn(n){return X({[C]:"MappedResult",properties:n})}var D_=b(()=>{en();fn()});function ci(n,r,t){return X({[C]:"Constructor",type:"Constructor",parameters:n,returns:r},t)}var wg=b(()=>{en();fn()});var ua=b(()=>{wg()});function jt(n,r,t){return X({[C]:"Function",type:"Function",parameters:n,returns:r},t)}var bg=b(()=>{en();fn()});var gc=b(()=>{bg()});function wa(n,r){return X({[C]:"Union",anyOf:n},r)}var k_=b(()=>{en();fn()});function vA(n){return n.some((r)=>Cr(r))}function gg(n){return n.map((r)=>Cr(r)?ZA(r):r)}function ZA(n){return tr(n,[zr])}function IA(n,r){return vA(n)?Jr(wa(gg(n),r)):wa(gg(n),r)}function qt(n,r){return n.length===1?X(n[0],r):n.length===0?Mn(r):IA(n,r)}var mg=b(()=>{en();fn();wo();Br();bo();k_();zn()});var $g=()=>{};function Jn(n,r){return n.length===0?Mn(r):n.length===1?X(n[0],r):wa(n,r)}var hg=b(()=>{Br();en();k_()});var wr=b(()=>{mg();$g();hg()});function pA(n){return n.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function R_(n,r,t){return n[r]===t&&n.charCodeAt(r-1)!==92}function go(n,r){return R_(n,r,"(")}function ba(n,r){return R_(n,r,")")}function Ag(n,r){return R_(n,r,"|")}function yA(n){if(!(go(n,0)&&ba(n,n.length-1)))return!1;let r=0;for(let t=0;t<n.length;t++){if(go(n,t))r+=1;if(ba(n,t))r-=1;if(r===0&&t!==n.length-1)return!1}return!0}function TA(n){return n.slice(1,n.length-1)}function nE(n){let r=0;for(let t=0;t<n.length;t++){if(go(n,t))r+=1;if(ba(n,t))r-=1;if(Ag(n,t)&&r===0)return!0}return!1}function rE(n){for(let r=0;r<n.length;r++)if(go(n,r))return!0;return!1}function tE(n){let[r,t]=[0,0],o=[];for(let i=0;i<n.length;i++){if(go(n,i))r+=1;if(ba(n,i))r-=1;if(Ag(n,i)&&r===0){let a=n.slice(t,i);if(a.length>0)o.push(ii(a));t=i+1}}let c=n.slice(t);if(c.length>0)o.push(ii(c));if(o.length===0)return{type:"const",const:""};if(o.length===1)return o[0];return{type:"or",expr:o}}function oE(n){function r(c,i){if(!go(c,i))throw new M_("TemplateLiteralParser: Index must point to open parens");let a=0;for(let e=i;e<c.length;e++){if(go(c,e))a+=1;if(ba(c,e))a-=1;if(a===0)return[i,e]}throw new M_("TemplateLiteralParser: Unclosed group parens in expression")}function t(c,i){for(let a=i;a<c.length;a++)if(go(c,a))return[i,a];return[i,c.length]}let o=[];for(let c=0;c<n.length;c++)if(go(n,c)){let[i,a]=r(n,c),e=n.slice(i,a+1);o.push(ii(e)),c=a}else{let[i,a]=t(n,c),e=n.slice(i,a);if(e.length>0)o.push(ii(e));c=a-1}return o.length===0?{type:"const",const:""}:o.length===1?o[0]:{type:"and",expr:o}}function ii(n){return yA(n)?ii(TA(n)):nE(n)?tE(n):rE(n)?oE(n):{type:"const",const:pA(n)}}function ai(n){return ii(n.slice(1,n.length-1))}var M_;var pe=b(()=>{Ft();M_=class M_ extends Hr{}});function cE(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 iE(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 aE(n){return n.type==="const"&&n.const===".*"}function mc(n){return cE(n)||aE(n)?!1:iE(n)?!0:n.type==="and"?n.expr.every((r)=>mc(r)):n.type==="or"?n.expr.every((r)=>mc(r)):n.type==="const"?!0:(()=>{throw new Eg("Unknown expression type")})()}function Sg(n){let r=ai(n.pattern);return mc(r)}var Eg;var H_=b(()=>{pe();Ft();Eg=class Eg extends Hr{}});function*kg(n){if(n.length===1)return yield*n[0];for(let r of n[0])for(let t of kg(n.slice(1)))yield`${r}${t}`}function*eE(n){return yield*kg(n.expr.map((r)=>[...ga(r)]))}function*sE(n){for(let r of n.expr)yield*ga(r)}function*fE(n){return yield n.const}function*ga(n){return n.type==="and"?yield*eE(n):n.type==="or"?yield*sE(n):n.type==="const"?yield*fE(n):(()=>{throw new Dg("Unknown expression")})()}function ye(n){let r=ai(n.pattern);return mc(r)?[...ga(r)]:[]}var Dg;var z_=b(()=>{H_();pe();Ft();Dg=class Dg extends Hr{}});function Wn(n,r){return X({[C]:"Literal",const:n,type:typeof n},r)}var Mg=b(()=>{en();fn()});var Fr=b(()=>{Mg()});function Te(n){return X({[C]:"Boolean",type:"boolean"},n)}var Rg=b(()=>{fn();fo()});var n0=b(()=>{Rg()});function ei(n){return X({[C]:"BigInt",type:"bigint"},n)}var Hg=b(()=>{fn();fo()});var ma=b(()=>{Hg()});function dt(n){return X({[C]:"Number",type:"number"},n)}var zg=b(()=>{en();fn()});var $c=b(()=>{zg()});function Yt(n){return X({[C]:"String",type:"string"},n)}var Bg=b(()=>{en();fn()});var si=b(()=>{Bg()});function*_E(n){let r=n.trim().replace(/"|'/g,"");return r==="boolean"?yield Te():r==="number"?yield dt():r==="bigint"?yield ei():r==="string"?yield Yt():yield(()=>{let t=r.split("|").map((o)=>Wn(o.trim()));return t.length===0?Mn():t.length===1?t[0]:qt(t)})()}function*lE(n){if(n[1]!=="{"){let r=Wn("$"),t=B_(n.slice(1));return yield*[r,...t]}for(let r=2;r<n.length;r++)if(n[r]==="}"){let t=_E(n.slice(2,r)),o=B_(n.slice(r+1));return yield*[...t,...o]}yield Wn(n)}function*B_(n){for(let r=0;r<n.length;r++)if(n[r]==="$"){let t=Wn(n.slice(0,r)),o=lE(n.slice(r));return yield*[t,...o]}yield Wn(n)}function Ug(n){return[...B_(n)]}var U_=b(()=>{Fr();n0();ma();$c();si();wr();Br()});function dE(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Vg(n,r){return tt(n)?n.pattern.slice(1,n.pattern.length-1):kn(n)?`(${n.anyOf.map((t)=>Vg(t,r)).join("|")})`:Vt(n)?`${r}${Ie}`:Wt(n)?`${r}${Ie}`:dc(n)?`${r}${Ie}`:lo(n)?`${r}${p1}`:nt(n)?`${r}${dE(n.const.toString())}`:_o(n)?`${r}${I1}`:(()=>{throw new Wg(`Unexpected Kind '${n[C]}'`)})()}function W_(n){return`^${n.map((r)=>Vg(r,"")).join("")}$`}var Wg;var V_=b(()=>{sa();fn();Ft();zn();Wg=class Wg extends Hr{}});function hc(n){let t=ye(n).map((o)=>Wn(o));return qt(t)}var Yg=b(()=>{wr();Fr();z_()});function r0(n,r){let t=Fn(n)?W_(Ug(n)):W_(n);return X({[C]:"TemplateLiteral",type:"string",pattern:t},r)}var Jg=b(()=>{en();U_();V_();fn()});var mo=b(()=>{H_();z_();U_();pe();V_();Yg();Jg()});function uE(n){return ye(n).map((t)=>t.toString())}function wE(n){let r=[];for(let t of n)r.push(...jr(t));return r}function bE(n){return[n.toString()]}function jr(n){return[...new Set(tt(n)?uE(n):kn(n)?wE(n.anyOf):nt(n)?bE(n.const):Vt(n)?["[number]"]:Wt(n)?["[number]"]:[])]}var t0=b(()=>{mo();zn()});function gE(n,r,t){let o={};for(let c of Object.getOwnPropertyNames(r))o[c]=Po(n,jr(r[c]),t);return o}function mE(n,r,t){return gE(n,r.properties,t)}function Xg(n,r,t){let o=mE(n,r,t);return Bn(o)}var Y_=b(()=>{Er();t0();Kt()});function Qg(n,r){return n.map((t)=>Gg(t,r))}function $E(n){return n.filter((r)=>!Lo(r))}function hE(n,r){return o0($E(Qg(n,r)))}function AE(n){return n.some((r)=>Lo(r))?[]:n}function EE(n,r){return qt(AE(Qg(n,r)))}function SE(n,r){return r in n?n[r]:r==="[number]"?qt(n):Mn()}function DE(n,r){return r==="[number]"?n:Mn()}function kE(n,r){return r in n?n[r]:Mn()}function Gg(n,r){return rr(n)?hE(n.allOf,r):kn(n)?EE(n.anyOf,r):ot(n)?SE(n.items??[],r):Ht(n)?DE(n.items,r):lr(n)?kE(n.properties,r):Mn()}function J_(n,r){return r.map((t)=>Gg(n,t))}function Lg(n,r){return qt(J_(n,r))}function Po(n,r,t){if(ir(n)||ir(r)){if(!ct(n)||!ct(r))throw new Hr("Index types using Ref parameters require both Type and Key to be of TSchema");return vn("Index",[n,r])}if(pn(r))return Xg(n,r,t);if(rt(r))return Og(n,r,t);return X(ct(r)?Lg(n,jr(r)):Lg(n,r),t)}var X_=b(()=>{en();Ft();xo();Br();ut();wr();t0();L_();Y_();zn()});function ME(n,r,t){return{[r]:Po(n,[r],In(t))}}function RE(n,r,t){return r.reduce((o,c)=>{return{...o,...ME(n,c,t)}},{})}function HE(n,r,t){return RE(n,r.keys,t)}function Og(n,r,t){let o=HE(n,r,t);return Bn(o)}var L_=b(()=>{X_();Er();Pr()});var Kt=b(()=>{L_();Y_();t0();X_()});function fi(n,r){return X({[C]:"Iterator",type:"Iterator",items:n},r)}var Ng=b(()=>{en();fn()});var $a=b(()=>{Ng()});function zE(n){return globalThis.Object.keys(n).filter((r)=>!Cr(n[r]))}function BE(n,r){let t=zE(n),o=t.length>0?{[C]:"Object",type:"object",required:t,properties:n}:{[C]:"Object",type:"object",properties:n};return X(o,r)}var xn;var xg=b(()=>{en();fn();zn();xn=BE});var it=b(()=>{xg()});function c0(n,r){return X({[C]:"Promise",type:"Promise",item:n},r)}var Pg=b(()=>{en();fn()});var i0=b(()=>{Pg()});function UE(n){return X(tr(n,[Rt]))}function WE(n){return X({...n,[Rt]:"Readonly"})}function VE(n,r){return r===!1?UE(n):WE(n)}function qr(n,r){let t=r??!0;return pn(n)?Cg(n,t):VE(n,t)}var Q_=b(()=>{en();fn();wo();G_();zn()});function YE(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=qr(n[o],r);return t}function JE(n,r){return YE(n.properties,r)}function Cg(n,r){let t=JE(n,r);return Bn(t)}var G_=b(()=>{Er();Q_()});var Ac=b(()=>{G_();Q_()});function wt(n,r){return X(n.length>0?{[C]:"Tuple",type:"array",items:n,additionalItems:!1,minItems:n.length,maxItems:n.length}:{[C]:"Tuple",type:"array",minItems:n.length,maxItems:n.length},r)}var Fg=b(()=>{en();fn()});var Co=b(()=>{Fg()});function jg(n,r){return n in r?bt(n,r[n]):Bn(r)}function XE(n){return{[n]:Wn(n)}}function LE(n){let r={};for(let t of n)r[t]=Wn(t);return r}function QE(n,r){return tg(r,n)?XE(n):LE(r)}function GE(n,r){let t=QE(n,r);return jg(n,t)}function ha(n,r){return r.map((t)=>bt(n,t))}function OE(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(r))t[o]=bt(n,r[o]);return t}function bt(n,r){let t={...r};return Cr(r)?Jr(bt(n,tr(r,[zr]))):ri(r)?qr(bt(n,tr(r,[Rt]))):pn(r)?jg(n,r.properties):rt(r)?GE(n,r.keys):Bt(r)?ci(ha(n,r.parameters),bt(n,r.returns),t):Ut(r)?jt(ha(n,r.parameters),bt(n,r.returns),t):lc(r)?oi(bt(n,r.items),t):uc(r)?fi(bt(n,r.items),t):rr(r)?Xr(ha(n,r.allOf),t):kn(r)?Jn(ha(n,r.anyOf),t):ot(r)?wt(ha(n,r.items??[]),t):lr(r)?xn(OE(n,r.properties),t):Ht(r)?ti(bt(n,r.items),t):wc(r)?c0(bt(n,r.item),t):r}function NE(n,r){let t={};for(let o of n)t[o]=bt(o,r);return t}function qg(n,r,t){let o=ct(n)?jr(n):n,c=r({[C]:"MappedKey",keys:o}),i=NE(o,c);return xn(i,t)}var Kg=b(()=>{fn();wo();la();da();ua();gc();Kt();ut();$a();Fr();it();bo();i0();Ac();Co();wr();fa();D_();zn()});var Er=b(()=>{ug();D_();Kg()});function xE(n){return X(tr(n,[zr]))}function PE(n){return X({...n,[zr]:"Optional"})}function CE(n,r){return r===!1?xE(n):PE(n)}function Jr(n,r){let t=r??!0;return pn(n)?vg(n,t):CE(n,t)}var O_=b(()=>{en();fn();wo();N_();zn()});function FE(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Jr(n[o],r);return t}function jE(n,r){return FE(n.properties,r)}function vg(n,r){let t=jE(n,r);return Bn(t)}var N_=b(()=>{Er();O_()});var bo=b(()=>{N_();O_()});function Aa(n,r={}){let t=n.every((c)=>lr(c)),o=ct(r.unevaluatedProperties)?{unevaluatedProperties:r.unevaluatedProperties}:{};return X(r.unevaluatedProperties===!1||ct(r.unevaluatedProperties)||t?{...o,[C]:"Intersect",type:"object",allOf:n}:{...o,[C]:"Intersect",allOf:n},r)}var x_=b(()=>{en();fn();zn()});function qE(n){return n.every((r)=>Cr(r))}function KE(n){return tr(n,[zr])}function Zg(n){return n.map((r)=>Cr(r)?KE(r):r)}function vE(n,r){return qE(n)?Jr(Aa(Zg(n),r)):Aa(Zg(n),r)}function o0(n,r={}){if(n.length===1)return X(n[0],r);if(n.length===0)return Mn(r);if(n.some((t)=>Qo(t)))throw Error("Cannot intersect transform types");return vE(n,r)}var Ig=b(()=>{fn();en();wo();Br();bo();x_();zn()});var pg=()=>{};function Xr(n,r){if(n.length===1)return X(n[0],r);if(n.length===0)return Mn(r);if(n.some((t)=>Qo(t)))throw Error("Cannot intersect transform types");return Aa(n,r)}var yg=b(()=>{en();Br();x_();zn()});var ut=b(()=>{Ig();pg();yg()});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 Hr("Ref: $ref must be a string");return X({[C]:"Ref",$ref:r},t)}var Tg=b(()=>{Ft();en();fn()});var Ec=b(()=>{Tg()});function ZE(n,r){return vn("Awaited",[vn(n,r)])}function IE(n){return vn("Awaited",[vt(n)])}function pE(n){return Xr(nm(n))}function yE(n){return Jn(nm(n))}function TE(n){return _i(n)}function nm(n){return n.map((r)=>_i(r))}function _i(n,r){return X(zt(n)?ZE(n.target,n.parameters):rr(n)?pE(n.allOf):kn(n)?yE(n.anyOf):wc(n)?TE(n.item):ir(n)?IE(n.$ref):n,r)}var rm=b(()=>{en();xo();ut();wr();Ec();zn()});var a0=b(()=>{rm()});function tm(n){let r=[];for(let t of n)r.push(Ea(t));return r}function n4(n){let r=tm(n);return ig(r)}function r4(n){let r=tm(n);return cg(r)}function t4(n){return n.map((r,t)=>t.toString())}function o4(n){return["[number]"]}function c4(n){return globalThis.Object.getOwnPropertyNames(n)}function i4(n){if(!a4)return[];return globalThis.Object.getOwnPropertyNames(n).map((t)=>{return t[0]==="^"&&t[t.length-1]==="$"?t.slice(1,t.length-1):t})}function Ea(n){return rr(n)?n4(n.allOf):kn(n)?r4(n.anyOf):ot(n)?t4(n.items??[]):Ht(n)?o4(n.items):lr(n)?c4(n.properties):bc(n)?i4(n.patternProperties):[]}var a4=!1;var P_=b(()=>{fa();zn()});function e4(n,r){return vn("KeyOf",[vn(n,r)])}function s4(n){return vn("KeyOf",[vt(n)])}function f4(n,r){let t=Ea(n),o=_4(t),c=qt(o);return X(c,r)}function _4(n){return n.map((r)=>r==="[number]"?dt():Wn(r))}function li(n,r){return zt(n)?e4(n.target,n.parameters):ir(n)?s4(n.$ref):pn(n)?om(n,r):f4(n,r)}var C_=b(()=>{en();Fr();$c();xo();Ec();P_();wr();F_();zn()});function l4(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=li(n[o],In(r));return t}function d4(n,r){return l4(n.properties,r)}function om(n,r){let t=d4(n,r);return Bn(t)}var F_=b(()=>{Er();C_();Pr()});var cm=()=>{};var Sa=b(()=>{F_();cm();P_();C_()});function u4(n){let r=[];for(let t of n)r.push(...Ea(t));return og(r)}function w4(n){return n.filter((r)=>!Lo(r))}function b4(n,r){let t=[];for(let o of n)t.push(...J_(o,[r]));return w4(t)}function g4(n,r){let t={};for(let o of r)t[o]=o0(b4(n,o));return t}function im(n,r){let t=u4(n),o=g4(n,t);return xn(o,r)}var am=b(()=>{ut();Kt();Sa();it();fa();zn()});var j_=b(()=>{am()});function e0(n){return X({[C]:"Date",type:"Date"},n)}var em=b(()=>{fn();en()});var s0=b(()=>{em()});function f0(n){return X({[C]:"Null",type:"null"},n)}var sm=b(()=>{en();fn()});var _0=b(()=>{sm()});function l0(n){return X({[C]:"Symbol",type:"symbol"},n)}var fm=b(()=>{en();fn()});var d0=b(()=>{fm()});function u0(n){return X({[C]:"Undefined",type:"undefined"},n)}var _m=b(()=>{en();fn()});var w0=b(()=>{_m()});function b0(n){return X({[C]:"Uint8Array",type:"Uint8Array"},n)}var lm=b(()=>{en();fn()});var g0=b(()=>{lm()});function Fo(n){return X({[C]:"Unknown"},n)}var dm=b(()=>{en();fn()});var di=b(()=>{dm()});function m4(n){return n.map((r)=>q_(r,!1))}function $4(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=qr(q_(n[t],!1));return r}function m0(n,r){return r===!0?n:qr(n)}function q_(n,r){return f_(n)?m0(No(),r):l_(n)?m0(No(),r):fr(n)?qr(wt(m4(n))):so(n)?b0():_c(n)?e0():On(n)?m0(xn($4(n)),r):__(n)?m0(jt([],Fo()),r):_r(n)?u0():d_(n)?f0():u_(n)?l0():Ti(n)?ei():Tr(n)?Wn(n):eo(n)?Wn(n):Fn(n)?Wn(n):xn({})}function um(n,r){return X(q_(n,!0),r)}var wm=b(()=>{_a();ma();s0();gc();Fr();_0();it();d0();Co();Ac();w0();g0();di();fo()});var K_=b(()=>{wm()});function bm(n,r){return Bt(n)?wt(n.parameters,r):Mn(r)}var gm=b(()=>{Co();Br();zn()});var v_=b(()=>{gm()});function mm(n,r){if(_r(n))throw Error("Enum undefined or empty");let t=globalThis.Object.getOwnPropertyNames(n).filter((i)=>isNaN(i)).map((i)=>n[i]),c=[...new Set(t)].map((i)=>Wn(i));return Jn(c,{...r,[lt]:"Enum"})}var $m=b(()=>{Fr();fn();wr()});var Z_=b(()=>{$m()});function gt(n){return n===L.False?n:L.True}function ui(n){throw new Dm(n)}function br(n){return M.IsNever(n)||M.IsIntersect(n)||M.IsUnion(n)||M.IsUnknown(n)||M.IsAny(n)}function gr(n,r){return M.IsNever(r)?Rm(n,r):M.IsIntersect(r)?$0(n,r):M.IsUnion(r)?nl(n,r):M.IsUnknown(r)?Um(n,r):M.IsAny(r)?T_(n,r):ui("StructuralRight")}function T_(n,r){return L.True}function h4(n,r){return M.IsIntersect(r)?$0(n,r):M.IsUnion(r)&&r.anyOf.some((t)=>M.IsAny(t)||M.IsUnknown(t))?L.True:M.IsUnion(r)?L.Union:M.IsUnknown(r)?L.True:M.IsAny(r)?L.True:L.Union}function A4(n,r){return M.IsUnknown(n)?L.False:M.IsAny(n)?L.Union:M.IsNever(n)?L.True:L.False}function E4(n,r){return M.IsObject(r)&&h0(r)?L.True:br(r)?gr(n,r):!M.IsArray(r)?L.False:gt(Pn(n.items,r.items))}function S4(n,r){return br(r)?gr(n,r):!M.IsAsyncIterator(r)?L.False:gt(Pn(n.items,r.items))}function D4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsBigInt(r)?L.True:L.False}function km(n,r){return M.IsLiteralBoolean(n)?L.True:M.IsBoolean(n)?L.True:L.False}function k4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsBoolean(r)?L.True:L.False}function M4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):!M.IsConstructor(r)?L.False:n.parameters.length>r.parameters.length?L.False:!n.parameters.every((t,o)=>gt(Pn(r.parameters[o],t))===L.True)?L.False:gt(Pn(n.returns,r.returns))}function R4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsDate(r)?L.True:L.False}function H4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):!M.IsFunction(r)?L.False:n.parameters.length>r.parameters.length?L.False:!n.parameters.every((t,o)=>gt(Pn(r.parameters[o],t))===L.True)?L.False:gt(Pn(n.returns,r.returns))}function Mm(n,r){return M.IsLiteral(n)&&Yr.IsNumber(n.const)?L.True:M.IsNumber(n)||M.IsInteger(n)?L.True:L.False}function z4(n,r){return M.IsInteger(r)||M.IsNumber(r)?L.True:br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):L.False}function $0(n,r){return r.allOf.every((t)=>Pn(n,t)===L.True)?L.True:L.False}function B4(n,r){return n.allOf.some((t)=>Pn(t,r)===L.True)?L.True:L.False}function U4(n,r){return br(r)?gr(n,r):!M.IsIterator(r)?L.False:gt(Pn(n.items,r.items))}function W4(n,r){return M.IsLiteral(r)&&r.const===n.const?L.True:br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsString(r)?Bm(n,r):M.IsNumber(r)?Hm(n,r):M.IsInteger(r)?Mm(n,r):M.IsBoolean(r)?km(n,r):L.False}function Rm(n,r){return L.False}function V4(n,r){return L.True}function hm(n){let[r,t]=[n,0];while(!0){if(!M.IsNot(r))break;r=r.not,t+=1}return t%2===0?r:Fo()}function Y4(n,r){return M.IsNot(n)?Pn(hm(n),r):M.IsNot(r)?Pn(n,hm(r)):ui("Invalid fallthrough for Not")}function J4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsNull(r)?L.True:L.False}function Hm(n,r){return M.IsLiteralNumber(n)?L.True:M.IsNumber(n)||M.IsInteger(n)?L.True:L.False}function X4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsInteger(r)||M.IsNumber(r)?L.True:L.False}function Kr(n,r){return Object.getOwnPropertyNames(n.properties).length===r}function Am(n){return h0(n)}function Em(n){return Kr(n,0)||Kr(n,1)&&"description"in n.properties&&M.IsUnion(n.properties.description)&&n.properties.description.anyOf.length===2&&(M.IsString(n.properties.description.anyOf[0])&&M.IsUndefined(n.properties.description.anyOf[1])||M.IsString(n.properties.description.anyOf[1])&&M.IsUndefined(n.properties.description.anyOf[0]))}function I_(n){return Kr(n,0)}function Sm(n){return Kr(n,0)}function L4(n){return Kr(n,0)}function Q4(n){return Kr(n,0)}function G4(n){return h0(n)}function O4(n){let r=dt();return Kr(n,0)||Kr(n,1)&&"length"in n.properties&>(Pn(n.properties.length,r))===L.True}function N4(n){return Kr(n,0)}function h0(n){let r=dt();return Kr(n,0)||Kr(n,1)&&"length"in n.properties&>(Pn(n.properties.length,r))===L.True}function x4(n){let r=jt([No()],No());return Kr(n,0)||Kr(n,1)&&"then"in n.properties&>(Pn(n.properties.then,r))===L.True}function zm(n,r){return Pn(n,r)===L.False?L.False:M.IsOptional(n)&&!M.IsOptional(r)?L.False:L.True}function Lr(n,r){return M.IsUnknown(n)?L.False:M.IsAny(n)?L.Union:M.IsNever(n)||M.IsLiteralString(n)&&Am(r)||M.IsLiteralNumber(n)&&I_(r)||M.IsLiteralBoolean(n)&&Sm(r)||M.IsSymbol(n)&&Em(r)||M.IsBigInt(n)&&L4(r)||M.IsString(n)&&Am(r)||M.IsSymbol(n)&&Em(r)||M.IsNumber(n)&&I_(r)||M.IsInteger(n)&&I_(r)||M.IsBoolean(n)&&Sm(r)||M.IsUint8Array(n)&&G4(r)||M.IsDate(n)&&Q4(r)||M.IsConstructor(n)&&N4(r)||M.IsFunction(n)&&O4(r)?L.True:M.IsRecord(n)&&M.IsString(p_(n))?(()=>{return r[lt]==="Record"?L.True:L.False})():M.IsRecord(n)&&M.IsNumber(p_(n))?(()=>{return Kr(r,0)?L.True:L.False})():L.False}function P4(n,r){return br(r)?gr(n,r):M.IsRecord(r)?mt(n,r):!M.IsObject(r)?L.False:(()=>{for(let t of Object.getOwnPropertyNames(r.properties)){if(!(t in n.properties)&&!M.IsOptional(r.properties[t]))return L.False;if(M.IsOptional(r.properties[t]))return L.True;if(zm(n.properties[t],r.properties[t])===L.False)return L.False}return L.True})()}function C4(n,r){return br(r)?gr(n,r):M.IsObject(r)&&x4(r)?L.True:!M.IsPromise(r)?L.False:gt(Pn(n.item,r.item))}function p_(n){return Go in n.patternProperties?dt():(Oo in n.patternProperties)?Yt():ui("Unknown record key pattern")}function y_(n){return Go in n.patternProperties?n.patternProperties[Go]:(Oo in n.patternProperties)?n.patternProperties[Oo]:ui("Unable to get record value schema")}function mt(n,r){let[t,o]=[p_(r),y_(r)];return M.IsLiteralString(n)&&M.IsNumber(t)&>(Pn(n,o))===L.True?L.True:M.IsUint8Array(n)&&M.IsNumber(t)?Pn(n,o):M.IsString(n)&&M.IsNumber(t)?Pn(n,o):M.IsArray(n)&&M.IsNumber(t)?Pn(n,o):M.IsObject(n)?(()=>{for(let c of Object.getOwnPropertyNames(n.properties))if(zm(o,n.properties[c])===L.False)return L.False;return L.True})():L.False}function F4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):!M.IsRecord(r)?L.False:Pn(y_(n),y_(r))}function j4(n,r){let t=M.IsRegExp(n)?Yt():n,o=M.IsRegExp(r)?Yt():r;return Pn(t,o)}function Bm(n,r){return M.IsLiteral(n)&&Yr.IsString(n.const)?L.True:M.IsString(n)?L.True:L.False}function q4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsString(r)?L.True:L.False}function K4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsSymbol(r)?L.True:L.False}function v4(n,r){return M.IsTemplateLiteral(n)?Pn(hc(n),r):M.IsTemplateLiteral(r)?Pn(n,hc(r)):ui("Invalid fallthrough for TemplateLiteral")}function Z4(n,r){return M.IsArray(r)&&n.items!==void 0&&n.items.every((t)=>Pn(t,r.items)===L.True)}function I4(n,r){return M.IsNever(n)?L.True:M.IsUnknown(n)?L.False:M.IsAny(n)?L.Union:L.False}function p4(n,r){return br(r)?gr(n,r):M.IsObject(r)&&h0(r)?L.True:M.IsArray(r)&&Z4(n,r)?L.True:!M.IsTuple(r)?L.False:Yr.IsUndefined(n.items)&&!Yr.IsUndefined(r.items)||!Yr.IsUndefined(n.items)&&Yr.IsUndefined(r.items)?L.False:Yr.IsUndefined(n.items)&&!Yr.IsUndefined(r.items)?L.True:n.items.every((t,o)=>Pn(t,r.items[o])===L.True)?L.True:L.False}function y4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsUint8Array(r)?L.True:L.False}function T4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsVoid(r)?t6(n,r):M.IsUndefined(r)?L.True:L.False}function nl(n,r){return r.anyOf.some((t)=>Pn(n,t)===L.True)?L.True:L.False}function n6(n,r){return n.anyOf.every((t)=>Pn(t,r)===L.True)?L.True:L.False}function Um(n,r){return L.True}function r6(n,r){return M.IsNever(r)?Rm(n,r):M.IsIntersect(r)?$0(n,r):M.IsUnion(r)?nl(n,r):M.IsAny(r)?T_(n,r):M.IsString(r)?Bm(n,r):M.IsNumber(r)?Hm(n,r):M.IsInteger(r)?Mm(n,r):M.IsBoolean(r)?km(n,r):M.IsArray(r)?A4(n,r):M.IsTuple(r)?I4(n,r):M.IsObject(r)?Lr(n,r):M.IsUnknown(r)?L.True:L.False}function t6(n,r){return M.IsUndefined(n)?L.True:M.IsUndefined(n)?L.True:L.False}function o6(n,r){return M.IsIntersect(r)?$0(n,r):M.IsUnion(r)?nl(n,r):M.IsUnknown(r)?Um(n,r):M.IsAny(r)?T_(n,r):M.IsObject(r)?Lr(n,r):M.IsVoid(r)?L.True:L.False}function Pn(n,r){return M.IsTemplateLiteral(n)||M.IsTemplateLiteral(r)?v4(n,r):M.IsRegExp(n)||M.IsRegExp(r)?j4(n,r):M.IsNot(n)||M.IsNot(r)?Y4(n,r):M.IsAny(n)?h4(n,r):M.IsArray(n)?E4(n,r):M.IsBigInt(n)?D4(n,r):M.IsBoolean(n)?k4(n,r):M.IsAsyncIterator(n)?S4(n,r):M.IsConstructor(n)?M4(n,r):M.IsDate(n)?R4(n,r):M.IsFunction(n)?H4(n,r):M.IsInteger(n)?z4(n,r):M.IsIntersect(n)?B4(n,r):M.IsIterator(n)?U4(n,r):M.IsLiteral(n)?W4(n,r):M.IsNever(n)?V4(n,r):M.IsNull(n)?J4(n,r):M.IsNumber(n)?X4(n,r):M.IsObject(n)?P4(n,r):M.IsRecord(n)?F4(n,r):M.IsString(n)?q4(n,r):M.IsSymbol(n)?K4(n,r):M.IsTuple(n)?p4(n,r):M.IsPromise(n)?C4(n,r):M.IsUint8Array(n)?y4(n,r):M.IsUndefined(n)?T4(n,r):M.IsUnion(n)?n6(n,r):M.IsUnknown(n)?r6(n,r):M.IsVoid(n)?o6(n,r):ui(`Unknown left type operand '${n[C]}'`)}function jo(n,r){return Pn(n,r)}var Dm,L;var rl=b(()=>{_a();gc();$c();si();di();mo();sa();fn();Ft();E_();Dm=class Dm extends Hr{};(function(n){n[n.Union=0]="Union",n[n.True=1]="True",n[n.False=2]="False"})(L||(L={}))});function c6(n,r,t,o,c){let i={};for(let a of globalThis.Object.getOwnPropertyNames(n))i[a]=wi(n[a],r,t,o,In(c));return i}function i6(n,r,t,o,c){return c6(n.properties,r,t,o,c)}function Wm(n,r,t,o,c){let i=i6(n,r,t,o,c);return Bn(i)}var tl=b(()=>{Er();A0();Pr()});function a6(n,r,t,o){let c=jo(n,r);return c===L.Union?Jn([t,o]):c===L.True?t:o}function wi(n,r,t,o,c){return pn(n)?Wm(n,r,t,o,c):rt(n)?X(Vm(n,r,t,o,c)):X(a6(n,r,t,o),c)}var A0=b(()=>{en();wr();rl();ol();tl();zn()});function e6(n,r,t,o,c){return{[n]:wi(Wn(n),r,t,o,In(c))}}function s6(n,r,t,o,c){return n.reduce((i,a)=>{return{...i,...e6(a,r,t,o,c)}},{})}function f6(n,r,t,o,c){return s6(n.keys,r,t,o,c)}function Vm(n,r,t,o,c){let i=f6(n,r,t,o,c);return Bn(i)}var ol=b(()=>{Er();Fr();A0();Pr()});var Ym=()=>{};var Da=b(()=>{rl();ol();tl();Ym();A0()});function Jm(n,r){return bi(hc(n),r)}var cl=b(()=>{E0();mo()});function _6(n,r){let t=n.filter((o)=>jo(o,r)===L.False);return t.length===1?t[0]:Jn(t)}function bi(n,r,t={}){if(tt(n))return X(Jm(n,r),t);if(pn(n))return X(Xm(n,r),t);return X(kn(n)?_6(n.anyOf,r):jo(n,r)!==L.False?Mn():n,t)}var E0=b(()=>{en();wr();Br();Da();il();cl();zn()});function l6(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=bi(n[o],r);return t}function d6(n,r){return l6(n.properties,r)}function Xm(n,r){let t=d6(n,r);return Bn(t)}var il=b(()=>{Er();E0()});var al=b(()=>{il();cl();E0()});function Lm(n,r){return gi(hc(n),r)}var el=b(()=>{S0();mo()});function u6(n,r){let t=n.filter((o)=>jo(o,r)!==L.False);return t.length===1?t[0]:Jn(t)}function gi(n,r,t){if(tt(n))return X(Lm(n,r),t);if(pn(n))return X(Qm(n,r),t);return X(kn(n)?u6(n.anyOf,r):jo(n,r)!==L.False?n:Mn(),t)}var S0=b(()=>{en();wr();Br();Da();sl();el();zn()});function w6(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=gi(n[o],r);return t}function b6(n,r){return w6(n.properties,r)}function Qm(n,r){let t=b6(n,r);return Bn(t)}var sl=b(()=>{Er();S0()});var fl=b(()=>{sl();el();S0()});function Gm(n,r){return Bt(n)?X(n.returns,r):Mn(r)}var Om=b(()=>{en();Br();zn()});var _l=b(()=>{Om()});function D0(n){return qr(Jr(n))}var Nm=b(()=>{Ac();bo()});var k0=b(()=>{Nm()});function Sc(n,r,t){return X({[C]:"Record",type:"object",patternProperties:{[n]:r}},t)}function ll(n,r,t){let o={};for(let c of n)o[c]=r;return xn(o,{...t,[lt]:"Record"})}function g6(n,r,t){return Sg(n)?ll(jr(n),r,t):Sc(n.pattern,r,t)}function m6(n,r,t){return ll(jr(Jn(n)),r,t)}function $6(n,r,t){return ll([n.toString()],r,t)}function h6(n,r,t){return Sc(n.source,r,t)}function A6(n,r,t){let o=_r(n.pattern)?Oo:n.pattern;return Sc(o,r,t)}function E6(n,r,t){return Sc(Oo,r,t)}function S6(n,r,t){return Sc(y1,r,t)}function D6(n,r,t){return xn({true:r,false:r},t)}function k6(n,r,t){return Sc(Go,r,t)}function M6(n,r,t){return Sc(Go,r,t)}function M0(n,r,t={}){return kn(n)?m6(n.anyOf,r,t):tt(n)?g6(n,r,t):nt(n)?$6(n.const,r,t):_o(n)?D6(n,r,t):Wt(n)?k6(n,r,t):Vt(n)?M6(n,r,t):m_(n)?h6(n,r,t):lo(n)?A6(n,r,t):b_(n)?E6(n,r,t):Lo(n)?S6(n,r,t):Mn(t)}function R0(n){return globalThis.Object.getOwnPropertyNames(n.patternProperties)[0]}function xm(n){let r=R0(n);return r===Oo?Yt():r===Go?dt():Yt({pattern:r})}function H0(n){return n.patternProperties[R0(n)]}var Pm=b(()=>{en();fn();Br();$c();it();si();wr();mo();sa();Kt();zn()});var ka=b(()=>{Pm()});function R6(n,r){return r.parameters=Ma(n,r.parameters),r.returns=Jt(n,r.returns),r}function H6(n,r){return r.parameters=Ma(n,r.parameters),r.returns=Jt(n,r.returns),r}function z6(n,r){return r.allOf=Ma(n,r.allOf),r}function B6(n,r){return r.anyOf=Ma(n,r.anyOf),r}function U6(n,r){if(_r(r.items))return r;return r.items=Ma(n,r.items),r}function W6(n,r){return r.items=Jt(n,r.items),r}function V6(n,r){return r.items=Jt(n,r.items),r}function Y6(n,r){return r.items=Jt(n,r.items),r}function J6(n,r){return r.item=Jt(n,r.item),r}function X6(n,r){let t=O6(n,r.properties);return{...r,...xn(t)}}function L6(n,r){let t=Jt(n,xm(r)),o=Jt(n,H0(r)),c=M0(t,o);return{...r,...c}}function Q6(n,r){return r.index in n?n[r.index]:Fo()}function G6(n,r){let t=ri(r),o=Cr(r),c=Jt(n,r);return t&&o?D0(c):t&&!o?qr(c):!t&&o?Jr(c):c}function O6(n,r){return globalThis.Object.getOwnPropertyNames(r).reduce((t,o)=>{return{...t,[o]:G6(n,r[o])}},{})}function Ma(n,r){return r.map((t)=>Jt(n,t))}function Jt(n,r){return Bt(r)?R6(n,r):Ut(r)?H6(n,r):rr(r)?z6(n,r):kn(r)?B6(n,r):ot(r)?U6(n,r):Ht(r)?W6(n,r):lc(r)?V6(n,r):uc(r)?Y6(n,r):wc(r)?J6(n,r):lr(r)?X6(n,r):bc(r)?L6(n,r):g_(r)?Q6(n,r):r}function Cm(n,r){return Jt(r,ni(n))}var Fm=b(()=>{qe();di();k0();Ac();bo();it();ka();zn()});var dl=b(()=>{Fm()});function jm(n){return X({[C]:"Integer",type:"integer"},n)}var qm=b(()=>{en();fn()});var ul=b(()=>{qm()});function N6(n,r,t){return{[n]:Xt(Wn(n),r,In(t))}}function x6(n,r,t){return n.reduce((c,i)=>{return{...c,...N6(i,r,t)}},{})}function P6(n,r,t){return x6(n.keys,r,t)}function Km(n,r,t){let o=P6(n,r,t);return Bn(o)}var wl=b(()=>{Er();Dc();Fr();Pr()});function C6(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toLowerCase(),t].join("")}function F6(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toUpperCase(),t].join("")}function j6(n){return n.toUpperCase()}function q6(n){return n.toLowerCase()}function K6(n,r,t){let o=ai(n.pattern);if(!mc(o))return{...n,pattern:vm(n.pattern,r)};let a=[...ga(o)].map((f)=>Wn(f)),e=Zm(a,r),s=Jn(e);return r0([s],t)}function vm(n,r){return typeof n==="string"?r==="Uncapitalize"?C6(n):r==="Capitalize"?F6(n):r==="Uppercase"?j6(n):r==="Lowercase"?q6(n):n:n.toString()}function Zm(n,r){return n.map((t)=>Xt(t,r))}function Xt(n,r,t={}){return rt(n)?Km(n,r,t):tt(n)?K6(n,r,t):kn(n)?Jn(Zm(n.anyOf,r),t):nt(n)?Wn(vm(n.const,r),t):X(n,t)}var Dc=b(()=>{en();mo();wl();Fr();wr();zn()});function Im(n,r={}){return Xt(n,"Capitalize",r)}var pm=b(()=>{Dc()});function ym(n,r={}){return Xt(n,"Lowercase",r)}var Tm=b(()=>{Dc()});function n2(n,r={}){return Xt(n,"Uncapitalize",r)}var r2=b(()=>{Dc()});function t2(n,r={}){return Xt(n,"Uppercase",r)}var o2=b(()=>{Dc()});var bl=b(()=>{pm();wl();Dc();Tm();r2();o2()});function v6(n,r,t){let o={};for(let c of globalThis.Object.getOwnPropertyNames(n))o[c]=qo(n[c],r,In(t));return o}function Z6(n,r,t){return v6(n.properties,r,t)}function c2(n,r,t){let o=Z6(n,r,t);return Bn(o)}var gl=b(()=>{Er();z0();Pr()});function I6(n,r){return n.map((t)=>ml(t,r))}function p6(n,r){return n.map((t)=>ml(t,r))}function y6(n,r){let{[r]:t,...o}=n;return o}function T6(n,r){return r.reduce((t,o)=>y6(t,o),n)}function n8(n,r,t){let o=tr(n,[ur,"$id","required","properties"]),c=T6(t,r);return xn(c,o)}function r8(n){let r=n.reduce((t,o)=>ve(o)?[...t,Wn(o)]:t,[]);return Jn(r)}function ml(n,r){return rr(n)?Xr(I6(n.allOf,r)):kn(n)?Jn(p6(n.anyOf,r)):lr(n)?n8(n,r,n.properties):xn({})}function qo(n,r,t){let o=fr(r)?r8(r):r,c=ct(r)?jr(r):r,i=ir(n),a=ir(r);return pn(n)?c2(n,c,t):rt(r)?i2(n,r,t):i&&a?vn("Omit",[n,o],t):!i&&a?vn("Omit",[n,o],t):i&&!a?vn("Omit",[n,o],t):X({...ml(n,c),...t})}var z0=b(()=>{en();ta();xo();Fr();Kt();ut();wr();it();$l();gl();zn()});function t8(n,r,t){return{[r]:qo(n,[r],In(t))}}function o8(n,r,t){return r.reduce((o,c)=>{return{...o,...t8(n,c,t)}},{})}function c8(n,r,t){return o8(n,r.keys,t)}function i2(n,r,t){let o=c8(n,r,t);return Bn(o)}var $l=b(()=>{Er();z0();Pr()});var B0=b(()=>{$l();gl();z0()});function i8(n,r,t){let o={};for(let c of globalThis.Object.getOwnPropertyNames(n))o[c]=Ko(n[c],r,In(t));return o}function a8(n,r,t){return i8(n.properties,r,t)}function a2(n,r,t){let o=a8(n,r,t);return Bn(o)}var hl=b(()=>{Er();U0();Pr()});function e8(n,r){return n.map((t)=>Al(t,r))}function s8(n,r){return n.map((t)=>Al(t,r))}function f8(n,r){let t={};for(let o of r)if(o in n)t[o]=n[o];return t}function _8(n,r,t){let o=tr(n,[ur,"$id","required","properties"]),c=f8(t,r);return xn(c,o)}function l8(n){let r=n.reduce((t,o)=>ve(o)?[...t,Wn(o)]:t,[]);return Jn(r)}function Al(n,r){return rr(n)?Xr(e8(n.allOf,r)):kn(n)?Jn(s8(n.anyOf,r)):lr(n)?_8(n,r,n.properties):xn({})}function Ko(n,r,t){let o=fr(r)?l8(r):r,c=ct(r)?jr(r):r,i=ir(n),a=ir(r);return pn(n)?a2(n,c,t):rt(r)?e2(n,r,t):i&&a?vn("Pick",[n,o],t):!i&&a?vn("Pick",[n,o],t):i&&!a?vn("Pick",[n,o],t):X({...Al(n,c),...t})}var U0=b(()=>{en();xo();ut();Fr();it();wr();Kt();ta();zn();El();hl()});function d8(n,r,t){return{[r]:Ko(n,[r],In(t))}}function u8(n,r,t){return r.reduce((o,c)=>{return{...o,...d8(n,c,t)}},{})}function w8(n,r,t){return u8(n,r.keys,t)}function e2(n,r,t){let o=w8(n,r,t);return Bn(o)}var El=b(()=>{Er();U0();Pr()});var W0=b(()=>{El();hl();U0()});function b8(n,r){return vn("Partial",[vn(n,r)])}function g8(n){return vn("Partial",[vt(n)])}function m8(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=Jr(n[t]);return r}function $8(n,r){let t=tr(n,[ur,"$id","required","properties"]),o=m8(r);return xn(o,t)}function s2(n){return n.map((r)=>f2(r))}function f2(n){return zt(n)?b8(n.target,n.parameters):ir(n)?g8(n.$ref):rr(n)?Xr(s2(n.allOf)):kn(n)?Jn(s2(n.anyOf)):lr(n)?$8(n,n.properties):dc(n)?n:_o(n)?n:Wt(n)?n:nt(n)?n:oa(n)?n:Vt(n)?n:lo(n)?n:ca(n)?n:ia(n)?n:xn({})}function mi(n,r){if(pn(n))return _2(n,r);else return X({...f2(n),...r})}var Sl=b(()=>{en();xo();bo();it();ut();wr();Ec();wo();fn();Dl();zn()});function h8(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=mi(n[o],In(r));return t}function A8(n,r){return h8(n.properties,r)}function _2(n,r){let t=A8(n,r);return Bn(t)}var Dl=b(()=>{Er();Sl();Pr()});var V0=b(()=>{Dl();Sl()});function E8(n,r){return vn("Required",[vn(n,r)])}function S8(n){return vn("Required",[vt(n)])}function D8(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=tr(n[t],[zr]);return r}function k8(n,r){let t=tr(n,[ur,"$id","required","properties"]),o=D8(r);return xn(o,t)}function l2(n){return n.map((r)=>d2(r))}function d2(n){return zt(n)?E8(n.target,n.parameters):ir(n)?S8(n.$ref):rr(n)?Xr(l2(n.allOf)):kn(n)?Jn(l2(n.anyOf)):lr(n)?k8(n,n.properties):dc(n)?n:_o(n)?n:Wt(n)?n:nt(n)?n:oa(n)?n:Vt(n)?n:lo(n)?n:ca(n)?n:ia(n)?n:xn({})}function $i(n,r){if(pn(n))return u2(n,r);else return X({...d2(n),...r})}var kl=b(()=>{en();xo();it();ut();wr();Ec();fn();wo();Ml();zn()});function M8(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=$i(n[o],r);return t}function R8(n,r){return M8(n.properties,r)}function u2(n,r){let t=R8(n,r);return Bn(t)}var Ml=b(()=>{Er();kl()});var Y0=b(()=>{Ml();kl()});function H8(n,r){return r.map((t)=>{return ir(t)?Rl(n,t.$ref):at(n,t)})}function Rl(n,r){return r in n?ir(n[r])?Rl(n,n[r].$ref):at(n,n[r]):Mn()}function z8(n){return _i(n[0])}function B8(n){return Po(n[0],n[1])}function U8(n){return li(n[0])}function W8(n){return mi(n[0])}function V8(n){return qo(n[0],n[1])}function Y8(n){return Ko(n[0],n[1])}function J8(n){return $i(n[0])}function X8(n,r,t){let o=H8(n,t);return r==="Awaited"?z8(o):r==="Index"?B8(o):r==="KeyOf"?U8(o):r==="Partial"?W8(o):r==="Omit"?V8(o):r==="Pick"?Y8(o):r==="Required"?J8(o):Mn()}function L8(n,r){return ti(at(n,r))}function Q8(n,r){return oi(at(n,r))}function G8(n,r,t){return ci(Ra(n,r),at(n,t))}function O8(n,r,t){return jt(Ra(n,r),at(n,t))}function N8(n,r){return Xr(Ra(n,r))}function x8(n,r){return fi(at(n,r))}function P8(n,r){return xn(globalThis.Object.keys(r).reduce((t,o)=>{return{...t,[o]:at(n,r[o])}},{}))}function C8(n,r){let[t,o]=[at(n,H0(r)),R0(r)],c=ni(r);return c.patternProperties[o]=t,c}function F8(n,r){return ir(r)?{...Rl(n,r.$ref),[ur]:r[ur]}:r}function j8(n,r){return wt(Ra(n,r))}function q8(n,r){return Jn(Ra(n,r))}function Ra(n,r){return r.map((t)=>at(n,t))}function at(n,r){return Cr(r)?X(at(n,tr(r,[zr])),r):ri(r)?X(at(n,tr(r,[Rt])),r):Qo(r)?X(F8(n,r),r):Ht(r)?X(L8(n,r.items),r):lc(r)?X(Q8(n,r.items),r):zt(r)?X(X8(n,r.target,r.parameters)):Bt(r)?X(G8(n,r.parameters,r.returns),r):Ut(r)?X(O8(n,r.parameters,r.returns),r):rr(r)?X(N8(n,r.allOf),r):uc(r)?X(x8(n,r.items),r):lr(r)?X(P8(n,r.properties),r):bc(r)?X(C8(n,r)):ot(r)?X(j8(n,r.items||[]),r):kn(r)?X(q8(n,r.anyOf),r):r}function K8(n,r){return r in n?at(n,n[r]):Mn()}function w2(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:K8(n,t)}},{})}var b2=b(()=>{fo();w_();wo();la();a0();da();ua();Kt();gc();ut();$a();Sa();it();B0();W0();Br();V0();ka();Y0();Co();wr();fn();zn()});class g2{constructor(n){let r=w2(n),t=this.WithIdentifiers(r);this.$defs=t}Import(n,r){let t={...this.$defs,[n]:X(this.$defs[n],r)};return X({[C]:"Import",$defs:t,$ref:n})}WithIdentifiers(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:{...n[t],$id:t}}},{})}}function m2(n){return new g2(n)}var $2=b(()=>{fo();fn();b2()});var Hl=b(()=>{$2()});function h2(n,r){return X({[C]:"Not",not:n},r)}var A2=b(()=>{en();fn()});var zl=b(()=>{A2()});function E2(n,r){return Ut(n)?wt(n.parameters,r):Mn()}var S2=b(()=>{Co();Br();zn()});var Bl=b(()=>{S2()});function D2(n,r={}){if(_r(r.$id))r.$id=`T${v8++}`;let t=ni(n({[C]:"This",$ref:`${r.$id}`}));return t.$id=r.$id,X({[lt]:"Recursive",...t},r)}var v8=0;var k2=b(()=>{qe();en();fn()});var Ul=b(()=>{k2()});function M2(n,r){let t=Fn(n)?new globalThis.RegExp(n):n;return X({[C]:"RegExp",type:"RegExp",source:t.source,flags:t.flags},r)}var R2=b(()=>{en();fn()});var Wl=b(()=>{R2()});function Z8(n){return rr(n)?n.allOf:kn(n)?n.anyOf:ot(n)?n.items??[]:[]}function H2(n){return Z8(n)}var z2=b(()=>{zn()});var Vl=b(()=>{z2()});function B2(n,r){return Ut(n)?X(n.returns,r):Mn(r)}var U2=b(()=>{en();Br();zn()});var Yl=b(()=>{U2()});var W2=()=>{};var V2=()=>{};var Y2=b(()=>{W2();V2()});var J2=()=>{};var X2=b(()=>{J2()});class L2{constructor(n){this.schema=n}Decode(n){return new Q2(this.schema,n)}}class Q2{constructor(n,r){this.schema=n,this.decode=r}EncodeTransform(n,r){let c={Encode:(i)=>r[ur].Encode(n(i)),Decode:(i)=>this.decode(r[ur].Decode(i))};return{...r,[ur]:c}}EncodeSchema(n,r){let t={Decode:this.decode,Encode:n};return{...r,[ur]:t}}Encode(n){return Qo(this.schema)?this.EncodeTransform(n,this.schema):this.EncodeSchema(n,this.schema)}}function G2(n){return new L2(n)}var O2=b(()=>{fn();zn()});var Jl=b(()=>{O2()});function N2(n={}){return X({[C]:n[C]??"Unsafe"},n)}var x2=b(()=>{en();fn()});var Xl=b(()=>{x2()});function P2(n){return X({[C]:"Void",type:"void"},n)}var C2=b(()=>{en();fn()});var Ll=b(()=>{C2()});var Ql={};ho(Ql,{Void:()=>P2,Uppercase:()=>t2,Unsafe:()=>N2,Unknown:()=>Fo,Union:()=>Jn,Undefined:()=>u0,Uncapitalize:()=>n2,Uint8Array:()=>b0,Tuple:()=>wt,Transform:()=>G2,TemplateLiteral:()=>r0,Symbol:()=>l0,String:()=>Yt,ReturnType:()=>B2,Rest:()=>H2,Required:()=>$i,RegExp:()=>M2,Ref:()=>vt,Recursive:()=>D2,Record:()=>M0,ReadonlyOptional:()=>D0,Readonly:()=>qr,Promise:()=>c0,Pick:()=>Ko,Partial:()=>mi,Parameters:()=>E2,Optional:()=>Jr,Omit:()=>qo,Object:()=>xn,Number:()=>dt,Null:()=>f0,Not:()=>h2,Never:()=>Mn,Module:()=>m2,Mapped:()=>qg,Lowercase:()=>ym,Literal:()=>Wn,KeyOf:()=>li,Iterator:()=>fi,Intersect:()=>Xr,Integer:()=>jm,Instantiate:()=>Cm,InstanceType:()=>Gm,Index:()=>Po,Function:()=>jt,Extract:()=>gi,Extends:()=>wi,Exclude:()=>bi,Enum:()=>mm,Date:()=>e0,ConstructorParameters:()=>bm,Constructor:()=>ci,Const:()=>um,Composite:()=>im,Capitalize:()=>Im,Boolean:()=>Te,BigInt:()=>ei,Awaited:()=>_i,AsyncIterator:()=>oi,Array:()=>ti,Argument:()=>sg,Any:()=>No});var F2=b(()=>{_a();S_();la();da();a0();ma();n0();j_();K_();ua();v_();s0();Z_();al();Da();fl();gc();Kt();_l();dl();ul();ut();bl();$a();Sa();Fr();Er();Hl();Br();zl();_0();$c();it();B0();bo();Bl();V0();W0();i0();Ac();k0();ka();Ul();Ec();Wl();Y0();Vl();Yl();si();d0();mo();Jl();Co();g0();w0();wr();di();Xl();Ll()});var mr;var j2=b(()=>{F2();mr=Ql});var q2=b(()=>{w_();fo();Ft();E_();Z1();sa();rg();fa();fn();_a();la();S_();da();a0();ma();n0();j_();K_();ua();v_();s0();Z_();al();Da();fl();gc();Kt();_l();dl();ul();ut();$a();bl();Sa();Fr();Hl();Er();Br();zl();_0();$c();it();B0();bo();Bl();V0();W0();i0();Ac();k0();ka();Ul();Ec();Wl();Y0();Vl();Yl();Y2();X2();si();d0();mo();Jl();Co();g0();w0();wr();di();Xl();Ll();j2()});var Gl,Ol,CF,FF;var Nl=b(()=>{q2();Gl=mr.Object({email:mr.String({format:"email"})}),Ol=mr.Object({token:mr.String()}),CF=mr.Object({success:mr.Boolean(),message:mr.Optional(mr.String())}),FF=mr.Object({success:mr.Boolean(),message:mr.Optional(mr.String()),data:mr.Optional(mr.Object({user:mr.Object({id:mr.String(),email:mr.String()}),accessToken:mr.String(),refreshToken:mr.String()}))})});import{eq as xl}from"drizzle-orm";import{Elysia as I8}from"elysia";function J0(n,r,t,o,c,i,a,e,s,f){let{db:d,logger:_,usersTable:w}=n,g=r.route||"/auth/magic-link",u=r.verifyRoute||"/auth/magic-link/verify",m=r.expiresIn||"15m",l=r.redirectUrl||"",E=new I8;if(!r.enabled)return E;return E.post(g,async($)=>{if(!d||!w)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return _.error("[AUTH] Magic link requested but email service not available"),{success:!1,message:"Email service not available"};let{email:S}=$.body,W=(await d.select().from(w).where(xl(w.email,S)).limit(1))[0];if(!W)return _.info("[AUTH] Magic link requested for non-existent email",{email:S}),{success:!0,message:"If an account exists, a magic link has been sent"};if(W.isLocked)return _.warn("[AUTH] Magic link requested for locked account",{email:S}),{success:!0,message:"If an account exists, a magic link has been sent"};let H=yc(),k=Mt(H),D=new Date(Date.now()+Tc(m));await a({userId:W.id,email:S,tokenHash:k,expiresAt:D});let A=l?`${l}?token=${H}`:`${u}?token=${H}`,h=await t.sendMagicLinkEmail(S,A,f);if(!h.success)return _.error("[AUTH] Failed to send magic link email",{email:S,error:h.error}),{success:!1,message:"Failed to send email"};return _.info("[AUTH] Magic link sent",{email:S,userId:W.id}),{success:!0,message:"If an account exists, a magic link has been sent"}},{body:Gl,detail:{tags:["Authentication"],summary:"Request Magic Link",description:"Send a magic link to the user's email for passwordless login"}}),E.get(u,async($)=>{if(!d||!w)return{success:!1,message:"Database not configured"};let S=$.query.token;if(!S)return{success:!1,message:"Token is required"};let U=Mt(S),W=await e(U);if(!W)return _.warn("[AUTH] Invalid magic link token"),{success:!1,message:"Invalid or expired token"};if(new Date>W.expiresAt)return await s(U),_.warn("[AUTH] Expired magic link token",{email:W.email}),{success:!1,message:"Invalid or expired token"};let k=(await d.select().from(w).where(xl(w.id,W.userId)).limit(1))[0];if(!k)return await s(U),{success:!1,message:"User not found"};await s(U),await d.update(w).set({lastLoginAt:new Date,loginCount:(k.loginCount||0)+1,emailVerified:!0}).where(xl(w.id,k.id));let D=$.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||$.request.headers.get("x-real-ip")?.trim()||"unknown",A=$.request.headers.get("user-agent")||"",h=o(k.id),R=c(k.id),z=await i({userId:k.id,deviceInfo:{ipAddress:D,userAgent:A,deviceType:"unknown"},loginMethod:"magic_link"});return _.info("[AUTH] Magic link login successful",{userId:k.id,email:k.email}),$.set.headers["x-session-id"]=z,{success:!0,data:{user:{id:k.id,email:k.email},accessToken:h,refreshToken:R}}},{query:Ol,detail:{tags:["Authentication"],summary:"Verify Magic Link",description:"Verify magic link token and login user"}}),E}var Pl=b(()=>{Nl();yi();Nl()});import{eq as hi}from"drizzle-orm";import{Elysia as p8}from"elysia";function X0(n,r,t,o,c){let{db:i,logger:a,usersTable:e}=n,s=r.route||"/auth/me",f=new p8;if(!r.enabled)return f;return f.get(s,async(d)=>{if(!i||!e)return{success:!1,message:"Database not configured"};let _=d.request.headers.get("x-user-id");if(!_)return d.set.status=401,{success:!1,message:"Unauthorized"};let g=(await i.select().from(e).where(hi(e.id,_)).limit(1))[0];if(!g)return d.set.status=404,{success:!1,message:"User not found"};let{password:u,...m}=g,l=null,E=[],$=[],S=[],U=[];if(r.includeProfile&&t){let H=t.profiles;if(H&&i)l=(await i.select().from(H).where(hi(H.userId,_)).limit(1))[0]||null}if(r.includeAddresses&&t){let H=t.addresses;if(H&&i)E=await i.select().from(H).where(hi(H.ownerId,_))}if(r.includePhones&&t){let H=t.phones;if(H&&i)$=await i.select().from(H).where(hi(H.ownerId,_))}if(r.includeFiles&&t){let H=t.files;if(H&&i)S=await i.select().from(H).where(hi(H.uploadedBy,_))}if(r.includeRoles&&t){let{userRoles:H,roles:k}=t;if(H&&k&&i){let A=(await i.select().from(H).where(hi(H.userId,_))).map((h)=>h.roleId);if(A.length>0){let{inArray:h}=await import("drizzle-orm");U=await i.select().from(k).where(h(k.id,A))}}}return a.info("[AUTH] Me endpoint accessed",{userId:_}),JSON.parse(JSON.stringify({success:!0,data:{user:m,profile:l,addresses:E,phones:$,files:S,roles:U}},(H,k)=>typeof k==="bigint"?Number(k):k))},{detail:{tags:["Authentication"],summary:"Get current user",description:"Get the currently authenticated user with profile, addresses, phones and files"}}),f}var Cl=()=>{};import{and as L0,eq as Or}from"drizzle-orm";import{Elysia as y8}from"elysia";function K2(n,r,t,o,c,i,a,e,s,f,d){let{db:_,logger:w,usersTable:g}=n,u=r.basePath,m={accessTokenName:a?.accessTokenName||"access_token",refreshTokenName:a?.refreshTokenName||"refresh_token",sessionTokenName:a?.sessionTokenName||"session_token",accessTokenMaxAge:a?.accessTokenMaxAge||900,refreshTokenMaxAge:a?.refreshTokenMaxAge||604800,sessionTokenMaxAge:a?.sessionTokenMaxAge||900,secure:a?.secure??!0,httpOnly:a?.httpOnly??!0,sameSite:a?.sameSite||"lax",path:a?.path||"/",domain:a?.domain},l={accessToken:{setHeadersEnabled:e?.accessToken?.setHeadersEnabled??!0,returnJson:e?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:e?.refreshToken?.setHeadersEnabled??!0,returnJson:e?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:e?.sessionToken?.setHeadersEnabled??!0,returnJson:e?.sessionToken?.returnJson??!0}},E=new y8;return E.get(`${u}/:provider`,async($)=>{let S=$.params.provider;if(!r.isProviderEnabled(S))return $.set.status=404,{success:!1,message:`OAuth provider "${S}" is not enabled`};let U=$.query.link_user_id,W=$.query.redirect_url,H=r.buildAuthorizationUrl(S,U,W);return $.set.status=302,$.set.headers.Location=H,null},{detail:{tags:["Authentication"],summary:"OAuth Redirect",description:"Redirects to the OAuth provider authorization page"}}),E.get(`${u}/:provider/callback`,async($)=>{let S=$.params.provider,U=$.query,{code:W,state:H,error:k,error_description:D}=U,A=r.errorRedirectUrl;if(k)return w.warn("[OAUTH] Provider returned error",{provider:S,error:k,error_description:D}),$.set.status=302,$.set.headers.Location=`${A}?error=${encodeURIComponent(D||k)}`,null;if(!W||!H)return $.set.status=302,$.set.headers.Location=`${A}?error=missing_code_or_state`,null;let h=r.consumeState(H);if(!h)return w.warn("[OAUTH] Invalid or expired state",{provider:S,state:H}),$.set.status=302,$.set.headers.Location=`${A}?error=invalid_state`,null;if(h.provider!==S)return w.warn("[OAUTH] State provider mismatch",{expected:h.provider,got:S}),$.set.status=302,$.set.headers.Location=`${A}?error=provider_mismatch`,null;if(!_||!g)return $.set.status=302,$.set.headers.Location=`${A}?error=server_error`,null;let R;try{R=await r.exchangeCode(S,W)}catch(ln){return w.error("[OAUTH] Code exchange failed",{provider:S,error:ln}),$.set.status=302,$.set.headers.Location=`${A}?error=token_exchange_failed`,null}let{profile:z,tokens:V}=R,Q=n.oauthAccountsTable,B=null;if(h.linkUserId&&r.allowAccountLinking){if(B=h.linkUserId,Q){let Qn=await _.select().from(Q).where(L0(Or(Q.provider,S),Or(Q.providerAccountId,z.providerAccountId))).limit(1);if(Qn.length>0){let qn=Qn[0];if(qn.userId!==B)return $.set.status=302,$.set.headers.Location=`${A}?error=account_already_linked_to_another_user`,null;await _.update(Q).set({accessToken:V.accessToken,refreshToken:V.refreshToken??null,tokenExpiresAt:V.expiresAt??null,scope:V.scope??null,rawProfile:z.rawProfile,lastUsedAt:new Date}).where(Or(Q.id,qn.id))}else await _.insert(Q).values({userId:B,provider:S,providerAccountId:z.providerAccountId,providerEmail:z.email??null,providerName:z.name??null,providerAvatarUrl:z.avatarUrl??null,accessToken:V.accessToken,refreshToken:V.refreshToken??null,tokenExpiresAt:V.expiresAt??null,scope:V.scope??null,rawProfile:z.rawProfile,isPrimary:!1,lastUsedAt:new Date})}w.info("[OAUTH] Account linked successfully",{userId:B,provider:S});let ln=h.redirectUrl||r.successRedirectUrl;return $.set.status=302,$.set.headers.Location=`${ln}?linked=true&provider=${S}`,null}if(Q){let ln=await _.select().from(Q).where(L0(Or(Q.provider,S),Or(Q.providerAccountId,z.providerAccountId))).limit(1);if(ln.length>0){let Qn=ln[0];B=Qn.userId,await _.update(Q).set({accessToken:V.accessToken,refreshToken:V.refreshToken??null,tokenExpiresAt:V.expiresAt??null,scope:V.scope??null,rawProfile:z.rawProfile,lastUsedAt:new Date}).where(Or(Q.id,Qn.id))}}if(!B&&z.email){let ln=await _.select().from(g).where(Or(g.email,z.email)).limit(1);if(ln.length>0){if(B=ln[0].id,Q)await _.insert(Q).values({userId:B,provider:S,providerAccountId:z.providerAccountId,providerEmail:z.email??null,providerName:z.name??null,providerAvatarUrl:z.avatarUrl??null,accessToken:V.accessToken,refreshToken:V.refreshToken??null,tokenExpiresAt:V.expiresAt??null,scope:V.scope??null,rawProfile:z.rawProfile,isPrimary:!1,lastUsedAt:new Date}).onConflictDoNothing();w.info("[OAUTH] Merged OAuth account with existing user by email",{userId:B,provider:S,email:z.email})}}if(!B){if(!r.autoCreateUser)return $.set.status=302,$.set.headers.Location=`${A}?error=user_not_found`,null;let ln=z.email??`${S}_${z.providerAccountId}@oauth.local`;if(B=(await _.insert(g).values({email:ln,password:null,verifiedAt:z.email?new Date:null,isActive:!0}).returning())[0].id,Q)await _.insert(Q).values({userId:B,provider:S,providerAccountId:z.providerAccountId,providerEmail:z.email??null,providerName:z.name??null,providerAvatarUrl:z.avatarUrl??null,accessToken:V.accessToken,refreshToken:V.refreshToken??null,tokenExpiresAt:V.expiresAt??null,scope:V.scope??null,rawProfile:z.rawProfile,isPrimary:!0,lastUsedAt:new Date});if(w.info("[OAUTH] Created new user via OAuth",{userId:B,provider:S,email:z.email}),r.sendInviteOnCreate&&z.email&&s?.isAvailable()&&f)try{let gn=yc(),Gn=Mt(gn),Un=new Date(Date.now()+Tc("7d"));await f({userId:B,email:z.email,tokenHash:Gn,expiresAt:Un});let Sn=`${r.successRedirectUrl.replace(/\/$/,"").replace(/\/[^/]+$/,"/set-password")}?token=${gn}`;await s.sendEmail({to:z.email,subject:`Welcome to ${d??"the platform"} \u2014 Set your password`,html:`
|
|
101
|
+
`),R=(Array.isArray(A)?A:A.rows||[]).map((B)=>String(B.table_name||""));o.info("[AUTH] Change User ID - discovered schema references",{fkConstraints:$.map((B)=>`${B.table_name}.${B.column_name} (${B.constraint_name})`),userIdColumns:W.map((B)=>`${B.table_name}.${B.column_name}`),auditColumns:D.map((B)=>`${B.table_name}.${B.column_name}`),polyTables:R});let z=new Map,V=(B,J)=>{if(!z.has(B))z.set(B,new Set);z.get(B)?.add(J)};for(let B of $)V(B.table_name,B.column_name);for(let B of W)V(B.table_name,B.column_name);for(let B of D)V(B.table_name,B.column_name);o.info("[AUTH] Change User ID - all column updates to execute",{updates:Array.from(z.entries()).map(([B,J])=>`${B}: [${Array.from(J).join(", ")}]`)}),await t.transaction(async(B)=>{for(let J of $)await B.execute(ao.raw(`ALTER TABLE "${r}"."${J.table_name}" DROP CONSTRAINT "${J.constraint_name}"`));await B.execute(ao.raw(`UPDATE "${r}"."users" SET "id" = '${_}' WHERE "id" = '${d}'`));for(let[J,G]of z.entries())for(let F of G)await B.execute(ao.raw(`UPDATE "${r}"."${J}" SET "${F}" = '${_}' WHERE "${F}" = '${d}'`));for(let J of R)await B.execute(ao.raw(`UPDATE "${r}"."${J}" SET "owner_id" = '${_}' WHERE "owner_id" = '${d}' AND "owner_type" IN ('user', 'users', 'User')`));for(let J of $){let G=J.delete_rule==="CASCADE"?"ON DELETE CASCADE":J.delete_rule==="SET NULL"?"ON DELETE SET NULL":"";await B.execute(ao.raw(`ALTER TABLE "${r}"."${J.table_name}" ADD CONSTRAINT "${J.constraint_name}" FOREIGN KEY ("${J.column_name}") REFERENCES "${r}"."users" ("id") ${G}`))}});let Q=[...new Set([...$.map((B)=>B.table_name),...W.map((B)=>B.table_name),...D.map((B)=>B.table_name),...R])];return o.info("[AUTH] User ID changed successfully",{godminId:e,currentId:d,newId:_,email:u.email,affectedTables:Q,fkConstraintsDroppedAndReadded:$.length}),await o.audit({entityName:"users",entityId:_,operation:"CHANGE_USER_ID",userId:e,summary:`Godmin changed user ID: ${d} \u2192 ${_} (${u.email})`,oldValues:{id:d},newValues:{id:_},ipAddress:a.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",userAgent:a.request.headers.get("user-agent")||"unknown",path:new URL(a.request.url).pathname,query:""}),{success:!0,data:{oldId:d,newId:_,email:u.email,affectedTables:Q}}}catch(l){return o.error("[AUTH] Failed to change user ID",{error:l instanceof Error?l.message:String(l),stack:l instanceof Error?l.stack:void 0,currentId:d,newId:_}),a.set.status=500,{success:!1,message:l instanceof Error?l.message:"Failed to change user ID"}}},{body:If.Object({currentId:If.String(),newId:If.String()}),detail:{tags:["Authentication"],summary:"Change User ID",description:"Godmin: change a user's UUID while preserving all FK relations, audit columns, and polymorphic references"}}),i}var pf=()=>{};import{eq as yf}from"drizzle-orm";import{Elysia as T3,t as Ob}from"elysia";function Be(n,r,t,o,c,i){let{db:a,logger:e,usersTable:s}=n,f=new T3,d={accessTokenName:i?.accessTokenName||"access_token",refreshTokenName:i?.refreshTokenName||"refresh_token",sessionTokenName:i?.sessionTokenName||"session_token",accessTokenMaxAge:i?.accessTokenMaxAge||900,refreshTokenMaxAge:i?.refreshTokenMaxAge||604800,sessionTokenMaxAge:i?.sessionTokenMaxAge||900,secure:i?.secure??!0,sameSite:i?.sameSite||"strict",path:i?.path||"/"};return f.post("/auth/admin/impersonate",async(_)=>{if(!a||!s)return{success:!1,message:"Database not configured"};let w=_.request.headers.get("x-user-id");if(!w)return _.set.status=401,{success:!1,message:"Unauthorized"};let{targetUserId:g}=_.body,m=(await a.select().from(s).where(yf(s.id,w)).limit(1))[0];if(!m||!m.isGod)return _.set.status=403,{success:!1,message:"Forbidden: godmin privileges required"};if(w===g)return _.set.status=400,{success:!1,message:"Cannot impersonate yourself"};let E=(await a.select().from(s).where(yf(s.id,g)).limit(1))[0];if(!E)return _.set.status=404,{success:!1,message:"Target user not found"};let $=r(g),S=t(g),U=_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",W={userId:g,deviceInfo:{deviceName:"Impersonation Session",browserName:"Admin",osName:"Admin",ipAddress:U},loginMethod:"impersonation"},H=await o(W);if(c)await c(H,W);e.info("[AUTH] Impersonation started",{godminId:w,targetUserId:g,targetEmail:E.email}),await e.audit({entityName:"users",entityId:g,operation:"IMPERSONATE_START",userId:w,summary:`Godmin ${m.email} started impersonating ${E.email}`,ipAddress:_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",userAgent:_.request.headers.get("user-agent")||"unknown",path:new URL(_.request.url).pathname,query:""});let k=d.secure?"; Secure":"",D=`; Path=${d.path}; HttpOnly; SameSite=${d.sameSite}${k}`,A=[`${d.accessTokenName}=${$}${D}; Max-Age=${d.accessTokenMaxAge}`,`${d.refreshTokenName}=${S}${D}; Max-Age=${d.refreshTokenMaxAge}`,`${d.sessionTokenName}=${H}${D}; Max-Age=${d.sessionTokenMaxAge}`,`nucleus_impersonating_as=${g}${D}; Max-Age=${d.sessionTokenMaxAge}`,`nucleus_godmin_id=${w}${D}; Max-Age=${d.sessionTokenMaxAge}`,`nucleus_impersonating_email=${encodeURIComponent(String(E.email))}${D}; Max-Age=${d.sessionTokenMaxAge}`],h=JSON.stringify({success:!0,data:{targetUser:{id:E.id,email:E.email},godminId:w,sessionId:H}}),R=new Headers;R.set("Content-Type","application/json");for(let z of A)R.append("Set-Cookie",z);return new Response(h,{status:200,headers:R})},{body:Ob.Object({targetUserId:Ob.String()}),detail:{tags:["Authentication"],summary:"Impersonate User",description:"Godmin: start a session as another user"}}),f.post("/auth/admin/impersonate/stop",async(_)=>{if(!a||!s)return{success:!1,message:"Database not configured"};let w=_.request.headers.get("cookie")||"",u=Object.fromEntries(w.split(";").map((z)=>{let[V,...Q]=z.trim().split("=");return[V?.trim(),Q.join("=")]})).nucleus_godmin_id;if(!u)return _.set.status=400,{success:!1,message:"No active impersonation session"};let l=(await a.select().from(s).where(yf(s.id,u)).limit(1))[0];if(!l)return _.set.status=404,{success:!1,message:"Godmin user not found"};let E=r(u),$=t(u),S=_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",U={userId:u,deviceInfo:{deviceName:"Restored Admin Session",browserName:"Admin",osName:"Admin",ipAddress:S},loginMethod:"impersonation_stop"},W=await o(U);if(c)await c(W,U);e.info("[AUTH] Impersonation stopped",{godminId:u}),await e.audit({entityName:"users",entityId:u,operation:"IMPERSONATE_STOP",userId:u,summary:`Godmin ${l.email} stopped impersonation`,ipAddress:_.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||"unknown",userAgent:_.request.headers.get("user-agent")||"unknown",path:new URL(_.request.url).pathname,query:""});let H=d.secure?"; Secure":"",k=`; Path=${d.path}; HttpOnly; SameSite=${d.sameSite}${H}`,D=`; Path=${d.path}; HttpOnly; SameSite=${d.sameSite}${H}; Max-Age=0`,A=[`${d.accessTokenName}=${E}${k}; Max-Age=${d.accessTokenMaxAge}`,`${d.refreshTokenName}=${$}${k}; Max-Age=${d.refreshTokenMaxAge}`,`${d.sessionTokenName}=${W}${k}; Max-Age=${d.sessionTokenMaxAge}`,`nucleus_impersonating_as=deleted${D}`,`nucleus_godmin_id=deleted${D}`,`nucleus_impersonating_email=deleted${D}`],h=JSON.stringify({success:!0,data:{godminUser:{id:l.id,email:l.email},sessionId:W}}),R=new Headers;R.set("Content-Type","application/json");for(let z of A)R.append("Set-Cookie",z);return new Response(h,{status:200,headers:R})},{detail:{tags:["Authentication"],summary:"Stop Impersonation",description:"Godmin: restore own session after impersonation"}}),f}var Tf=()=>{};import{and as Ue,count as nA,eq as Ar,sql as rA}from"drizzle-orm";function We(n,r,t){let o=t.route||"/auth/api-keys",c=r.apiKeysTable,{db:i,logger:a}=r;if(!c||!i){a.warn("[API_KEYS] api_keys table or database not available. Skipping API key routes.");return}let e=t.keyPrefix||"nk_live",s=t.maxKeysPerUser||10,f=t.preventApiKeyManagement??!1;n.post(o,async({request:d,set:_})=>{if(f)return _.status=403,{isSuccess:!1,message:"API key management is disabled via configuration",data:null};if(d.headers.get("x-auth-type")==="api_key")return _.status=403,{isSuccess:!1,message:"API keys cannot be created using another API key",data:null};let g=d.headers.get("x-user-id");if(!g)return _.status=401,{isSuccess:!1,message:"Unauthenticated",data:null};let u;try{u=await d.json()}catch{return _.status=400,{isSuccess:!1,message:"Invalid request body",data:null}}if(!u.name||typeof u.name!=="string"||u.name.trim().length===0)return _.status=400,{isSuccess:!1,message:"Name is required",data:null};if(u.ownerType==="application"){if(!(t.allowApplicationKeys??!0))return _.status=403,{isSuccess:!1,message:"Application API keys are not allowed",data:null};if(!u.applicationName||u.applicationName.trim().length===0)return _.status=400,{isSuccess:!1,message:"Application name is required for application keys",data:null}}if(((await i.select({count:nA()}).from(c).where(Ue(Ar(Kn(c,"userId"),g),Ar(Kn(c,"isActive"),!0))))[0]?.count||0)>=s)return _.status=400,{isSuccess:!1,message:`Maximum API key limit reached (${s})`,data:null};let E=await Nb(r,g),$=await xb(r,g),S=E.some((V)=>nc(V)),U=u.allowedRoles||[],W=u.allowedClaims||[],H=u.allowedScopes||[],k=(V)=>V.filter((Q)=>!nc(Q)),D,A;if(S)D=U.length>0?k(U):[],A=W.length>0?W:$;else{let V=Qt(E,U),Q=Qt($,W);if(U.length>0&&V.length!==U.length){let B=U.filter((J)=>!E.includes(J));return _.status=403,{isSuccess:!1,message:`Cannot assign roles you do not have: ${B.join(", ")}`,data:null}}if(W.length>0&&Q.length!==W.length){let B=W.filter((J)=>!$.includes(J));return _.status=403,{isSuccess:!1,message:`Cannot assign claims you do not have: ${B.join(", ")}`,data:null}}if(H.length>0){let B=await Pb(r,g);if(Qt(B,H).length!==H.length){let G=H.filter((F)=>!B.includes(F));return _.status=403,{isSuccess:!1,message:`Cannot assign scopes you do not have: ${G.join(", ")}`,data:null}}}D=k(U.length>0?V:E),A=W.length>0?Q:$}let h=null,R=u.expiresIn||t.defaultExpiresIn;if(R){let V=pr(R);h=new Date(Date.now()+V*1000)}let z=Yd(e);try{return await i.insert(c).values({userId:g,name:u.name.trim(),description:u.description?.trim()||null,keyHash:z.keyHash,keyPreview:z.keyPreview,ownerType:u.ownerType||"personal",applicationName:u.applicationName?.trim()||null,allowedRoles:D,allowedClaims:A,allowedScopes:H,expiresAt:h,isActive:!0,usageCount:0,createdAt:new Date,updatedAt:new Date}),a.info("[API_KEYS] API key created",{userId:g,ownerType:u.ownerType||"personal",applicationName:u.applicationName,rolesCount:D.length,claimsCount:A.length,expiresAt:h?.toISOString()||"never"}),{isSuccess:!0,message:"API key created successfully. Save this key \u2014 it will not be shown again.",data:{key:z.rawKey,keyPreview:z.keyPreview,name:u.name.trim(),ownerType:u.ownerType||"personal",applicationName:u.applicationName||null,allowedRoles:D,allowedClaims:A,allowedScopes:H,expiresAt:h?.toISOString()||null}}}catch(V){let Q=V instanceof Error?V.message:String(V);return a.error("[API_KEYS] Failed to create API key",{error:Q,userId:g}),_.status=500,{isSuccess:!1,message:`Failed to create API key: ${Q}`,data:null}}}),n.get(o,async({request:d,set:_})=>{let w=d.headers.get("x-user-id");if(!w)return _.status=401,{isSuccess:!1,message:"Unauthenticated",data:null};let u=(await i.select().from(c).where(Ar(Kn(c,"userId"),w)).orderBy(rA`created_at DESC`)).map((m)=>n_(m));return{isSuccess:!0,data:{items:u,totalCount:u.length}}}),n.get(`${o}/:id`,async({params:d,request:_,set:w})=>{let g=_.headers.get("x-user-id");if(!g)return w.status=401,{isSuccess:!1,message:"Unauthenticated",data:null};let u=d.id,l=(await i.select().from(c).where(Ue(Ar(Kn(c,"id"),u),Ar(Kn(c,"userId"),g))).limit(1))[0];if(!l)return w.status=404,{isSuccess:!1,message:"API key not found",data:null};return{isSuccess:!0,data:n_(l)}}),n.patch(`${o}/:id`,async({params:d,request:_,set:w})=>{if(f)return w.status=403,{isSuccess:!1,message:"API key management is disabled via configuration",data:null};if(_.headers.get("x-auth-type")==="api_key")return w.status=403,{isSuccess:!1,message:"API keys cannot be modified using another API key",data:null};let u=_.headers.get("x-user-id");if(!u)return w.status=401,{isSuccess:!1,message:"Unauthenticated",data:null};let m=d.id,l;try{l=await _.json()}catch{return w.status=400,{isSuccess:!1,message:"Invalid request body",data:null}}let $=(await i.select().from(c).where(Ue(Ar(Kn(c,"id"),m),Ar(Kn(c,"userId"),u))).limit(1))[0];if(!$)return w.status=404,{isSuccess:!1,message:"API key not found",data:null};if($.revokedAt)return w.status=400,{isSuccess:!1,message:"Cannot modify a revoked API key",data:null};let S=await Nb(r,u),U=await xb(r,u),W={updatedAt:new Date};if(l.name!==void 0){if(typeof l.name!=="string"||l.name.trim().length===0)return w.status=400,{isSuccess:!1,message:"Name cannot be empty",data:null};W.name=l.name.trim()}if(l.description!==void 0)W.description=l.description?.trim()||null;if(l.allowedRoles!==void 0){if(Qt(S,l.allowedRoles).length!==l.allowedRoles.length){let k=l.allowedRoles.filter((D)=>!S.includes(D));return w.status=403,{isSuccess:!1,message:`Cannot assign roles you do not have: ${k.join(", ")}`,data:null}}W.allowedRoles=l.allowedRoles.filter((k)=>!nc(k))}if(l.allowedClaims!==void 0){if(Qt(U,l.allowedClaims).length!==l.allowedClaims.length){let k=l.allowedClaims.filter((D)=>!U.includes(D));return w.status=403,{isSuccess:!1,message:`Cannot assign claims you do not have: ${k.join(", ")}`,data:null}}W.allowedClaims=l.allowedClaims}if(l.allowedScopes!==void 0){if(l.allowedScopes.length>0){let H=await Pb(r,u);if(Qt(H,l.allowedScopes).length!==l.allowedScopes.length){let D=l.allowedScopes.filter((A)=>!H.includes(A));return w.status=403,{isSuccess:!1,message:`Cannot assign scopes you do not have: ${D.join(", ")}`,data:null}}}W.allowedScopes=l.allowedScopes}try{await i.update(c).set(W).where(Ar(Kn(c,"id"),m)),a.info("[API_KEYS] API key updated",{keyId:m,userId:u});let H=await i.select().from(c).where(Ar(Kn(c,"id"),m)).limit(1);return{isSuccess:!0,message:"API key updated successfully",data:n_(H[0])}}catch(H){return a.error("[API_KEYS] Failed to update API key",{error:H,keyId:m,userId:u}),w.status=500,{isSuccess:!1,message:"Failed to update API key",data:null}}}),n.delete(`${o}/:id`,async({params:d,request:_,set:w})=>{if(_.headers.get("x-auth-type")==="api_key")return w.status=403,{isSuccess:!1,message:"API keys cannot be revoked using another API key",data:null};let u=_.headers.get("x-user-id");if(!u)return w.status=401,{isSuccess:!1,message:"Unauthenticated",data:null};let m=d.id,l={};try{let U=await _.clone().text();if(U)l=JSON.parse(U)}catch{}let $=(await i.select().from(c).where(Ue(Ar(Kn(c,"id"),m),Ar(Kn(c,"userId"),u))).limit(1))[0];if(!$)return w.status=404,{isSuccess:!1,message:"API key not found",data:null};if($.revokedAt)return w.status=400,{isSuccess:!1,message:"API key is already revoked",data:null};try{return await i.update(c).set({isActive:!1,revokedAt:new Date,revokedReason:l.reason||"user_revoked",updatedAt:new Date}).where(Ar(Kn(c,"id"),m)),a.info("[API_KEYS] API key revoked",{keyId:m,userId:u,reason:l.reason||"user_revoked"}),{isSuccess:!0,message:"API key revoked successfully",data:null}}catch(S){return a.error("[API_KEYS] Failed to revoke API key",{error:S,keyId:m,userId:u}),w.status=500,{isSuccess:!1,message:"Failed to revoke API key",data:null}}}),a.info(`[API_KEYS] Routes registered at ${o}`)}var Kn=(n,r)=>n[r],Nb=async(n,r)=>{if(!n.db||!n.userRolesTable||!n.rolesTable)return[];return(await n.db.select({name:Kn(n.rolesTable,"name")}).from(n.userRolesTable).innerJoin(n.rolesTable,Ar(Kn(n.rolesTable,"id"),Kn(n.userRolesTable,"roleId"))).where(Ar(Kn(n.userRolesTable,"userId"),r))).map((o)=>o.name).filter((o)=>o!==void 0)},xb=async(n,r)=>{if(!n.db||!n.userRolesTable||!n.roleClaimsTable||!n.claimsTable)return[];let t=await n.db.select({action:Kn(n.claimsTable,"action")}).from(n.userRolesTable).innerJoin(n.roleClaimsTable,Ar(Kn(n.roleClaimsTable,"roleId"),Kn(n.userRolesTable,"roleId"))).innerJoin(n.claimsTable,Ar(Kn(n.claimsTable,"id"),Kn(n.roleClaimsTable,"claimId"))).where(Ar(Kn(n.userRolesTable,"userId"),r)),o=new Set(t.map((c)=>c.action));return Array.from(o).filter((c)=>c!==void 0)},Pb=async(n,r)=>{if(!n.db||!n.userRolesTable||!n.roleClaimsTable)return[];let t=await n.db.select({scope:Kn(n.roleClaimsTable,"scope")}).from(n.userRolesTable).innerJoin(n.roleClaimsTable,Ar(Kn(n.roleClaimsTable,"roleId"),Kn(n.userRolesTable,"roleId"))).where(Ar(Kn(n.userRolesTable,"userId"),r)),o=new Set(t.map((c)=>c.scope).filter((c)=>c!==null&&c!==void 0&&c.length>0));return Array.from(o)},n_=(n)=>{let{keyHash:r,...t}=n;return t};var r_=b(()=>{Xa();te();Qi()});import{Elysia as tA,t as Gr}from"elysia";function Cb(n){let{captchaService:r,logger:t,basePath:o="/auth/captcha"}=n,c=new tA;if(!r.isEnabled())return c;return c.get(`${o}/generate`,async(i)=>{let{type:a,difficulty:e}=i.query,s=i.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||i.request.headers.get("x-real-ip")?.trim()||i.request.headers.get("cf-connecting-ip")?.trim()||"unknown",f=await r.generate(a,e,s);if(f.rateLimited)return i.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:oA,detail:{tags:["Captcha"],summary:"Generate Captcha",description:"Generate a new captcha challenge"}}),c.post(`${o}/validate`,async(i)=>{let{challengeId:a,answer:e}=i.body,s=await r.validate(a,e);if(!s.valid)i.set.status=400;return s},{body:cA,detail:{tags:["Captcha"],summary:"Validate Captcha",description:"Validate a captcha answer"}}),c}var oA,cA;var Fb=b(()=>{oA=Gr.Object({type:Gr.Optional(Gr.Union([Gr.Literal("math"),Gr.Literal("image"),Gr.Literal("puzzle"),Gr.Literal("text")])),difficulty:Gr.Optional(Gr.Union([Gr.Literal("easy"),Gr.Literal("medium"),Gr.Literal("hard")]))}),cA=Gr.Object({challengeId:Gr.String(),answer:Gr.String()})});function jb(n,r){let{db:t,logger:o}=n,c=r.route||"/auth/check";return(i)=>i.post(c,async(a)=>{let{body:e,request:s,set:f}=a,d=s.headers.get("x-user-id");if(!d)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 _=n.schemaTables;if(!_)return f.status=503,{isSuccess:!1,message:"Authorization tables not available",data:null};let{entity:w,method:g,fields:u,relations:m}=e;if(!w||!g)return f.status=400,{isSuccess:!1,message:"entity and method are required",data:null};let l=await oe({userId:d,method:g,entity:w,requestedFields:u,requestedRelations:m,db:t,schemaTables:_,logger:o});return{isSuccess:!0,message:l.authorized?"Authorized":"Forbidden",data:{authorized:l.authorized,reason:l.reason,allowedFields:l.allowedFields,allowedRelations:l.allowedRelations,scopeFilters:l.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 qb=b(()=>{Ks()});import iA from"crypto";var{password:aA}=globalThis.Bun;async function Xo(n){return await aA.hash(n,{algorithm:"bcrypt",cost:10})}function Ve(){return iA.randomBytes(32).toString("hex")}function Ic(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 Kb(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 pc=()=>{};import{sql as Ye}from"drizzle-orm";import{Elysia as eA,t as Je}from"elysia";function Xe(n){let{authConfig:r,registerConfig:t,emailService:o,appName:c}=n,{db:i,logger:a,usersTable:e}=r,s=new eA;if(!t.enabled||!t.emailVerification?.enabled)return s;let f="/verify-email",d="/resend-verification";return s.get(f,async(_)=>{if(!i||!e)return{success:!1,message:"Database not configured"};let w=_.query.token;if(!w)return{success:!1,message:"Verification token is required"};let g=await i.select().from(e).where(Ye`email_verification_token = ${w}`).limit(1);if(g.length===0)return a.warn("[AUTH] Email verification failed - invalid token"),{success:!1,message:"Invalid or expired verification token"};let u=g[0],m=u.emailVerificationTokenExpiresAt;if(m&&new Date>new Date(m))return a.warn("[AUTH] Email verification failed - token expired",{userId:u.id,email:u.email}),{success:!1,message:"Verification token has expired. Please request a new one."};if(await i.update(e).set({verifiedAt:new Date,emailVerificationToken:null,emailVerificationTokenExpiresAt:null}).where(Ye`id = ${u.id}`),a.info("[AUTH] Email verified successfully",{userId:u.id,email:u.email}),t.emailVerification?.templates?.welcome?.enabled&&o?.isAvailable())o.sendWelcomeEmail(u.email,u.email.split("@")[0]||"User",c||"Nucleus").catch((E)=>{a.error("[AUTH] Failed to send welcome email after verification",{email:u.email,error:E})});return{success:!0,message:"Email verified successfully. You can now log in.",data:{redirectUrl:t.emailVerification?.redirectUrl||"/login",verified:!0}}},{query:Je.Object({token:Je.String()}),detail:{tags:["Authentication"],summary:"Verify Email",description:"Verify user email address using the verification token"}}),s.post(d,async(_)=>{if(!i||!e)return{success:!1,message:"Database not configured"};if(!o?.isAvailable())return{success:!1,message:"Email service not available"};let{email:w}=_.body,g=await i.select().from(e).where(Ye`email = ${w}`).limit(1);if(g.length===0)return{success:!0,message:"If your email is registered, you will receive a verification email."};let u=g[0];if(u.verifiedAt)return{success:!1,message:"Email is already verified"};let m=t.emailVerification?.maxResendAttempts||3,l=u.emailVerificationAttempts||0;if(l>=m)return a.warn("[AUTH] Resend verification failed - max attempts reached",{email:w,attempts:l}),{success:!1,message:"Maximum resend attempts reached. Please contact support.",data:{maxAttemptsReached:!0,attemptsUsed:l,maxAttempts:m}};let E=t.emailVerification?.resendCooldown||"60s",$=Ic(E),S=u.emailVerificationSentAt;if(S){let h=Date.now()-new Date(S).getTime();if(h<$){let R=Math.ceil(($-h)/1000);return{success:!1,message:`Please wait ${R} seconds before requesting another verification email.`,data:{cooldownRemaining:R,canResendAt:new Date(Date.now()+R*1000).toISOString()}}}}let U=Ve(),W=t.emailVerification?.tokenExpiresIn||"24h",H=new Date(Date.now()+Ic(W));await i.update(e).set({emailVerificationToken:U,emailVerificationTokenExpiresAt:H,emailVerificationSentAt:new Date,emailVerificationAttempts:l+1}).where(Ye`id = ${u.id}`);let D=`${(t.emailVerification?.redirectUrl||"http://localhost:3000/login").replace("/login","/verify-email")}?token=${U}`,A=await o.sendVerificationEmail(w,w.split("@")[0]||"User",D,c||"Nucleus");if(A.success)return a.info("[AUTH] Verification email resent",{email:w}),{success:!0,message:"Verification email sent. Please check your inbox.",data:{cooldownSeconds:Math.ceil($/1000),canResendAt:new Date(Date.now()+$).toISOString(),attemptsRemaining:m-(l+1)}};return a.error("[AUTH] Failed to resend verification email",{email:w,error:A.error}),{success:!1,message:"Failed to send verification email. Please try again later."}},{body:Je.Object({email:Je.String({format:"email"})}),detail:{tags:["Authentication"],summary:"Resend Verification Email",description:"Resend the email verification link to the user"}}),s}var t_=b(()=>{pc()});import vb from"crypto";function yc(){return vb.randomBytes(32).toString("hex")}function Mt(n){return vb.createHash("sha256").update(n).digest("hex")}function Tc(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 yi=()=>{};import{eq as sA}from"drizzle-orm";import{Elysia as fA,t as Le}from"elysia";function Qe(n,r,t,o,c,i){let{db:a,logger:e,usersTable:s}=n,f=r.route||"/auth/invite",d=r.tokenExpiresIn||"7d",_=r.redirectUrl||"",w=new fA;if(!r.enabled)return w;if(w.post(f,async(g)=>{if(!a||!s)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return e.error("[AUTH] Invite requested but email service not available"),{success:!1,message:"Email service not available"};let{email:u}=g.body,m=await a.select().from(s).where(sA(s.email,u)).limit(1),l;if(m.length>0){let H=m[0];if(H.verifiedAt||H.password)return e.warn("[AUTH] Invite failed - user already verified",{email:u}),{success:!1,message:"User with this email is already verified"};l=H.id,e.info("[AUTH] Resending invitation to existing unverified user",{userId:l,email:u})}else{let H={email:u,password:null,emailVerified:!1,isLocked:!1,createdAt:new Date,updatedAt:new Date},D=(await a.insert(s).values(H).returning())[0];if(!D)return e.error("[AUTH] Failed to create invited user",{email:u}),{success:!1,message:"Failed to create user"};l=D.id,e.info("[AUTH] Invited user created",{userId:l,email:u})}let E=yc(),$=Mt(E),S=new Date(Date.now()+Tc(d));await o({userId:l,email:u,tokenHash:$,expiresAt:S});let U=_?`${_}?token=${E}&invite=true`:`/auth/magic-link/verify?token=${E}`,W=await t.sendInvitationEmail(u,U,c||"Nucleus");if(!W.success)return e.error("[AUTH] Failed to send invitation email",{email:u,error:W.error}),{success:!0,message:"User created but failed to send invitation email",data:{id:l,email:u}};return e.info("[AUTH] Invitation email sent",{email:u,userId:l}),{success:!0,message:"Invitation sent successfully",data:{id:l,email:u}}},{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"}}),i)w.post(`${f}/verify`,async(g)=>{let{token:u}=g.body;if(!u)return{success:!1,message:"Token is required"};let m=Mt(u),l=await i(m);if(!l)return e.warn("[AUTH] Invalid invite verify token"),{success:!1,message:"Invalid or expired token"};if(new Date>l.expiresAt)return e.warn("[AUTH] Expired invite verify token",{email:l.email}),{success:!1,message:"Invalid or expired token"};return e.info("[AUTH] Invite token verified (not consumed)",{email:l.email,userId:l.userId}),{success:!0,data:{userId:l.userId,email:l.email}}},{body:Le.Object({token:Le.String()}),detail:{tags:["Authentication"],summary:"Verify Invite Token",description:"Validate an invite token without consuming it. Returns user info if valid."}});return w}var _A;var o_=b(()=>{yi();_A=Le.Object({email:Le.String({format:"email"})})});import{t as cr}from"elysia";var c_,lA;var i_=b(()=>{c_=cr.Object({email:cr.String({format:"email"}),password:cr.String({minLength:1}),rememberMe:cr.Optional(cr.Boolean()),captchaId:cr.Optional(cr.String()),captchaAnswer:cr.Optional(cr.String()),deviceHint:cr.Optional(cr.String())}),lA=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()}))})});var{password:dA}=globalThis.Bun;async function Ge(n,r){try{return await dA.verify(n,r)}catch{return!1}}function Oe(n,r,t){let o=n.toLowerCase(),c=["headlesschrome","headless","phantomjs","nightmare","selenium","webdriver","puppeteer","playwright"],i=["bot","crawler","spider","scraper","curl","wget","python-requests","python-urllib","java/","httpclient","go-http-client","node-fetch","axios","postman","insomnia","httpie"],a=c.some((l)=>o.includes(l)),e=i.some((l)=>o.includes(l)),s=a||e,f=[];if(a)f.push("headless_browser");if(e)f.push("bot_user_agent");if(!o||o.length<10)f.push("missing_or_short_ua");if(o==="mozilla/5.0")f.push("generic_ua");if(o.includes("nucleusserveraction")||o.includes("serveraction"))f.push("server_action");let d="unknown";if(o.includes("ipad"))d="tablet";else if(o.includes("iphone"))d="mobile";else if(o.includes("macintosh")||o.includes("windows")&&!o.includes("windows phone")||o.includes("linux")&&!o.includes("android"))d="desktop";else if(o.includes("tablet")||o.includes("android")&&o.includes("tablet"))d="tablet";else if(o.includes("mobile")||o.includes("android"))d="mobile";let _,w;if(a)_="Headless Browser";else if(e)_="Bot/Crawler";else if(o.includes("chrome")&&!o.includes("edg")){_="Chrome";let l=n.match(/Chrome\/(\d+\.\d+)/i);if(l?.[1])w=l[1]}else if(o.includes("firefox")){_="Firefox";let l=n.match(/Firefox\/(\d+\.\d+)/i);if(l?.[1])w=l[1]}else if(o.includes("safari")&&!o.includes("chrome")){_="Safari";let l=n.match(/Version\/(\d+\.\d+)/i);if(l?.[1])w=l[1]}else if(o.includes("edg")){_="Edge";let l=n.match(/Edg\/(\d+\.\d+)/i);if(l?.[1])w=l[1]}let g,u;if(o.includes("windows nt 10"))g="Windows",u="10/11";else if(o.includes("windows nt"))g="Windows";else if(o.includes("mac os x")){g="macOS";let l=n.match(/Mac OS X (\d+[._]\d+)/i);if(l?.[1])u=l[1].replace("_",".")}else if(o.includes("android")){g="Android";let l=n.match(/Android (\d+\.?\d*)/i);if(l?.[1])u=l[1]}else if(o.includes("iphone")||o.includes("ipad")){g="iOS";let l=n.match(/OS (\d+[._]\d+)/i);if(l?.[1])u=l[1].replace("_",".")}else if(o.includes("linux"))g="Linux";return{deviceName:_&&g?`${_} on ${g}`:"Unknown Device",deviceType:d,browserName:_,browserVersion:w,osName:g,osVersion:u,ipAddress:r,userAgent:n,deviceHint:t,locationCountry:void 0,locationCity:void 0,isHeadless:a,isBot:e,isSuspicious:s,suspiciousPatterns:f}}var Ne=()=>{};import{eq as a_}from"drizzle-orm";import{Elysia as uA}from"elysia";function xe(n,r,t,o,c,i,a,e,s){let{db:f,logger:d,usersTable:_}=n,w=r.route||"/auth/login",g={accessTokenName:a?.accessTokenName||"access_token",refreshTokenName:a?.refreshTokenName||"refresh_token",sessionTokenName:a?.sessionTokenName||"session_token",accessTokenMaxAge:a?.accessTokenMaxAge||900,refreshTokenMaxAge:a?.refreshTokenMaxAge||604800,sessionTokenMaxAge:a?.sessionTokenMaxAge||900,secure:a?.secure??!0,httpOnly:a?.httpOnly??!0,sameSite:a?.sameSite||"strict",path:a?.path||"/",domain:a?.domain},u=new uA;if(!r.enabled)return u;return u.post(w,async(m)=>{if(!f||!_)return{success:!1,message:"Database not configured"};let{email:l,password:E,rememberMe:$,captchaId:S,captchaAnswer:U,deviceHint:W}=m.body;if(s?.isEnabled()){if(!S||!U)return m.set.status=400,{success:!1,message:"Captcha is required"};let rn=await s.validate(S,U);if(!rn.valid)return m.set.status=400,{success:!1,message:rn.message||"Invalid captcha",attemptsRemaining:rn.attemptsRemaining}}let k=(await f.select().from(_).where(a_(_.email,l)).limit(1))[0],D=new URL(m.request.url),A=m.request.headers.get("cf-connecting-ip")?.trim()||m.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||m.request.headers.get("x-real-ip")?.trim()||"unknown",h=m.request.headers.get("user-agent")||"unknown";if(!k)return d.warn("[AUTH] Login failed - user not found",{email:l}),await d.audit({entityName:"users",operation:"LOGIN_FAILED",summary:`Login failed: user not found (${l})`,ipAddress:A,userAgent:h,path:D.pathname,query:D.search}),{success:!1,message:"Invalid email or password"};if(k.isLocked)return d.warn("[AUTH] Login failed - account locked",{email:l,userId:k.id}),await d.audit({entityName:"users",entityId:k.id,operation:"LOGIN_FAILED",userId:k.id,summary:`Login failed: account locked (${l})`,ipAddress:A,userAgent:h,path:D.pathname,query:D.search}),{success:!1,message:"Account is locked"};if(!await Ge(E,k.password)){let rn=(k.failedLoginAttempts||0)+1;return await f.update(_).set({failedLoginAttempts:rn,isLocked:rn>=5,lockedUntil:rn>=5?new Date(Date.now()+1800000):null}).where(a_(_.id,k.id)),d.warn("[AUTH] Login failed - invalid password",{email:l,failedAttempts:rn}),await d.audit({entityName:"users",entityId:k.id,operation:"LOGIN_FAILED",userId:k.id,summary:`Login failed: invalid password (${l}, attempt ${rn})`,ipAddress:A,userAgent:h,path:D.pathname,query:D.search}),{success:!1,message:"Invalid email or password"}}await f.update(_).set({failedLoginAttempts:0,lastLoginAt:new Date,loginCount:(k.loginCount||0)+1}).where(a_(_.id,k.id));let z={};m.request.headers.forEach((rn,hn)=>{z[hn]=rn}),d.info("[AUTH] Login request headers",{headers:z});let V=m.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim(),Q=(rn)=>!rn||rn==="127.0.0.1"||rn==="::1"||rn==="localhost"||rn.startsWith("10.")||rn.startsWith("192.168.")||rn.startsWith("172."),B=m.request.headers.get("cf-connecting-ip")?.trim()||m.request.headers.get("true-client-ip")?.trim()||(!Q(V)?V:void 0)||m.request.headers.get("x-real-ip")?.trim()||m.request.headers.get("x-client-ip")?.trim()||V||"127.0.0.1",J=m.request.headers.get("user-agent")||"Unknown Browser";d.info("[AUTH] Parsed device info",{ipAddress:B,userAgent:J});let G=Oe(J,B,W);try{if(!Q(B)){let rn=await fetch(`http://ip-api.com/json/${B}?fields=country,city`);if(rn.ok){let hn=await rn.json();if(hn.country)G.locationCountry=hn.country;if(hn.city)G.locationCity=hn.city}}}catch{}let F=[],N=[],x=n.userRolesTable,y=n.rolesTable,O=n.roleClaimsTable,q=n.claimsTable;if(f&&x&&y)try{let{eq:rn,inArray:hn}=await import("drizzle-orm"),Tn=(await f.select().from(x).where(rn(x.userId,k.id))).map((Nr)=>Nr.roleId);if(Tn.length>0){if(F=(await f.select().from(y).where(hn(y.id,Tn))).map((Qr)=>Qr.name),O&&q){let Qr=await f.select().from(O).innerJoin(q,rn(O.claimId,q.id)).where(hn(O.roleId,Tn)),$r=new Set;for(let ar of Qr){let Ha=ar.claims?.action;if(Ha)$r.add(Ha)}N=Array.from($r)}}}catch{}let Z=t(k.id,F.length>0?F:void 0,N.length>0?N:void 0),nn=o(k.id),j=m.request.headers.get("origin")||m.request.headers.get("referer")?.replace(/\/[^/]*$/,"")||void 0,I={userId:k.id,deviceInfo:G,loginMethod:"password",rememberMe:$,requestOrigin:j},K=await c(I),tn=!1,wn=K;if(i){let rn=await i(K,I);if(rn?.requiresApproval){if(tn=!0,rn.sessionId)wn=rn.sessionId}}if(tn)return m.set.status=202,new Response(JSON.stringify({success:!1,requiresApproval:!0,sessionId:wn,message:"Login requires approval. Please check your email to approve this device."}),{status:202,headers:{"Content-Type":"application/json"}});d.info("[AUTH] Login successful",{userId:k.id,email:l,rememberMe:$}),await d.audit({entityName:"users",entityId:k.id,operation:"LOGIN",userId:k.id,summary:`${l} logged in successfully`,ipAddress:B,userAgent:J,path:D.pathname,query:D.search});let ln={accessToken:{setHeadersEnabled:e?.accessToken?.setHeadersEnabled??!0,returnJson:e?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:e?.refreshToken?.setHeadersEnabled??!0,returnJson:e?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:e?.sessionToken?.setHeadersEnabled??!0,returnJson:e?.sessionToken?.returnJson??!0}},Qn=g.secure?"; Secure":"",qn=g.domain?`; Domain=${g.domain}`:"",gn=`; Path=${g.path}; HttpOnly; SameSite=${g.sameSite}${Qn}${qn}`,Gn=[];if(ln.accessToken.setHeadersEnabled)Gn.push(`${g.accessTokenName}=${Z}${gn}; Max-Age=${g.accessTokenMaxAge}`);if(ln.refreshToken.setHeadersEnabled)Gn.push(`${g.refreshTokenName}=${nn}${gn}; Max-Age=${g.refreshTokenMaxAge}`);if(ln.sessionToken.setHeadersEnabled)Gn.push(`${g.sessionTokenName}=${K}${gn}; Max-Age=${g.sessionTokenMaxAge}`);m.set.headers["x-session-id"]=K;let Un={user:{id:k.id,email:k.email}};if(ln.accessToken.returnJson)Un.accessToken=Z;if(ln.refreshToken.returnJson)Un.refreshToken=nn;if(ln.sessionToken.returnJson)Un.sessionId=K;let En=JSON.stringify({success:!0,data:Un}),Sn=new Headers;Sn.set("Content-Type","application/json"),Sn.set("x-session-id",K);for(let rn of Gn)Sn.append("Set-Cookie",rn);return new Response(En,{status:200,headers:Sn})},{body:c_,detail:{tags:["Authentication"],summary:"Login",description:"Authenticate user with email and password"}}),u}var e_=b(()=>{i_();Ne();i_()});function Zb(n){let r=n?.path||"/",t=n?.sameSite||"Strict",o=n?.secure!==!1?"; Secure":"",c=n?.domain?`; Domain=${n.domain}`:"",i=n?.accessTokenName||"access_token",a=n?.refreshTokenName||"refresh_token",e=n?.sessionTokenName||"session_token",s=`; Path=${r}; HttpOnly; SameSite=${t}${o}${c}; Max-Age=0`;return{"Set-Cookie":[`${i}=${s}`,`${a}=${s}`,`${e}=${s}`].join(", ")}}import{t as Pe}from"elysia";var wA;var Ib=b(()=>{wA=Pe.Object({success:Pe.Boolean(),message:Pe.Optional(Pe.String())})});import{Elysia as bA}from"elysia";function Ce(n,r,t,o,c){let{logger:i}=n,a=r.route||"/auth/logout",e=new bA;if(!r.enabled)return e;return e.post(a,async(s)=>{let f=s.request.headers.get("x-session-id"),d=s.request.headers.get("x-user-id");if(f){if(await t(f),o)await o(f,"user_logout")}let _=Zb(c);for(let[g,u]of Object.entries(_))s.set.headers[g]=u;i.info("[AUTH] Logout successful",{userId:d,sessionId:f});let w=new URL(s.request.url);return i.audit({entityName:"users",entityId:d||void 0,operation:"LOGOUT",userId:d||void 0,summary:`User logged out${f?` (session: ${f.substring(0,8)}...)`:""}`,ipAddress:s.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||s.request.headers.get("x-real-ip")?.trim()||"unknown",userAgent:s.request.headers.get("user-agent")||"unknown",path:w.pathname,query:w.search}),{success:!0,message:"Logged out successfully"}},{detail:{tags:["Authentication"],summary:"Logout",description:"Logout and invalidate session"}}),e}var s_=b(()=>{Ib()});var Yr={};ho(Yr,{IsUndefined:()=>_r,IsUint8Array:()=>so,IsSymbol:()=>u_,IsString:()=>Fn,IsRegExp:()=>na,IsObject:()=>On,IsNumber:()=>Tr,IsNull:()=>d_,IsIterator:()=>l_,IsFunction:()=>__,IsDate:()=>_c,IsBoolean:()=>eo,IsBigInt:()=>Ti,IsAsyncIterator:()=>f_,IsArray:()=>fr,HasPropertyKey:()=>Fe});function Fe(n,r){return r in n}function f_(n){return On(n)&&!fr(n)&&!so(n)&&Symbol.asyncIterator in n}function fr(n){return Array.isArray(n)}function Ti(n){return typeof n==="bigint"}function eo(n){return typeof n==="boolean"}function _c(n){return n instanceof globalThis.Date}function __(n){return typeof n==="function"}function l_(n){return On(n)&&!fr(n)&&!so(n)&&Symbol.iterator in n}function d_(n){return n===null}function Tr(n){return typeof n==="number"}function On(n){return typeof n==="object"&&n!==null}function na(n){return n instanceof globalThis.RegExp}function Fn(n){return typeof n==="string"}function u_(n){return typeof n==="symbol"}function so(n){return n instanceof globalThis.Uint8Array}function _r(n){return n===void 0}function gA(n){return n.map((r)=>je(r))}function mA(n){return new Date(n.getTime())}function $A(n){return new Uint8Array(n)}function hA(n){return new RegExp(n.source,n.flags)}function AA(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=je(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=je(n[t]);return r}function je(n){return fr(n)?gA(n):_c(n)?mA(n):so(n)?$A(n):na(n)?hA(n):On(n)?AA(n):n}function In(n){return je(n)}var Pr=()=>{};function ni(n,r){return r===void 0?In(n):In({...r,...n})}var qe=b(()=>{Pr()});var w_=b(()=>{qe();Pr()});function pb(n){return n!==null&&typeof n==="object"}function yb(n){return globalThis.Array.isArray(n)&&!globalThis.ArrayBuffer.isView(n)}function Tb(n){return n===void 0}function n1(n){return typeof n==="number"}var r1=()=>{};var Ke;var t1=b(()=>{r1();(function(n){n.InstanceMode="default",n.ExactOptionalPropertyTypes=!1,n.AllowArrayObject=!1,n.AllowNaN=!1,n.AllowNullVoid=!1;function r(a,e){return n.ExactOptionalPropertyTypes?e in a:a[e]!==void 0}n.IsExactOptionalProperty=r;function t(a){let e=pb(a);return n.AllowArrayObject?e:e&&!yb(a)}n.IsObjectLike=t;function o(a){return t(a)&&!(a instanceof Date)&&!(a instanceof Uint8Array)}n.IsRecordLike=o;function c(a){return n.AllowNaN?n1(a):Number.isFinite(a)}n.IsNumberLike=c;function i(a){let e=Tb(a);return n.AllowNullVoid?e||a===null:e}n.IsVoidLike=i})(Ke||(Ke={}))});function EA(n){return globalThis.Object.freeze(n).map((r)=>ra(r))}function SA(n){return n}function DA(n){return n}function kA(n){return n}function MA(n){let r={};for(let t of Object.getOwnPropertyNames(n))r[t]=ra(n[t]);for(let t of Object.getOwnPropertySymbols(n))r[t]=ra(n[t]);return globalThis.Object.freeze(r)}function ra(n){return fr(n)?EA(n):_c(n)?SA(n):so(n)?DA(n):na(n)?kA(n):On(n)?MA(n):n}var o1=()=>{};function X(n,r){let t=r!==void 0?{...r,...n}:n;switch(Ke.InstanceMode){case"freeze":return ra(t);case"clone":return In(t);default:return t}}var en=b(()=>{t1();o1();Pr()});var fo=b(()=>{en()});var Hr;var c1=b(()=>{Hr=class Hr extends Error{constructor(n){super(n)}}});var Ft=b(()=>{c1()});var ur,Rt,zr,lt,C;var ta=b(()=>{ur=Symbol.for("TypeBox.Transform"),Rt=Symbol.for("TypeBox.Readonly"),zr=Symbol.for("TypeBox.Optional"),lt=Symbol.for("TypeBox.Hint"),C=Symbol.for("TypeBox.Kind")});var fn=b(()=>{ta()});function ri(n){return On(n)&&n[Rt]==="Readonly"}function Cr(n){return On(n)&&n[zr]==="Optional"}function b_(n){return Dn(n,"Any")}function g_(n){return Dn(n,"Argument")}function Ht(n){return Dn(n,"Array")}function lc(n){return Dn(n,"AsyncIterator")}function dc(n){return Dn(n,"BigInt")}function _o(n){return Dn(n,"Boolean")}function zt(n){return Dn(n,"Computed")}function Bt(n){return Dn(n,"Constructor")}function RA(n){return Dn(n,"Date")}function Ut(n){return Dn(n,"Function")}function Wt(n){return Dn(n,"Integer")}function rr(n){return Dn(n,"Intersect")}function uc(n){return Dn(n,"Iterator")}function Dn(n,r){return On(n)&&C in n&&n[C]===r}function ve(n){return eo(n)||Tr(n)||Fn(n)}function nt(n){return Dn(n,"Literal")}function rt(n){return Dn(n,"MappedKey")}function pn(n){return Dn(n,"MappedResult")}function Lo(n){return Dn(n,"Never")}function HA(n){return Dn(n,"Not")}function oa(n){return Dn(n,"Null")}function Vt(n){return Dn(n,"Number")}function lr(n){return Dn(n,"Object")}function wc(n){return Dn(n,"Promise")}function bc(n){return Dn(n,"Record")}function ir(n){return Dn(n,"Ref")}function m_(n){return Dn(n,"RegExp")}function lo(n){return Dn(n,"String")}function ca(n){return Dn(n,"Symbol")}function tt(n){return Dn(n,"TemplateLiteral")}function zA(n){return Dn(n,"This")}function Qo(n){return On(n)&&ur in n}function ot(n){return Dn(n,"Tuple")}function ia(n){return Dn(n,"Undefined")}function kn(n){return Dn(n,"Union")}function BA(n){return Dn(n,"Uint8Array")}function UA(n){return Dn(n,"Unknown")}function WA(n){return Dn(n,"Unsafe")}function VA(n){return Dn(n,"Void")}function YA(n){return On(n)&&C in n&&Fn(n[C])}function ct(n){return b_(n)||g_(n)||Ht(n)||_o(n)||dc(n)||lc(n)||zt(n)||Bt(n)||RA(n)||Ut(n)||Wt(n)||rr(n)||uc(n)||nt(n)||rt(n)||pn(n)||Lo(n)||HA(n)||oa(n)||Vt(n)||lr(n)||wc(n)||bc(n)||ir(n)||m_(n)||lo(n)||ca(n)||tt(n)||zA(n)||ot(n)||ia(n)||kn(n)||BA(n)||UA(n)||WA(n)||VA(n)||YA(n)}var zn=b(()=>{fn()});var M={};ho(M,{TypeGuardUnknownTypeError:()=>i1,IsVoid:()=>q1,IsUnsafe:()=>j1,IsUnknown:()=>F1,IsUnionLiteral:()=>PA,IsUnion:()=>A_,IsUndefined:()=>P1,IsUint8Array:()=>C1,IsTuple:()=>x1,IsTransform:()=>N1,IsThis:()=>O1,IsTemplateLiteral:()=>G1,IsSymbol:()=>Q1,IsString:()=>L1,IsSchema:()=>kr,IsRegExp:()=>X1,IsRef:()=>J1,IsRecursive:()=>xA,IsRecord:()=>Y1,IsReadonly:()=>QA,IsProperties:()=>Ze,IsPromise:()=>V1,IsOptional:()=>GA,IsObject:()=>W1,IsNumber:()=>U1,IsNull:()=>B1,IsNot:()=>z1,IsNever:()=>H1,IsMappedResult:()=>R1,IsMappedKey:()=>M1,IsLiteralValue:()=>k1,IsLiteralString:()=>S1,IsLiteralNumber:()=>D1,IsLiteralBoolean:()=>NA,IsLiteral:()=>ea,IsKindOf:()=>$n,IsKind:()=>K1,IsIterator:()=>E1,IsIntersect:()=>A1,IsInteger:()=>h1,IsImport:()=>OA,IsFunction:()=>$1,IsDate:()=>m1,IsConstructor:()=>g1,IsComputed:()=>b1,IsBoolean:()=>w1,IsBigInt:()=>u1,IsAsyncIterator:()=>d1,IsArray:()=>l1,IsArgument:()=>_1,IsAny:()=>f1});function a1(n){try{return new RegExp(n),!0}catch{return!1}}function $_(n){if(!Fn(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 e1(n){return h_(n)||kr(n)}function aa(n){return _r(n)||Ti(n)}function jn(n){return _r(n)||Tr(n)}function h_(n){return _r(n)||eo(n)}function Nn(n){return _r(n)||Fn(n)}function XA(n){return _r(n)||Fn(n)&&$_(n)&&a1(n)}function LA(n){return _r(n)||Fn(n)&&$_(n)}function s1(n){return _r(n)||kr(n)}function QA(n){return On(n)&&n[Rt]==="Readonly"}function GA(n){return On(n)&&n[zr]==="Optional"}function f1(n){return $n(n,"Any")&&Nn(n.$id)}function _1(n){return $n(n,"Argument")&&Tr(n.index)}function l1(n){return $n(n,"Array")&&n.type==="array"&&Nn(n.$id)&&kr(n.items)&&jn(n.minItems)&&jn(n.maxItems)&&h_(n.uniqueItems)&&s1(n.contains)&&jn(n.minContains)&&jn(n.maxContains)}function d1(n){return $n(n,"AsyncIterator")&&n.type==="AsyncIterator"&&Nn(n.$id)&&kr(n.items)}function u1(n){return $n(n,"BigInt")&&n.type==="bigint"&&Nn(n.$id)&&aa(n.exclusiveMaximum)&&aa(n.exclusiveMinimum)&&aa(n.maximum)&&aa(n.minimum)&&aa(n.multipleOf)}function w1(n){return $n(n,"Boolean")&&n.type==="boolean"&&Nn(n.$id)}function b1(n){return $n(n,"Computed")&&Fn(n.target)&&fr(n.parameters)&&n.parameters.every((r)=>kr(r))}function g1(n){return $n(n,"Constructor")&&n.type==="Constructor"&&Nn(n.$id)&&fr(n.parameters)&&n.parameters.every((r)=>kr(r))&&kr(n.returns)}function m1(n){return $n(n,"Date")&&n.type==="Date"&&Nn(n.$id)&&jn(n.exclusiveMaximumTimestamp)&&jn(n.exclusiveMinimumTimestamp)&&jn(n.maximumTimestamp)&&jn(n.minimumTimestamp)&&jn(n.multipleOfTimestamp)}function $1(n){return $n(n,"Function")&&n.type==="Function"&&Nn(n.$id)&&fr(n.parameters)&&n.parameters.every((r)=>kr(r))&&kr(n.returns)}function OA(n){return $n(n,"Import")&&Fe(n,"$defs")&&On(n.$defs)&&Ze(n.$defs)&&Fe(n,"$ref")&&Fn(n.$ref)&&n.$ref in n.$defs}function h1(n){return $n(n,"Integer")&&n.type==="integer"&&Nn(n.$id)&&jn(n.exclusiveMaximum)&&jn(n.exclusiveMinimum)&&jn(n.maximum)&&jn(n.minimum)&&jn(n.multipleOf)}function Ze(n){return On(n)&&Object.entries(n).every(([r,t])=>$_(r)&&kr(t))}function A1(n){return $n(n,"Intersect")&&(Fn(n.type)&&n.type!=="object"?!1:!0)&&fr(n.allOf)&&n.allOf.every((r)=>kr(r)&&!N1(r))&&Nn(n.type)&&(h_(n.unevaluatedProperties)||s1(n.unevaluatedProperties))&&Nn(n.$id)}function E1(n){return $n(n,"Iterator")&&n.type==="Iterator"&&Nn(n.$id)&&kr(n.items)}function $n(n,r){return On(n)&&C in n&&n[C]===r}function S1(n){return ea(n)&&Fn(n.const)}function D1(n){return ea(n)&&Tr(n.const)}function NA(n){return ea(n)&&eo(n.const)}function ea(n){return $n(n,"Literal")&&Nn(n.$id)&&k1(n.const)}function k1(n){return eo(n)||Tr(n)||Fn(n)}function M1(n){return $n(n,"MappedKey")&&fr(n.keys)&&n.keys.every((r)=>Tr(r)||Fn(r))}function R1(n){return $n(n,"MappedResult")&&Ze(n.properties)}function H1(n){return $n(n,"Never")&&On(n.not)&&Object.getOwnPropertyNames(n.not).length===0}function z1(n){return $n(n,"Not")&&kr(n.not)}function B1(n){return $n(n,"Null")&&n.type==="null"&&Nn(n.$id)}function U1(n){return $n(n,"Number")&&n.type==="number"&&Nn(n.$id)&&jn(n.exclusiveMaximum)&&jn(n.exclusiveMinimum)&&jn(n.maximum)&&jn(n.minimum)&&jn(n.multipleOf)}function W1(n){return $n(n,"Object")&&n.type==="object"&&Nn(n.$id)&&Ze(n.properties)&&e1(n.additionalProperties)&&jn(n.minProperties)&&jn(n.maxProperties)}function V1(n){return $n(n,"Promise")&&n.type==="Promise"&&Nn(n.$id)&&kr(n.item)}function Y1(n){return $n(n,"Record")&&n.type==="object"&&Nn(n.$id)&&e1(n.additionalProperties)&&On(n.patternProperties)&&((r)=>{let t=Object.getOwnPropertyNames(r.patternProperties);return t.length===1&&a1(t[0])&&On(r.patternProperties)&&kr(r.patternProperties[t[0]])})(n)}function xA(n){return On(n)&< in n&&n[lt]==="Recursive"}function J1(n){return $n(n,"Ref")&&Nn(n.$id)&&Fn(n.$ref)}function X1(n){return $n(n,"RegExp")&&Nn(n.$id)&&Fn(n.source)&&Fn(n.flags)&&jn(n.maxLength)&&jn(n.minLength)}function L1(n){return $n(n,"String")&&n.type==="string"&&Nn(n.$id)&&jn(n.minLength)&&jn(n.maxLength)&&XA(n.pattern)&&LA(n.format)}function Q1(n){return $n(n,"Symbol")&&n.type==="symbol"&&Nn(n.$id)}function G1(n){return $n(n,"TemplateLiteral")&&n.type==="string"&&Fn(n.pattern)&&n.pattern[0]==="^"&&n.pattern[n.pattern.length-1]==="$"}function O1(n){return $n(n,"This")&&Nn(n.$id)&&Fn(n.$ref)}function N1(n){return On(n)&&ur in n}function x1(n){return $n(n,"Tuple")&&n.type==="array"&&Nn(n.$id)&&Tr(n.minItems)&&Tr(n.maxItems)&&n.minItems===n.maxItems&&(_r(n.items)&&_r(n.additionalItems)&&n.minItems===0||fr(n.items)&&n.items.every((r)=>kr(r)))}function P1(n){return $n(n,"Undefined")&&n.type==="undefined"&&Nn(n.$id)}function PA(n){return A_(n)&&n.anyOf.every((r)=>S1(r)||D1(r))}function A_(n){return $n(n,"Union")&&Nn(n.$id)&&On(n)&&fr(n.anyOf)&&n.anyOf.every((r)=>kr(r))}function C1(n){return $n(n,"Uint8Array")&&n.type==="Uint8Array"&&Nn(n.$id)&&jn(n.minByteLength)&&jn(n.maxByteLength)}function F1(n){return $n(n,"Unknown")&&Nn(n.$id)}function j1(n){return $n(n,"Unsafe")}function q1(n){return $n(n,"Void")&&n.type==="void"&&Nn(n.$id)}function K1(n){return On(n)&&C in n&&Fn(n[C])&&!JA.includes(n[C])}function kr(n){return On(n)&&(f1(n)||_1(n)||l1(n)||w1(n)||u1(n)||d1(n)||b1(n)||g1(n)||m1(n)||$1(n)||h1(n)||A1(n)||E1(n)||ea(n)||M1(n)||R1(n)||H1(n)||z1(n)||B1(n)||U1(n)||W1(n)||V1(n)||Y1(n)||J1(n)||X1(n)||L1(n)||Q1(n)||G1(n)||O1(n)||x1(n)||P1(n)||A_(n)||C1(n)||F1(n)||j1(n)||q1(n)||K1(n))}var i1,JA;var v1=b(()=>{fn();Ft();i1=class i1 extends Hr{};JA=["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 E_=b(()=>{zn();v1()});var Z1=()=>{};var I1="(true|false)",Ie="(0|[1-9][0-9]*)",p1="(.*)",Go="^(0|[1-9][0-9]*)$",Oo="^(.*)$",y1="^(?!.*)$";var sa=()=>{};var T1=()=>{};var ng=()=>{};var rg=b(()=>{T1();ng()});function tg(n,r){return n.includes(r)}function og(n){return[...new Set(n)]}function jA(n,r){return n.filter((t)=>r.includes(t))}function qA(n,r){return n.reduce((t,o)=>{return jA(t,o)},r)}function cg(n){return n.length===1?n[0]:n.length>1?qA(n.slice(1),n[0]):[]}function ig(n){let r=[];for(let t of n)r.push(...t);return r}var fa=()=>{};function No(n){return X({[C]:"Any"},n)}var ag=b(()=>{fo();fn()});var _a=b(()=>{ag()});function ti(n,r){return X({[C]:"Array",type:"array",items:n},r)}var eg=b(()=>{en();fn()});var la=b(()=>{eg()});function sg(n){return X({[C]:"Argument",index:n})}var fg=b(()=>{en();fn()});var S_=b(()=>{fg()});function oi(n,r){return X({[C]:"AsyncIterator",type:"AsyncIterator",items:n},r)}var _g=b(()=>{fn();en()});var da=b(()=>{_g()});function vn(n,r,t){return X({[C]:"Computed",target:n,parameters:r},t)}var lg=b(()=>{fo();ta()});var xo=b(()=>{lg()});function KA(n,r){let{[r]:t,...o}=n;return o}function tr(n,r){return r.reduce((t,o)=>KA(t,o),n)}var wo=()=>{};function Mn(n){return X({[C]:"Never",not:{}},n)}var dg=b(()=>{en();fn()});var Br=b(()=>{dg()});var ug=()=>{};function Bn(n){return X({[C]:"MappedResult",properties:n})}var D_=b(()=>{en();fn()});function ci(n,r,t){return X({[C]:"Constructor",type:"Constructor",parameters:n,returns:r},t)}var wg=b(()=>{en();fn()});var ua=b(()=>{wg()});function jt(n,r,t){return X({[C]:"Function",type:"Function",parameters:n,returns:r},t)}var bg=b(()=>{en();fn()});var gc=b(()=>{bg()});function wa(n,r){return X({[C]:"Union",anyOf:n},r)}var k_=b(()=>{en();fn()});function vA(n){return n.some((r)=>Cr(r))}function gg(n){return n.map((r)=>Cr(r)?ZA(r):r)}function ZA(n){return tr(n,[zr])}function IA(n,r){return vA(n)?Jr(wa(gg(n),r)):wa(gg(n),r)}function qt(n,r){return n.length===1?X(n[0],r):n.length===0?Mn(r):IA(n,r)}var mg=b(()=>{en();fn();wo();Br();bo();k_();zn()});var $g=()=>{};function Jn(n,r){return n.length===0?Mn(r):n.length===1?X(n[0],r):wa(n,r)}var hg=b(()=>{Br();en();k_()});var wr=b(()=>{mg();$g();hg()});function pA(n){return n.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function R_(n,r,t){return n[r]===t&&n.charCodeAt(r-1)!==92}function go(n,r){return R_(n,r,"(")}function ba(n,r){return R_(n,r,")")}function Ag(n,r){return R_(n,r,"|")}function yA(n){if(!(go(n,0)&&ba(n,n.length-1)))return!1;let r=0;for(let t=0;t<n.length;t++){if(go(n,t))r+=1;if(ba(n,t))r-=1;if(r===0&&t!==n.length-1)return!1}return!0}function TA(n){return n.slice(1,n.length-1)}function nE(n){let r=0;for(let t=0;t<n.length;t++){if(go(n,t))r+=1;if(ba(n,t))r-=1;if(Ag(n,t)&&r===0)return!0}return!1}function rE(n){for(let r=0;r<n.length;r++)if(go(n,r))return!0;return!1}function tE(n){let[r,t]=[0,0],o=[];for(let i=0;i<n.length;i++){if(go(n,i))r+=1;if(ba(n,i))r-=1;if(Ag(n,i)&&r===0){let a=n.slice(t,i);if(a.length>0)o.push(ii(a));t=i+1}}let c=n.slice(t);if(c.length>0)o.push(ii(c));if(o.length===0)return{type:"const",const:""};if(o.length===1)return o[0];return{type:"or",expr:o}}function oE(n){function r(c,i){if(!go(c,i))throw new M_("TemplateLiteralParser: Index must point to open parens");let a=0;for(let e=i;e<c.length;e++){if(go(c,e))a+=1;if(ba(c,e))a-=1;if(a===0)return[i,e]}throw new M_("TemplateLiteralParser: Unclosed group parens in expression")}function t(c,i){for(let a=i;a<c.length;a++)if(go(c,a))return[i,a];return[i,c.length]}let o=[];for(let c=0;c<n.length;c++)if(go(n,c)){let[i,a]=r(n,c),e=n.slice(i,a+1);o.push(ii(e)),c=a}else{let[i,a]=t(n,c),e=n.slice(i,a);if(e.length>0)o.push(ii(e));c=a-1}return o.length===0?{type:"const",const:""}:o.length===1?o[0]:{type:"and",expr:o}}function ii(n){return yA(n)?ii(TA(n)):nE(n)?tE(n):rE(n)?oE(n):{type:"const",const:pA(n)}}function ai(n){return ii(n.slice(1,n.length-1))}var M_;var pe=b(()=>{Ft();M_=class M_ extends Hr{}});function cE(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 iE(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 aE(n){return n.type==="const"&&n.const===".*"}function mc(n){return cE(n)||aE(n)?!1:iE(n)?!0:n.type==="and"?n.expr.every((r)=>mc(r)):n.type==="or"?n.expr.every((r)=>mc(r)):n.type==="const"?!0:(()=>{throw new Eg("Unknown expression type")})()}function Sg(n){let r=ai(n.pattern);return mc(r)}var Eg;var H_=b(()=>{pe();Ft();Eg=class Eg extends Hr{}});function*kg(n){if(n.length===1)return yield*n[0];for(let r of n[0])for(let t of kg(n.slice(1)))yield`${r}${t}`}function*eE(n){return yield*kg(n.expr.map((r)=>[...ga(r)]))}function*sE(n){for(let r of n.expr)yield*ga(r)}function*fE(n){return yield n.const}function*ga(n){return n.type==="and"?yield*eE(n):n.type==="or"?yield*sE(n):n.type==="const"?yield*fE(n):(()=>{throw new Dg("Unknown expression")})()}function ye(n){let r=ai(n.pattern);return mc(r)?[...ga(r)]:[]}var Dg;var z_=b(()=>{H_();pe();Ft();Dg=class Dg extends Hr{}});function Wn(n,r){return X({[C]:"Literal",const:n,type:typeof n},r)}var Mg=b(()=>{en();fn()});var Fr=b(()=>{Mg()});function Te(n){return X({[C]:"Boolean",type:"boolean"},n)}var Rg=b(()=>{fn();fo()});var n0=b(()=>{Rg()});function ei(n){return X({[C]:"BigInt",type:"bigint"},n)}var Hg=b(()=>{fn();fo()});var ma=b(()=>{Hg()});function dt(n){return X({[C]:"Number",type:"number"},n)}var zg=b(()=>{en();fn()});var $c=b(()=>{zg()});function Yt(n){return X({[C]:"String",type:"string"},n)}var Bg=b(()=>{en();fn()});var si=b(()=>{Bg()});function*_E(n){let r=n.trim().replace(/"|'/g,"");return r==="boolean"?yield Te():r==="number"?yield dt():r==="bigint"?yield ei():r==="string"?yield Yt():yield(()=>{let t=r.split("|").map((o)=>Wn(o.trim()));return t.length===0?Mn():t.length===1?t[0]:qt(t)})()}function*lE(n){if(n[1]!=="{"){let r=Wn("$"),t=B_(n.slice(1));return yield*[r,...t]}for(let r=2;r<n.length;r++)if(n[r]==="}"){let t=_E(n.slice(2,r)),o=B_(n.slice(r+1));return yield*[...t,...o]}yield Wn(n)}function*B_(n){for(let r=0;r<n.length;r++)if(n[r]==="$"){let t=Wn(n.slice(0,r)),o=lE(n.slice(r));return yield*[t,...o]}yield Wn(n)}function Ug(n){return[...B_(n)]}var U_=b(()=>{Fr();n0();ma();$c();si();wr();Br()});function dE(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Vg(n,r){return tt(n)?n.pattern.slice(1,n.pattern.length-1):kn(n)?`(${n.anyOf.map((t)=>Vg(t,r)).join("|")})`:Vt(n)?`${r}${Ie}`:Wt(n)?`${r}${Ie}`:dc(n)?`${r}${Ie}`:lo(n)?`${r}${p1}`:nt(n)?`${r}${dE(n.const.toString())}`:_o(n)?`${r}${I1}`:(()=>{throw new Wg(`Unexpected Kind '${n[C]}'`)})()}function W_(n){return`^${n.map((r)=>Vg(r,"")).join("")}$`}var Wg;var V_=b(()=>{sa();fn();Ft();zn();Wg=class Wg extends Hr{}});function hc(n){let t=ye(n).map((o)=>Wn(o));return qt(t)}var Yg=b(()=>{wr();Fr();z_()});function r0(n,r){let t=Fn(n)?W_(Ug(n)):W_(n);return X({[C]:"TemplateLiteral",type:"string",pattern:t},r)}var Jg=b(()=>{en();U_();V_();fn()});var mo=b(()=>{H_();z_();U_();pe();V_();Yg();Jg()});function uE(n){return ye(n).map((t)=>t.toString())}function wE(n){let r=[];for(let t of n)r.push(...jr(t));return r}function bE(n){return[n.toString()]}function jr(n){return[...new Set(tt(n)?uE(n):kn(n)?wE(n.anyOf):nt(n)?bE(n.const):Vt(n)?["[number]"]:Wt(n)?["[number]"]:[])]}var t0=b(()=>{mo();zn()});function gE(n,r,t){let o={};for(let c of Object.getOwnPropertyNames(r))o[c]=Po(n,jr(r[c]),t);return o}function mE(n,r,t){return gE(n,r.properties,t)}function Xg(n,r,t){let o=mE(n,r,t);return Bn(o)}var Y_=b(()=>{Er();t0();Kt()});function Qg(n,r){return n.map((t)=>Gg(t,r))}function $E(n){return n.filter((r)=>!Lo(r))}function hE(n,r){return o0($E(Qg(n,r)))}function AE(n){return n.some((r)=>Lo(r))?[]:n}function EE(n,r){return qt(AE(Qg(n,r)))}function SE(n,r){return r in n?n[r]:r==="[number]"?qt(n):Mn()}function DE(n,r){return r==="[number]"?n:Mn()}function kE(n,r){return r in n?n[r]:Mn()}function Gg(n,r){return rr(n)?hE(n.allOf,r):kn(n)?EE(n.anyOf,r):ot(n)?SE(n.items??[],r):Ht(n)?DE(n.items,r):lr(n)?kE(n.properties,r):Mn()}function J_(n,r){return r.map((t)=>Gg(n,t))}function Lg(n,r){return qt(J_(n,r))}function Po(n,r,t){if(ir(n)||ir(r)){if(!ct(n)||!ct(r))throw new Hr("Index types using Ref parameters require both Type and Key to be of TSchema");return vn("Index",[n,r])}if(pn(r))return Xg(n,r,t);if(rt(r))return Og(n,r,t);return X(ct(r)?Lg(n,jr(r)):Lg(n,r),t)}var X_=b(()=>{en();Ft();xo();Br();ut();wr();t0();L_();Y_();zn()});function ME(n,r,t){return{[r]:Po(n,[r],In(t))}}function RE(n,r,t){return r.reduce((o,c)=>{return{...o,...ME(n,c,t)}},{})}function HE(n,r,t){return RE(n,r.keys,t)}function Og(n,r,t){let o=HE(n,r,t);return Bn(o)}var L_=b(()=>{X_();Er();Pr()});var Kt=b(()=>{L_();Y_();t0();X_()});function fi(n,r){return X({[C]:"Iterator",type:"Iterator",items:n},r)}var Ng=b(()=>{en();fn()});var $a=b(()=>{Ng()});function zE(n){return globalThis.Object.keys(n).filter((r)=>!Cr(n[r]))}function BE(n,r){let t=zE(n),o=t.length>0?{[C]:"Object",type:"object",required:t,properties:n}:{[C]:"Object",type:"object",properties:n};return X(o,r)}var xn;var xg=b(()=>{en();fn();zn();xn=BE});var it=b(()=>{xg()});function c0(n,r){return X({[C]:"Promise",type:"Promise",item:n},r)}var Pg=b(()=>{en();fn()});var i0=b(()=>{Pg()});function UE(n){return X(tr(n,[Rt]))}function WE(n){return X({...n,[Rt]:"Readonly"})}function VE(n,r){return r===!1?UE(n):WE(n)}function qr(n,r){let t=r??!0;return pn(n)?Cg(n,t):VE(n,t)}var Q_=b(()=>{en();fn();wo();G_();zn()});function YE(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=qr(n[o],r);return t}function JE(n,r){return YE(n.properties,r)}function Cg(n,r){let t=JE(n,r);return Bn(t)}var G_=b(()=>{Er();Q_()});var Ac=b(()=>{G_();Q_()});function wt(n,r){return X(n.length>0?{[C]:"Tuple",type:"array",items:n,additionalItems:!1,minItems:n.length,maxItems:n.length}:{[C]:"Tuple",type:"array",minItems:n.length,maxItems:n.length},r)}var Fg=b(()=>{en();fn()});var Co=b(()=>{Fg()});function jg(n,r){return n in r?bt(n,r[n]):Bn(r)}function XE(n){return{[n]:Wn(n)}}function LE(n){let r={};for(let t of n)r[t]=Wn(t);return r}function QE(n,r){return tg(r,n)?XE(n):LE(r)}function GE(n,r){let t=QE(n,r);return jg(n,t)}function ha(n,r){return r.map((t)=>bt(n,t))}function OE(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(r))t[o]=bt(n,r[o]);return t}function bt(n,r){let t={...r};return Cr(r)?Jr(bt(n,tr(r,[zr]))):ri(r)?qr(bt(n,tr(r,[Rt]))):pn(r)?jg(n,r.properties):rt(r)?GE(n,r.keys):Bt(r)?ci(ha(n,r.parameters),bt(n,r.returns),t):Ut(r)?jt(ha(n,r.parameters),bt(n,r.returns),t):lc(r)?oi(bt(n,r.items),t):uc(r)?fi(bt(n,r.items),t):rr(r)?Xr(ha(n,r.allOf),t):kn(r)?Jn(ha(n,r.anyOf),t):ot(r)?wt(ha(n,r.items??[]),t):lr(r)?xn(OE(n,r.properties),t):Ht(r)?ti(bt(n,r.items),t):wc(r)?c0(bt(n,r.item),t):r}function NE(n,r){let t={};for(let o of n)t[o]=bt(o,r);return t}function qg(n,r,t){let o=ct(n)?jr(n):n,c=r({[C]:"MappedKey",keys:o}),i=NE(o,c);return xn(i,t)}var Kg=b(()=>{fn();wo();la();da();ua();gc();Kt();ut();$a();Fr();it();bo();i0();Ac();Co();wr();fa();D_();zn()});var Er=b(()=>{ug();D_();Kg()});function xE(n){return X(tr(n,[zr]))}function PE(n){return X({...n,[zr]:"Optional"})}function CE(n,r){return r===!1?xE(n):PE(n)}function Jr(n,r){let t=r??!0;return pn(n)?vg(n,t):CE(n,t)}var O_=b(()=>{en();fn();wo();N_();zn()});function FE(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=Jr(n[o],r);return t}function jE(n,r){return FE(n.properties,r)}function vg(n,r){let t=jE(n,r);return Bn(t)}var N_=b(()=>{Er();O_()});var bo=b(()=>{N_();O_()});function Aa(n,r={}){let t=n.every((c)=>lr(c)),o=ct(r.unevaluatedProperties)?{unevaluatedProperties:r.unevaluatedProperties}:{};return X(r.unevaluatedProperties===!1||ct(r.unevaluatedProperties)||t?{...o,[C]:"Intersect",type:"object",allOf:n}:{...o,[C]:"Intersect",allOf:n},r)}var x_=b(()=>{en();fn();zn()});function qE(n){return n.every((r)=>Cr(r))}function KE(n){return tr(n,[zr])}function Zg(n){return n.map((r)=>Cr(r)?KE(r):r)}function vE(n,r){return qE(n)?Jr(Aa(Zg(n),r)):Aa(Zg(n),r)}function o0(n,r={}){if(n.length===1)return X(n[0],r);if(n.length===0)return Mn(r);if(n.some((t)=>Qo(t)))throw Error("Cannot intersect transform types");return vE(n,r)}var Ig=b(()=>{fn();en();wo();Br();bo();x_();zn()});var pg=()=>{};function Xr(n,r){if(n.length===1)return X(n[0],r);if(n.length===0)return Mn(r);if(n.some((t)=>Qo(t)))throw Error("Cannot intersect transform types");return Aa(n,r)}var yg=b(()=>{en();Br();x_();zn()});var ut=b(()=>{Ig();pg();yg()});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 Hr("Ref: $ref must be a string");return X({[C]:"Ref",$ref:r},t)}var Tg=b(()=>{Ft();en();fn()});var Ec=b(()=>{Tg()});function ZE(n,r){return vn("Awaited",[vn(n,r)])}function IE(n){return vn("Awaited",[vt(n)])}function pE(n){return Xr(nm(n))}function yE(n){return Jn(nm(n))}function TE(n){return _i(n)}function nm(n){return n.map((r)=>_i(r))}function _i(n,r){return X(zt(n)?ZE(n.target,n.parameters):rr(n)?pE(n.allOf):kn(n)?yE(n.anyOf):wc(n)?TE(n.item):ir(n)?IE(n.$ref):n,r)}var rm=b(()=>{en();xo();ut();wr();Ec();zn()});var a0=b(()=>{rm()});function tm(n){let r=[];for(let t of n)r.push(Ea(t));return r}function n4(n){let r=tm(n);return ig(r)}function r4(n){let r=tm(n);return cg(r)}function t4(n){return n.map((r,t)=>t.toString())}function o4(n){return["[number]"]}function c4(n){return globalThis.Object.getOwnPropertyNames(n)}function i4(n){if(!a4)return[];return globalThis.Object.getOwnPropertyNames(n).map((t)=>{return t[0]==="^"&&t[t.length-1]==="$"?t.slice(1,t.length-1):t})}function Ea(n){return rr(n)?n4(n.allOf):kn(n)?r4(n.anyOf):ot(n)?t4(n.items??[]):Ht(n)?o4(n.items):lr(n)?c4(n.properties):bc(n)?i4(n.patternProperties):[]}var a4=!1;var P_=b(()=>{fa();zn()});function e4(n,r){return vn("KeyOf",[vn(n,r)])}function s4(n){return vn("KeyOf",[vt(n)])}function f4(n,r){let t=Ea(n),o=_4(t),c=qt(o);return X(c,r)}function _4(n){return n.map((r)=>r==="[number]"?dt():Wn(r))}function li(n,r){return zt(n)?e4(n.target,n.parameters):ir(n)?s4(n.$ref):pn(n)?om(n,r):f4(n,r)}var C_=b(()=>{en();Fr();$c();xo();Ec();P_();wr();F_();zn()});function l4(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=li(n[o],In(r));return t}function d4(n,r){return l4(n.properties,r)}function om(n,r){let t=d4(n,r);return Bn(t)}var F_=b(()=>{Er();C_();Pr()});var cm=()=>{};var Sa=b(()=>{F_();cm();P_();C_()});function u4(n){let r=[];for(let t of n)r.push(...Ea(t));return og(r)}function w4(n){return n.filter((r)=>!Lo(r))}function b4(n,r){let t=[];for(let o of n)t.push(...J_(o,[r]));return w4(t)}function g4(n,r){let t={};for(let o of r)t[o]=o0(b4(n,o));return t}function im(n,r){let t=u4(n),o=g4(n,t);return xn(o,r)}var am=b(()=>{ut();Kt();Sa();it();fa();zn()});var j_=b(()=>{am()});function e0(n){return X({[C]:"Date",type:"Date"},n)}var em=b(()=>{fn();en()});var s0=b(()=>{em()});function f0(n){return X({[C]:"Null",type:"null"},n)}var sm=b(()=>{en();fn()});var _0=b(()=>{sm()});function l0(n){return X({[C]:"Symbol",type:"symbol"},n)}var fm=b(()=>{en();fn()});var d0=b(()=>{fm()});function u0(n){return X({[C]:"Undefined",type:"undefined"},n)}var _m=b(()=>{en();fn()});var w0=b(()=>{_m()});function b0(n){return X({[C]:"Uint8Array",type:"Uint8Array"},n)}var lm=b(()=>{en();fn()});var g0=b(()=>{lm()});function Fo(n){return X({[C]:"Unknown"},n)}var dm=b(()=>{en();fn()});var di=b(()=>{dm()});function m4(n){return n.map((r)=>q_(r,!1))}function $4(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=qr(q_(n[t],!1));return r}function m0(n,r){return r===!0?n:qr(n)}function q_(n,r){return f_(n)?m0(No(),r):l_(n)?m0(No(),r):fr(n)?qr(wt(m4(n))):so(n)?b0():_c(n)?e0():On(n)?m0(xn($4(n)),r):__(n)?m0(jt([],Fo()),r):_r(n)?u0():d_(n)?f0():u_(n)?l0():Ti(n)?ei():Tr(n)?Wn(n):eo(n)?Wn(n):Fn(n)?Wn(n):xn({})}function um(n,r){return X(q_(n,!0),r)}var wm=b(()=>{_a();ma();s0();gc();Fr();_0();it();d0();Co();Ac();w0();g0();di();fo()});var K_=b(()=>{wm()});function bm(n,r){return Bt(n)?wt(n.parameters,r):Mn(r)}var gm=b(()=>{Co();Br();zn()});var v_=b(()=>{gm()});function mm(n,r){if(_r(n))throw Error("Enum undefined or empty");let t=globalThis.Object.getOwnPropertyNames(n).filter((i)=>isNaN(i)).map((i)=>n[i]),c=[...new Set(t)].map((i)=>Wn(i));return Jn(c,{...r,[lt]:"Enum"})}var $m=b(()=>{Fr();fn();wr()});var Z_=b(()=>{$m()});function gt(n){return n===L.False?n:L.True}function ui(n){throw new Dm(n)}function br(n){return M.IsNever(n)||M.IsIntersect(n)||M.IsUnion(n)||M.IsUnknown(n)||M.IsAny(n)}function gr(n,r){return M.IsNever(r)?Rm(n,r):M.IsIntersect(r)?$0(n,r):M.IsUnion(r)?nl(n,r):M.IsUnknown(r)?Um(n,r):M.IsAny(r)?T_(n,r):ui("StructuralRight")}function T_(n,r){return L.True}function h4(n,r){return M.IsIntersect(r)?$0(n,r):M.IsUnion(r)&&r.anyOf.some((t)=>M.IsAny(t)||M.IsUnknown(t))?L.True:M.IsUnion(r)?L.Union:M.IsUnknown(r)?L.True:M.IsAny(r)?L.True:L.Union}function A4(n,r){return M.IsUnknown(n)?L.False:M.IsAny(n)?L.Union:M.IsNever(n)?L.True:L.False}function E4(n,r){return M.IsObject(r)&&h0(r)?L.True:br(r)?gr(n,r):!M.IsArray(r)?L.False:gt(Pn(n.items,r.items))}function S4(n,r){return br(r)?gr(n,r):!M.IsAsyncIterator(r)?L.False:gt(Pn(n.items,r.items))}function D4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsBigInt(r)?L.True:L.False}function km(n,r){return M.IsLiteralBoolean(n)?L.True:M.IsBoolean(n)?L.True:L.False}function k4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsBoolean(r)?L.True:L.False}function M4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):!M.IsConstructor(r)?L.False:n.parameters.length>r.parameters.length?L.False:!n.parameters.every((t,o)=>gt(Pn(r.parameters[o],t))===L.True)?L.False:gt(Pn(n.returns,r.returns))}function R4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsDate(r)?L.True:L.False}function H4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):!M.IsFunction(r)?L.False:n.parameters.length>r.parameters.length?L.False:!n.parameters.every((t,o)=>gt(Pn(r.parameters[o],t))===L.True)?L.False:gt(Pn(n.returns,r.returns))}function Mm(n,r){return M.IsLiteral(n)&&Yr.IsNumber(n.const)?L.True:M.IsNumber(n)||M.IsInteger(n)?L.True:L.False}function z4(n,r){return M.IsInteger(r)||M.IsNumber(r)?L.True:br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):L.False}function $0(n,r){return r.allOf.every((t)=>Pn(n,t)===L.True)?L.True:L.False}function B4(n,r){return n.allOf.some((t)=>Pn(t,r)===L.True)?L.True:L.False}function U4(n,r){return br(r)?gr(n,r):!M.IsIterator(r)?L.False:gt(Pn(n.items,r.items))}function W4(n,r){return M.IsLiteral(r)&&r.const===n.const?L.True:br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsString(r)?Bm(n,r):M.IsNumber(r)?Hm(n,r):M.IsInteger(r)?Mm(n,r):M.IsBoolean(r)?km(n,r):L.False}function Rm(n,r){return L.False}function V4(n,r){return L.True}function hm(n){let[r,t]=[n,0];while(!0){if(!M.IsNot(r))break;r=r.not,t+=1}return t%2===0?r:Fo()}function Y4(n,r){return M.IsNot(n)?Pn(hm(n),r):M.IsNot(r)?Pn(n,hm(r)):ui("Invalid fallthrough for Not")}function J4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsNull(r)?L.True:L.False}function Hm(n,r){return M.IsLiteralNumber(n)?L.True:M.IsNumber(n)||M.IsInteger(n)?L.True:L.False}function X4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsInteger(r)||M.IsNumber(r)?L.True:L.False}function Kr(n,r){return Object.getOwnPropertyNames(n.properties).length===r}function Am(n){return h0(n)}function Em(n){return Kr(n,0)||Kr(n,1)&&"description"in n.properties&&M.IsUnion(n.properties.description)&&n.properties.description.anyOf.length===2&&(M.IsString(n.properties.description.anyOf[0])&&M.IsUndefined(n.properties.description.anyOf[1])||M.IsString(n.properties.description.anyOf[1])&&M.IsUndefined(n.properties.description.anyOf[0]))}function I_(n){return Kr(n,0)}function Sm(n){return Kr(n,0)}function L4(n){return Kr(n,0)}function Q4(n){return Kr(n,0)}function G4(n){return h0(n)}function O4(n){let r=dt();return Kr(n,0)||Kr(n,1)&&"length"in n.properties&>(Pn(n.properties.length,r))===L.True}function N4(n){return Kr(n,0)}function h0(n){let r=dt();return Kr(n,0)||Kr(n,1)&&"length"in n.properties&>(Pn(n.properties.length,r))===L.True}function x4(n){let r=jt([No()],No());return Kr(n,0)||Kr(n,1)&&"then"in n.properties&>(Pn(n.properties.then,r))===L.True}function zm(n,r){return Pn(n,r)===L.False?L.False:M.IsOptional(n)&&!M.IsOptional(r)?L.False:L.True}function Lr(n,r){return M.IsUnknown(n)?L.False:M.IsAny(n)?L.Union:M.IsNever(n)||M.IsLiteralString(n)&&Am(r)||M.IsLiteralNumber(n)&&I_(r)||M.IsLiteralBoolean(n)&&Sm(r)||M.IsSymbol(n)&&Em(r)||M.IsBigInt(n)&&L4(r)||M.IsString(n)&&Am(r)||M.IsSymbol(n)&&Em(r)||M.IsNumber(n)&&I_(r)||M.IsInteger(n)&&I_(r)||M.IsBoolean(n)&&Sm(r)||M.IsUint8Array(n)&&G4(r)||M.IsDate(n)&&Q4(r)||M.IsConstructor(n)&&N4(r)||M.IsFunction(n)&&O4(r)?L.True:M.IsRecord(n)&&M.IsString(p_(n))?(()=>{return r[lt]==="Record"?L.True:L.False})():M.IsRecord(n)&&M.IsNumber(p_(n))?(()=>{return Kr(r,0)?L.True:L.False})():L.False}function P4(n,r){return br(r)?gr(n,r):M.IsRecord(r)?mt(n,r):!M.IsObject(r)?L.False:(()=>{for(let t of Object.getOwnPropertyNames(r.properties)){if(!(t in n.properties)&&!M.IsOptional(r.properties[t]))return L.False;if(M.IsOptional(r.properties[t]))return L.True;if(zm(n.properties[t],r.properties[t])===L.False)return L.False}return L.True})()}function C4(n,r){return br(r)?gr(n,r):M.IsObject(r)&&x4(r)?L.True:!M.IsPromise(r)?L.False:gt(Pn(n.item,r.item))}function p_(n){return Go in n.patternProperties?dt():(Oo in n.patternProperties)?Yt():ui("Unknown record key pattern")}function y_(n){return Go in n.patternProperties?n.patternProperties[Go]:(Oo in n.patternProperties)?n.patternProperties[Oo]:ui("Unable to get record value schema")}function mt(n,r){let[t,o]=[p_(r),y_(r)];return M.IsLiteralString(n)&&M.IsNumber(t)&>(Pn(n,o))===L.True?L.True:M.IsUint8Array(n)&&M.IsNumber(t)?Pn(n,o):M.IsString(n)&&M.IsNumber(t)?Pn(n,o):M.IsArray(n)&&M.IsNumber(t)?Pn(n,o):M.IsObject(n)?(()=>{for(let c of Object.getOwnPropertyNames(n.properties))if(zm(o,n.properties[c])===L.False)return L.False;return L.True})():L.False}function F4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):!M.IsRecord(r)?L.False:Pn(y_(n),y_(r))}function j4(n,r){let t=M.IsRegExp(n)?Yt():n,o=M.IsRegExp(r)?Yt():r;return Pn(t,o)}function Bm(n,r){return M.IsLiteral(n)&&Yr.IsString(n.const)?L.True:M.IsString(n)?L.True:L.False}function q4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsString(r)?L.True:L.False}function K4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsSymbol(r)?L.True:L.False}function v4(n,r){return M.IsTemplateLiteral(n)?Pn(hc(n),r):M.IsTemplateLiteral(r)?Pn(n,hc(r)):ui("Invalid fallthrough for TemplateLiteral")}function Z4(n,r){return M.IsArray(r)&&n.items!==void 0&&n.items.every((t)=>Pn(t,r.items)===L.True)}function I4(n,r){return M.IsNever(n)?L.True:M.IsUnknown(n)?L.False:M.IsAny(n)?L.Union:L.False}function p4(n,r){return br(r)?gr(n,r):M.IsObject(r)&&h0(r)?L.True:M.IsArray(r)&&Z4(n,r)?L.True:!M.IsTuple(r)?L.False:Yr.IsUndefined(n.items)&&!Yr.IsUndefined(r.items)||!Yr.IsUndefined(n.items)&&Yr.IsUndefined(r.items)?L.False:Yr.IsUndefined(n.items)&&!Yr.IsUndefined(r.items)?L.True:n.items.every((t,o)=>Pn(t,r.items[o])===L.True)?L.True:L.False}function y4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsUint8Array(r)?L.True:L.False}function T4(n,r){return br(r)?gr(n,r):M.IsObject(r)?Lr(n,r):M.IsRecord(r)?mt(n,r):M.IsVoid(r)?t6(n,r):M.IsUndefined(r)?L.True:L.False}function nl(n,r){return r.anyOf.some((t)=>Pn(n,t)===L.True)?L.True:L.False}function n6(n,r){return n.anyOf.every((t)=>Pn(t,r)===L.True)?L.True:L.False}function Um(n,r){return L.True}function r6(n,r){return M.IsNever(r)?Rm(n,r):M.IsIntersect(r)?$0(n,r):M.IsUnion(r)?nl(n,r):M.IsAny(r)?T_(n,r):M.IsString(r)?Bm(n,r):M.IsNumber(r)?Hm(n,r):M.IsInteger(r)?Mm(n,r):M.IsBoolean(r)?km(n,r):M.IsArray(r)?A4(n,r):M.IsTuple(r)?I4(n,r):M.IsObject(r)?Lr(n,r):M.IsUnknown(r)?L.True:L.False}function t6(n,r){return M.IsUndefined(n)?L.True:M.IsUndefined(n)?L.True:L.False}function o6(n,r){return M.IsIntersect(r)?$0(n,r):M.IsUnion(r)?nl(n,r):M.IsUnknown(r)?Um(n,r):M.IsAny(r)?T_(n,r):M.IsObject(r)?Lr(n,r):M.IsVoid(r)?L.True:L.False}function Pn(n,r){return M.IsTemplateLiteral(n)||M.IsTemplateLiteral(r)?v4(n,r):M.IsRegExp(n)||M.IsRegExp(r)?j4(n,r):M.IsNot(n)||M.IsNot(r)?Y4(n,r):M.IsAny(n)?h4(n,r):M.IsArray(n)?E4(n,r):M.IsBigInt(n)?D4(n,r):M.IsBoolean(n)?k4(n,r):M.IsAsyncIterator(n)?S4(n,r):M.IsConstructor(n)?M4(n,r):M.IsDate(n)?R4(n,r):M.IsFunction(n)?H4(n,r):M.IsInteger(n)?z4(n,r):M.IsIntersect(n)?B4(n,r):M.IsIterator(n)?U4(n,r):M.IsLiteral(n)?W4(n,r):M.IsNever(n)?V4(n,r):M.IsNull(n)?J4(n,r):M.IsNumber(n)?X4(n,r):M.IsObject(n)?P4(n,r):M.IsRecord(n)?F4(n,r):M.IsString(n)?q4(n,r):M.IsSymbol(n)?K4(n,r):M.IsTuple(n)?p4(n,r):M.IsPromise(n)?C4(n,r):M.IsUint8Array(n)?y4(n,r):M.IsUndefined(n)?T4(n,r):M.IsUnion(n)?n6(n,r):M.IsUnknown(n)?r6(n,r):M.IsVoid(n)?o6(n,r):ui(`Unknown left type operand '${n[C]}'`)}function jo(n,r){return Pn(n,r)}var Dm,L;var rl=b(()=>{_a();gc();$c();si();di();mo();sa();fn();Ft();E_();Dm=class Dm extends Hr{};(function(n){n[n.Union=0]="Union",n[n.True=1]="True",n[n.False=2]="False"})(L||(L={}))});function c6(n,r,t,o,c){let i={};for(let a of globalThis.Object.getOwnPropertyNames(n))i[a]=wi(n[a],r,t,o,In(c));return i}function i6(n,r,t,o,c){return c6(n.properties,r,t,o,c)}function Wm(n,r,t,o,c){let i=i6(n,r,t,o,c);return Bn(i)}var tl=b(()=>{Er();A0();Pr()});function a6(n,r,t,o){let c=jo(n,r);return c===L.Union?Jn([t,o]):c===L.True?t:o}function wi(n,r,t,o,c){return pn(n)?Wm(n,r,t,o,c):rt(n)?X(Vm(n,r,t,o,c)):X(a6(n,r,t,o),c)}var A0=b(()=>{en();wr();rl();ol();tl();zn()});function e6(n,r,t,o,c){return{[n]:wi(Wn(n),r,t,o,In(c))}}function s6(n,r,t,o,c){return n.reduce((i,a)=>{return{...i,...e6(a,r,t,o,c)}},{})}function f6(n,r,t,o,c){return s6(n.keys,r,t,o,c)}function Vm(n,r,t,o,c){let i=f6(n,r,t,o,c);return Bn(i)}var ol=b(()=>{Er();Fr();A0();Pr()});var Ym=()=>{};var Da=b(()=>{rl();ol();tl();Ym();A0()});function Jm(n,r){return bi(hc(n),r)}var cl=b(()=>{E0();mo()});function _6(n,r){let t=n.filter((o)=>jo(o,r)===L.False);return t.length===1?t[0]:Jn(t)}function bi(n,r,t={}){if(tt(n))return X(Jm(n,r),t);if(pn(n))return X(Xm(n,r),t);return X(kn(n)?_6(n.anyOf,r):jo(n,r)!==L.False?Mn():n,t)}var E0=b(()=>{en();wr();Br();Da();il();cl();zn()});function l6(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=bi(n[o],r);return t}function d6(n,r){return l6(n.properties,r)}function Xm(n,r){let t=d6(n,r);return Bn(t)}var il=b(()=>{Er();E0()});var al=b(()=>{il();cl();E0()});function Lm(n,r){return gi(hc(n),r)}var el=b(()=>{S0();mo()});function u6(n,r){let t=n.filter((o)=>jo(o,r)!==L.False);return t.length===1?t[0]:Jn(t)}function gi(n,r,t){if(tt(n))return X(Lm(n,r),t);if(pn(n))return X(Qm(n,r),t);return X(kn(n)?u6(n.anyOf,r):jo(n,r)!==L.False?n:Mn(),t)}var S0=b(()=>{en();wr();Br();Da();sl();el();zn()});function w6(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=gi(n[o],r);return t}function b6(n,r){return w6(n.properties,r)}function Qm(n,r){let t=b6(n,r);return Bn(t)}var sl=b(()=>{Er();S0()});var fl=b(()=>{sl();el();S0()});function Gm(n,r){return Bt(n)?X(n.returns,r):Mn(r)}var Om=b(()=>{en();Br();zn()});var _l=b(()=>{Om()});function D0(n){return qr(Jr(n))}var Nm=b(()=>{Ac();bo()});var k0=b(()=>{Nm()});function Sc(n,r,t){return X({[C]:"Record",type:"object",patternProperties:{[n]:r}},t)}function ll(n,r,t){let o={};for(let c of n)o[c]=r;return xn(o,{...t,[lt]:"Record"})}function g6(n,r,t){return Sg(n)?ll(jr(n),r,t):Sc(n.pattern,r,t)}function m6(n,r,t){return ll(jr(Jn(n)),r,t)}function $6(n,r,t){return ll([n.toString()],r,t)}function h6(n,r,t){return Sc(n.source,r,t)}function A6(n,r,t){let o=_r(n.pattern)?Oo:n.pattern;return Sc(o,r,t)}function E6(n,r,t){return Sc(Oo,r,t)}function S6(n,r,t){return Sc(y1,r,t)}function D6(n,r,t){return xn({true:r,false:r},t)}function k6(n,r,t){return Sc(Go,r,t)}function M6(n,r,t){return Sc(Go,r,t)}function M0(n,r,t={}){return kn(n)?m6(n.anyOf,r,t):tt(n)?g6(n,r,t):nt(n)?$6(n.const,r,t):_o(n)?D6(n,r,t):Wt(n)?k6(n,r,t):Vt(n)?M6(n,r,t):m_(n)?h6(n,r,t):lo(n)?A6(n,r,t):b_(n)?E6(n,r,t):Lo(n)?S6(n,r,t):Mn(t)}function R0(n){return globalThis.Object.getOwnPropertyNames(n.patternProperties)[0]}function xm(n){let r=R0(n);return r===Oo?Yt():r===Go?dt():Yt({pattern:r})}function H0(n){return n.patternProperties[R0(n)]}var Pm=b(()=>{en();fn();Br();$c();it();si();wr();mo();sa();Kt();zn()});var ka=b(()=>{Pm()});function R6(n,r){return r.parameters=Ma(n,r.parameters),r.returns=Jt(n,r.returns),r}function H6(n,r){return r.parameters=Ma(n,r.parameters),r.returns=Jt(n,r.returns),r}function z6(n,r){return r.allOf=Ma(n,r.allOf),r}function B6(n,r){return r.anyOf=Ma(n,r.anyOf),r}function U6(n,r){if(_r(r.items))return r;return r.items=Ma(n,r.items),r}function W6(n,r){return r.items=Jt(n,r.items),r}function V6(n,r){return r.items=Jt(n,r.items),r}function Y6(n,r){return r.items=Jt(n,r.items),r}function J6(n,r){return r.item=Jt(n,r.item),r}function X6(n,r){let t=O6(n,r.properties);return{...r,...xn(t)}}function L6(n,r){let t=Jt(n,xm(r)),o=Jt(n,H0(r)),c=M0(t,o);return{...r,...c}}function Q6(n,r){return r.index in n?n[r.index]:Fo()}function G6(n,r){let t=ri(r),o=Cr(r),c=Jt(n,r);return t&&o?D0(c):t&&!o?qr(c):!t&&o?Jr(c):c}function O6(n,r){return globalThis.Object.getOwnPropertyNames(r).reduce((t,o)=>{return{...t,[o]:G6(n,r[o])}},{})}function Ma(n,r){return r.map((t)=>Jt(n,t))}function Jt(n,r){return Bt(r)?R6(n,r):Ut(r)?H6(n,r):rr(r)?z6(n,r):kn(r)?B6(n,r):ot(r)?U6(n,r):Ht(r)?W6(n,r):lc(r)?V6(n,r):uc(r)?Y6(n,r):wc(r)?J6(n,r):lr(r)?X6(n,r):bc(r)?L6(n,r):g_(r)?Q6(n,r):r}function Cm(n,r){return Jt(r,ni(n))}var Fm=b(()=>{qe();di();k0();Ac();bo();it();ka();zn()});var dl=b(()=>{Fm()});function jm(n){return X({[C]:"Integer",type:"integer"},n)}var qm=b(()=>{en();fn()});var ul=b(()=>{qm()});function N6(n,r,t){return{[n]:Xt(Wn(n),r,In(t))}}function x6(n,r,t){return n.reduce((c,i)=>{return{...c,...N6(i,r,t)}},{})}function P6(n,r,t){return x6(n.keys,r,t)}function Km(n,r,t){let o=P6(n,r,t);return Bn(o)}var wl=b(()=>{Er();Dc();Fr();Pr()});function C6(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toLowerCase(),t].join("")}function F6(n){let[r,t]=[n.slice(0,1),n.slice(1)];return[r.toUpperCase(),t].join("")}function j6(n){return n.toUpperCase()}function q6(n){return n.toLowerCase()}function K6(n,r,t){let o=ai(n.pattern);if(!mc(o))return{...n,pattern:vm(n.pattern,r)};let a=[...ga(o)].map((f)=>Wn(f)),e=Zm(a,r),s=Jn(e);return r0([s],t)}function vm(n,r){return typeof n==="string"?r==="Uncapitalize"?C6(n):r==="Capitalize"?F6(n):r==="Uppercase"?j6(n):r==="Lowercase"?q6(n):n:n.toString()}function Zm(n,r){return n.map((t)=>Xt(t,r))}function Xt(n,r,t={}){return rt(n)?Km(n,r,t):tt(n)?K6(n,r,t):kn(n)?Jn(Zm(n.anyOf,r),t):nt(n)?Wn(vm(n.const,r),t):X(n,t)}var Dc=b(()=>{en();mo();wl();Fr();wr();zn()});function Im(n,r={}){return Xt(n,"Capitalize",r)}var pm=b(()=>{Dc()});function ym(n,r={}){return Xt(n,"Lowercase",r)}var Tm=b(()=>{Dc()});function n2(n,r={}){return Xt(n,"Uncapitalize",r)}var r2=b(()=>{Dc()});function t2(n,r={}){return Xt(n,"Uppercase",r)}var o2=b(()=>{Dc()});var bl=b(()=>{pm();wl();Dc();Tm();r2();o2()});function v6(n,r,t){let o={};for(let c of globalThis.Object.getOwnPropertyNames(n))o[c]=qo(n[c],r,In(t));return o}function Z6(n,r,t){return v6(n.properties,r,t)}function c2(n,r,t){let o=Z6(n,r,t);return Bn(o)}var gl=b(()=>{Er();z0();Pr()});function I6(n,r){return n.map((t)=>ml(t,r))}function p6(n,r){return n.map((t)=>ml(t,r))}function y6(n,r){let{[r]:t,...o}=n;return o}function T6(n,r){return r.reduce((t,o)=>y6(t,o),n)}function n8(n,r,t){let o=tr(n,[ur,"$id","required","properties"]),c=T6(t,r);return xn(c,o)}function r8(n){let r=n.reduce((t,o)=>ve(o)?[...t,Wn(o)]:t,[]);return Jn(r)}function ml(n,r){return rr(n)?Xr(I6(n.allOf,r)):kn(n)?Jn(p6(n.anyOf,r)):lr(n)?n8(n,r,n.properties):xn({})}function qo(n,r,t){let o=fr(r)?r8(r):r,c=ct(r)?jr(r):r,i=ir(n),a=ir(r);return pn(n)?c2(n,c,t):rt(r)?i2(n,r,t):i&&a?vn("Omit",[n,o],t):!i&&a?vn("Omit",[n,o],t):i&&!a?vn("Omit",[n,o],t):X({...ml(n,c),...t})}var z0=b(()=>{en();ta();xo();Fr();Kt();ut();wr();it();$l();gl();zn()});function t8(n,r,t){return{[r]:qo(n,[r],In(t))}}function o8(n,r,t){return r.reduce((o,c)=>{return{...o,...t8(n,c,t)}},{})}function c8(n,r,t){return o8(n,r.keys,t)}function i2(n,r,t){let o=c8(n,r,t);return Bn(o)}var $l=b(()=>{Er();z0();Pr()});var B0=b(()=>{$l();gl();z0()});function i8(n,r,t){let o={};for(let c of globalThis.Object.getOwnPropertyNames(n))o[c]=Ko(n[c],r,In(t));return o}function a8(n,r,t){return i8(n.properties,r,t)}function a2(n,r,t){let o=a8(n,r,t);return Bn(o)}var hl=b(()=>{Er();U0();Pr()});function e8(n,r){return n.map((t)=>Al(t,r))}function s8(n,r){return n.map((t)=>Al(t,r))}function f8(n,r){let t={};for(let o of r)if(o in n)t[o]=n[o];return t}function _8(n,r,t){let o=tr(n,[ur,"$id","required","properties"]),c=f8(t,r);return xn(c,o)}function l8(n){let r=n.reduce((t,o)=>ve(o)?[...t,Wn(o)]:t,[]);return Jn(r)}function Al(n,r){return rr(n)?Xr(e8(n.allOf,r)):kn(n)?Jn(s8(n.anyOf,r)):lr(n)?_8(n,r,n.properties):xn({})}function Ko(n,r,t){let o=fr(r)?l8(r):r,c=ct(r)?jr(r):r,i=ir(n),a=ir(r);return pn(n)?a2(n,c,t):rt(r)?e2(n,r,t):i&&a?vn("Pick",[n,o],t):!i&&a?vn("Pick",[n,o],t):i&&!a?vn("Pick",[n,o],t):X({...Al(n,c),...t})}var U0=b(()=>{en();xo();ut();Fr();it();wr();Kt();ta();zn();El();hl()});function d8(n,r,t){return{[r]:Ko(n,[r],In(t))}}function u8(n,r,t){return r.reduce((o,c)=>{return{...o,...d8(n,c,t)}},{})}function w8(n,r,t){return u8(n,r.keys,t)}function e2(n,r,t){let o=w8(n,r,t);return Bn(o)}var El=b(()=>{Er();U0();Pr()});var W0=b(()=>{El();hl();U0()});function b8(n,r){return vn("Partial",[vn(n,r)])}function g8(n){return vn("Partial",[vt(n)])}function m8(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=Jr(n[t]);return r}function $8(n,r){let t=tr(n,[ur,"$id","required","properties"]),o=m8(r);return xn(o,t)}function s2(n){return n.map((r)=>f2(r))}function f2(n){return zt(n)?b8(n.target,n.parameters):ir(n)?g8(n.$ref):rr(n)?Xr(s2(n.allOf)):kn(n)?Jn(s2(n.anyOf)):lr(n)?$8(n,n.properties):dc(n)?n:_o(n)?n:Wt(n)?n:nt(n)?n:oa(n)?n:Vt(n)?n:lo(n)?n:ca(n)?n:ia(n)?n:xn({})}function mi(n,r){if(pn(n))return _2(n,r);else return X({...f2(n),...r})}var Sl=b(()=>{en();xo();bo();it();ut();wr();Ec();wo();fn();Dl();zn()});function h8(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=mi(n[o],In(r));return t}function A8(n,r){return h8(n.properties,r)}function _2(n,r){let t=A8(n,r);return Bn(t)}var Dl=b(()=>{Er();Sl();Pr()});var V0=b(()=>{Dl();Sl()});function E8(n,r){return vn("Required",[vn(n,r)])}function S8(n){return vn("Required",[vt(n)])}function D8(n){let r={};for(let t of globalThis.Object.getOwnPropertyNames(n))r[t]=tr(n[t],[zr]);return r}function k8(n,r){let t=tr(n,[ur,"$id","required","properties"]),o=D8(r);return xn(o,t)}function l2(n){return n.map((r)=>d2(r))}function d2(n){return zt(n)?E8(n.target,n.parameters):ir(n)?S8(n.$ref):rr(n)?Xr(l2(n.allOf)):kn(n)?Jn(l2(n.anyOf)):lr(n)?k8(n,n.properties):dc(n)?n:_o(n)?n:Wt(n)?n:nt(n)?n:oa(n)?n:Vt(n)?n:lo(n)?n:ca(n)?n:ia(n)?n:xn({})}function $i(n,r){if(pn(n))return u2(n,r);else return X({...d2(n),...r})}var kl=b(()=>{en();xo();it();ut();wr();Ec();fn();wo();Ml();zn()});function M8(n,r){let t={};for(let o of globalThis.Object.getOwnPropertyNames(n))t[o]=$i(n[o],r);return t}function R8(n,r){return M8(n.properties,r)}function u2(n,r){let t=R8(n,r);return Bn(t)}var Ml=b(()=>{Er();kl()});var Y0=b(()=>{Ml();kl()});function H8(n,r){return r.map((t)=>{return ir(t)?Rl(n,t.$ref):at(n,t)})}function Rl(n,r){return r in n?ir(n[r])?Rl(n,n[r].$ref):at(n,n[r]):Mn()}function z8(n){return _i(n[0])}function B8(n){return Po(n[0],n[1])}function U8(n){return li(n[0])}function W8(n){return mi(n[0])}function V8(n){return qo(n[0],n[1])}function Y8(n){return Ko(n[0],n[1])}function J8(n){return $i(n[0])}function X8(n,r,t){let o=H8(n,t);return r==="Awaited"?z8(o):r==="Index"?B8(o):r==="KeyOf"?U8(o):r==="Partial"?W8(o):r==="Omit"?V8(o):r==="Pick"?Y8(o):r==="Required"?J8(o):Mn()}function L8(n,r){return ti(at(n,r))}function Q8(n,r){return oi(at(n,r))}function G8(n,r,t){return ci(Ra(n,r),at(n,t))}function O8(n,r,t){return jt(Ra(n,r),at(n,t))}function N8(n,r){return Xr(Ra(n,r))}function x8(n,r){return fi(at(n,r))}function P8(n,r){return xn(globalThis.Object.keys(r).reduce((t,o)=>{return{...t,[o]:at(n,r[o])}},{}))}function C8(n,r){let[t,o]=[at(n,H0(r)),R0(r)],c=ni(r);return c.patternProperties[o]=t,c}function F8(n,r){return ir(r)?{...Rl(n,r.$ref),[ur]:r[ur]}:r}function j8(n,r){return wt(Ra(n,r))}function q8(n,r){return Jn(Ra(n,r))}function Ra(n,r){return r.map((t)=>at(n,t))}function at(n,r){return Cr(r)?X(at(n,tr(r,[zr])),r):ri(r)?X(at(n,tr(r,[Rt])),r):Qo(r)?X(F8(n,r),r):Ht(r)?X(L8(n,r.items),r):lc(r)?X(Q8(n,r.items),r):zt(r)?X(X8(n,r.target,r.parameters)):Bt(r)?X(G8(n,r.parameters,r.returns),r):Ut(r)?X(O8(n,r.parameters,r.returns),r):rr(r)?X(N8(n,r.allOf),r):uc(r)?X(x8(n,r.items),r):lr(r)?X(P8(n,r.properties),r):bc(r)?X(C8(n,r)):ot(r)?X(j8(n,r.items||[]),r):kn(r)?X(q8(n,r.anyOf),r):r}function K8(n,r){return r in n?at(n,n[r]):Mn()}function w2(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:K8(n,t)}},{})}var b2=b(()=>{fo();w_();wo();la();a0();da();ua();Kt();gc();ut();$a();Sa();it();B0();W0();Br();V0();ka();Y0();Co();wr();fn();zn()});class g2{constructor(n){let r=w2(n),t=this.WithIdentifiers(r);this.$defs=t}Import(n,r){let t={...this.$defs,[n]:X(this.$defs[n],r)};return X({[C]:"Import",$defs:t,$ref:n})}WithIdentifiers(n){return globalThis.Object.getOwnPropertyNames(n).reduce((r,t)=>{return{...r,[t]:{...n[t],$id:t}}},{})}}function m2(n){return new g2(n)}var $2=b(()=>{fo();fn();b2()});var Hl=b(()=>{$2()});function h2(n,r){return X({[C]:"Not",not:n},r)}var A2=b(()=>{en();fn()});var zl=b(()=>{A2()});function E2(n,r){return Ut(n)?wt(n.parameters,r):Mn()}var S2=b(()=>{Co();Br();zn()});var Bl=b(()=>{S2()});function D2(n,r={}){if(_r(r.$id))r.$id=`T${v8++}`;let t=ni(n({[C]:"This",$ref:`${r.$id}`}));return t.$id=r.$id,X({[lt]:"Recursive",...t},r)}var v8=0;var k2=b(()=>{qe();en();fn()});var Ul=b(()=>{k2()});function M2(n,r){let t=Fn(n)?new globalThis.RegExp(n):n;return X({[C]:"RegExp",type:"RegExp",source:t.source,flags:t.flags},r)}var R2=b(()=>{en();fn()});var Wl=b(()=>{R2()});function Z8(n){return rr(n)?n.allOf:kn(n)?n.anyOf:ot(n)?n.items??[]:[]}function H2(n){return Z8(n)}var z2=b(()=>{zn()});var Vl=b(()=>{z2()});function B2(n,r){return Ut(n)?X(n.returns,r):Mn(r)}var U2=b(()=>{en();Br();zn()});var Yl=b(()=>{U2()});var W2=()=>{};var V2=()=>{};var Y2=b(()=>{W2();V2()});var J2=()=>{};var X2=b(()=>{J2()});class L2{constructor(n){this.schema=n}Decode(n){return new Q2(this.schema,n)}}class Q2{constructor(n,r){this.schema=n,this.decode=r}EncodeTransform(n,r){let c={Encode:(i)=>r[ur].Encode(n(i)),Decode:(i)=>this.decode(r[ur].Decode(i))};return{...r,[ur]:c}}EncodeSchema(n,r){let t={Decode:this.decode,Encode:n};return{...r,[ur]:t}}Encode(n){return Qo(this.schema)?this.EncodeTransform(n,this.schema):this.EncodeSchema(n,this.schema)}}function G2(n){return new L2(n)}var O2=b(()=>{fn();zn()});var Jl=b(()=>{O2()});function N2(n={}){return X({[C]:n[C]??"Unsafe"},n)}var x2=b(()=>{en();fn()});var Xl=b(()=>{x2()});function P2(n){return X({[C]:"Void",type:"void"},n)}var C2=b(()=>{en();fn()});var Ll=b(()=>{C2()});var Ql={};ho(Ql,{Void:()=>P2,Uppercase:()=>t2,Unsafe:()=>N2,Unknown:()=>Fo,Union:()=>Jn,Undefined:()=>u0,Uncapitalize:()=>n2,Uint8Array:()=>b0,Tuple:()=>wt,Transform:()=>G2,TemplateLiteral:()=>r0,Symbol:()=>l0,String:()=>Yt,ReturnType:()=>B2,Rest:()=>H2,Required:()=>$i,RegExp:()=>M2,Ref:()=>vt,Recursive:()=>D2,Record:()=>M0,ReadonlyOptional:()=>D0,Readonly:()=>qr,Promise:()=>c0,Pick:()=>Ko,Partial:()=>mi,Parameters:()=>E2,Optional:()=>Jr,Omit:()=>qo,Object:()=>xn,Number:()=>dt,Null:()=>f0,Not:()=>h2,Never:()=>Mn,Module:()=>m2,Mapped:()=>qg,Lowercase:()=>ym,Literal:()=>Wn,KeyOf:()=>li,Iterator:()=>fi,Intersect:()=>Xr,Integer:()=>jm,Instantiate:()=>Cm,InstanceType:()=>Gm,Index:()=>Po,Function:()=>jt,Extract:()=>gi,Extends:()=>wi,Exclude:()=>bi,Enum:()=>mm,Date:()=>e0,ConstructorParameters:()=>bm,Constructor:()=>ci,Const:()=>um,Composite:()=>im,Capitalize:()=>Im,Boolean:()=>Te,BigInt:()=>ei,Awaited:()=>_i,AsyncIterator:()=>oi,Array:()=>ti,Argument:()=>sg,Any:()=>No});var F2=b(()=>{_a();S_();la();da();a0();ma();n0();j_();K_();ua();v_();s0();Z_();al();Da();fl();gc();Kt();_l();dl();ul();ut();bl();$a();Sa();Fr();Er();Hl();Br();zl();_0();$c();it();B0();bo();Bl();V0();W0();i0();Ac();k0();ka();Ul();Ec();Wl();Y0();Vl();Yl();si();d0();mo();Jl();Co();g0();w0();wr();di();Xl();Ll()});var mr;var j2=b(()=>{F2();mr=Ql});var q2=b(()=>{w_();fo();Ft();E_();Z1();sa();rg();fa();fn();_a();la();S_();da();a0();ma();n0();j_();K_();ua();v_();s0();Z_();al();Da();fl();gc();Kt();_l();dl();ul();ut();$a();bl();Sa();Fr();Hl();Er();Br();zl();_0();$c();it();B0();bo();Bl();V0();W0();i0();Ac();k0();ka();Ul();Ec();Wl();Y0();Vl();Yl();Y2();X2();si();d0();mo();Jl();Co();g0();w0();wr();di();Xl();Ll();j2()});var Gl,Ol,CF,FF;var Nl=b(()=>{q2();Gl=mr.Object({email:mr.String({format:"email"})}),Ol=mr.Object({token:mr.String()}),CF=mr.Object({success:mr.Boolean(),message:mr.Optional(mr.String())}),FF=mr.Object({success:mr.Boolean(),message:mr.Optional(mr.String()),data:mr.Optional(mr.Object({user:mr.Object({id:mr.String(),email:mr.String()}),accessToken:mr.String(),refreshToken:mr.String()}))})});import{eq as xl}from"drizzle-orm";import{Elysia as I8}from"elysia";function J0(n,r,t,o,c,i,a,e,s,f){let{db:d,logger:_,usersTable:w}=n,g=r.route||"/auth/magic-link",u=r.verifyRoute||"/auth/magic-link/verify",m=r.expiresIn||"15m",l=r.redirectUrl||"",E=new I8;if(!r.enabled)return E;return E.post(g,async($)=>{if(!d||!w)return{success:!1,message:"Database not configured"};if(!t?.isAvailable())return _.error("[AUTH] Magic link requested but email service not available"),{success:!1,message:"Email service not available"};let{email:S}=$.body,W=(await d.select().from(w).where(xl(w.email,S)).limit(1))[0];if(!W)return _.info("[AUTH] Magic link requested for non-existent email",{email:S}),{success:!0,message:"If an account exists, a magic link has been sent"};if(W.isLocked)return _.warn("[AUTH] Magic link requested for locked account",{email:S}),{success:!0,message:"If an account exists, a magic link has been sent"};let H=yc(),k=Mt(H),D=new Date(Date.now()+Tc(m));await a({userId:W.id,email:S,tokenHash:k,expiresAt:D});let A=l?`${l}?token=${H}`:`${u}?token=${H}`,h=await t.sendMagicLinkEmail(S,A,f);if(!h.success)return _.error("[AUTH] Failed to send magic link email",{email:S,error:h.error}),{success:!1,message:"Failed to send email"};return _.info("[AUTH] Magic link sent",{email:S,userId:W.id}),{success:!0,message:"If an account exists, a magic link has been sent"}},{body:Gl,detail:{tags:["Authentication"],summary:"Request Magic Link",description:"Send a magic link to the user's email for passwordless login"}}),E.get(u,async($)=>{if(!d||!w)return{success:!1,message:"Database not configured"};let S=$.query.token;if(!S)return{success:!1,message:"Token is required"};let U=Mt(S),W=await e(U);if(!W)return _.warn("[AUTH] Invalid magic link token"),{success:!1,message:"Invalid or expired token"};if(new Date>W.expiresAt)return await s(U),_.warn("[AUTH] Expired magic link token",{email:W.email}),{success:!1,message:"Invalid or expired token"};let k=(await d.select().from(w).where(xl(w.id,W.userId)).limit(1))[0];if(!k)return await s(U),{success:!1,message:"User not found"};await s(U),await d.update(w).set({lastLoginAt:new Date,loginCount:(k.loginCount||0)+1,emailVerified:!0}).where(xl(w.id,k.id));let D=$.request.headers.get("x-forwarded-for")?.split(",")[0]?.trim()||$.request.headers.get("x-real-ip")?.trim()||"unknown",A=$.request.headers.get("user-agent")||"",h=o(k.id),R=c(k.id),z=await i({userId:k.id,deviceInfo:{ipAddress:D,userAgent:A,deviceType:"unknown"},loginMethod:"magic_link"});return _.info("[AUTH] Magic link login successful",{userId:k.id,email:k.email}),$.set.headers["x-session-id"]=z,{success:!0,data:{user:{id:k.id,email:k.email},accessToken:h,refreshToken:R}}},{query:Ol,detail:{tags:["Authentication"],summary:"Verify Magic Link",description:"Verify magic link token and login user"}}),E}var Pl=b(()=>{Nl();yi();Nl()});import{eq as hi}from"drizzle-orm";import{Elysia as p8}from"elysia";function X0(n,r,t,o,c){let{db:i,logger:a,usersTable:e}=n,s=r.route||"/auth/me",f=new p8;if(!r.enabled)return f;return f.get(s,async(d)=>{if(!i||!e)return{success:!1,message:"Database not configured"};let _=d.request.headers.get("x-user-id");if(!_)return d.set.status=401,{success:!1,message:"Unauthorized"};let g=(await i.select().from(e).where(hi(e.id,_)).limit(1))[0];if(!g)return d.set.status=404,{success:!1,message:"User not found"};let{password:u,...m}=g,l=null,E=[],$=[],S=[],U=[];if(r.includeProfile&&t){let H=t.profiles;if(H&&i)l=(await i.select().from(H).where(hi(H.userId,_)).limit(1))[0]||null}if(r.includeAddresses&&t){let H=t.addresses;if(H&&i)E=await i.select().from(H).where(hi(H.ownerId,_))}if(r.includePhones&&t){let H=t.phones;if(H&&i)$=await i.select().from(H).where(hi(H.ownerId,_))}if(r.includeFiles&&t){let H=t.files;if(H&&i)S=await i.select().from(H).where(hi(H.uploadedBy,_))}if(r.includeRoles&&t){let{userRoles:H,roles:k}=t;if(H&&k&&i){let A=(await i.select().from(H).where(hi(H.userId,_))).map((h)=>h.roleId);if(A.length>0){let{inArray:h}=await import("drizzle-orm");U=await i.select().from(k).where(h(k.id,A))}}}return a.info("[AUTH] Me endpoint accessed",{userId:_}),JSON.parse(JSON.stringify({success:!0,data:{user:m,profile:l,addresses:E,phones:$,files:S,roles:U}},(H,k)=>typeof k==="bigint"?Number(k):k))},{detail:{tags:["Authentication"],summary:"Get current user",description:"Get the currently authenticated user with profile, addresses, phones and files"}}),f}var Cl=()=>{};import{and as L0,eq as Or}from"drizzle-orm";import{Elysia as y8}from"elysia";function K2(n,r,t,o,c,i,a,e,s,f,d){let{db:_,logger:w,usersTable:g}=n,u=r.basePath,m={accessTokenName:a?.accessTokenName||"access_token",refreshTokenName:a?.refreshTokenName||"refresh_token",sessionTokenName:a?.sessionTokenName||"session_token",accessTokenMaxAge:a?.accessTokenMaxAge||900,refreshTokenMaxAge:a?.refreshTokenMaxAge||604800,sessionTokenMaxAge:a?.sessionTokenMaxAge||900,secure:a?.secure??!0,httpOnly:a?.httpOnly??!0,sameSite:a?.sameSite||"lax",path:a?.path||"/",domain:a?.domain},l={accessToken:{setHeadersEnabled:e?.accessToken?.setHeadersEnabled??!0,returnJson:e?.accessToken?.returnJson??!0},refreshToken:{setHeadersEnabled:e?.refreshToken?.setHeadersEnabled??!0,returnJson:e?.refreshToken?.returnJson??!0},sessionToken:{setHeadersEnabled:e?.sessionToken?.setHeadersEnabled??!0,returnJson:e?.sessionToken?.returnJson??!0}},E=new y8;return E.get(`${u}/:provider`,async($)=>{let S=$.params.provider;if(!r.isProviderEnabled(S))return $.set.status=404,{success:!1,message:`OAuth provider "${S}" is not enabled`};let U=$.query.link_user_id,W=$.query.redirect_url,H=r.buildAuthorizationUrl(S,U,W);return $.set.status=302,$.set.headers.Location=H,null},{detail:{tags:["Authentication"],summary:"OAuth Redirect",description:"Redirects to the OAuth provider authorization page"}}),E.get(`${u}/:provider/callback`,async($)=>{let S=$.params.provider,U=$.query,{code:W,state:H,error:k,error_description:D}=U,A=r.errorRedirectUrl;if(k)return w.warn("[OAUTH] Provider returned error",{provider:S,error:k,error_description:D}),$.set.status=302,$.set.headers.Location=`${A}?error=${encodeURIComponent(D||k)}`,null;if(!W||!H)return $.set.status=302,$.set.headers.Location=`${A}?error=missing_code_or_state`,null;let h=r.consumeState(H);if(!h)return w.warn("[OAUTH] Invalid or expired state",{provider:S,state:H}),$.set.status=302,$.set.headers.Location=`${A}?error=invalid_state`,null;if(h.provider!==S)return w.warn("[OAUTH] State provider mismatch",{expected:h.provider,got:S}),$.set.status=302,$.set.headers.Location=`${A}?error=provider_mismatch`,null;if(!_||!g)return $.set.status=302,$.set.headers.Location=`${A}?error=server_error`,null;let R;try{R=await r.exchangeCode(S,W)}catch(ln){return w.error("[OAUTH] Code exchange failed",{provider:S,error:ln}),$.set.status=302,$.set.headers.Location=`${A}?error=token_exchange_failed`,null}let{profile:z,tokens:V}=R,Q=n.oauthAccountsTable,B=null;if(h.linkUserId&&r.allowAccountLinking){if(B=h.linkUserId,Q){let Qn=await _.select().from(Q).where(L0(Or(Q.provider,S),Or(Q.providerAccountId,z.providerAccountId))).limit(1);if(Qn.length>0){let qn=Qn[0];if(qn.userId!==B)return $.set.status=302,$.set.headers.Location=`${A}?error=account_already_linked_to_another_user`,null;await _.update(Q).set({accessToken:V.accessToken,refreshToken:V.refreshToken??null,tokenExpiresAt:V.expiresAt??null,scope:V.scope??null,rawProfile:z.rawProfile,lastUsedAt:new Date}).where(Or(Q.id,qn.id))}else await _.insert(Q).values({userId:B,provider:S,providerAccountId:z.providerAccountId,providerEmail:z.email??null,providerName:z.name??null,providerAvatarUrl:z.avatarUrl??null,accessToken:V.accessToken,refreshToken:V.refreshToken??null,tokenExpiresAt:V.expiresAt??null,scope:V.scope??null,rawProfile:z.rawProfile,isPrimary:!1,lastUsedAt:new Date})}w.info("[OAUTH] Account linked successfully",{userId:B,provider:S});let ln=h.redirectUrl||r.successRedirectUrl;return $.set.status=302,$.set.headers.Location=`${ln}?linked=true&provider=${S}`,null}if(Q){let ln=await _.select().from(Q).where(L0(Or(Q.provider,S),Or(Q.providerAccountId,z.providerAccountId))).limit(1);if(ln.length>0){let Qn=ln[0];B=Qn.userId,await _.update(Q).set({accessToken:V.accessToken,refreshToken:V.refreshToken??null,tokenExpiresAt:V.expiresAt??null,scope:V.scope??null,rawProfile:z.rawProfile,lastUsedAt:new Date}).where(Or(Q.id,Qn.id))}}if(!B&&z.email){let ln=await _.select().from(g).where(Or(g.email,z.email)).limit(1);if(ln.length>0){if(B=ln[0].id,Q)await _.insert(Q).values({userId:B,provider:S,providerAccountId:z.providerAccountId,providerEmail:z.email??null,providerName:z.name??null,providerAvatarUrl:z.avatarUrl??null,accessToken:V.accessToken,refreshToken:V.refreshToken??null,tokenExpiresAt:V.expiresAt??null,scope:V.scope??null,rawProfile:z.rawProfile,isPrimary:!1,lastUsedAt:new Date}).onConflictDoNothing();w.info("[OAUTH] Merged OAuth account with existing user by email",{userId:B,provider:S,email:z.email})}}if(!B){if(!r.autoCreateUser)return $.set.status=302,$.set.headers.Location=`${A}?error=user_not_found`,null;let ln=z.email??`${S}_${z.providerAccountId}@oauth.local`;if(B=(await _.insert(g).values({email:ln,password:null,verifiedAt:z.email?new Date:null,isActive:!0}).returning())[0].id,Q)await _.insert(Q).values({userId:B,provider:S,providerAccountId:z.providerAccountId,providerEmail:z.email??null,providerName:z.name??null,providerAvatarUrl:z.avatarUrl??null,accessToken:V.accessToken,refreshToken:V.refreshToken??null,tokenExpiresAt:V.expiresAt??null,scope:V.scope??null,rawProfile:z.rawProfile,isPrimary:!0,lastUsedAt:new Date});if(w.info("[OAUTH] Created new user via OAuth",{userId:B,provider:S,email:z.email}),r.sendInviteOnCreate&&z.email&&s?.isAvailable()&&f)try{let gn=yc(),Gn=Mt(gn),Un=new Date(Date.now()+Tc("7d"));await f({userId:B,email:z.email,tokenHash:Gn,expiresAt:Un});let Sn=`${r.successRedirectUrl.replace(/\/$/,"").replace(/\/[^/]+$/,"/set-password")}?token=${gn}`;await s.sendEmail({to:z.email,subject:`Welcome to ${d??"the platform"} \u2014 Set your password`,html:`
|
|
102
102
|
<p>Hi${z.name?` ${z.name}`:""},</p>
|
|
103
103
|
<p>Your account has been created via ${S} login. You can optionally set a password to also sign in with your email and password.</p>
|
|
104
104
|
<p><a href="${Sn}">Set your password</a></p>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nucleus-core-ts",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.161",
|
|
4
4
|
"description": "Production-ready, enterprise-grade TypeScript framework for building multi-tenant APIs",
|
|
5
5
|
"author": "Hidayet Can Özcan <hidayetcan@gmail.com>",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -176,7 +176,11 @@ function generateColumnCode(col: Column, allTables: string[], currentTable?: str
|
|
|
176
176
|
code += '.defaultRandom()'
|
|
177
177
|
} else if (col.default !== undefined) {
|
|
178
178
|
if (typeof col.default === 'string') {
|
|
179
|
-
|
|
179
|
+
if (col.type === 'jsonb' || col.type === 'json') {
|
|
180
|
+
code += `.default(sql\`'${col.default}'\`)`
|
|
181
|
+
} else {
|
|
182
|
+
code += `.default('${col.default}')`
|
|
183
|
+
}
|
|
180
184
|
} else if (typeof col.default === 'boolean') {
|
|
181
185
|
code += `.default(${col.default})`
|
|
182
186
|
} else if (typeof col.default === 'number') {
|
|
@@ -207,9 +211,9 @@ function generateTableCode(table: TableDef, allTables: string[]): string {
|
|
|
207
211
|
const TableName = tableName.charAt(0).toUpperCase() + tableName.slice(1)
|
|
208
212
|
const columns = table.add_base_columns
|
|
209
213
|
? [
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
214
|
+
...BASE_COLUMNS,
|
|
215
|
+
...table.columns.filter((c) => !BASE_COLUMNS.find((bc) => bc.name === c.name)),
|
|
216
|
+
]
|
|
213
217
|
: table.columns
|
|
214
218
|
|
|
215
219
|
let code = `export const ${tableName}Columns = {\n`
|